【 大規模言語モデルの基礎 】
このセッションでは、現在の大規模言語モデルの基礎となっている二つのアーキテクチャーを紹介します。
一つは、2017年にGoogleが発表したアーキテクチャー Transformerです。
もう一つは、2019年に Google が発表した「言語表現モデル」BERTです。
次回のセッションで紹介するChatGPTは、もちろんOpenAIのプロダクトですが、この時期のAI技術は、主要にGoogleによって推進されてきたことに留意ください。
【 TransformerとGoogleニューラル機械翻訳 】
Transformerは、GoogleのBERTやOpenAIのGPTといった現代の大規模言語モデルほとんど全ての基礎になっています。BERTの最後の文字 'T' も、GPTの'T'も"Transformer" アーキテクチャーを採用していることを表しています。
まず最初に確認したいのは、見かけはずいぶん違って見えますが、Transformer アーキテクチャーは、大きな成功を収めた2016年のGoogle ニューラル機械翻訳のアーキテクチャーから多くを学んでいるということです。
ポイントをあげれば、Encode-Decoder アーキテクチャーの採用、EncoderとDecoderの分離、両者をつなぐAttention Mechanismの採用、等々。
こうした、Google ニューラル機械翻訳のアーキテクチャーの特徴は、そのまま、Transformerのアーキテクチャーに引き継がれています。
それらの特徴の中で、Attentionこそが一番重要なのだというのが、Transformerの提案者の分析なのだと思います。
【 Attention Is All You Need 】
Transfomer を提案した 2017年のVaswani らの論文は、"Attention Is All You Need" と名付けられていました。
「現在優勢なシーケンス変換モデルは、エンコーダーとデコーダーを含む、複雑なリカレントまたはコンボリューション・ニューラルネットワークに基づいている。
また、最も優れた性能を持つモデルは、アテンション・メカニズムを通じてエンコーダーとデコーダーを接続している。
我々は、RNNやCNNを完全に排除し、アテンション機構のみに基づく新しいシンプルなネットワークアーキテクチャ Transformer を提案する。」
Attention Mechanismに注目すると、そこには特にパフォーマンスの面で課題があることも浮かび上がってきます。それは、シーケンシャルに実行され並列化されていません。また、Attentionが注目する二つの点の距離が離れると離れるほど計算量が増大します。
"Attention is all you need" 論文は、Attention Mechanismのパフォーマンス改善の提案なのです。"Multi Head Attention" は、まさに、そうしたものです。
「Transformerでは、計算量を一定の演算数にまで減少させることができる。確かに、Attentionで重み付けされた位置の平均化によって有効解像度は低下するのだが、この効果は3.2節で説明するようにマルチヘッドAttentionで打ち消すことができる。」
もう一つ、この論文の大事な提案は、Self Attentionの重要性の指摘です。
「 Self Attentionは、intra-attentionと呼ばれることもあるのだが、シーケンスの表現を計算するために、単一のシーケンス内部の異なる位置を関連付けるAttentionメカニズムである。
Self Attentionは、読解、抽象的要約、テキストの含意、タスクに依存しない文章表現の学習など、様々なタスクでうまく利用されている。」
【 BERTは言語表現モデル 】
BERTは、2019年に Google が発表した「言語表現モデル」です。
ここでは、「言語表現モデル」という言い方をしていることに注意したらいいと思います。それは、直接には、Google 機械翻訳のように自然言語処理の何らかの具体的な処理を担うモデルではありません。それ自体は、言語のコンピュータ上の「表現」の構成にもっぱら関わるモデルなのです。
そのアーキテクチャーは、前回見たTransformerの前段部のEncoder だけを独立させたようなものです。内部に、Multi headのSelf-Attention Mechanismを抱えています。
そのAttention Mechanismから「表現」を「構成」することが、BERTの「言語表現モデル」としての第一の仕事になります。
【 Pre-training とFine-tuning】
Transformerから出力を担当するDecoderを切り取って、もっぱらEncoder内に「言語表現」を溜め込んで、どうするのでしょう?
BERTでは、膨大な計算時間をかけて、Encoder内部に「言語表現モデル」を構成するまでの、この段階をPre-training と言います。
BERTで外部に対して何かの仕事をしようとするときには、Pre-training で構成された「言語表現」をそのまま使って、具体的なタスクを実行する出力層を一枚かぶせます。これを Fine-tuningと言います。
「働くBERT」は、Pre-training + Fine-tuning の形をしています。ただ、タスクが変わるたびに、長い計算が必要なPre-trainingの段階を繰り返し実行する必要はありません。
「事前に訓練済み」のPre-trained された「言語表現」は、何度も何度も、タスクが変わっても「使い回す」ことができるからです。
【 BERT は文と文の繋がりを学習する 】
BERTは、Pre-trainingの段階で、文内部に置かれたマスクで隠された一つのブランクに、どの語が入るかを繰り返し学習します。
文Sの内部での、語w_i と語w_j の両者の間には、一つには語の意味のつながりの、もう一つには文法的なルールで規定される相関関係があります。両者は、BERTの 文内部のSelf Attentionで検出され結合されて一つの確率分布で表現されます。その相関関係は強いものです。
BERTにはもうひとつ際立った特徴があります。それは、二つの文の関係を把握しようとすることです。
具体的には、BERTはPre-trainingの段階で、ある文Aともう一つの文Bが与えられたとき、文Aのうしろには文Bがつながる("IsNext")、あるいはつながらない("NotNext")ということを学習します。それをNext Sentence Prediction (NSP)といいます。
【 Next Sentence Predictionがもたらした強力な力 】
こうした文と文の関係は、語の意味の表現(Word2Vex)やLlyaの翻訳モデル( Sentence to Sentence )での文の意味の表現のような、個別の語、個別の文の意味表現のレベルでは、把握することはできません。
Next Sentence Prediction (NSP) の導入によって、翻訳モデルと大規模言語モデルでは、Sentence to Sentence の意味するところが違うものになりました。翻訳モデルでは、Sentence to Sentenceは二つの同じ意味をもつ文の変換・生成だったのですが、大規模言語モデルでは、Sentence to Sentence は、二つの文の意味とは関係なしに、その文が "IsNext(つながる)"というラベルを持つ文の生成を行います。
翻訳モデルと大規模言語モデルの、一番大きな違いは、このNext Sentence Prediction を行う能力の有無にあると、僕は考えています。
NSPの導入は、大規模言語モデルに強力な力を与えました。
それは、最初の文が与えられれば、それと"IsNext" 関連づけられた無数の文の連鎖を生成する能力を大規模言語モデルに与えたのです。
【 何が NSP を可能にしたのか? 】
NSPを可能にしたのは、実は、簡単な技術的「工夫」によるものです。
それは、Transformer / BERT では、語の意味も語の集まりである文の意味も、同じ長さの固定長ベクトルで表すことにしたからです。そればかりではありません。文の集まりであるDocument (あるいはContext)の意味も、同じ長さの固定長ベクトルで表されるのです。
( Attention を生み出すきっかけとなった、Bengio たちの固定長ベクトル批判は、どこへいったのでしょう?)
ただ、それにはメリットがあります。ドキュメントの意味のベクトル表示は、ドキュメントの「要約」の作成で、本質的な役割を果たしています。要約とは、意味が近くて短い文章の集まりを探すことなら、文章の集まりの意味の近さを比較することが必要なのですが、一番簡単なのは、意味のベクトルの次元が等しいとして、内積を計算することです。
もちろん、そこには代償があります。
大規模言語モデルで、「ハルシネーション」が最初に観察されたのが、長い文章の要約を作成するプロセスであったのは、偶然ではないのです。
--------------------------------
ショートムービー「 TransformerとBERT 」を公開しました。
https://youtu.be/M9kIOvhELQk?list=PLQIrJ0f9gMcNtKtfdBjlaXfsG8hWl3cQm
「 TransformerとBERT 」のpdf資料
https://drive.google.com/file/d/1aR3hQ45Q5noLhOR3Zk0YY8ju6p61OhSr/view?usp=sharing
blog 「 大規模言語モデルの基礎 」
https://maruyama097.blogspot.com/2023/11/transformerbert.html
ショートムービーの再生リスト
https://www.youtube.com/playlist?list=PLQIrJ0f9gMcNtKtfdBjlaXfsG8hWl3cQm
角川セミナー 「ChatGPTはどう変わろうとしているのか」まとめページ
https://www.marulabo.net/docs/kadokawa1124/
角川セミナー 「ChatGPTはどう変わろうとしているのか」申し込みページ
コメント
コメントを投稿