ソフトウェアが消える日~プログラマーの未来~
■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