生成AI資格対策(生成AIパスポート+G検定)
LLMのしくみ
文字ではなく、トークンで数えている
大規模言語モデル (LLM) は文字をそのまま扱っているわけではありません。入力された文章をまずトークンという単位に切り分けます。トークンは、おおまかに言えばよく出てくる文字のかたまりです。英語なら単語1つがだいたい1トークン、長い単語は語幹と語尾に分かれて2トークンになったりします。
日本語では事情が変わります。ひらがな、カタカナ、漢字はモデルの語彙表に載っている数が英語の単語より少ないため、1文字が複数トークンに分かれることがあります。同じ内容でも英語より日本語のほうがトークン数が多くなりやすいのはここから来ています。利用料金がトークン単価で決まるサービスでは、この差がそのまま費用差になります。試験で問われるのは正確な数ではなく、日本語は英語よりトークンが多くなりがちだという傾向のほうです。
やっているのは、次の1トークンを当てることだけ
LLM の事前学習でやっていることは驚くほど単純です。大量のテキストを読み込み、途中まで見せて次に来るトークンを当てさせる。外れたら内部のパラメータを少し直す。これをひたすら繰り返します。
この学習方法には、人間が正解ラベルを付ける作業がありません。テキストそのものの続きが正解になっているからで、機械学習の分類でいう自己教師あり学習がここに当てはまります。ラベル付けの人手が要らないからこそ、インターネット規模のテキストを教材にできました。
学習の結果としてモデルが持つのは、この文脈のあとにはどのトークンがどれくらいの確からしさで来るか、という確率分布です。
プレーンテキスト
入力 「日本の首都は」
出力の確率分布(イメージ)
「東京」 0.82
「大阪」 0.04
「江戸」 0.03
「、」 0.02ここが最も大事な点です。LLM がやっているのは文脈から見て次に来やすい語を選び続けることであって、書いた内容の真偽を確かめることではありません。学習データによく出てきた言い回しは、それが事実かどうかと無関係にもっともらしく出力されます。
同じ質問に違う答えが返るのは、故障ではない
確率分布ができても、文章を出すには1つ選ばなければなりません。この選び方をサンプリングと呼び、ここで効くのが温度 (temperature) というパラメータです。
温度を低くすると、確率の高いトークンがますます選ばれやすくなります。出力は安定し、同じ質問には似た答えが返ります。温度を高くすると、確率の低いトークンにも出番が回ります。表現の幅は広がりますが、話が逸れたり事実からずれたりしやすくなります。要約や分類のように毎回同じ答えであってほしい用途は低め、案を何本も出させる用途は高め、というのが基本です。同じ入力を2回投げて違う答えが返るのは故障ではなく、確率的な選択がある以上、当然に起きることです。
前に決めた前提を忘れるのは、窓の外に出たから
モデルが一度に見られるトークン数には上限があり、これをコンテキストウィンドウと呼びます。ここにはシステムからの指示、これまでの会話履歴、貼り付けた資料、そして生成しつつある回答のすべてが入ります。
上限を超えると古い会話から押し出されていきます。長いやりとりの途中でさきほど決めた前提を無視したように見えるのは、多くの場合これが原因です。人格が変わったのでも記憶が壊れたのでもなく、単に窓の外へ出ただけです。長い資料を丸ごと貼るときは、要点だけ渡すか、必要な部分だけを検索して渡す仕組みに切り替える設計にします。
事前学習だけでは会話にならない
次のトークンを当てるだけの学習を終えたモデルは、まだ使いにくい状態です。質問を投げても質問文の続きを書き足そうとするなど、意図どおりには動きません。そこで2段階の調整が入ります。指示チューニングは、指示と望ましい応答の組を大量に学習させ、指示に従う形に整えます。人間のフィードバックによる強化学習 (RLHF) は、複数の応答案に人が優劣を付け、その好みを反映するようさらに調整します。有害な出力を避ける振る舞いも、多くはこの段階で身に付きます。
ニュースで語られるパラメータ数は、モデル内部の調整可能な数値の個数です。大きいほど表現力は高くなる傾向がありますが、実行コストも比例して重くなります。学習データと調整の質が良ければ小さめのモデルでも実用十分という例が増えており、パラメータ数は性能の唯一の指標ではありません。
復習ミニクイズ
同じ質問を2回投げたところ、少しずつ違う文章が返ってきました。この理由の説明として最も適切なものはどれですか。