AIは開発環境を作る段階が大変で、いざ初心者が取り組もうとしても難しいものと捉えられがちです。
また開発の手法も多くあり、どのようなプログラミング言語で、どのような開発環境で開発を行えばよいのかがわからない方も多いと思います。
この記事では、
・AI開発の入門方法
・AI開発の言語
などの基本的な内容から、
・機械学習や深層学習の代表的な手法
・AIの開発環境
・AI開発でクラウドを使う方法
について、解説をしていきます。
ぜひ参考にしてください。
【こんな方に向けて書きました】
・未経験からAIを開発してみたい
・一度AI学習に挫折してしまった
・AIの基礎知識から応用までしっかりと学習したい
AI開発の入門方法
AI開発では、自分が取り組みたい分野によって使うべき言語やツール、手法が大きく変わってきます。
例えば、画像や映像の分析、文章の分析、音声の分析などでも使われる手法は大きく変わってきます。
これらの分野について今一度考えてみたい方は、ぜひこちらの記事をご覧ください。
AI開発の言語
AIの開発では自分がどのような言語を使ってプログラムを書くか、選択をする必要があります。
AIの開発では主にPythonやRと呼ばれる言語を使って機械学習(やこれに含まれる深層学習)を使ってデータの解析を行います。
中でもPythonは言語の習得のしやすさや情報量の多さから、多くのエンジニアに使われています。
またAIの開発で肝となるTensorFlowやChainer、scikit-learnなどのフレームワークの多くは、Pythonに対応しています。
一方、Rは統計学のために作られた言語です。
Pythonで実行したい統計的な部分は、すべてRでも実行できると考えて良いでしょう。
しかし、汎用性の高さや機械学習や深層学習などのAIの分野として考えると、Pythonを選ぶ方がとても多いです。
Pythonの入門について、詳しくはこちらの記事をご覧ください。
AIの開発環境
これまで様々な言語やツール、手法について解説をしてきました。
ここではAIの開発ツールとしておすすめしたいものを解説していきます。
TensorFlow
TensorFlowはGoogleが開発している機械学習、深層学習のライブラリになります。
Tensor(多次元配列)の操作に特化しており、脳を模した機械学習モデルとよく呼ばれるニューラルネットを効率的に実装できます。
詳しくはこちらの記事をご覧ください。
Chainer
Chainerは国産の深層学習のライブラリで、とても直感的にニューラルネットワークのプログラムを書くことが出来るライブラリになります。
国産のライブラリという点がメリットで、日本語の情報がたくさんあるのでトラブルシューティングがしやすいという特徴もあります。
Pythonらしい書き方でニューラルネットワークを実装できて、TensorFlowよりも学習コストが低いです。
詳しくはこちらの記事をご覧ください。
scikit-learn
scikit-learnはPythonの代表的な機械学習のライブラリです。
いろんな機械学習のアルゴリズムがクラスとして用意されていて、初学者でも簡単に機械学習を試すことができるライブラリです。
機械学習の分野で有名なデータセットがライブラリの中に用意されているので、とりあえず機械学習を始めてみたいという初心者にもおすすめのライブラリです。
AIをクラウドで開発する方法
AIはクラウド環境で開発をすることも出来ます。
CNNなどの深層学習では、計算の際に結構なマシンパワーが必要になります。
そこで、AWSなどのサービスでGPUを使うことによって、より短時間で学習させることが出来ます。
GPUを提供している有名なサービスは、
・AWS(Amazon Web Service)
・Azure
・GCP(Google Cloud Platform)
になります。
気になる料金ですが、こちらをご覧ください。
(引用:クラウドGPUインスタンス価格比較 (2017/11/14現在))
見てわかるように、初心者がGPUを買い揃えてから機械学習を行うよりは、このようなクラウドのサービスを使ったほうが断然安上がりだと言えますね。
また、BigQueryというGCPのサービスもおすすめです。
BigQueryは大量のデータの解析に向いているWebサービスで、ブラウザから手軽に操作できます。
Excel等では65536行を超えるデータは扱えませんが、BigQueryでは10億行のデータも扱うことができるようになります。
機械学習や深層学習の代表的な手法
AIの基本的な仕組みとなる機械学習や深層学習では、様々な手法が確立されています。
また機械学習や深層学習のモデルの中で、今のデータ解析業務でデファクトスタンダード(事実上の標準)になっているものがいくつかあります。
今回は特に知っておくべき代表的な手法について解説していきます。
XGBoost
XGBoostはデータの解析でよく使われているツールで、RやPythonから使うことが出来ます。
これは既存のデータから特徴を見つけ出す、特徴エンジニアリングの道具として使われることが多いです。
勾配ブースティング木というアルゴリズムを採用していて、C++で実装されているので高速に計算をさせることが出来る特徴があります。
同じく勾配ブースティング木を使うソフトウェアには、lightGBMやcatboostがあります。
CNN
CNN(畳み込みニューラルネットワーク)は深層学習の手法で、主に画像の分類などでよく使われています。
これはTensorFlowやChainerでも実装することができる、よく知られたアルゴリズムになります。
CNNは主に画像処理や音声処理の分野でよく使われていて、中でも画像処理の分野では他の機械学習の手法に比べて高い性能を発揮しています。
このCNNから派生して、より強力なアルゴリズムや技術が開発されている、まさにベースとなるアルゴリズムになります。
実際にCNNで画像を分類する方法は、こちらの記事をご覧ください。
まとめ
この記事ではAIの開発について、環境や言語、ライブラリなどを解説してきました。
AIの開発はやや敷居が高く感じられてなかなか手が出せなかった方もいるかもしれません。
それでも既に出回っている便利なライブラリやツールを使うことによって、実際の動きを確認しながら学んでいくことは出来ます。
みなさんもぜひ、機械学習や深層学習について、開発をしてみてはいかがでしょうか。