その昔、AI用のプログラミング言語といえば、もっぱらLISP(LISt Processor)であり、AIはLISPの基本演算専用のハードウェアで動いていました。LISPは最も初期の言語の一つで、リスト形式のデータ処理を得意とする言語です。その後、汎用コンピュータが普及すると、プログラミングモデルもその潮流に従っていきました。しかし、機械学習、特に深層学習(ディープラーニング)が再び注目を集めるようになった今日、そのデータ処理にもっと適した新しい手法やツールキットが採用されています。ここでは、機械学習とソフトウェアプラットフォームがどのように共に発展を遂げてきたのか、その変遷をたどってみます。
人工知能(AI)黎明期
人工知能とLISPは、いずれもジョン・マッカーシー(1927-2011)が考案した概念と言語であったため、そもそも切り離して考えることはできません。初期のAIは、今日のような数値的手法ではなく、検索や記号処理を中心としていました。LISPは複雑なデータをシンプルで自然に表現する能力に長けており、反復や検索に使われる「再帰」を使用することで、当時の多くの問題を解決することができました。また、LISPのREPL(Read Evaluate Print Loop)と呼ばれる対話型インタプリタのおかげで、探究的プログラミングが容易になり、正確にどんなプログラムを書けばいいか分かっていない場合にLISPはまさに理想的な言語であったと言えます。
ところが、そんなLISPの強みは同時に最大の難点でもあったのです。LISPの関数型プログラミングは難しく、このことが新しいプログラミング言語パラダイムへの扉を開くことになるのでした。関数型プログラミング言語は今日でも使われてはいますが、命令型言語、オブジェクト指向型言語、マルチパラダイム言語のほうが今では一般的です。
今日のAI言語
AIアプリケーションの開発はどのプログラミング言語でも可能ではありますが、それぞれ優劣があります。その言語の特性や言語周辺のサポートの有無など、言語によってはAI開発を大幅に効率化できます。
論理型プログラミング言語
Prolog(プロログ)は、 1972年に開発された言語で、「事実(fact)」と「規則(rule)」でプログラムを定義する一階述語論理に基づいています。プログラムは事実に対して規則を定義し、「質問」を与えることで結果を得ます。Prologはエキスパートシステムや自動計画システムなどで、今日でも幅広く使用されています。もともと自然言語処理用に開発された言語ですが、今もその分野で活用されています。
汎用言語
Prologの誕生から20年後、コードの可読性を向上させたPython(パイソン)という汎用言語が登場しました。Pythonは当初からプログラミングの教育用言語として注目を集めていましたが、その後、爆発的に普及し、人工知能、機械学習など、様々な分野で幅広く使用されるようになりました。 Pythonの最大のメリットの一つは、アプリケーション開発が簡単にできる膨大なライブラリとツールキットが利用できることです。例えばPythonでは、オープンソースツールキットのTensorFlowを利用して深層学習アプリケーションの開発ができます。つまり、煩雑なディープニューラルネットワーク構造をわざわざ構築しなくても、深層学習が提供できるのです。
統計処理向け言語
同様のモデルが、グラフ機能を備えた統計解析向けプログラミング言語・環境であるR言語(アール)でも採用されています。R言語は拡張性の高い言語で、ユーザーが開発したプログラムである「パッケージ」を統合して拡張します。パッケージは特定のアプリケーション向けに関数とデータを集め、それを統計関数や深層学習ツールキットなどのRプログラムで利用します。2020年現在、R言語には15,000以上のパッケージがあります。
新しい関数型プログラミング言語
LISPは今日、機械学習では完全に存在感を失っていますが、この関数型言語から同じパラダイムの新たな言語が生まれています。その一つがHaskell(ハスケル)です。Haskellは強力な型システムを持ち、より安全なコードを記述できる純粋関数型プログラミング言語で、機械学習やIoT機器の爆発的な普及を考えると、高い有用性があると言えます。PythonやRに提供されているような広範なライブラリはありませんが、Haskellで機械学習アプリケーションを簡単に構築できる機械学習ツールキットが付属しています。
ツールキット
機械学習の発展をめぐり、言語と共にツールキットとライブラリも進化しました。TensorFlowなどのツールキットにより、、複雑な機械学習アプリケーションを構築するための機能が提供されるため、一から作る手間を省くことができます。TensorFlowはPython、Haskell、Rなどの様々な言語のインターフェイスとなり、また深層学習アプリケーションの開発と導入を簡素化します。
まとめ
AIの概念、その数値的産物としての機械学習の発展は、プログラミング言語とツールキットの進化を同時にもたらしました。言語は多種多様なアプリケーションを構築する汎用機能をもたらし、ツールキットはある程度特定の機械学習機能を予め使えるように言語開発を助長します。
著者
M. ティム ジョーンズ
組み込みファームウェアアーキテクトとして30年以上のアーキテクチャ開発実績を持つ。ソフトウェア・ファームウェア開発関連の著書数冊、執筆記事多数。エンジニアとしての実績は、地球周回軌道宇宙船のカーネル開発から組込みシステムアーキテクチャ・プロトコル開発まで多岐にわたる。
0 件のコメント:
コメントを投稿