コラム31.  :C言語と人工知能

人工知能の飛躍的進歩

近頃の人工知能技術の発達には、目を見張るものがあります。2016年3月に行われた人工知能(AI)と人間の囲碁の世界トップ棋士の5番勝負で、Googleが開発した囲碁AIの「アルファ碁(AlphaGo)」が勝利したり、IBMの人工知能ワトソンがクイズ番組に出演したり、と近頃は人工知能(AI)技術が目覚ましい発展を遂げています。特に以後は、人間を打ち負かすまで少なくともあと10年は必要であるといわれていたため、世の中に与えた衝撃はそうとうなものです。

人工知能はArtifical Intelligenceの略であり、文字通り、人間が開発した頭脳です。では、この人工知能というものは、そもそもどのようなものなのでしょうか。

人工知能とは

「人工知能」という名前は1956年にアメリカの計算機科学者であるジョン・マッカーシーにより命名されました。人工知能は、人工的にコンピュータ上などで人間と同様の知能を実現させようという試み、もしくはその技術のことを指します。

人工知能の研究者が用いている実現へのアプローチとしては、「ファジィ理論」や「ニューラルネットワーク」などといった理論があります。とはいえ、厳密な定義があるわけではなく、家電製品の制御システムやゲームソフトの思考ルーチンなども人工知能と呼ばれることから、その定義は曖昧と言えます。

チューリングテスト

また、あるシステムが人工知能かどうか、ということを判定する手段として、チューリングテスト(Turing test)という手法が提唱されています。これは、アラン・チューリングの1950年に発表した論文の中で書かれたもので、「機械は思考できるか?」という問題意識から提案した質疑応答式のテストです。

では、このチューリングテストというのはいったいどのようなものなのでしょうか?例えば、目の前に2つのディスプレイと、キーボードが設置(A,Bと仮定します。)されていたとします。両方とも、人間がキーボードで何らかの言葉を入れると、それに対して両方とも適切な言葉を返してくるとします。

このとき、例えばAは人間がその入力内容に対し、受け答えをし、それに対し、Bは何らかのコンピュータプログラムが応答しているとします。このとき、もしも入力している人間がA,Bのうちどちらが本物の人間で、どちらがコンピュータのプログラムか、ということがわからない場合、このプログラムはチューリングテストに合格、つまり晴れて「人工知能である」と認定できるようになる、というのがこのテストのあらましです。

チューリングがこのテストを提唱して以来、長らくこのテストに合格することはありませんでしたが、2014年に、「13歳の少年」の設定で参加したロシアのスーパーコンピューターが、30%以上の確率で審査員らに人間と間違われ、これにより史上初めてのチューリングテストの「合格者」となりました。

ディープラーニング

次にもう一つの近頃の人工知能の最新技術である、ディープラーニング( deep learning:深層学習)について説明しましょう。これは、機械が物事を理解するための学習方法です。

これは、機械学習(きかいがくしゅう: machine learning)という、人間が自然に行っている学習能力と同様の機能をコンピュータで実現しようとする技術・手法の一つで、プログラムしなくても学習する能力をコンピュータに与える研究分野であるというのが最大の特徴です。

ディープラーニングにおける機械学習を実現しているのは、ニューラルネットワーク(neural network:神経回路網)と呼ばれる、人間の神経によく似た働きをするシステムを機械的にもしたものを利用した学習方法の一つで、ニューラルネットワークを多層化した手法全般をディープラーニングと言います。冒頭で述べた、人間の囲碁の名人を打ち負かした囲碁のアルゴリズムは、このディープラーニングによって実現されているのです。

C言語と人工知能

ながらく、人工知能の研究の中心は、LISP(リスプ)という特殊な言語でしたが、近頃では人工知能の技術が一般化したこともあり、C/C++言語でも人工知能を実現できるライブラリが一般的に普及してきました。

たとえば、ディープラーニングに関していえば、オープンソースのCaffe(カフェー)というライブラリによって、誰でも利用可能になっています。このライブラリの特徴は、CPUのみならず、CUDAなどをつかってGPUでも高速の計算を行える点にあり、今後様々な分野で応用されることが予想されます。

C/C++など以外では、Python(パイソン)などの言語でも利用可能です。