GPTの動作原理(つづく単語の予測)
GTPは次の言葉を予測するシステムということを前回説明しました。これはどのように行われているのでしょうか、そのメカニズムを簡単な事例で説明したいと思います。
言葉は事前の情報を受けて次の言葉がある場面が多いこともあり、GPTの基本的な動作原理は、与えられた単語列に続く単語を予測することです。つまり、ある単語の後に最も確率が高いと予測される単語を選びます。この予測は、単語の周囲の単語の分布からコンテキストを把握し(単語の分布確率)、それに続く単語を予測することで行われます。
単語を予測する事例
「私は四川ラーメンを食べた、とても..」という文の場合、次に続く最も確率が高い言葉を予測するには、GPTはそのコンテキストを理解し、事前に学習した知識を利用します。
「四川ラーメンを食べた」に続くと、「とても」が来ると、その次に続く単語は、ラーメンの特徴や感想を表す形容詞が多くなると予測されます(これは事前学習から傾向をつかんでいたためです)。具体的には、「とても辛かった」、「とても美味しかった」、「とても独特だった」などの形容詞が来る確率が高いです。
逆に、「とても」という文脈から、具体的な名詞や動詞が直接続く確率は比較的低いと予測されます。例えば、「とても車」や「とても走る」などは使用例が低いため、GPTはこれらの選択肢を低確率と判断します。
GPTが単語を選択するときには、このように事前のコンテキストと学習データを基に最も確率が高いと判断される単語を選びます。その結果、自然でよく使われる、そして文脈に適した文を生成することができます。
会話がフレキシブルに予測できる=事前情報で変化する単語予測
ところでGPTは会話に応じた回答をしています。どのようなメカニズムで動いているのかを見てみましょう。
GPTは与えられた情報に基づいて次に来る単語を予測します。したがって、前の文脈によっては、次に来る単語の予測が変わります。それを以下の例で説明します。
1.「(食べた四川ラーメンは花椒が使われている。花椒は辛いよりもしびれる。)私は四川ラーメンを食べた、とても..」
この場合、「しびれる」や「特徴的な」などの単語が予測されます。なぜなら、花椒がしびれる感じをもたらすという情報が先に与えられているからです。
2.「(食べた四川ラーメンに花椒が使われていることはしらない。花椒は辛いよりもしびれることは知らない。唐辛子は辛くそれががはいっていることだけを知っている。)私は四川ラーメンを食べた、とても..」
この場合、「辛い」や「スパイシーな」などの単語が予測される可能性が高くなります。なぜなら、唐辛子が辛さをもたらすという情報が先に与えられているからです。
これらの例から、GPTがどのように事前情報を利用して次に来る単語を予測するかがわかります。つまり、GPTは与えられた情報によって、次に来る単語の予測を動的に調整しています。
間違える(=嘘を吐く)メカニズムとその対処法について
まとめますと、現在のAI(GPT)は文脈をとらえるために以下を実施しています。
文脈を掴む
・意味をとらえるために周囲の単語の分布を調べる
・そのセンテンスだけでなく長い文の出現を記憶することでその単語のニュアンスをつかむ
・センテンスなどについてはアテンションメカニズムで文脈が何に注意しているかをつかむ
文を出力する
・これらから次の続く単語を確率的に予測して出力する。
これらであればかなり文書ができそうですが実はうまくいかない場面がいくつかあります。
それはAIが学習しているデータとそれをどのように扱うかの問題です。
このことが原因でいわゆる「嘘をつく」という現象が起きてしまいます。
では、どのようなメカニズムで起こるのでしょうか、それを対処する方法はないのでしょうか。
次回 自然言語AI 超簡単入門3ではそれについてみてみたいと思います。