◆人工知能の利活用を進めるために
ディープラーニングは、機械学習の手法の一つで、第三次人工知能のブームの牽引車となっています。ディープラーニングの導入により音声や画像の認識率が格段に上がっています。セミナーなどでもディープラーニングの要望は非常に強く感じます。しかし、ディープラーニングは、統計学や従来の機械学習の基盤のうえに成り立つ技術であるので、ディープラーニングのみを学習すれば事足りるというものではありません。きちんと使いこなせるようになるためには、いくつかのステップを踏む必要があります。本稿ではこのようなディープラーニングを身につけるにあたって、なにを学習するか、そのリソースは、という観点から解説します。前回のその1に続いて解説します。今回は、その2です。
3. ディープラーニングのフレームワーク
ディープラーニングの実装は、ディープラーニングフレームワークと言われます。このフレームワークは、ディープラーニングの基本技術をまとめて複雑なグラフ構造を簡単に実現できるように設計されたシステム上で構築される事が多いのです。主なディープラーニングフレームワークには以下のようなものがあります。
(1) Caffe
オープンソースのディープラーニングライブラリで、画像認識に特化し、高速処理が可能です。C++で実装され、C++/Python/MATLABで使用でます。カリフォルニア大学バークレー校のBerkeley Vision and Learning Centerが中心となって開発しています。Caffeがサポートしている主な機能として、CNNを利用した画像の多クラス分類、CNNによる特徴ベクトルの抽出、CNNの転移学習、Stacked Auto Encoderなどがあります。CaffeはGPUを利用できます。
http://caffe.berkeleyvision.org/
(2) Theano
Python用の数値計算ライブラリで、Numpyのように計算手続きを記述するのではなく、数式そのものを記述します。このことにより、計算対象となる行列等の実体のプログラム内での引き回しを考える事なく、最適化やGPUによる高速化の恩恵が受けられます。Theanoは数式そのものを記述するので、微分を (数値的ではなく) 解析的に実行する事が出来ます。モントリオール大学のBengio教授の研究室で開発されており、Theanoはディープラーニングへの応用を強く意識して設計されています。ディープラーニングの手法が数多く実装されている Pylearn2 というライブラリはTheanoがベースになっています。
http://deeplearning.net/software/theano/
(3) Chainer
Chainerは、Preferred Networksが開発したニューラルネットワークを実装するためのライブラリです。高速に動作し、CUDAをサポートして、GPUを利用した高速な計算が可能です。柔軟な記法により、畳み込み、再帰型など、様々なタイプのニューラルネットを実装可能です。ネットワーク構成を直観的に記述できるなどの特徴を持ちます。
http://chainer.org/
(4) TensorFlow
Googleが自社開発したディープラーニングフレームワークです。音声認識や翻訳だけでなく、写真の被写体認識や顔認識、ウェブ検索結果の最適化、Gmailのメール分別、新生メールソフトInboxの自動返信文作成、さらにYouTubeや広告事業まで、ほとんどのプロダクトを支える新たな根幹技術となっています。特徴として、データフローグラフとして表せればなんでも処理できる汎用性があり、Googleで使われる高いパフォーマンス、CPUでもGPUでも走り、ノートPCから巨大なデータセンターまで同じコードで動きモバイル端末にもデプロイできるスケーラビリティ、計算機科学の研究から実プロダクトまで扱える効率性、ドキュメンテーションやサンプルが揃い、PythonでもC++でも書けるなど、が特徴です。
https://www.tensorflow.org/
(5) MXNet
ワシントン大学とカーネギーメロン大学によって、CNN と LSTM *をサポートするために開発されました。効率的で柔軟な深層学習フレームワークとなるよう設計されています。命令的/宣言的プログラムの混合豊富な深層学習モデルをサポートしています。スケーラビリティとしてMXNet はコンピュートリソースを追加すればするほど処理能力が向上します。Python・C++・R・Scala/Java・Julia が使える豊富な対応言語を有し、推論にはそれらに加え Matlab・JavaScript 向けの API も用意されています。
http://mxnet.io/
*LSTM(Long short-term memory)は、RNN(Recurrent Neural Network)の拡張として1995年に登場した時系列データ(sequential data)に対するモデル、あるいは構造(architecture)の1種。
(6) Keras
Pythonで書かれ、TensorFlowまたはTheano上で実行可能な高水準のニューラルネットワークライブラリです。迅速な実験を可能にすることに重点を置いて開発され、可能な限り遅れなくアイデアから結果に進められます。簡単で早くプロトタイプ作成が可能 (全体的なモジュール性、ミニマリズム、および拡張性による) 、CNNとRNNの両方、およびこれらの2つの組み合わせをサポート、任意の接続方式 (複数入力および複数出力の学習を含む) をサポート、CPUとGPUでシームレスな実行などの特徴があります。
https://keras.io/
4. ディープラーニングの学習の進め方
最初からディープラーニングフレームワークを実装することから行うのは無理なことです。これまで述べた1.ディープラーニングの基本事項、2.ディープラーニングのモデルの種類、3.ディープラーニングのフレームワークと順を追って学習を進める必要があります。さらには、その前に、Pythonのプログラム言語としての使い方、SciPy, NumPy, SymPy, IPythonなどの使い方を理解しておく必要もあります。又、統計(べイズ統計を含む)、機械学習などについても一通り学習しておく必要があるでしょう。次に考えられる学習リソースを列挙します(図2参照)
図2. ディープラーニングの学習のためのリソース
(1) 書籍(和書)
いろいろなレベルの本が出ているので、多くの選択肢の中から自分のレベルと好みに合わせて読むといいでしょう。機械学習の本には、「ディープラーニングの基本事項」に関連する書籍があります。非常に多くの例があります。以下に例を上げます。
◆「パターン認識と機械学習 上・下」、作者: C.M.ビショップ,翻訳:元田浩,栗田多喜夫,樋口知之,松本裕治,村田昇、丸善出版(2012)
◆「科学技術計算のためのPython ~ 確率・統計・機械学習~」、
「深層学習」と銘打っている書籍には、ディープラーニングのモデルに関連する書籍が出ています。全体を網羅できている本は以外に多くないのですが、「、ディープラーニングのモデル」を記した例を以下に示します。
◆「イラストで学ぶ ディープラーニング (KS情報科学専門書)」山下隆義、講談社(2016)
◆「深層学習 ― Deep Learning」監修:人工知能学会、著者:麻生 英樹,安田 宗樹,前田 新一,岡野原 大輔,岡谷 貴之,久保 陽太郎,ボレガラ・ダヌシカ、編集:神嶌 敏弘、近代科学社(2015)
◆「ゼロから作るDeep Learning」斎藤 康毅、オライリー(2016)
◆「あたらしい人工知能の教科書 プロダクト/サービス開発に必要な基礎知識」多田智史 著、石井一夫 監修、翔泳社(2016)
(2) 書籍(洋書)
O...