【Attention】現在のAIの起爆剤?Transformerってなに?

【Attention】現在のAIの起爆剤?Transformerってなに?

2023年5月にマッキンゼー・アンド・カンパニーから公開された「生成AIの出現」というレポートの中で、「生成 AI が急速に発展したのは、間違いなく2017年にGoogleが発表したTransformerの論文「All you need isattention」で克服された従来型ニューラルネットワークモデルの短所を克服した功績と、NVIDIA の GPU 処理能力向上の功績が大きい。」という一文があります。

Transformerとは、過去のLLM関連の調べものの際に目にしていたのですが、詳しくは知らなかったため、調べました。

Transformerと”Attention is All You Need”という論文

2017年にGoogleから発表された”Attention is All You Need“という論文は、Transformerと呼ばれるニューラルネットワークモデルを提案しました。このモデルは、自然言語処理(NLP)などのシーケンス変換タスクにおいて、従来のリカレントニューラルネットワーク(RNN)や畳み込みニューラルネットワーク(CNN)よりも優れたパフォーマンスを示しました。これは今日のAIトレンドの基礎を築いたとされています。

具体的には以下の点が大きな貢献でした。

  • 従来のRNNでは順序に依存した計算しかできないため、並列計算が困難で処理が遅いという欠点があった。Transformerは Attention メカニズムを使うことで、順序に依存しない並列計算を実現。処理スピードが大幅に向上
  • RNNは長期依存の関係を表現するのが苦手だった。Attentionでは過去のすべての入力との関係を柔軟に計算できるため、長期依存のモデリングが向上
  • RNNは内部状態を更新していくため、計算グラフが複雑化し学習が困難。TransformerはEncoder-Decoder構造のため、計算グラフが単純。学習が容易。
  • Attention メカニズム自体がメモリ機構として機能し、入力の重要な部分に注目する。人の注意機構をある程度模倣できる。

Attentionとは

論文タイトルであるAttention is All You Needは直訳は「必要なのはAttentionのみ」となり、Attentionのメカニズムが中心となります。

論文内で示されたAttentionは、ある要素が他の要素とどの程度関連しているかを示す重み付けを計算するメカニズムです。Transformerでは、このAttentionを用いて、入力シーケンスの各要素が他の要素とどのように関連しているかを学習します。

2種類のAttention

Transformerの論文で提案されたAttentionには、エンコーダーで用いられるSelf-Attentionデコーダーで用いられるEncoder-Decoder Attentionの2種類があります。

Self-Attention

Self-Attentionは、ある時点の入力とその前のすべての入力との関係を計算し、入力序列の内部的な関係性をモデル化します。 Attentionスコアを用いて、入力語彙のそれぞれに重みを付け、コンテキストを反映したベクトル表現を得ます。

Self-Attentionは、入力シーケンス内の異なる位置のトークン同士の関連性を計算するために使用されます。Transformerは複数のSelf-Attention層を重ね合わせ、それぞれの層で異なる情報を抽出し階層的な特徴を学習します。

Encoder-Decoder Attention

Encoder-Decoder Attentionは、Encoderの出力とDecoderの出力間の関係性を表現します。

エンコーダーが入力を処理する際に、それぞれのトークン(単語や文字など)はエンコーダー内の他のトークンとの関連性を持ちます。これにより、エンコーダー内でのSelf-Attentionが使用され、各トークンが全体の文脈において適切に表現されます。

しかし、デコーダーはエンコーダーからの情報だけでなく、自身が生成している部分の情報にも関心を持ちます。ここでEncoder-Decoder Attentionが役立ちます。デコーダーは、自身が生成しようとしているトークンに焦点を当て、それとエンコーダーのエンコードされた入力シーケンスの各部分との関連性を計算します。

このAttentionメカニズムにより、デコーダーは自身が生成しようとしている部分に適切に注目しつつ、エンコーダーが把握した入力シーケンス全体の情報も適切に利用できます。これが、翻訳や会話生成などのシーケンス変換タスクでTransformerが非常に効果的な理由の一つです。

並列計算により処理スピードが大幅に向上

RNNはシーケンス内の次の要素を逐次的に処理するため、並列処理が難しいという欠点がありました。しかし、TransformerはAttentionに基づいており、全ての単語のエンコードを同時に計算することができます。これにより、より効率的な並列処理が可能になりました。

Transformerの並列計算は、主に以下のような2つの方法で実現されています。

  • Attentionの並列計算:Attentionの計算は、各要素と他のすべての要素の内積を計算する処理です。この処理は、並列計算に適しています。Transformerでは、Attentionの計算を、各要素と他の要素のペアを並列に計算することで、処理スピードを向上させています。
  • Transformerの各層の並列計算:Transformerは、複数の層から構成されています。各層の計算は、独立して実行できるため、並列計算に適しています。Transformerでは、各層の計算を並列に実行することで、処理スピードを向上させています。

Transformerの並列計算により、処理スピードは大幅に向上します。例えば、Transformerを用いた翻訳タスクでは、並列計算を行うことで、従来のモデルに比べて処理時間を10倍以上短縮することができます。

長期的な依存関係の取り扱い

RNNは長期的な依存関係を学習するのに苦労することがありました。文章やシーケンスが長くなると、RNNの勾配消失や勾配爆発の問題が生じ、遠い単語間の関連性を正確に捉えることが難しくなりました。

RNNは時系列データを読み込んで内部状態を更新していきます。しかし、時間が経つにつれて過去の情報が薄れていくため、長期的な依存関係を表現するのが苦手でした。

例えば、「猫は…を追いかけた」の空欄に入る最適な単語を予測する場合、「猫」という単語が出てきた時点から長い間隔が空いてしまうと、RNNは空欄に「ネズミ」と予測するのが難しくなります。

これに対してAttentionは、各時点の隠れ状態と、過去のすべての入力の関係を柔軟に計算できます。したがって、「猫」と空欄の間に大きな間隔があっても、その関係性を表現できるため、空欄に「ネズミ」と予測できるようになります。

つまり、RNNの持つ短期的な依存性よりも、Attentionを用いることで長期的な依存関係を表現する能力が格段に向上したと言えます。これは自然言語において非常に重要な機能です。

Encoder-Decoder構造で学習が容易なモデル

RNN(Recurrent Neural Networks)は、再帰的な構造を持ち、内部状態を更新しながら入力の系列データを処理します。これにより、過去の情報を持ち越しながら次のステップに情報を伝達します。しかし、この再帰的な構造は計算グラフを複雑化させ、長い系列データや長期の依存関係を持つデータを扱う際には、勾配消失や勾配爆発の問題が発生しやすくなります。また、RNNは各ステップでの計算を順番に行うため、並列化が難しいという課題もありました。

一方、Transformerは、Self-Attentionメカニズムを使用したエンコーダーとデコーダーからなるEncoder-Decoder構造を持ちます。この構造により、計算グラフがより単純になり、学習が容易になります。

なぜならば:

  1. 並列化が容易
    Transformerでは、Self-Attentionというメカニズムを用いて、各単語やトークンが他の全ての単語との関係性を計算します。これにより、全ての単語のエンコードを同時に計算できます。つまり、並列化が容易であり、複数の単語の関係性を同時に考慮することができます。
  2. 非再帰構造
    Transformerは再帰的な構造ではなく、各単語間の関係性を直接的に計算します。このため、過去の情報を保持しながら情報を伝達する必要がなく、勾配消失や勾配爆発の問題が緩和されます。
  3. 計算グラフの単純化
    RNNが各ステップでの内部状態を持ちながら計算するのに対し、TransformerはAttentionメカニズムに基づいて情報を処理します。これにより、計算グラフがより単純化され、逆伝播の際に勾配を効率的に計算できます。

このような特性により、Transformerは長い系列データや長期の依存関係を持つデータを効果的に扱い、学習が容易なモデル構造となっています。

人の注意メカニズムに近い概念

Attentionメカニズムは、その名前の通り、モデルが入力の異なる部分に注目する機構です。このメカニズムは、重要な情報に対して重みを付けることで、モデルがより適切な情報を強調し、処理することができます。これは、人の注意メカニズムに近い概念を持っており、人間が特定の情報に集中し、その情報に対して優先度をつけることと類似しています。

人間の注意機構は、我々が複数の情報源から入力を受け取りながら、特定の情報に焦点を当てる能力を指します。例えば、文章を読む際には、全ての単語に同じ程度の注意を払うのではなく、重要な単語や文脈に関連する部分に注目し、その情報を重視します。Attentionメカニズムも同様に、モデルが入力の各部分に対して重み付けを行い、重要な情報により強く注目することができます。

Attentionメカニズムが人の注意機構を模倣できる点について説明します。

  • 人は与えられた情報の中で、目的に関連する部分に注意を向ける。
  • Attentionも入力シーケンスの各部分とクエリ(目的)との関連性をスコア付けして、関連の高い情報に重みを置く。
  • 人は状況に応じて注意の向け方を変化させる。
  • Attentionも異なるクエリに対して柔軟に重み付けを変更できる。
  • 人は長期的な記憶を使って過去の経験を思い出す。
  • Attentionは過去の入力すべてを対象に関連性を評価するため、長期記憶のように機能する。
  • 人の注意は主観的で場面依存的。
  • Attentionの重み付けも学習によって柔軟に形成される。

人の注意機構の特定の側面をモデル化したメカニズムと言え、完全に人の注意を模倣できているわけではないものの、ある程度の類似性があると言えます。

このようなAttentionメカニズムの特性は、人の注意機構に類似しており、モデルが入力データを柔軟に処理し、重要な情報を抽出する際に有用な特性を持っています。

まとめ

  • これまでとは異なるAttentionメカニズム
  • 並列計算での処理スピードの向上
  • 学習が容易なモデル
  • 人の注意メカニズムに近い概念

こういった特徴の画期的なAIモデルがTransformerであり、現在のAI(LLM等)の素になっている。