NグラムN-gram
前の数語だけを数えて次の言葉を当てていた方式
- Nグラムはつながった言葉n個の束です。二個ならバイグラム、三個ならトライグラムと呼びます。
- 昔の言語モデルは前の一言二言だけを見て、その後にどんな言葉が何回来たかを数え、次の言葉を選んでいました。
- 見る範囲を広げると、数えるべき組み合わせが**手に負えないほど増えます。**だから窓を広げられませんでした。
- 一度も見たことのない組み合わせは確率が0になります。この穴を埋める補正がいつも必要でした。
- 今の方式は前をまるごと見て、数える代わりに意味の近い言葉どうしをつなげて扱います。
目次
1たとえで理解する
パズルのピース千個を床にぶちまけて、完成図は箱ごとふたをしたまま組み立てるとしましょう。できることは今手にしているピースの側面の溝の形を見て、そこにはまるピースを探すことだけです。
この方法もそれなりに進みます。二つ三つのピースならすんなりつながります。溝が合えば色もだいたいつながるからです。ところが二十ピースほどつなげて離れて見ると、おかしなことが起きています。継ぎ目はどれもきちんとしているのに、全体は空でも海でもないただの染みになっているのです。
側面だけを見る方法には限界があります。溝二つ分を見る代わりに五つ分を一度に見ようとすると、考えなければならない組み合わせの数があっという間に手に負えなくなります。
2くわしく
前の一言二言を数えていました
昔の言語モデルがしていたことは単純です。膨大な量の文章を読み進めながら、ある言葉のあとにどんな言葉が何回出てきたかを数えて表を作ることでした。「銀行で」のあとには「お金を」が数万回、「働いて」が何回、というふうにです。
次の言葉を選ぶときは、その表を調べます。前の二言が「今日の天気は」だったなら、そのあとに来た言葉たちの回数を見て、いちばん多く来たものを選ぶか、回数に比例して引きます。学ぶ過程も数えることがすべてなので、学習がとても速いのが特徴でした。
見る範囲nが名前になりました。前の一言だけ見ればバイグラム、二言見ればトライグラムです。範囲が広いほど文が自然になりました。
窓を広げるとすぐ壁にぶつかります
それなら範囲を十言に広げればよいのではないか、と思うかもしれません。ここでこの方式は崩れます。扱う言葉が五万種類あるとき、二言の組み合わせは二十五億通り、三言の組み合わせはその五万倍です。表を作ることも保存することもできません。
数字が大きくなるだけが問題ではありません。組み合わせが増えるほど、**大半の欄が0のまま空になります。**どれだけ多くの文章を集めても、世の中のあらゆる十言の組み合わせを見ることはできないからです。
そのため実際に使える範囲は三言、四言あたりで止まりました。継ぎ目は自然なのに、段落全体では前後が合わない文章が出てくる理由がここにあります。
見たことのない組み合わせは0になります
表にない組み合わせに出会うと、確率が0になります。初めて出てくる名前が入った文はまったく扱えないという意味です。実際の文章ではこういうことが常に起きるので、そのままにはしておけませんでした。
そこで、空欄を埋める方法が使われました。すべての組み合わせにあらかじめごく小さい値を上乗せしておくか、三言の組み合わせがなければ二言に、それもなければ一言にと、一段ずつ下がって探すやり方です。
こうした補正は穴をふさいでくれますが、意味は教えてくれません。「猫」と「猫たち」は、この方式にとっては何の関係もない別々の言葉です。片方をたくさん見たからといって、もう片方をうまく扱えるようにはなりません。
今の方式は何が変わったのか
いちばん大きな変化は二つです。一つは見る範囲です。今のモデルは前の二言三言ではなく、数千断片をまとめて見ます。段落の前で決めた名前が後ろまで保たれる理由です。
もう一つは、数える代わりに意味の近い言葉どうしをつなげておくことです。言葉ごとに数字の束を付けておくと、「猫」で学んだことが「猫たち」や「ねこ」にもいくらか移ります。一度も見たことのない組み合わせが出てきても、似た場所にあった言葉を手がかりに答えられます。
だから表の大きさが組み合わせの数だけ膨らみません。言葉の種類が増えても、付けておく数字の束の大きさはそのままです。窓を広げても扱いきれる理由です。
まだ残っている場所
昔の方式だからといって消えたわけではありません。数えるだけでよいので軽くて速く、なぜその候補が出たのか表を開いて確かめられます。
検索窓の自動補完、誤字の訂正候補、キーボードの次の単語予測のように、短い範囲で十分ですぐ答えなければならない場所では今も使われています。文章を比べたり盗用を見つけたりするとき、数文字ずつ区切って重なる度合いを測るのにも使われます。
何より、次の言葉を当てるという発想そのものはそのまま受け継がれました。今のモデルもしていることは同じです。見る範囲と扱い方が変わっただけです。
3もう少し正確に
Nグラムモデルは、前のnから一つ引いた数だけ見れば次が決まると仮定し、学習資料で数えた回数を割って確率表を作ります。この仮定のおかげで計算は簡単になりますが、その範囲を超えた関係はないものとして扱う代償を払います。空欄を埋める補正には、すべての欄に小さい値を足す方法と、一段ずつ下がって探す方法があります。こうして作ったモデルが文章をどれだけうまく当てるかを測るものさしとしてパープレキシティという値が使われましたが、このものさしは今のモデルを評価するときにもそのまま使われています。
たとえがずれる点もあります。パズルのピースの溝は合うか合わないかのどちらかですが、次の言葉は一つに決まりません。表には複数の候補がそれぞれの回数とともに残っています。またパズルにはもともと正解の絵がありますが、文章には正解が一つではありません。そしてパズルはどこからでも始められますが、この方式は常に左から右へとつなげるだけです。
4やってみる
5よくある誤解
Nグラムが文法を学んだと思われがちですが、実際にはある言葉のあとにどんな言葉が何回来たかを数えた表にすぎません。
範囲を広げれば性能が上がり続けると見なされがちですが、実際には組み合わせの数が爆発し、大半の欄が空になってかえって使えなくなります。
今のAIも前の数語だけ見て次の言葉を選んでいると思われがちですが、実際には前の数千断片をまとめて見ています。
7ひとこと要約
つまりNグラムは前の数語を数えて次の言葉を当てていた方式で、狭い窓と見たことのない組み合わせという二つの壁のせいで、今の方式に移りました。
誤りや、もっと良いたとえがありますか? 修正を提案する · 最終更新2026-09-02