メニュー

社員ブログ

AI始めようか

クラウドシステムソリューション事業部
鈴木です。

とりあえず、最近キーワードだけはよく聞くが、どう参入していったもんか、って考える人も少なくもないのでは!!

ということで、AIで注目されるところで、「機械学習」と「ディープラーニング」について、少し掘り下げてみようかと思います。

まずは、AIと機械学習とディープラーニングですが、関係としては「AI > 機械学習 > ディープラーニング」って感じですね。

機械学習は、AIの一分野であり、wikiで書いてある通りに一言でいうと「人工知能における研究課題の一つで、人間が自然に行っている学習能力と同様の機能をコンピュータで実現しようとする技術・手法のことである。」とのこと。

では、一方での「ディープラーニング」とは、そのまま日本語でいうと深層学習だが、「ディープラーニング」は「機械学習」の一技術です。ニューラルネットワークをベースとしたアルゴリズムを多層構造化して実現する機械学習って言ったところです。

これらの考え方から昨今注目が集まっているのが、より何かに特化した弱いAIとしてのものです。思いつくところで言えば、画像判別、セキュリティ関連(ウィルス感染ファイルの判定)、囲碁など言ったところでしょうか。特に画像判別で比較的利用が容易な気がします。インプットになる画像データがネットで比較的集めやすいでしょうし。

これらのことをまぁ、最低限知っていれば、あとは、それらの技術を利用する為の環境をどうするかを考えてみる。

<プラットフォーム>

※兎に角必要なのは、GPUを積んでいる環境

  • PaaS(クラウド)
  • GPUマシンを用意する

・PaaS(クラウド):兎に角、導入までが楽。「Google Cloud Platform」「Azure Machine Learning」「Amazon Machine Learning」「Bluemix IBM Watson」辺りが選択肢でしょうか。

・GPUマシン:個人でも自作可能。ただし、NVIDIA製推奨でしょうか。理由は、多くのフレームワークが対応してるのが、NVIDIA製のGPUだけだったりするので。

<言語>

  • Python
  • C/C++
  • Matlab
  • R
  • Julia
  • Java

・Python:ディープラーニング(機械学習)で最も使用されている言語。これを選択すればほぼ間違いない。って感じですね。欠点があるとすれば、インタプリタ言語なので、パフォーマンスぐらいでしょうか。

・C/C++:逆にコンパイル型言語なので、パフォーマンスが良い。

・Matlab:有償のプログラミング言語だが、大学などで使用されていることが多いらしい。ただし、ディープラーニング(機械学習)に特化したライブラリが非常に充実しているイメージ。

・R:統計学の分野に特化した言語。用途によっては、使い易いか。

・Julia:技術計算のためのプログラミング言語で、近年に注目されている言語のようです。

・Javaでもディープラーニングのライブラリや、機械学習のライブラリがある模様だが。

<フレームワーク>

  • TensorFrow
  • Chainer
  • Keras
  • Caffe
  • PyTorch
  • Matlab

・TensorFrow:Google製、Python、R言語のフレームワーク、ディープラーニングのフレームワークでは、恐らくTOPのシェアかと思われ、ただ、独特な使い勝手だったり、パフォーマンスでやや不安。

・Chainer:日本発でのフレームワーク、Pythonフレームワーク。非常に使い勝手が良さそう、ただし、日本では、そのシェアはあるようだが、世界的にはまだまだ。

・Keras:Tensorflowをバックエンドで動かしているフレームワーク、プログラミングを知らなくても作ることが出来るらしい。最も初心者に優しいフレームワークらしい。

・Caffe:Python、C++でのフレームワーク。歴史が長いようで、インターネット上でも情報が多いらしい。

・PyTorch:Facebook製のフレームワーク、Chainerをフォークして作られている為、使い勝手は良さそう。

・Matlab:Matwork製、他とは違う独特、フレームワークと言っていいかとも悩むところではあるが。パフォーマンスは良いかも。

<知っていた方がいいもの>

  • 微積分
  • 行列
  • 統計学

まとめに入ると、言語としては、Python、R言語を勉強すると良さそう。フレームワークは目的などに合わせて選択する感じがいいかと思ったが、どれが良いかというのは、正直この分野における進歩が物凄く速過ぎて、悩ましい。最終的には、使ってみないとよく分からないかとも思った。結構調べてみたが、そのサイトによって、見解が分かれていてよく分からない。プラットフォームに関しても、使用したいフレームワークに合わせる形になりそうです。ただ、個人でも比較的簡単に環境は作れそうなのと、フレームワークによっては、比較的簡単に試せそうです。まだまだ、これから成熟していく分野なだけに少しでも興味を持って頂ければ幸いです。