【超入門】ChatGPTなどの言語モデルはなぜ嘘をついてしまうのか?わかりやすく話します

1. ChatGPTは嘘つき!?
ChatGPTで文章を生成したりすると明らかに間違っていたり、微妙に違っていたりすることがあるのではないでしょうか?巷では、ChatGPTは嘘つきなどと言われています。悲しいかな、ChatGPTは悪い子ではないのに…少しかわいそうに感じてしまいます。
では、なぜそのような現象が起きてしまうのか考えてみましょう。
1.1. ChatGPTとか用語の話
ChatGPTなどの文章を生成するAIのことを言語モデルといいます。そして、テキストを生成するときに、言語モデルが嘘をつくときがあります。このように間違った情報を生成してしまう現象のことをハルシネーション(幻覚)と呼びます。そして、言語モデルは恣意的に嘘をついているのではありません。悪意はないんです。
1.2. ハルシネーションの例
例えば、次のような質問をChatGPTにしたとします。
質問: 「富士山の高さは何メートルですか?」
回答: 「富士山の高さは5,377メートルです。」
この場合、富士山の高さは本来「3,776メートル」ですよね。
また、次のようなケースもあります。
質問: 「犬は猫よりも長く潜水できますか?」
回答: 「犬は猫よりも長く潜水でき、平均で10分以上水中にいることができます。」
この回答もおそらく誤りです。このように、言語モデルが正確なデータを持たない場合、もっともらしい内容を生成してしまうことがあります。
2. 結局は確率の話
2.1. 一般論
一般的には、ハルシネーションは次のような要因で起こるといわれています。
- トレーニングデータの偏りや不足
- 知識の古さ
- ユーザーが言語モデルに与えた情報が不適切
ふむふむ。学習段階の話か。ということになりますが、テキストの生成の部分にこれらがすごーく影響してきます。
2.2. 数学っぽく話すと
もっと、数学的に言語モデルの根底の考え方について見ていきましょう。まず、単語の選択です。
数学的には、高校生の知識でなんと言語モデルがテキストを生成する原理がわかります。条件付き確率というものを高校生の時に習いましたよね!実はそれが重要なんです。例えば、テキスト$x$が与えられたとき、言語モデルが$y$を出力する確率$P$は次のように表されます。
$$P(y|x)$$
高校数学っぽく確率を書くと、
$$P_{x}(y)$$
ただ、高校数学と違う部分は、$x$が単語で与えられるので、$x$が複数になるということです。これを計算してくことで、単語の選択を行います。単語の選択を行ったら、今度はその単語とxでまた、次の単語の条件付確率を計算します。一度、情報を整理します。
- 文章$x$が与えられる。
- $x$ をもとに、次に選ばれるべき単語を条件付き確率で計算する。
- 選ばれた単語を $x$ に追加し、新しい条件付き確率を計算する。
- この過程の繰り返し
まぁいろいろ言いましたが、言語モデルがテキストを生成するってことは条件付き確率を計算するってことなんだなぁと思ってください。
この状態から、次の単語を推測する方法は実は結構あります。例えば、確率が高い順に単語を選ぶという方法がありますが、あまりうまくいかないことが知られています。
この選ばれた単語が、まったく関係ない単語だった場合、どんどん文章が関係ない文章になってしまうというわけです。そして、学習段階で仮に間違っていた情報を与えられていたならば、$P(y|x)$がちんぷんかんぷんな確率を生成するということは容易に想像できますよね。
以上おしまい。ChatGPTが私たちをだまそうとしているわけではないことがわかりましたね。
*単語といいましたが、言語モデルの世界では、トークンと呼びます。
*言語モデルにはテキスト生成以外にもいろいろきます。例えば、穴埋めとか。