機械学習がブラックボックスで確率的にもんだいを解くのを良しとしたい。

機械学習(いわゆるAI)は答えをだすときに「たぶん…99%くらい…あってる」「ロジックもなんとなく予想はつきますが詳細はブラックボックスです」という感じで答えを出してくれます。

「100%自信もって答えだせっ! 根拠がはっきりしないなんて仕事に使えないっ!!」

と思う人も多いと思います。

***

それはさておき。

それでは機械学習を使っていない普通のプログラムについてみなさんはどの程度理解してますか?

そのプログラムを組んだプログラマーなら中身を完全に理解していると思っていませんか。

ですがどんなプログラムでもバグでますよね?中身を完全に理解してるならバグなんてでないはずです。

一般的なプログラムであってみもう複雑すぎて人間ごときが中身を完全に理解するのは不可能になっているのです。

プログラムの複雑さは、単にプログラムが複雑である、という以上に例えば実行環境のOSの複雑さCPUやインターネットや外部APIやミドルウェアといった要因が絡むためです。プログラムが動いてもCPUの熱暴走で演算ミスが起きる可能性もあってそれを事前に予期できるのはラプラスの悪魔くらいです。ちなみにプログラム単体でみても天文学的な分岐パターンがあるため完全な理解はほぼ不可能です……。

プログラムには「バグが無いことを証明できない」という原則があります。どれだけテストをして確率を上げたところでバグがある可能性は排除できません。絶対100%正しい答えが出るプログラムなんてないのです。

頑張ってちゃんと動くように作ってはいても「たぶん…99%くらい…動きます(でもバグはあるよ…バグででも怒らないでね…)」「ロジックもざっくりは説明できますが詳細は…」ということです。

これが今のプログラムの実情なのです。

それって機械学習(AI)とあんまり変わらないですよね…Wow…!!

***

今のソフトウェアだってそうなんだから「100%じゃないから」「ブラックボックスだから」ということでAIとか拒否するのではなく。ソフトウェアという世界の前提を改めて認識したうえで正しくAI/機械学習とつきあっていきたいと思いましたとさ。

***

蛇足:プログラムは書いてある通りにしか動かない

少しだけ補足。

プログラマーは自分の希望通りに動くように頑張ってソースコード(プログラム)を書きます。ただしプログラムというのは非情なもので書いてあるコードの通りにしか動きません(当たり前です)。間違ってコードを書いたら間違ったとおりに動きます。プログラマーの思いなんてまったく無視します。

だから「このプログラムはロジックは?」の答えは、「わたしは○○と書いたつもりですが!バグがあるから思った通りには動かないかもしれませんね!!そんなに気になるなら自分でコード読め、ばーか」です。

この記事が気に入ったらサポートをしてみませんか?