ChatGPTのヤバさは、論理処理が必要と思ったことが確率処理でできるとわかったこと

ChatGPTのヤバいところは、論理処理が必要だと思っていたことが、じつは多数のデータを学習させた確率処理で解決可能だと示したことだと思います。

たとえば、このように正規表現にマッチする文字列を生成するには、特別に専用の論理処理が必要だと思っていました。

前のブログのときには特殊処理が必要だと考えてましたね。
ウソはウソと見抜ける人じゃないとChatGPTを使うのは難しい - きしだのHatena

けど、123_45678world.mdはマッチするのにマッチしないと言っているので、そのような誤りが入ることを考えると、どうも確率処理だけでやっているようです。

考えてみると、3層以上のニューラルネットであれば論理素子を再現できるので、ディープラーニングで論理処理を模倣することは可能なんですよね。
バックプロパゲーションでニューラルネットの学習 - きしだのHatena

そもそも論理は、多数のデータに見られる傾向を一般化してデータの意味にかかわらず適用できるようにした法則なので、もともとが確率処理でできるというのも無理はない。論理というのは「データがなくても導ける」というものなので、データがあるなら当然に導けるという話でもある。

ただ、この場合「1100円でバットとボールを買いました。バットはボールより1000円高かったのですが、それぞれいくらでしょう」に対してバットを1000円、ボールを100円と答えてしまうような間違いをするのと同じような間違いをします。

と書いたあとで試してみると、ほんとにそのような間違いをして笑いました。

この、バットとボールの問題は、次のGigazineの記事にあったものです。
直感的に「正しい」と判断した問題は実は間違っているかもしれない、認知機能を暴く「バットとボール問題」と対処法とは? - GIGAZINE

この記事では、思考のプロセスには「意識的に熟考することはほとんどなく、素早く実行する」と「熟考し、ゆっくりと実行する」の2過程があるとしています。前者の段階でバットを1000円のように間違うのは自然なので、そのあとでちゃんと考えろという話です。

前者はカーネマンのいうシステム1での処理で、後者がシステム2での処理なんだと思います。そして、ChatGPTをはじめディープラーニングでの処理はシステム1での処理を模したもので、だいたい正しそうでよくみると間違っているというような答えを出してくるのだと思います。

画像認識だとこういうのがありますね。これ、人間にも1頭の長い牛に見えてしまうので面白いのだと思います。しかし人間は、このような牛はいないとか頭としっぽが隠れることでこのように見えるということを考えて、「1頭ではない」という結論をえるわけです。このような常識を用意して前後関係を考えて結び付けていくというのを特別な処理ではなく汎用にやるのが難しい。

思えば、たとえば次のようなコードは構文の意味やメソッドの意味を考えることなく何をするかがわかります。

for (int i = 0; i < 10; ++i) {
  System.out.println("Hello!");
}

入門のとき以外で「初期処理でiに0を入れて繰り返しで++で1増やしてiが10より小さいときに繰り返すから・・」のように考えることはありませんね。
まあ、プログラミング言語というのは論理処理を感覚的に処理できるように工夫するものでもあるのでRubyなんかでは次のように書けるようになってたりしますね。

10.times do |i|
  p i
end

あと、ぼくの感覚処理にはバグがあるので、数字で始まる行は行番号に見えてしまう。

直観だけでは間違ってしまうことがあるし、たとえばCスタイルのfor文では、ちょっと条件や再計算処理が変化すると感覚的には追えずにひとつづつ確認する必要もあったり、最終的に論理処理が必要になります。
ChatGPTを見た人が「あとは論理的な確認を行うようにすれば完璧」などということがありますが、このような汎用の論理処理を論理コンピュータで実用的に計算することは計算量の爆発の問題があって不可能なので、量子コンピュータが実用化して普及するまでは正しい処理には人間が必要という状況は変わらないと思います。

2023/1/11 「予想どおりに不合理」のダン・アリエリーは「statistics is a nuiscance(統計は邪魔だ)」というような発言をする人だと思い出したので、少なくとも自身の実験は妥当とされているカーネマンの「ファスト&スロー」に差し替え。あと、大脳xxと書いてたところをシステム1, 2に変更