スマートフォンに搭載された音声対話型AIをはじめ、ビジネスでは業務アプリケーションのバックエンドに人工知能の搭載が進んでいます。顔認証、自動運転、医療における疾病の早期発見、工場の異常検知など、さまざまな分野において人工知能が活用されるようになりました。
人工知能の開発には、さまざまなプログラム言語が使われています。人工知能の開発言語にはどのような種類があるのか、それぞれの言語の概要と特徴をまとめます。
人工知能は何を、どのように処理するのか
人工知能は、現状ではアルゴリズムによって計算処理をするプログラムです。具体的な開発言語を取り上げる前に、人工知能の処理を整理します。実際には機械学習の方法によって異なり、複雑なプロセスがありますが、簡略化して3つにまとめました。
- データから特徴量を抽出する
- 機械学習から法則性を発見してパターンやモデルを構築する
- 新たな情報に対して自動処理を行う
研究者によって見解が異なるため、必ずしも上記が人工知能の処理とはいえませんが、人工知能は、入力されたデータを機械学習して出力するアルゴリズムで機能します。事前に正解を与える学習を「教師あり学習」、正解を与えない学習を「教師なし学習」、スコアリングして報酬を設定する学習を「強化学習」と呼びます。
人工知能はプログラムであり、計算処理によってさまざまな認識を行います。上記の処理でいえば、特徴量の抽出、パターンやモデルの構築、自動処理が必要になり、これらを効率的に処理できる言語が人工知能の開発に適しています。
また、膨大なデータの計算処理をするとき、高度な数学による統計や解析の手法を使うため、人工知能の言語には高速処理と正確性が求められます。開発者側も統計や解析の手法を理解する必要がありますが、問題に直面したとき、集合知を利用できるコミュニティやライブラリがあることも重要です。
人工知能の開発に使われる言語の種類と特徴
続いて、人工知能の開発言語の種類と特徴について、全体像をまとめます。大きく次の3つの観点から開発言語を整理しました。
- 人工知能における世界標準の開発言語、従来からある開発言語
- 最先端の人工知能の開発言語、統計に特化した開発言語
- その他、人工知能に使われる開発言語
1)では、Python(パイソン)が最も有名です。また、Webアプリケーションなどで使われるJavaScript、システム開発ではオーソドックスなC++があります。これらの言語の特徴は、既に世界標準になっていることから、ライブラリやフレームワークなどが充実していることです。人工知能以外のシステム開発も可能です。
2)に関しては、JuliaとR言語があります。Juliaは人工知能を踏まえて登場した最新の言語で、技術計算に特化したシンプルで美しい文法と高速処理が特徴です。R言語は統計解析向けの言語で、汎用的な言語ではありませんが、人工知能に特化したシステム開発に適しています。
3)は補足的に取り上げますが、Java、Haskell(ハスケル)などがあります。Javaは機械学習のライブラリがあり、実務レベルで有効な言語のひとつですが、Pythonと比較すると人工知能向きとはいえません。Haskellは純粋関数言語です。
それぞれの言語について、概要を解説しましょう。
人工知能の開発言語1:Python
Pythonは人工知能の開発に最も使われている代表的な言語です。なぜ人工知能の開発に向いているかといえば、以下のような特徴があります。
- 世界的に人工知能の開発に使われ、信頼されていること
- 文法構造が分かりやすく、少ないコードで記述でき、迅速に開発できること
- 機械学習に利用できるライブラリやフレームワークが充実していること
- 汎用的であり、同一言語で機械学習とそれ以外のシステムを実装できること
Pythonは、もともと教育用の言語でした。したがって初心者にも分かりやすいシンプルな文法が特徴です。
人工知能で最もよく使われる言語の位置付けになった理由としては、人工知能の研究者は統計や数学のエキスパートでしたが、プログラムには詳しくありませんでした。そこで、シンプルな文法のPythonが使いやすかったからです。コミュニティが活発で、特に科学計算の分野において世界規模で情報交換が行われています。
YouTubeやInstagramなどの一部でPythonの言語が使われ、汎用的な言語として信頼されています。機械学習のライブラリとして、TensorFlow(テンソルフロー)やKeras(ケラス)などを利用できることがメリットです。
人工知能の開発言語2:JavaScript
動的なWebコンテンツ開発で圧倒的に人気があるJavaScriptですが、人工知能の開発言語としても利用されています。TensorFlow.js、Keras.js、deeplearn.jsといったライブラリが利用可能です。WebGLによって、ブラウザ上から簡単に機械学習を試すことができる特徴があります。
既にJavaScriptでWebアプリケーションの開発をしている場合は、その延長線上で人工知能の開発が可能なことが大きなメリットです。Pythonのように新たに言語を学ぶ必要がなく、既存のシステムと親和性が高く実用的といえるでしょう。
人工知能の開発言語3:C++
システム開発を手掛けているのであれば、人工知能の開発言語としてC++は選択肢のひとつです。
スクリプト言語のPythonに対してC++はコンパイル言語であり、実行速度が速いことが特徴です。コードの記述にミスがあれば動作しない厳密さが求められますが、あらゆるシステムに人工知能を組み込むことが容易であり、プログラムの処理のチューニングが可能になります。
ただし、言語を使いこなすために習得しなければならない範囲が広く、厳密なルールがあるため、上級者向けの開発言語といえます。
人工知能の開発言語4:R言語
R言語は、統計解析に特化した言語で、世界中の研究者による最先端のパッケージ化されたアルゴリズムや技術を利用できることが最大の特徴です。
さらに、分析結果の可視化に強いという特徴があります。ggplot2、ggivis、latticeなどのパッケージで統計データから簡単に高度なグラフを作成できるため、一般的に可視化ではPythonより優れていると評価されています。
汎用的なPythonと比較して、統計やデータ解析の分野に特化していることがR言語のメリットです。当初は研究機関で使われていましたが、最近では企業で使われるようになりました。
人工知能の開発言語5:Julia
Juliaは第3次人工知能ブームとともに注目を集めるようになった技術計算の言語で、後発のため、他の言語のよいところを取り込んでいることが特徴です。LLVM基盤によるJIT(Just In Time)コンパイラによって、スクリプト言語でありながら高速処理を実現します。高速処理においては、Pythonより優位性があります。
高度な数学的な処理を実装した、機械学習に強い言語です。PythonやR言語などの外部ライブラリにも連携しています。
人工知能の開発言語、その他
JavaはJVM(Java Virtual Machine)の言語であり、特定の機種やOSに依存せず、プログラムを環境に合わせて変換して実行します。インターネットを使ったシステムと相性がよく、スマートフォンのアプリから大規模な業務アプリケーションの開発まで利用されています。人工知能の言語としても汎用性が特徴ですが、それだけに開発の難易度が高いといえるでしょう。
Haskellはバグが生じない正確性と安全性から、金融投資関連の人工知能に使われている言語です。というのは、純粋関数型言語だからです。純粋関数型言語では、同じ入力には必ず同じ出力を返す参照透過性の記述を行い、遅延評価という仕組みによってメモリの消費を抑えて高速処理を実現します。
数値解析を目的としたGNU Octaveという言語もあります。
まとめ
プログラム初心者から上級者まで、人工知能を学びながら開発するのであれば、現状ではPythonが最適です。しかしJavaScriptによるWebアプリケーションの開発実績や、C++によるシステム開発の経験がある場合、使い慣れた言語で人工知能を開発する選択肢があります。
さらに高速処理ができる人工知能の開発にトライするのであれば最先端のJulia、金融向けであれば純粋関数型のHaskellなど、ケースバイケースで最適な開発言語を選ぶとよいでしょう。コミュニティやライブラリをはじめ、開発環境をチェックしておくことも大切です。