言語を計算する:トークン化とN-gram
「AIの基礎:探索から機械学習まで」のレッスン 14 / 15・約6分
自然言語をトークンに分解し、N-gramで確率予測、さらに単語の意味を空間のベクトルで表す分散表現(Word2Vec)を学ぶレッスンです。
このレッスンで学ぶこと
- トークン化と次の1語の予測を説明する
- 言葉を位置で表す考え方をつかむ
レッスンの内容
日本語には、単語の切れ目がない
英語は I eat sushi のように単語間に空白がありますが、「私は寿司を食べる」にはありません。
人の言葉を扱う自然言語処理は、日本語だとまずどこで切るかから始まります。
文章を切り分ける
文字の間をタップして区切り、意味が通る読み方を探しましょう。区切り方が2通りある文に注目です。
区切ったかたまりがトークン
区切った1つのかたまりをトークン、区切る作業をトークン化と呼びます。
翻訳アプリもAIも、文章をトークンの列に変えてから処理を始めます。
「ここではきものをぬいでください」を読んだAIが、着物の話だと受け取りました。どこでつまずいた可能性が高いでしょう。
問題:「ここではきものをぬいでください」を読んだAIが、着物の話だと受け取りました。どこでつまずいた可能性が高いでしょう。
- 「ここでは/きもの」と区切った(正解)
- ひらがなの数を数え間違えた
- 「ください」を読み落とした
解説:空白のない日本語では、区切り方自体が意味を決めます。「ここで/はきもの」と切れば履物の話になり、トークン化を間違えると後の計算もすべてずれます。
1語ずつ、文を続ける
次の1語を、直前の語だけを手がかりに選んでみます。直前の1語だけ見る場合と2語を見る場合で、続き方を比べましょう。
次の1語は、数えて決める
多くの文で「雨が」の後に続く言葉を数えると、「降る」が一番多く見つかります。
直前の数語から次の語の確率を数える方法をN-gram言語モデルといいます。一番多い語を選べば自然な文になります。
見えるのは、直前の数語だけ
直前の1語だけ見て選ぶと、文頭を忘れて話がそれます。2語見ると、会話の筋が少し長く保たれます。
ただ、見る語数を増やすほど、その並びが手元の文章に出てこなくなり、数えられなくなります。
直前の2語だけを見て次の語を選ぶモデルが「会議に遅れると」まで書きました。次の語を決めるとき、このモデルが見ているのはどれでしょう。
問題:直前の2語だけを見て次の語を選ぶモデルが「会議に遅れると」まで書きました。次の語を決めるとき、このモデルが見ているのはどれでしょう。
- 「遅れる」と「と」の2語(正解)
- 「会議に遅れると」の全体
- 「会議」と「に」の2語
解説:このモデルが見るのは一番最後の2トークンだけです。「会議」はすでに視野の外なので、話のテーマだったことは次の語選びに影響しません。
○か✕か
○か✕か:N-gram言語モデルは、見る語数を増やせば増やすほど、同じ量の文章からでも賢くなっていく。
答え:✕。長い並びになるほど、文章中に全く同じ形で出てこなくなります。見る語数を増やすと参考になる例がなくなり、次の語を決められなくなります。
番号だけでは、似ているか分からない
数えるだけのモデルにとって、「本」と「小説」は別の番号にすぎません。
単語ごとに1箇所だけ1を立てるワンホット表現では、どの2語も距離が同じで、似ているかを計算できません。
意味の近い語を、近くに置く
そこで単語を数百個の数の組で表し、意味の近い語を近くに配置します。これが分散表現です。
「犬」と「猫」は近くに、「犬」と「電車」は遠くに置かれます。
○か✕か
○か✕か:「本」と「小説」を別々の番号で表すワンホット表現でも、2語の意味が近いことは計算で分かる。
答え:✕。ワンホット表現だと、どの2語を比べても1が立つ位置が違うだけで距離は一律です。意味の近さを計算できるのは、数百個の数で位置を表す分散表現にしてからです。
周りの語が、位置を決める
位置は人が決めません。「犬にえさをやる」「猫にえさをやる」のように、同じ語に囲まれる単語ほど近く置かれます。代表例がWord2Vecです。
単語の足し算・引き算
王様 − 男 + 女を計算し、着いた位置の近くにある単語を見ましょう。
男から女への向きは、どこでも同じ
王様から男を引いて女を足すと、女王の近くに着きます。分散表現は「男→女」の向きが「王様→女王」とほぼ同じで、意味の違いを向きで計算できるのです。
分散表現で「父 − 男 + 女」を計算すると、どの単語のいちばん近くに着くでしょう。
問題:分散表現で「父 − 男 + 女」を計算すると、どの単語のいちばん近くに着くでしょう。
- 母(正解)
- 女
- 少女
解説:「男→女」の向きを父の位置に足すと、王様から女王へ動いたのと同じ向きに進むので母の近くに着きます。
言葉を数にする3段階
- 文章を区切って、トークンの列にする
- 直前の数語から、次の語が来る回数を数える
- 同じ語に囲まれる単語を、近い位置に置く
- 位置の差を、意味の違いとして計算する
AIが「りんご」と「バナナ」を似た言葉として扱えるのは、なぜでしょう。
問題:AIが「りんご」と「バナナ」を似た言葉として扱えるのは、なぜでしょう。
- どちらも似た語に囲まれて出てくるから(正解)
- どちらも辞書で果物と書かれているから
- どちらも文字数が3文字で同じだから
解説:似た語と一緒に出てくる単語ほど、分散表現では近くに置かれます。では、果物とIT企業の両方を指す「アップル」は、1つの位置のどこに置けばいいのでしょう。次は、周りの語に注目して意味の位置を動かす自己注意と、それを土台にしたChatGPTの仕組みを見ます。
用語
- Word2Vec(word2vec)
- 大量の文章から、同じ語の周りに出てくる単語ほど近くなるよう位置を学ぶ方法。分散表現を作る代表的な仕組みです。
- トークン(Token)
- 文章を区切った1つのかたまり。単語そのままのこともあれば、細かく分けた部品のこともあります。
- 分散表現(distributed representation / word embedding)
- 単語を数百個の数の組で表し、意味の近い語どうしを近くに配置する方法。位置の差を意味の違いとして計算できます。
- トークン化(Tokenization)
- 文章をAIが扱いやすい小さな単位に区切る作業。空白のない日本語では、区切り方で意味が変わることもあります。
- 自然言語処理(Natural Language Processing (NLP))
- 日本語や英語といった人の言葉を、コンピュータで処理する技術。翻訳や検索、チャットAIの基礎になります。
- N-gram言語モデル(n-gram language model)
- 直前にある数語の並びの後に、どの語が何回来たかを数えて次を予測する仕組み。1語なら直前の1語だけで決めます。
- ワンホット表現(one-hot representation)
- 単語ごとに、ずらりと並んだ0の中で1箇所だけ1を立てて表す方法。どの2語も等しく離れて見え、似ているかがわかりません。