ChatGPTに擬似コードを与えると、解釈して実行結果を表示できるようです。
しかし、ちょっと試してみると その「ハリボテ感」にも気づかされます。
一見、本当っぽい出力なのですが、全く正しくないのです。
これは「言語モデル」のもつ、必然の性質です。
擬似コードの演算結果に見えるものは、「演算」しているわけではありません。
これまでの文書データからの「推測」を言っているだけなのです。
けして万能ではないんですよね。
用途に応じて使い分けることが大事。
ChatGPT 3 (2023年3月22日時点)
1. 擬似コードと指示を与える
このようなプロンプトを与えました。
以下の擬似コードを解釈し、必要な処理を補って、出力結果を表示してください。ただし、出力が複数行になる場合は、「, 」で区切って、10個ごとに改行してください。
1から50までの数値について繰り返す もし、数値が3で割り切れる または 数値の1の位が3ならば 「変」と出力 そうでなければ 数値をそのまま出力 以上 繰り返し
「世界のナベアツ」みたいな感じだね。
1-1. Pythonコードを生成してくれた
以下は、ChatGPTの生成した答えです。
まずは、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個ごとに改行して出力します。
ふーん…。
「i%10==3」ではなく、わざわざ文字列の最後の文字を見ているんだね。コード的には非効率的だけど。
1-2. 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
あれれ? 全然違うよ。
例えば、12は「変」になっていないとおかしいじゃない。
2. 訂正すると口先だけ謝る
まずは、全体的に不正確さを指摘しました。
すると、「先に提示したコードと出力結果に誤りがあります」と答えた上で、もう一度同じ回答を出してきました。
今度は、具体的な誤答箇所を1つ指摘します。
しかし、「前回の回答に誤りがありました」と述べるものの、12はそのまま出力されています。
最後に、3の倍数がうまく変換されていない点を指摘してみます。
「おっしゃる通りでした」と回答しつつ、結局 出力結果はそのままでした。
3. 処理系でPythonコードを実行してみた
実際に、オンラインのPython実行環境(ideone)で実行してみました。
「python 3.7.3」で実行すると、計算結果が出力されました。
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,
一応、想定した答えになっているね。
これが、ChatGPTはプログラム処理系ではなく「言語モデル」という意味です。
ChatGPTが計算できないのは仕方ないです。
しかし、できもしないことを雰囲気だけ真似して、実際には「口からでまかせ」を出力しているのです。
4. 「答え」に意味を見出すのは人間側
現時点でのChatGPTは、ちっとも「論理的」ではないことがわかりました。
ちょうど「賢い馬ハンス」のようなもの。
周りの人が無意識に「答え」に意味を期待することで、そう見えてしまっている現象なのかもしれません。
賢馬ハンスは、人間の言葉が分かり計算もできるとして19世紀末から20世紀初頭のドイツで話題になったオルロフ・トロッター種の馬である。実際には観客や飼い主が無意識下で行う微妙な動きを察知して答えを得ていた。
賢馬ハンス – Wikipedia
しかし、恐ろしいのは、ChatGPTは一度も「口答え」せず、こちらの言い分に「理解を示した風」を見せた上で、常に全く理解しない回答をしてきた点です。
まさに「馬の耳に念仏」ね。
こちらもどうぞ。