一人一党党

一人一人の、一人一人による、一人一人のための政治制度を!

C言語を学ぶ時に人工知能から入門することがなぜ合理的なのか

個人的な事情により、コンピュータの基礎知識を得る方法を探していたところ、
プログラミングを学ぶ時に人工知能から入門することがなぜ合理的なのか - WirelessWire News(ワイヤレスワイヤーニュース):
https://wirelesswire.jp/2017/08/60921/
を見つけて、なるほどと思った。

仮にそうであれば、これ以上の合理的な入門方法も存在しないと言える。
十分な量の計算資源がある場合、コンピュータの機能は、人工知能のそれの下位互換でしかないからだ。
人工知能でできないことは、コンピュータにもできない。
しかし、コンピュータでできることは全て、人工知能でもできる。

そんなコンピュータより多機能なものへ、コンピュータ自身より先に入門すべきだなんて、常識外れだ。
常識的には、機能が沢山ある分だけ、学ぶことも増える。
多機能なスマートフォンよりも単機能なガラパゴスケイタイを高齢者が好むのは、学ばねばならないことが少なくて済むからだ。
電話をかけることしかできないのだから、フィッシングサイトやExcelウイルスに注意する必要が無い。
しかし上記ウェブページの筆者はこう喝破する。
「しかしキーボードを使ったプログラミングの入門としては、人工知能のプログラミングはかなり簡単な部類です。」

そういえば、そもそも人工知能の難しさとは何だっただろう?
人工知能の最先端を行くIBMGoogleなどを見れば分かる。
Deep Blue、ワトソン、AlphaGO、…。
どれもこれも強力なスーパーコンピュータの上で動くシステムだ。
人工知能の難しさは、要求される資源の量が膨大なことだ。
人工知能をマトモに走らせるには、強力なハードウェアが必要なのだ。
例外は精々、将棋ソフトの思考アルゴリズムを塗り替えたBonanzaくらいだろう。
Bonanza - Wikipedia
https://ja.wikipedia.org/wiki/Bonanza

高性能なワークステーションで参加する者も多い中、Bonanzaは一般向けのノートパソコン (VAIO SZ-90S)、筐体を冷却するのは小型USB扇風機と、低スペックの環境での優勝であった。

この例外こそ、人工知能が強力なハードウェアを欲する理由を説明してくれる。
上記Wikipediaページより「
Bonanza登場以前のコンピュータ将棋では、その局面で可能なすべての指し手を評価する(全幅探索)のではなく、自然な指し手を重視して探索(選択探索)していた。
全幅探索では全ての指し手を評価すると選択肢が膨大になり、現実的ではないと考えられていたからである。
しかしBonanzaはその常識を覆し、全幅探索を採用することで、これまでの他のソフトが見落としていた(あるいは開発者が軽視していた)指し手に高い評価を与えることが可能となった。

人工知能アルゴリズムの基本は、「総当たり探索」なのだ。
人工知能は、究極の理想としては、プログラマから何も教わらなくても問題を解けなければならない。
ノーフリーランチ定理でいうところの「汎用最適化戦略」だ。
ノーフリーランチ定理
https://ja.wikipedia.org/wiki/%E3%83%8E%E3%83%BC%E3%83%95%E3%83%AA%E3%83%BC%E3%83%A9%E3%83%B3%E3%83%81%E5%AE%9A%E7%90%86
「あらゆる問題で性能の良い汎用最適化戦略は理論上不可能であり、ある戦略が他の戦略より性能がよいのは、現に解こうとしている特定の問題に対して特殊化(専門化)されている場合のみである」
この定理によって証明されてしまった膨大な資源要求を何とかしようというのが、人工知能の難しさだ。

逆にノーフリーランチ定理を破ろうとしなければ、ネタ元の筆者が述べたとおり、プログラミングは極めて簡単になる。
究極の人工知能が相手なら、プログラマ人工知能に何も教える必要がないからだ。
勿論、究極の人工知能は未だ製造されておらず、現存するのは人工知能の下位互換でしかないコンピュータだ。
しかし、下位互換なりに恩恵は伝わる…総当たり探索のアルゴリズムは極めて単純だ。
単純なアルゴリズムは複雑なものより効率がいいから、競争相手も人工知能ならバカにできない。
上記Bonanzaのページより「
開発当時の保木は将棋に対する造詣は深くなく、チェスと同じようなものであると考えていた。
そのためコンピュータチェスで一般的な全幅探索を採用したが、保木によると「選択的探索は選択を行う処理が複雑になるため、全幅探索よりも負荷がかかる」としている。


すなわち、計算資源の要求量だけが、人工知能から入門する場合の壁なのだ。
C言語の場合、この点は問題になりづらい。
計算資源の要求を節約する究極の方法はアセンブラしかないが、「高級アセンブラ」の異名を持つだけあって、C言語アセンブラ並みに計算資源を効率よく使える言語のひとつだ。
逆に、C言語人工知能以外から入門するのは、コンピュータ初学者にとって困難だろう。
人工知能以外の分野では、総当たり探索より効率的で、しかし複雑なアルゴリズムが普及していているからだ。
入門の段階で、アセンブラに毛が生えた程度の記述力しかないC言語を使って、そんな複雑なアルゴリズムを記述しなければならない。

変化の激しいコンピュータ業界において、プログラミング言語の栄枯盛衰もまた激しい中、C言語は事実上の業界標準として君臨している。
コンピュータを学ぶ上で、C言語は避けられそうもない。
C言語を学ぶなら、まずは人工知能の実装を目指すよう、勧めたい。