BeneDict 地球歴史館

BeneDict 地球歴史館
menu

週刊スモールトーク (第534話) ソフトウェアが消える日~プログラマーの未来~

カテゴリ : 社会科学

2023.04.16

ソフトウェアが消える日~プログラマーの未来~

■AIと認知症テスト

ChatGPTとBingは、言葉を使い、言葉で完結するなら、なんでもできる。

では、論理的思考の殿堂「プログラミング」は?

世間の評判を信じれば・・・「できる」。

これにはビックリだ。

というのも、コンピュータにとって、論理的思考のハードルはとても高いから。

コンピュータプログラムは、プログラミング言語で記述される。水も漏らさぬ論理でたたみかける論理のカタマリで、1ヶ所ミスがあるだけで動作しない。曖昧で、大雑把な自然言語とは大違いだ。

ところが、ChatGPTとBingの大母神「GPT」には、論理的思考を司る「歯車」がない。当然、論理の基本「因果関係」は理解できないから、プログラムは書けない。プログラムは、原因と結果が織りなす長大な連鎖だからだ。

そこで、実際に対話して、真偽のほどを確かめてみた。すると、驚くべき結果がでた。

認知症のテストの一つに、引き算の問題がある。

【問題】100から7を順番に引いてください(暗算で)。

【正解】93、86、79、72・・・9、2

ChatGPTとBingに、この問題を解いてもらおう。

■認知症テスト・ChatGPT編

まずはChatGPTから。

【人間】100から7を順番に引いていくと、最小の正数は?

【GPT】100から7を順番に引いていくと、最小の正数は1になります。

【人間】2ではないですか?

【GPT】申し訳ございます(ございません?)。確かに、100から7を順番に引いていくと、最小の正数は2になります。

【人間】では、そのプログラムをPythonで書いてください。

【GPT】次のPythonコードは、100から7を順番に引いていき、最小の正数を求めます。

 num = 100

 while num >= 2:

   num -= 7

 print(num)

 出力結果は2になります。

【人間】なぜ、「while num > 0」ではなく「while num >= 2」なのですか?

【GPT】while num > 0にすると、numが0以下になった時点で、whileループから抜けます。しかし、最小の正数は2なので、while num >= 2にすることで、2以上である間は繰り返し、2以下になったときにwhileループから抜けます。これにより、最小の正数を求めることができます。

【人間】初めから、答えが2とわかっていてプログラムを書くの正しくありませんよ。

【GPT】申し訳ございます(ございません?)。あなたがおっしゃるとおり、初めから答えがわかっている場合は、プログラムを書くことは無意味です。そのような場合、単純に答えを出力するだけで十分です。

【人間】では、正しいプログラムを書いてください。

【GPT】次のコードは、最小の正数を出力するプログラムです。

 print(2)

 このプログラムを実行すると、結果として2が出力されます。

【人間】間違っています。これは無条件に「2」を表示するプログラムで、100から7を順番に引いていき、最小の正数を求めるプログラムではありません。

【GPT】申し訳ございます(ございません?)。次のコードは、100から7を順番に引いていき、最小の正数を求めるプログラムです。

 num = 100

 while num > 0:

   num -= 7

   if num < 0:

     num += 7

 print(num)

 このプログラムを実行すると、結果として2が出力されます。

おー、これは素晴らしい!!

正解したからではない、「論理的」に間違えたからだ。

対話結果をみると、ChatGPTは、論理的に間違え、論理的に指摘され、論理的に修正している。

ひょっとして、ロジカルシンキング(論理的思考)?

絶対ムリ、論理の「歯車」がないので。

原因がないのに、結果がでるわけがないではないか。

■認知症テスト・Bing編

つぎに、Bing。

【人間】100から7を順番に引いていくと、最小の正数は?

【Bing】100から7を順番に引いていくと、最小の正数は2です。

【人間】正解です。では、100から7を順番に引いていき、最小の正数を求めるプログラムをPythonで書いてください。

【Bing】はい、次のように書くことができます。

n = 100 # 初期値

while n > 0: # nが0より大きい間繰り返す

  print(n) # nを表示

  n = n – 7 # nから7を引く

print(“最小の正数は”, n + 7) # 繰り返し終了後、nに7を足して表示

【人間】おみごと、正解です!!

コメントまでついているから、ビックリだ。しかも、プログラムコードは美しくムダがない。

でも、一つ気になることが。

ChatGPTとBingのプログラムは挙動が違う。ChatGPTは最終結果だけ表示し、Bingは1回計算するたびに、途中経過を表示している。

では、どっちが正しい?

プロンプト(指示文)は「100から7を順番に引いていくと、最小の正数は?」

つまり、ChatGPTが正しい。

ところが、この認知症テストは、1回計算するたびに、結果を答えることになっている。最終結果だけ答えるなら、「2」を覚えるだけでいいので、認知テストになりませんね。

では、Bingはそれをお見通しだった?

であれば、Bingは計算したのではなく、知識として知っていたのだ。

つまり「暗記数学」で解いた?

ChatGPTは論理数学で、Bingは暗記数学?

一体どうなっている?

■ソフトウェアが消える日

ここで、ChatGPTとBingの謎を解明しよう。

論理の歯車がないのに、論理的思考するのはおかしい。原因がないのに結果がでるようなものだから。

AIは魔法か?

ノー、AIは正真正銘の科学。だから必ずカラクリがある。

ChatGPTもBingも、大規模言語モデル「GPT」から生まれたジェネレーティブAIである。そのため、GPTは自然言語で書かれたテキストしか学習していない。

それで、どうやって、プログラムが書けるのか?

じつは、GPTは、数十億行のプログラムコードを学習している。ただし、厳密には「プログラムの学習」ではない。「プログラムの命令」リストを「自然言語の言葉」リストとして学習したのだ。その結果「プログラムの概念」を獲得したのである。

ただし、ここが肝心、「プログラムの概念」は人間式ではなく、コンピュータ式。つまり、GPTは、人間とは異なる概念でプログラムを理解しているのだ。これは、GPTが「言葉の概念」を人間式ではなく、コンピュータ式で理解しているのと同じである。

ちなみに、学習したプログラムコードの出所は、オープンソースのソフトウェア開発プラットフォーム「GitHub(ギットハブ)」。そのため著作権の問題がくすぶっている。

GitHubで公開されているプログラムは、ほとんがライセンス型だ。つまり「著作権は放棄しないけど、商用だろうが非商用だろうが、自由に使っていいですよ」。一方、著作権とライセンスの表記が必要だ。ところが、GPTは無断で学習し、自分が書いたコードのように回答する。そこが問題になっているわけだ。

とはいえ、これはジェネレーティブAIの宿命だろう。ジェネレーティブAIは、プログラム、文章、画像、動画、サウンドなど人間の創作物を真似ないと、そもそも成立しないから。だが、人間も他人の創作物を真似ることから始まるから、AIとかわらない。

ここで結論。

ChatGPTもBingも、簡単なプログラムなら書けそうだ。

だが、それもつかのま、あと数ヶ月で、ソフトウェア開発は一変するだろう。この変化は4段階ですすむ。

【第1段階】AIが、部分的にプログラムを書く。人間プログラマーが、それをまとめ、ソフトウェアを完成させる。

【第2段階】AIが、すべてのプログラムを書く。人間は、ソフトウェアの仕様を決めて、AIにプロンプト(指示文)を出すだけ。結果、プログラマーが消滅し、SEだけが残る。

【第3段階】SEも消滅する。ソフトウェアを必要とする人間が、AIに丸投げする。つまり、プロデューサー(資本家)だけが残る。

【第4段階】ソフトウェアはAIに統合され、人間からは見えなくなる。結果、ソフトウェアという概念が消滅する。

このような天変地異的な技術革新を「破壊的イノベーション」という。結果、「ちゃぶ台返し」がおこり、ゲームのルールが変わる。

その象徴が、爬虫類から哺乳類への政権交代だろう。

6500万年前、地球に直径10kmの巨大隕石が衝突した。放出されたエネルギーは水素爆弾6000万発分。結果、地球上の生物種の60%が絶滅した。このとき、真っ先に滅んだのは、食物連鎖の頂点に立つ「恐竜」だった。

なぜか?

衝突で吹き上げた粉塵が、地球を覆い、寒冷化がすすみ、植物も動物も激減した。結果、大飯食らいの恐竜が最初に滅んだのである。

つまりこういうこと。

環境が激変したら、強者は滅ぶ。生き残るのは、環境に適応した者なのである。

by R.B

関連情報