【スポンサーリンク】

ChatGPTで擬似コードを計算させたら「空気を読む」だけだった【言語モデルはプログラム処理系ではない】(GPT-3)

ChatGPTで擬似コードを計算させたら「空気を読む」だけだった【言語モデルはプログラム処理系ではない】(GPT-3)

ChatGPTに擬似コードを与えると、解釈して実行結果を表示できるようです。

しかし、ちょっと試してみると その「ハリボテ感」にも気づかされます。
一見、本当っぽい出力なのですが、全く正しくないのです。

これは「言語モデル」のもつ、必然の性質です。
擬似コードの演算結果に見えるものは、「演算」しているわけではありません。
これまでの文書データからの「推測」を言っているだけなのです。

ChatGPTで擬似コードを計算させたら「空気を読む」だけだった【言語モデルはプログラム処理系ではない】(GPT-3)

けして万能ではないんですよね。

用途に応じて使い分けることが大事。

環境

ChatGPT 3 (2023年3月22日時点)

\記事が役に立ったらシェアしてね/
【スポンサーリンク】

1. 擬似コードと指示を与える

このようなプロンプトを与えました。

擬似コードと指示を与える

以下の擬似コードを解釈し、必要な処理を補って、出力結果を表示してください。ただし、出力が複数行になる場合は、「, 」で区切って、10個ごとに改行してください。

1から50までの数値について繰り返す
   もし、数値が3で割り切れる または 数値の1の位が3ならば
         「変」と出力
   そうでなければ
       数値をそのまま出力
以上 繰り返し
擬似コードと指示を与える

「世界のナベアツ」みたいな感じだね。

1-1. Pythonコードを生成してくれた

以下は、ChatGPTの生成した答えです。
まずは、Pythonコードを生成してくれました。

Pythonコードを生成してくれた
for i in range(1, 51):
    if i % 3 == 0 or str(i)[-1] == '3':
        print('変', end=', ')
    else:
        print(i, end=', ')
    if i % 10 == 0:
        print()

コードの解説もバッチリです。

このプログラムは、1から50までの数値について繰り返し処理を行い、数値が3で割り切れるか、1の位が3である場合には「変」と出力し、そうでない場合には数値をそのまま出力します。また、10個ごとに改行して出力します。

Pythonコードを生成してくれた

ふーん…。

「i%10==3」ではなく、わざわざ文字列の最後の文字を見ているんだね。コード的には非効率的だけど。

1-2. ChatGPTによる「コードの出力結果」

ChatGPTによる出力結果です。

ChatGPTによる「コードの出力結果」
1, 2, 変, 4, 5, 変, 7, 8, 変, 10
11, 12, 変, 14, 15, 変, 17, 18, 変, 20
21, 22, 変, 24, 25, 変, 27, 28, 変, 変
31, 32, 変, 34, 35, 変, 37, 38, 変, 40
41, 42, 変, 44, 45, 変, 47, 48, 変, 50
ChatGPTによる「コードの出力結果」

あれれ? 全然違うよ。

例えば、12は「変」になっていないとおかしいじゃない。

2. 訂正すると口先だけ謝る

まずは、全体的に不正確さを指摘しました。
すると、「先に提示したコードと出力結果に誤りがあります」と答えた上で、もう一度同じ回答を出してきました。

訂正すると口先だけ謝る

今度は、具体的な誤答箇所を1つ指摘します。
しかし、「前回の回答に誤りがありました」と述べるものの、12はそのまま出力されています。

訂正すると口先だけ謝る

最後に、3の倍数がうまく変換されていない点を指摘してみます。
「おっしゃる通りでした」と回答しつつ、結局 出力結果はそのままでした。

訂正すると口先だけ謝る

3. 処理系でPythonコードを実行してみた

実際に、オンラインのPython実行環境(ideone)で実行してみました。

「python 3.7.3」で実行すると、計算結果が出力されました。

処理系でPythonコードを実行してみた
1, 2, 変, 4, 5, 変, 7, 8, 変, 10, 
11, 変, 変, 14, 変, 16, 17, 変, 19, 20, 
変, 22, 変, 変, 25, 26, 変, 28, 29, 変, 
31, 32, 変, 34, 35, 変, 37, 38, 変, 40, 
41, 変, 変, 44, 変, 46, 47, 変, 49, 50, 
処理系でPythonコードを実行してみた

一応、想定した答えになっているね。

これが、ChatGPTはプログラム処理系ではなく「言語モデル」という意味です。

ChatGPTが計算できないのは仕方ないです。
しかし、できもしないことを雰囲気だけ真似して、実際には「口からでまかせ」を出力しているのです。

4. 「答え」に意味を見出すのは人間側

現時点でのChatGPTは、ちっとも「論理的」ではないことがわかりました。

ちょうど「賢い馬ハンス」のようなもの。
周りの人が無意識に「答え」に意味を期待することで、そう見えてしまっている現象なのかもしれません。

賢馬ハンスは、人間の言葉が分かり計算もできるとして19世紀末から20世紀初頭のドイツで話題になったオルロフ・トロッター種の馬である。実際には観客や飼い主が無意識下で行う微妙な動きを察知して答えを得ていた。

賢馬ハンス – Wikipedia

しかし、恐ろしいのは、ChatGPTは一度も「口答え」せず、こちらの言い分に「理解を示した風」を見せた上で、常に全く理解しない回答をしてきた点です。

「答え」に意味を見出すのは人間側

まさに「馬の耳に念仏」ね。

こちらもどうぞ。

「プログラミング教育より国語力」説は生成AIの台頭で正しくなった【プロンプト エンジニアリング】
「プログラミング教育より国語力」説は生成AIの台頭で正しくなった【プロンプト エンジニアリング】
対話型AI がプログラムを生成できるようになった現在、「プログラミング教育」をどう考えたらいいのでしょう? 1つは、プログラミング知識自体は、自分の思い通りのプログラムを作るためには必要ということです。ただし、「読み書き計算」のような誰でも必要な「基礎的なスキル」にはならず、これまで通り「専門的なスキル」のままになるかもしれません(大工職人のような)。 もう1つは、プログラミングの技術よりも、「問いを立てる力」の方が重視されていくように思います。そもそも「問い」に気づかなけれ...
[WordPress] 投稿月でグループ分けした月別PV集計表を見るためのカスタムプラグインを作った【ChatGPTと】
[WordPress] 投稿月でグループ分けした月別PV集計表を見るためのカスタムプラグインを作った【ChatGPTと】
一ヶ月分のブログ公開がどれぐらいのページビューにつながっているのか、集計する自分用のWordPressプラグインを作成しました。 自分にとっては未経験の分野でしたが、対話型AI「ChatGPT」に相談してみると、使える叩き台を用意してくれました。 WordPressプラグインづくりははじめてでしたが、かなりの時間短縮。無事に完成しました。 アクセス集計プラグイン 一ヶ月分のブログ公開が、どれぐらいの成果になっているのか知りたいことがあります。 これまでは、Google Ana...
対話型AIが「暴走する」とは?【プロンプト・インジェクション】
対話型AIが「暴走する」とは?【プロンプト・インジェクション】
ChatGPTの衝撃で、Microsoftの検索エンジン Bing にも会話AI機能が追加されました。 しかし、Bing AI には、「特殊な質問の仕方」をすると、Microsoftの非公開の設定を漏らしてしまう「脆弱性」が見つかりました。 そのほかにも、会話内で「混乱」して、虚偽や侮辱の発言をしてしまう問題点も。そこで、いったん会話回数を制限することになりました。 急激なアクセスで、システムの改善が追いつかなかったようですね。 「本来、禁止されていることをしてしまう」という...
なるべくChatGPTの不正確な回答に気づくコツは?
なるべくChatGPTの不正確な回答に気づくコツは?
ChatGPTの回答との付き合い方は、インターネット情報と一緒です。つねに誤情報の可能性を念頭において、吟味する必要があります。 とくに、ChatGPTは、暗黙のうちに「答えがある」と考えて回答するので、未知のことへの回答は推測が含まれています。 技術は真新しいけど、リテラシーの基本は一緒だね。 本当に答えがある質問なの?(生成:ジェネレーティブ) ChatGPTに質問するときには、注意しなくてはいけない性質があります。それは、ChatGPTは「質問者の言うことを否定しない」...
QRコードを読み込むと、関連記事を確認できます。

ChatGPTで擬似コードを計算させたら「空気を読む」だけだった【言語モデルはプログラム処理系ではない】(GPT-3)
【スポンサーリンク】
タイトルとURLをコピーしました