人工知能の種明かし(4) - 人工知能と第五世代コンピュータ
AI、人工知能が注目を浴びる時期は定期的にやってきて、そのたびに新しいモデルであるとか道具が広まります。前回はファジィについて書きました。
人工知能の種明かし(3) - ファジィという曖昧性
ファジィ家電が流行ったのは1990年代くらいかと思うのですが、日本に於いてはこれに先立つ1980年代に人工知能を目指した「第五世代コンピュータ」という国家プロジェクトがありました。
第五世代コンピュータ
【通産省】 知識情報処理指向の第五世代コンピュータプロジェクト開始
このプロジェクトで実際に何が研究されていたか、どのような成果があったのかはリンク先を見ていただくとして、知能を表現するためには論理学だろうということで、述語論理を使いプログラムを書くことで構築した知識の塊を効率よく検索して、その結果から推論を行うことで実現しようとしていました。この時代までは人工知能や知識ベースを構築するのにLISPというプログラミング言語が使われることが多かったのですが、論理を基本とした新しいプログラミング言語、Prologが作られ、ここからは暫くの間「人工知能と言えばPrologだよね」という時代が続きました。
述語論理
Prolog
LISPもそうだったのですがPrologも既存のノイマン型計算機では効率よく実行できないので、そのための研究もされたのですが、計算機の世界では量産されなければ実用的なコストにならないので、あまり発展することはなかったのですが、並列処理の考え方と実装に関してはタイミングが合致したようで、その後のマルチCPUであったりマルチコアなCPUを使うための基礎にはなったように思います。
prolog - カット、カット!
Prolog 入門してみた
まあPrologはなかなか癖のある言語でLISPerとかでないと使いこなすのは難しいなという感じでしたが、考え方は今のプログラミング言語でも使えることが増えた「リスト内包表記」に似ているといえば似ています。まあリストと言えばLISPですからね。
リスト内包表記
普段、ノイマンな世界にいる人にとっては内包表記は、処理を関数として実現する必要がありデバッグするためには数学的に証明しないといけないところがあって、その値域であるとか特異点がどうなっているかの表記とテストがいつも苦労します。そして例外処理と相性が良くないんですよ。これは慣れも大きいとは思うのですけど、リアルなデバイスや人間相手の処理には向きません(証明できないようなものばかりですから)。
それまであまり考えることもなかった並行処理については、この頃に方法論が進歩して処理が並行に実行されることを前提とした並行処理プログラミングという世界が広まりました。
並行論理プログラミング
コードを書く人も変数の保護であったり、セマフォや待ち合わせ、プロセス間通信という概念と使い方を覚えなければならなくなったのですが、脳みその使う部分がそれまでのプログラミングと違う場所のようで、苦手意識を持つ人が多いようですし、実際、ここにバグが残っているコードも多いようです。並行処理はプログラマの注意力に頼っては駄目で、言語であったりシステムで担保しないといけないんではないでしょうかね。
結局のところ第五世代コンピュータは、あまり成果を出すこと無く終わってしまったのですが、Prologの開発によってルールベースの探索にはパターンマッチング、そして無駄な検索を防ぐためのカット、また結果を知識に組み込むフィードバックといった処理こそポイントであることがわかり、これらがニューロコンピュータへ取り込まれ生成AIへ影響を与えているとは思います。
AIの失敗事例第5世代コンピュータ
第五世代コンピュータは失敗だったと言われる理由は?目指したものや成果・影響を解説
ヘッダ画像は、Geminiくんに描いてもらいました。
いいなと思ったら応援しよう!
頂いたチップは記事を書くための資料を揃えるために使わせていただきます!