01
LLMは「次に来る言葉」を選んでいる
LLMはLarge Language Model、つまり大規模言語モデルの略です。「大規模」が指すのは2つ。学習に使った文章の量と、モデルの中にある数値の多さです。この数値を重みといいます。重みについては5章でくわしく扱います。
LLMがやっていることは、実はひとつだけです。ここまでの文を見て、次に来るトークンをひとつ選ぶこと。トークンとは、モデルが文を読み書きするときの単位です。いまは「単語のかけら」くらいに考えておけば大丈夫です。スマートフォンのキーボードが次の言葉を予測してくれるのと似ていますが、モデルはずっと長い文を見て、ずっと慎重に選びます。
下の図で、左のタイルは入力した文「今日の東京は」です。その奥に立っている棒が次の位置に来る候補で、棒の高さはモデルがつけた確率です。1トークンずつ進めてみましょう。
- ここまで
- 今日 の 東京 は
- 次の候補
- 晴れ 46%, 曇り 22%, 雨 14%
入力:今日の東京は
入力した文のあとに来そうなトークンそれぞれに確率がつきました。いちばん高い「晴れ」(46%)を選んで、後ろにつなげます。
トークンをひとつ選ぶと、それを文の最後につなげ、長くなった文全体をもう一度見て次のトークンを選びます。回答ができあがるまでこれを繰り返します。出力したものを次の入力に戻して書き進めるこのやり方を、自己回帰(オートリグレッシブ)生成といいます。チャットの回答が一度にぱっと出ず、少しずつ画面に流れてくるのはこのためです。本当に1トークンずつ作られているのです。
では、いつ止まるのでしょうか。モデルには「ここで終わり」を意味する特別なトークンもあります。図の最後のステップのようにそのトークンが選ばれたとき、または設定した長さの上限に届いたときに止まります。
大量のデータで事前に学習し、要約・翻訳・質問応答など、さまざまな作業に使い回せる大きなモデルを基盤モデル(ファウンデーションモデル)といいます。LLMは文章を扱う基盤モデルです。画像や音声もあわせて扱うモデルはマルチモーダルモデルと呼ばれます。
問題文にこんな表現があれば → これを選ぶ
- “ここまでの文を見て、次に来るものを選ぶ”次トークン予測
- “生成したトークンを入力につなげて書き続ける”自己回帰生成
- “大量のデータで事前学習し、多くの作業に使い回す”基盤モデル
- “もっともらしいが事実でない情報を出力する”ハルシネーション
図ではトークンが単語のまとまりのように見えました。わかりやすくするための単純化です。本物のトークンは、少し違う形をしています。
02
文をトークンに区切る
モデルは文字をそのまま読むことができません。まず文を小さなかけらに区切り、かけらごとに決まった番号に置き換えます。このかけらがトークンで、区切る道具をトークナイザーといいます。つまりモデルが受け取っているのは、文ではなく番号の列です。
トークンは単語まるごとのこともあれば、単語の一部や記号ひとつのこともあります。よく出てくる文字のまとまりは1トークンになり、めったに出ない単語はいくつかのかけらに分かれます。こうしておけば、見たことのない単語でも知っているかけらの組み合わせで表せます。下の図で文を切り替えて、区切られ方を見てみましょう。タイルの下の数字が、モデルが実際に受け取るトークンIDです(IDと区切る位置は例です。モデルによって変わります)。
- トークン
- Un | believ | able | ␣results | !
文:「Unbelievable results!」
21文字が5個のトークンになりました。長い単語は、よく使われる断片いくつかに分かれます。
「Unbelievable」は1語なのに3トークンになりました。同じ意味の「信じられない結果!」は9文字で、英文の21文字の半分以下なのに、トークンは7個と英文の5個より多くなっています。多くのトークナイザーは英語中心の文章から作られているため、日本語など英語以外の言語は、同じ内容でもトークンが多くなりがちです。数字も1桁ずつではなく、不規則に区切られます。LLMが大きな数の計算や文字数のカウントを苦手とする理由のひとつです。
トークン数で決まる3つのこと
一度に読める量
モデルが一度に扱える量の上限は、トークン数で決まっています。7章でくわしく見ます。
料金
多くのAIサービスは、送ったトークン数(入力)と受け取ったトークン数(出力)で料金がかかります。
速さ
回答は1トークンずつ作られるので、出力トークンが多いほど時間がかかります。
問題文にこんな表現があれば → これを選ぶ
- “モデルが文を処理する単位”トークン
- “文をかけらに区切る道具”トークナイザー
- “使った量に応じた料金”入力・出力トークン数で課金
- “単語数とトークン数は同じ”誤りの選択肢
これでモデルは番号の列を受け取りました。ただ、この番号はただの目印です。3022と3023を見ても、意味が近いかどうかはわかりません。番号に意味を持たせる段階が必要です。
広告
03
意味を持った数値(埋め込み)
モデルの中には大きな表がひとつあります。トークンIDごとに1行ずつあり、各行には数百〜数千個の数値が並んでいます。トークンIDが入ってくると、モデルはその行を取り出します。このようにトークンを数値の並びに変えることを埋め込み(エンベディング)といい、得られた数値の並びをベクトルといいます。
表の数値は、最初はでたらめです。学習(5章)の中で少しずつ直され、似た文によく出てくるトークンほど、行の形が似ていきます。下の図は、表から2つの単語の行を取り出して、数値を棒にしたものです。本物の行はもっと長いのですが、ここでは10個に減らしています。
- 類似度
- 0.93
表から2つの単語の行を取り出し、数値を棒にして並べました(10個に減らした例)
「猫」と「犬」の行は、形が似ています(類似度 0.93)。どちらも家で飼う動物なので、似た文の中によく出てきます。
「猫」と「犬」は、棒の並び方がほとんど同じです。「猫」と「車」はかなり違います。2つのベクトルがどれだけ似ているかは、ふつうコサイン類似度で測ります。1に近いほど似ています。ここが引っかかりやすいところです。ベクトルの1マス1マスに「動物のマス」「乗り物のマス」のような意味がついているわけではありません。意味は、たくさんのマスの組み合わせで表されています。
埋め込みは検索拡張生成(RAG)にも出てきます。RAGでは専用の埋め込みモデルが文や段落をまるごと1本のベクトルに変え、質問と意味の近い文書を探します。「意味が近ければ数値も近い」という原理は同じです。くわしくはRAG解説の埋め込みの章をどうぞ。
問題文にこんな表現があれば → これを選ぶ
- “トークンを数値のベクトルに変換する”埋め込み(エンベディング)
- “意味が似ていればベクトルも近い”意味的類似性
- “2つのベクトルがどれだけ似ているか”コサイン類似度
同じ「かけて」でも、まわりの言葉によって意味が変わります。モデルはその違いにどうやって気づくのでしょうか。
Pro限定
ここまでは無料で読めます
残りの5章はPro会員向けです。各章に3D図解と「問題文にこんな表現があれば」の整理が続き、最後の章では実際に解いて確かめられます。
- 04Transformerとアテンション
- 05学習
- 06temperature・top-p
- 07コンテキストウィンドウ
- 08推論パラメータを選ぶ
PasslyExam
概念をつかんだら、次は試験形式の問題で確かめましょう
PasslyExamは、各資格の出題範囲に合わせて作成したオリジナルの練習問題・解説・本番形式の模擬試験を提供しています。正解の選択肢がなぜ正しく、似た選択肢がなぜ誤りなのかまで解説します。登録すると毎日無料で練習問題に取り組めます。