AI・機械学習をデバッグする。

 本当に、AI・機械学習をデバッグするノウハウでなく、デバッグするならばこうするだろうと考えて見た。

 

説明責任

 フォン・ノイマン型コンピュータである限り、ブラックボックスは 100% ありえない。

 AIとか機械学習というものが、C言語とOracleで実装されていればどういう理由でこのような結果になったと説明できる。

 説明できないのは、自分でコーディングをしていないからだ。ツールを使うだけでは、AIとか機械学習とは言わないだろう。

 いや、本当に自分でコーディングしたプログラムでないのだろうか。そうであれば、もっと基礎的なところから学習する必要がある。

 説明するのに必要な作業は、コーディングを1行ずつ変数をトレースすること。

 たったこれだけのことをしないから、受け入れられないのだろう。

 

 AIとか機械学習といわれるものでも、内実はこのような処理になっていると思う。

 C言語であれば結果は、整数値が1つだけになる。

 これだけであれば、ただのデバッグ作業だがAIと機械学習は、使っている数式と使用箇所を説明しないといけない。

「ツールを使った結果、こうなりました。」これでは、がっかりする。

数学を知らない人に、何を言っても無駄と思うならば、自分だったら上記のようなトレースを提出させる。

画像の判別でも、グラフック関数を実行した結果の戻り値だから変数に値がある。

AI・機械学習でしていることは変数に値を入れているだけだ。

 

 わざわざ、AI・機械学習を使わずとも電卓を使った手計算で、できる数式と理論ではないのだろうか。

コンピュータも電卓もない時代から統計的手法はアプローチされている。

第二次世界大戦頃から研究が始まったO/R(オペレーションズ・リサーチ)

アポロ計画のPERTなど。作業工程を同期させるために必要な輸送計画

それに、机上で自分で計算する方が楽しく感じる。手計算の方が的を得るのではないだろうか。

 手計算でするとしても、多量のパラメータ変数を入力できるわけでない。手計算を 10 とするならば、パソコンは 10000 とか

そのようになる。手計算に比べると、計算結果も精度は上がるから何かしらの知見は得ることはできるだろう。本質はたいして変わらない。

随分前に、Basic(VBでない)あるいはExcel(組み込み式・VBA)を使った統計学を説明した書籍もあった。

これらを使ってプログラムの学習するのもよいと思う。

 

 プログラム言語と検算

何かの統計値で100人~200人で推移する事象で、それが10000人とかあるいは2乗倍・指数関数的に増加すると解釈がされている場合、

結果が求められている予想値と乖離するのは、バグと思う。

C言語であれば、けた落ち・情報落ちがある。0.00001 の値でなく変数に 1 と入力されているならばこれだけでも 1万倍の違いになる。

他には、自動変数(auto)を初期化していないなど考えられる。何回も計算して同じ結果になれば正しい。

結果が異なるときはそのモデル、ツールそのものは何しても使えないだろう。