非エンジニア向けだけど、専門用語は使いつつAIの仕組みを説明する-会話AI編- その1

AI
べるつり
べるつり

AI関連の記事って、「専門的」と「初心者向け」に分かれる印象があるので、その中間を狙って説明する試み…です!

ロボっぽ
ロボっぽ

数式使われるとアレルギー反応出るんだけど

べるつり
べるつり

(ロボットなのに?)

べるつり
べるつり

数式は使わないし、プログラミングもしないし、専門用語はその都度解説していくから安心してほしいよ。文字と画像だけで説明するよ

AIはどうやって会話を理解しているの?

chatGPTとかGeminiとかの会話型AIと会話していると、こっちの意図を汲み取ってくれるし、頭ごなしに否定してこないし、適度に相槌も打ってくれるし、ノンストレス!って感じですが、実はAIはこちらの話を理解しているわけではないし、自分の発言も理解しているわけではないのです。

実際には、次に来る単語を高精度で予想しているだけ、なのです。
例えば、

「今日は天気が」

という文章があったら次に続くのは

「いいですね」とか「悪いですね」の可能性が高いですよね。

このように、AIは単語単位で次に来る確率が高い単語を次々と続けていって文章を紡いでいます。

AIがテキストを理解したフリをさせる技術

皆さんは「犬」と聞いてどんなイメージを思い浮かべますか?

四足歩行で、鼻が良くて、かわいくて…。昔飼っていたり、近所にいたりした記憶の中の犬を思い浮かべる人もいるかもしれません。
単語を理解しているかどうかは、その単語を認識したときに指し示す内容が想起されるかどうかだと思います。

あの日みたわんこ

そういう意味では、文章同様にコンピュータは文字というものを理解していません。
「犬」という単語はコンピュータにとって「U+72AC」(Unicode)という英数字の羅列でしかありません。
さらに、この「U+72AC」も最終的にはバイナリコード(「0」と「1」)に変換されるため、コンピュータが扱う全てのデータは「0」と「1」の羅列でしかありません。

なので、人間のように「犬」という単語を理解しているかというと、そうではありません。

しかし、現実として、私たちはchatGPTさんやGeminiさんと会話をしていますね。(なんなら、あまりの有能さに敬語を使って話したりしています。)
つまり、AIは単語や文章を理解したフリはできるようになっていると言えます。

ただ、テキストのままだと理解できないので、ベクトル化して理解したフリをします。

ロボっぽ
ロボっぽ

いやぁぁぁぁぁ!!!ベクトルとか、やめテェぇぇ!!!

べるつり
べるつり

(こいつほんまロボットか?)

べるつり
べるつり

でも大丈夫!数学の話はしないよ。
約束通り、数式を使わないでAIが動く具体的な仕組みを説明していくよー

単語のベクトル化(embedding)

ベクトルとは…

矢印である!しかも、長さと角度が変わる矢印!
※正しい定義ではないのですが、今回はそういうことにしておいてください。

つまり、単語のベクトル化とはテキストを矢印に変換する作業だと思ってください。

で、この矢印にすると何が嬉しいのかというと矢印の長さと角度によって、コンピュータが単語の意味を理解(するフリが)できるようになる!という点。

…なんで!?
って思いました私も。最初。

これは言葉で説明するより図で見てみるとわかりやすいかも。

まずは犬のベクトルを書きます。
(ベクトルは正確なものではありません。説明のための適当な便宜上の犬ベクトルです。)

犬のベクトル

では、似た概念の、そうですね、「猫」を例えばベクトル化するとどうなるかというと…

猫のベクトル

こんな感じで近いところに矢印が向かうはずです。となると馬とか狼とか羊とかも…

いろんな動物のベクトル

近いところに集まるように矢印が引かれるはずです。これはどういうことかというと…

四足歩行動物のベクトル

「どうやら矢印の向かう先に規則性があるらしい。そして猫、犬、狼、馬、羊が向かう先は四足歩行の動物っぽいぞ…!つまり、これらの動物は四足歩行の動物なんだ!」

ってことをコンピュータが認識できるようになります。
なので、全然関係ない、例えばバイクは全然違うベクトルに向かうことになります。

バイクのベクトル

では、自転車はどうなるでしょうか。おそらく似た方向に向かうでしょうね。
つまり…

今度は「バイクや自転車の向かう先はどうやら2輪の乗り物っぽいかも…!」ということがわかります。

こうやって、テキストをベクトル化することで「このテキストにはどうやらこういう意味が込められているっぽいぞ…!」ということをコンピュータさんが理解(したフリが)できるようになりました。

さらに奥さん!もっと嬉しいことが!(?)

例えば、「人間」ってどんな特徴がありますか?
・二足歩行
・動物
ですよね。

次に「自動車」ってどうでしょうか
・四輪駆動
・乗り物

ですね。

これって、「二輪の乗り物」と「四足歩行の動物」の間っぽくないですか?
(人間=二輪の動物、自動車=四足歩行の乗り物)
なので、自動車とか人間は2つの真ん中に矢印が引かれるはずです。

こんな感じで。

これによって、「人間」とテキストで打ち込むとコンピュータは「どうやら『人間』は動物寄りだが、四足歩行よりは二足歩行寄りの概念っぽいぞ」ということが数学的にわかるようになります。
(このベクトル図だと三足歩行の動物だと認識しそうですが、そこは目を瞑ってください…)

結局何が嬉しいんだっけ

結局、テキストをベクトル化して何が嬉しいのかというと
「テキストの意味をコンピュータがなんとなく認識できるようになる。例えば「日本人」-「人」=「日本」みたいなことが数学的にわかるようになる。」
ということです。
(数式出ちゃった!許して!)

ちなみに図では単純な矢印ですが、主流なベクトル化手順(BERT)を踏むと768次元のベクトルになるそうです。

ロボっぽ
ロボっぽ

次元ってあの、ドラ…大先輩の秘密道具「4次元ポケット」とかの次元!?

べるつり
べるつり

そうなんだけど、ここでは「それだけ多くの情報を詰め込める」くらいに思っておいてくれればいいよ!4次元も理解できない我々に768次元を感覚的に理解することは難しいからね

  • AIはテキストを理解できないよ
  • テキストをベクトル化するとなんとなく意味を理解(したフリが)できるよ

次回!「AIは常に文章の続き当てゲームをしてるだけ!?」
機械学習とかLLMとか事前学習とかTransformerとかファインチューニングとか!
行けるところまで!

コメント

タイトルとURLをコピーしました