Language Modeling
言語モデリングでは、通常、次のトークンを予測することで、単語やトークンの系列に確率を割り当てます。n-gram、ニューラルモデル、評価について解説します。
言語モデリングとは、単語またはトークンのシーケンスに確率を割り当てるタスクです。確率の連鎖律により、P(w1, w2, ..., wn) = P(w1) x P(w2 | w1) x ... x P(wn | w1, ..., wn-1)となります。そのため、それ以前のトークンから次のトークンを予測するモデルは、あらゆるテキストの確率を定義し、その予測からサンプリングすることで新しいテキストを生成できます。この次トークン予測の目的関数は、すべてのGPTモデルと大半の大規模言語モデル(LLM)を学習させます。また、LLMが登場する何十年も前から、小規模言語モデルは音声認識や機械翻訳システムで候補出力を順位付けしており、現在もスマートフォンのキーボードで次の単語を提案しています。
言語モデルによるテキスト生成の仕組み#
学習済みモデルはプロンプトを読み取り、語彙内のすべてのトークンを採点し、softmaxでスコアを次トークンの確率に変換します。次にデコード規則でトークンを1つ選び、モデルがそのトークンを追加します。このループは、終了トークンが出力されるか、長さの上限に達するまで繰り返されます。これがテキスト生成の仕組みです。
温度パラメーターや核サンプリングを使ったサンプリングでは、尤度の一部を多様性と引き換えにします。各トークンはすでに生成されたトークンに依存するため、応答は一度に1トークンずつ生成されます。Ultralytics LLMインターフェースはstream=Trueをプロバイダーに渡すため、検出シーンの説明をモデルに求めるYOLO26パイプラインでは、テキストの差分が届くたびに出力できます。
Nグラムからニューラルモデルまで#
Claude Shannonは1948年の情報理論に関する論文で、nグラム統計から英語の単語や文字を近似するモデルを構築しました。nグラムモデルは、コーパス内で単語列が出現する頻度を数えてP(次の単語 | 直前のn-1個の単語)を推定します。1970年代から1980年代のIBMの音声認識システムは、nグラムモデルに依存していました。n = 2のバイグラムモデルで、その考え方を数行のPythonコードで示します。
from collections import Counter
sentences = ["the cat sat on the mat .", "the dog sat on the rug .", "the cat saw the dog ."]
corpus = " ".join(sentences).split()
# Count word pairs to estimate P(next word | previous word)
pairs = Counter(zip(corpus, corpus[1:]))
firsts = Counter(corpus[:-1])
# The model's next-word distribution after "the"
print({nxt: round(n / firsts["the"], 2) for (prev, nxt), n in pairs.items() if prev == "the"})
# Chain rule: a sentence's probability is the product of its next-word probabilities
sentence = ["the", "dog", "sat", "on", "the", "mat"]
p = 1.0
for prev, nxt in zip(sentence, sentence[1:]):
p *= pairs[(prev, nxt)] / firsts[prev]
print(f"P(dog sat on the mat | the) = {p:.4f}")「the」の後に続く単語として、モデルは「cat」と「dog」にそれぞれ0.33、「mat」と「rug」にそれぞれ0.17の確率を割り当てます。「the」の後に「dog sat on the mat」が続く確率は0.0278です。この文はコーパスに含まれていませんが、文中の単語ペアはすべて含まれているためです。コーパスに存在しないペアの確率は0になるため、実用的なnグラムモデルにはKneser-Neyなどの平滑化手法が必要です。また、n-1個を超える単語の文脈は利用できません。
Yoshua Bengioらは2003年のニューラル確率的言語モデルで、頻度集計を学習可能な埋め込みとニューラルネットワークに置き換え、類似した単語が統計的情報を共有できるようにしました。リカレントニューラルネットワーク(RNN)とLSTMは利用可能な文脈を拡張し、コンテキストウィンドウ全体への自己注意を備えたTransformerが、2017年以降、標準的なアーキテクチャとなりました。GPT-3は2020年に、パラメーター数1,750億の言語モデルがプロンプト内の例から新しいタスクを学習できることを示しました。
因果言語モデリングとマスク言語モデリング#
因果言語モデリング(自己回帰型言語モデリングとも呼ばれます)は、各トークンを左側のトークンから予測する方式で、生成モデルの目的関数として使われます。マスク言語モデリングは一部のトークンを隠し、両側の文脈から予測します。BERTは入力トークンの15%を対象にこの方法で学習します。両側の文脈を使うことで、分類や固有表現認識などの理解タスクに強くなる一方、左から右にテキストを書くことはできません。拡散言語モデルはマスキングを発展させ、複数の位置を数ステップにわたって並列に埋める生成器を実現します。
学習と評価#
学習は自己教師あり学習です。生テキスト自体がラベルとなり、モデルは予測分布と実際の各次トークンとの間のクロスエントロピー損失関数を最小化します。平均損失の指数がパープレキシティであり、標準的な内部評価指標です。スケーリング則は、モデル、データ、計算量の拡大に伴う損失の低下を表します。事前学習済みのベースモデルはテキストの続きを生成するだけですが、指示チューニングと人間のフィードバックによる強化学習(RLHF)によって、リクエストに従うアシスタントになります。
言語モデリングと関連用語#
- 言語モデルとLLM: 言語モデルとは、バイグラム表からTransformerまで、このタスクで学習されたモデル全般を指します。LLMは、数兆個のトークンで学習された数十億個のパラメーターを持つ言語モデルです。
- 自然言語処理(NLP): 人間の言語を扱うコンピューティング分野全体を指し、言語モデリングはその中の1つのタスクです。
- 視覚自己回帰モデリング(VAR): 同じ次ステップ予測を画像に適用し、単語の代わりに粗い解像度から細かい解像度へとトークンマップを生成します。










