AI開発のための6つの最高のプログラミング言語

AI(人工知能)は、アプリケーション開発者に可能性の世界を開きます。機械学習またはディープラーニングを利用することで、はるかに優れたユーザープロファイル、パーソナライズ、推奨事項を作成したり、よりスマートな検索、音声インターフェース、インテリジェントな支援を組み込んだり、アプリを他のさまざまな方法で改善したりできます。予期していなかった状況を見て、聞いて、それに反応するアプリケーションを構築することもできます。

AIの深みを深めるために、どのプログラミング言語を学ぶ必要がありますか?もちろん、多くの優れた機械学習ライブラリとディープラーニングライブラリを備えた言語が必要になります。また、優れたランタイムパフォーマンス、優れたツールサポート、プログラマーの大規模なコミュニティ、およびサポートパッケージの健全なエコシステムを備えている必要があります。これは要件の長いリストですが、それでも多くの優れたオプションがあります。 

これが、AI開発に最適な6つのプログラミング言語の私の選択と、2つの名誉ある言及です。これらの言語のいくつかは増加していますが、他の言語は遅れています。さらに、歴史的な深層学習のアーキテクチャとアプリケーションに興味があるかどうかだけを知る必要がある人もいます。それらがすべてどのように積み重なるかを見てみましょう。 

Python

第一に、それはまだPythonです。本当に他に何があるのでしょうか?Pythonには厄介なことがありますが、AIの作業をしている場合は、ほぼ確実に、ある時点でPythonを使用することになります。そして、いくつかのラフスポットは少し滑らかになりました。

2020年に向けて、ほとんどすべての主要なライブラリがPython 3.xをサポートし、可能な限り早くPython 2.xのサポートを終了するため、Python2.xとPython3.xの問題は議論の余地があります。言い換えれば、あなたはついにすべての新しい言語機能を本格的に利用することができます。

また、Pythonのパッケージングの悪夢(すべての異なるソリューションがわずかに異なる方法で破られる)は依然として存在しますが、Anacondaを約95%の時間使用でき、あまり心配する必要はありません。それでも、Pythonの世界がこの長年の問題を完全に修正してくれるといいですね。

とは言うものの、Pythonで利用できる数学および統計ライブラリは他の言語ではほとんど比類のないものです。 NumPyは非常に普及しており、テンソル演算のほぼ標準のAPIであり、PandasはRの強力で柔軟なデータフレームをPythonにもたらします。自然言語処理(NLP)には、由緒あるNLTKと非常に高速なSpaCyがあります。機械学習には、戦闘でテストされたScikit-learnがあります。また、ディープラーニングに関しては、現在のすべてのライブラリ(TensorFlow、PyTorch、Chainer、Apache MXNet、Theanoなど)は事実上Pythonファーストのプロジェクトです。

arXivに関する最先端のディープラーニング研究を読んでいる場合は、ソースコードを提供する研究の大部分がPythonで行われていることがわかります。次に、Pythonエコシステムの他の部分があります。 IPythonはJupyterNotebookになり、Python中心ではなくなりましたが、ほとんどのJupyterNotebookユーザーとオンラインで共有されているほとんどのノートブックがPythonを使用していることがわかります。モデルのデプロイに関しては、Seldon Coreなどのマイクロサービスアーキテクチャとテクノロジーの出現により、最近の本番環境でのPythonモデルのデプロイが非常に簡単になっています。

それを回避することはできません。Pythonは、AI研究の最前線にある言語であり、最も機械学習とディープラーニングのフレームワークを見つけることができ、AIの世界のほぼすべての人が話す言語です。これらの理由から、作成者が少なくとも1日に1回は空白の問題を呪っているにもかかわらず、PythonはAIプログラミング言語の中で最初のものです。

関連ビデオ:機械学習とAIの解読

機械学習と人工知能に関する誇大宣伝を打ち破り、私たちのパネルはテクノロジーの定義と意味について話します。

C ++

AIアプリケーションを開発するとき、C ++が最初の選択肢になる可能性は低いですが、システムからパフォーマンスの最後のビットをすべて引き出す必要がある場合、ディープラーニングが限界に達し、モデルを実行する必要がある場合に、より一般的になるシナリオです。リソースに制約のあるシステム—恐ろしいポインタの世界にもう一度戻る時が来ました。

ありがたいことに、最新のC ++は書くのが楽しいかもしれません(正直なところ!)。アプローチの選択肢があります。NvidiaのCUDAなどのライブラリを使用してスタックの最下部に飛び込んでGPUで直接実行される独自のコードを作成するか、TensorFlowまたはPyTorchを使用して柔軟な高レベルAPIにアクセスできます。PyTorchとTensorFlowはどちらも、Python(またはPythonのPyTorchのTorchScriptサブセット)で生成されたモデルをロードし、C ++ランタイムで直接実行できるため、開発の柔軟性を維持しながら、本番環境のベアメタルに近づくことができます。

つまり、AIアプリケーションが最小の組み込みシステムから巨大なクラスターまですべてのデバイスに広がるにつれて、C ++はツールキットの重要な部分になります。エッジのAIは、もはや正確であるだけでは十分ではないことを意味します。あなたは良く速い必要があります。

Javaおよびその他のJVM言語

JVMファミリーの言語(Java、Scala、Kotlin、Clojureなど)は、引き続きAIアプリケーション開発に最適です。自然言語処理(CoreNLP)、テンソル演算(ND4J)、完全なGPUアクセラレーションディープラーニングスタック(DL4J)など、パイプラインのすべての部分で利用できる豊富なライブラリがあります。さらに、ApacheSparkやApacheHadoopなどのビッグデータプラットフォームに簡単にアクセスできます。

Javaはほとんどの企業の共通語であり、Java 8以降のバージョンで利用可能な新しい言語構造により、Javaコードの記述は私たちの多くが覚えている嫌な経験ではありません。JavaでAIアプリケーションを作成するのは少し退屈に感じるかもしれませんが、それで作業を完了できます。また、既存のすべてのJavaインフラストラクチャを開発、デプロイ、監視に使用できます。

JavaScript

AIアプリケーションを作成するためだけにJavaScriptを学ぶことはまずありませんが、GoogleのTensorFlow.jsは改善を続けており、GPUで高速化された計算にWebGLを使用してKerasモデルとTensorFlowモデルをブラウザーまたはNode.jsにデプロイする興味深い方法を提供しています。

ただし、TensorFlow.jsのリリース以来、実際には見られなかったことの1つは、AI空間に大量のJavaScript開発者が殺到していることです。これは、Pythonのような言語と比較して、周囲のJavaScriptエコシステムに利用可能なライブラリの深さがないことが原因である可能性があります。

さらに、サーバー側では、Pythonオプションの1つとは対照的に、Node.jsを使用してモデルをデプロイすることにはあまり利点がないため、JavaScriptベースのAIアプリケーションは近い将来主にブラウザーベースのままになる可能性があります。しかし、それでも絵文字スカベンジャーハントのような楽しい機会がたくさんあります。

迅速

この記事の昨年のバージョンで、私はSwiftが注目すべき言語であると述べました。今年は私のトップ6に入ります。どうした?TensorFlowのSwift。TensorFlowの最新かつ最高の機能の完全に型指定された、手抜きのないバインディングと、Pythonを最初に使用しているかのようにPythonライブラリをインポートできるダークマジック。

Fastaiチームは、人気のあるライブラリのSwiftバージョンに取り組んでおり、多くのテンソルスマートをLLVMコンパイラに移動することで、モデルの生成と実行においてさらに多くの最適化が約束されています。今すぐ生産の準備はできていますか?実際にはそうではありませんが、それは確かに次世代の深層学習開発への道を示している可能性があるため、Swiftで何が起こっているのかを確実に調査する必要があります。

R言語

Rはリストの一番下にあり、下降傾向にあります。Rは、データサイエンティストが愛する言語です。ただし、他のプログラマーは、データフレーム中心のアプローチのために、Rを少し混乱させることがよくあります。R開発者の専用グループがある場合は、TensorFlow、Keras、またはH2Oとの統合を研究、プロトタイピング、実験に使用するのが理にかなっていますが、Rを本番環境での使用やグリーンフィールド開発に使用することを躊躇します。パフォーマンスと運用上の懸念。本番サーバーにデプロイできるパフォーマンスの高いRコードを作成することはできますが、そのRプロトタイプを取得して、JavaまたはPythonで再コーディングする方がほぼ確実に簡単です。

その他のAIプログラミングオプション

もちろん、Python、C ++、Java、JavaScript、Swift、およびRだけがAIプログラミングに使用できる言語ではありません。興味深く、役立つと思われるプログラミング言語がさらに2つありますが、学習の最優先事項とは見なしません。

ルア

数年前、Luaは、研究と生産の両方のニーズに最も人気のある機械学習ライブラリの1つであるTorchフレームワークにより、人工知能の世界で高く評価されていました。ディープラーニングモデルの歴史を詳しく調べてみると、古いGitHubリポジトリにTorchへの大量の参照とLuaソースコードがたくさんあることがよくあります。

そのためには、PyTorchの基本APIからそれほど離れていないTorchAPIの実用的な知識があると便利な場合があります。ただし、私たちのほとんどのように、アプリケーションについて多くの歴史的調査を行う必要がない場合は、Luaのちょっとした癖に頭を悩ませることなく解決できるでしょう。

ジュリア

Juliaは、数値計算に重点を置いた高性能プログラミング言語であり、数学が多いAIの世界にぴったりです。現在、言語の選択肢としてそれほど人気が​​あるわけではありませんが、TensorFlow.jlやMocha(Caffeの影響を強く受けている)などのラッパーは、優れたディープラーニングサポートを提供します。比較的小さなエコシステムを気にせず、Juliaが高性能の計算を簡単かつ迅速に行うことに重点を置いていることから利益を得たい場合は、Juliaはおそらく一見の価値があります。