[上級編]LLMへ至る道~Transformerは何をするのか~[15日目]

2023.12.15

みなさんこんにちは!クルトンです。

前日のブログは、Seq2Seqモデルについてでした。 エンコーダとデコーダと呼ばれる異なる使い方をするLSTMモデルを組み合わせたモデルでしたね。

本日からは、本日を含めて4つのブログでTransformerについてご紹介していきます。 Transformerについて発表された論文が "Attention Is All You Need" というタイトルで、こちらの内容をもとにお話をしていこうかと考えています。

本日含めて4日間の最終到達目標

以下のTransformerの全体図の内容を理解する事を本日含めて4日間の最終到達目標といたします。

road-to-llm-advent-calendar-2023-15-01

EncoderやDecoderという単語についてはSeq2Seqでも聞いた事がありますが、色々と細かい情報が書かれていて、全てを理解するのは大変そうですので一つずつ分割して見ていきましょう!

まず本日は、Transformerの概要についてご紹介いたします。

Transformerってなんだろう?

Transformerは基盤モデルと呼ばれ、 大規模言語モデル(Large Language Models) や他の基盤モデルと呼ばれるものの中で使われているモデルになります。

基盤モデルというのは以下の図のようなさまざまなアウトプットが可能なモデルの事を意味します。

road-to-llm-advent-calendar-2023-15-02

近年では、ChatGPTの中で使われているモデル(GPT系のモデル)にもTransformerが使われています。

そのためこちらのモデルを理解することが、大規模言語モデル(Large Language Models)と呼ばれている、近年ニュースで話題になった機械学習モデルを理解する上で重要となってきます。

それぞれの中身の構成まで全く一緒という訳でもないのですが、Seq2Seqモデルでも使われていたEncoder(エンコーダ)とDecoder(デコーダ)という仕組みをTransformerモデルも使用しています。

Transformerにはいくつか種類があります。

  • Encoder・Decoderの構成
  • Encoderのみの構成
  • Decoderのみの構成

EncoderとDecoderがセットになっているものは、日本語を入力して英語を出力するような場合に使われます。(Seq2Seqモデルで機械翻訳の例を見ましたね。)

ただし、上記のようにEncoderとDecoderは分けて使われる(セットで必ずしも使われない)ため、それぞれで理解しておくと良いと思われます。

また、Transformerでとても重要な仕組みの一つであるAttentionというものがあります。

それぞれについて概要を押さえておきましょう!

Encoderとはなんだ?

文章を入力した時に、分散表現に変換する層です。 ELMoモデルなどでも紹介した、文脈を考慮して単語埋め込みをしています。

Decoderとはなんだ?

文章の次に何が来るかを予測する機構です。 Encoderと一緒に使われる場合は、Encoderで獲得した情報を用いて出力をします。

Encoderで獲得した情報というのが、queryとkeyというところで使われています。

Attentionって?

Attentionとは単語間の関連性や重要度を測るための層です。 Attentionにも種類があるのですが、Transformerモデルの種類によって使われているものが変わります。基本的な構成としてはSelf-Attentionと呼ばれるものです。

Self-Attentionを複数重ねたものをMulti-head Attentionと呼びます。

ELMoなどでも、多層にする事でより詳しい表現を獲得できるようにしていましたが意図は同じです。

Attentionの日本語訳は "注意" ですが、まさしくどの単語に注意を払えば良いかを確認するための機構です。

Transformerモデルの嬉しいところ

  • 並列処理ができる
    • 従来のRNNを使ったモデルですと、処理対象の単語より以前のもの(または以後のもの)の処理が終わっている前提でした。しかし、Attentionの仕組みのみを使う事でそういった単語の前後関係の処理を待たなくとも良くなりました。
    • 並列処理なので、計算が素早く行なえます。
  • ベクトルが固定長じゃなくなった
    • 入力された文ごとに固定長のベクトルを作る仕組みですので、全ての文において同じ固定長ではなくなり Seq2Seqでの課題点がクリアされました。

終わりに

本日はTransformerモデルの概要についてご紹介してきました!大規模言語モデルの中で使われており、基盤モデルと呼ばれているモデルです! Transformerのそれぞれの層であるEncoder、Decoder、Attentionについては、明日以降のブログで順番に詳しく確認していきます!

本日はここまで。それでは、明日もよければご覧ください!

参考にした文献

基盤モデルに関する論文です。