Neural Networks · 一言解説

大規模言語モデルを、
ざっくり理解する

突きつめれば、LLM は「次に来る単語を予測する、ひとつの巨大な数式」にすぎません。触って確かめていきましょう。

原典: Grant Sanderson / 3Blue1Brown
“Large Language Models explained briefly” を元にした対話型の再構成

入力・トークン 予測・選択 正解・上昇 対抗候補 文脈・Attention
01 — 核心

ちぎれた台本を、単語で継ぎ足す

ある短い映画の台本を拾ったとします。人間の発言はあるのに、AI の返答部分が破れて消えている。ここで「どんなテキストを入れても、次に来る単語を予測してくれるマシン」があれば、予測を継ぎ足し、継ぎ足し繰り返すことで、返答を最後まで復元できます。

あなたがチャットボットと話しているとき、内部で起きているのは、まさにこれです。

予測マシンを回してみる

ユーザー:半導体デバイスとは何か説明してください。
AI:
直前までの文 予測マシン 次の単語の確率
1語ずつ確率を見て、選ばれた語が下線付きで追記されます
02 — 出力は「確率」

断定ではなく、すべての単語に確率を配る

マシンは次の単語を1つに断定しません。ありうるすべての単語に確率を割り当てます。しかも、必ずしも最有力の語を選ぶわけではなく、あえて確率の低い語をランダムに混ぜると、文章はぐっと自然になります。

だから ── モデル自体は決定的な関数なのに、同じ質問でも毎回ちがう答えが返ってくるのです。この「意外さ」の強さを温度(temperature)と呼びます。

温度をいじって、サンプリングを引く

文脈:「日本でいちばん人気の果物は、」の次の語

温度 0.70

温度 0 では常に最有力の語=毎回同じ。温度を上げるほど確率の山がなだらかになり、意外な語も出はじめます。

03 — チャットボットの作り方

下ごしらえのテキスト+ユーザー入力

チャットボットは、まず「これはユーザーと親切な AI アシスタントの対話です…」といった前提文(システムプロンプト)を裏側に敷きます。そこにユーザーの入力を継ぎ足し、あとは AI 役として続く単語をひたすら予測させ、その生成部分だけを画面に出す。仕組みは §01 とまったく同じ、予測ループの応用です。

[前提文] 以下は、ユーザーと有能で親切な AI との対話である。
[ユーザー入力] おすすめの本を教えて。
[予測させる] もちろん、あなたの好みに合わせて…
04 — 学習とパラメータ

巨大なダイヤルを、何千億個ぶん回す

モデルは、主にインターネットから集めた膨大なテキストを処理して予測の仕方を学びます。振る舞いを決めているのは、パラメータ(重み)と呼ばれる無数の連続値。これは、途方もなく大きな機械についたダイヤルを回す作業に似ています。ダイヤルを回すと、各入力に対して返す確率が変わる。

この 「大量のダイヤル」 こそが、大規模言語モデルの “大規模” の正体です。

パラメータの規模

0
個のパラメータ(GPT-3 の例)/ GPT-4 以降はさらに桁違い

誰かが手作業でこの値を設定するわけではありません。最初はすべてランダム=出力はでたらめ。そこから、無数の例文で少しずつ調整されていきます。

05 — 学習ループ

最後の1語を隠し、当てさせ、微調整する

学習の1回分はこうです。例文から最後の単語を除いた全部を入力し、モデルの予測と本当の最後の単語を比べる。ずれていたら、誤差逆伝播(backpropagation)という手続きで全パラメータをほんの少し調整し、正解の語の確率を上げ、他を下げる。

1ステップずつ学習させる

猫 が マット の 上 に ← 正解の語を当てさせたい
学習回数:0

最初は不正解の語(いた)が最有力。学習を繰り返すと、正解(座った)の確率がじわじわ上がっていきます。

これを何兆もの例で繰り返すと、学習データだけでなく、一度も見たことのない文章に対しても、もっともらしい予測を返すようになります。

06 — 計算スケール

1秒に10億回計算しても、足りない

必要な計算量は、控えめに言っても “気が遠くなる” 規模です。かりに 1秒あたり10億回 の足し算・掛け算をこなせたとして、最大級のモデルの学習に含まれる演算を全部やり切るには ──

100,000,000
年以上かかる(1秒あたり10億演算の場合)

これが現実的な時間で回るのは、多数の演算を並列にこなす専用チップ ── GPU のおかげです。そして、この “並列にできるか” が次の主役を呼び込みます。

07 — 事前学習とRLHF

「続きを当てる」だけでは、良い相棒にならない

ここまでの工程を 事前学習(pre-training) と呼びます。ただし「ネットの文章の続きを当てる」目標と、「役に立つ AI アシスタントである」目標は、実はかなり別物。そこで、もう一段の訓練が入ります。

Pre-training

事前学習

ネット規模のテキストで、ひたすら次の単語を当てられるようにする。言語と世界の膨大なパターンを吸収する土台づくり。

RLHF

人間のフィードバックによる強化学習

作業者が「役に立たない/問題のある」出力に印をつけ、その修正でパラメータを再調整。ユーザーが好む応答を返しやすくする。

08 — Transformer

一語ずつ読まない。全部を一度に浴びる

2017年より前、多くの言語モデルは文章を一語ずつ順番に処理していました。そこへ Google の研究チームが Transformer を発表します。Transformer は文章を頭から順にたどるのではなく、全体を一度に、並列で取り込む。だから GPU と相性がよく、あの計算スケールが成立します。

最初の一手:単語をベクトルに変える

学習は連続値でしか回らないので、各単語を長い数値の並び(ベクトル)に対応させます。この数列が、その単語の “意味” をなんとか符号化している、と考えます。

Attention ── 単語どうしが文脈で意味を交換する

Transformer の要が Attention です。バラバラのベクトルたちに、互いに通信する機会を与え、周囲の文脈に応じて意味を更新させる。しかも全部を並列に。たとえば英語の bank は、周りに river があるか money があるかで、指す意味が変わります。

“bank” の意味が、文脈で動く

与える文脈を切り替えると、bank のベクトル(下の数列)と意味空間の位置が動きます。

全体の流れ

Transformer にはもう一種類、順伝播ネットワーク(MLP) という演算もあり、学習で覚えたパターンを蓄える容量を担います。データはこの2つの演算 ── Attention と MLP ── を何層も繰り返し通り抜け、そのたびに各ベクトルが文脈で豊かになっていきます。最後に残ったベクトルから、次の単語の確率が出力されます。

クリックで各段を確認

INPUT

単語

文章をトークンに分割する。

EMBED

ベクトル化

各トークンを長い数列に対応づける。

×N 層 ①

Attention

文脈に応じて意味を交換・更新。

×N 層 ②

MLP

学習済みパターンを適用する。

OUTPUT

次の単語

最後のベクトルから確率を算出。

↑ Attention と MLP は、この間を何十回も往復する(多層)
なぜその予測をするのか、は簡単には分からない。 各段の枠組みは人間が設計しますが、具体的な振る舞いは、数千億のパラメータが学習でどう調整されたかから創発するもの。だから「なぜこの予測になったか」を説明するのは、非常に難しいのです。