(目次はこちら)
#ここまでのまとめ
TensorFlowでDeep Neural Networks (1)〜(9) で、
ロジスティック回帰 → 多項ロジスティック回帰 → 多層パーセプトロン → 固定フィルタ畳み込みニューラルネットワーク → 畳み込みニューラルネットワーク
と、発展させてきました。
Convolutional Neural Networks / Deep Learningってよく聞くので、気になって最初からそれ自身を調べ始めるといろいろな数学的な事前知識がないと理解が進まない壁に直面しますが、結局は、各所でよく見る、
y = f\Biggl(\sum_{i=1}^n w_i x_i + b \Biggr)
を理解して、上記ステップを踏めばそれなりに理解できるわけです。
実装面では、ニューラルネットワークの最適化を自分で実装するなんてことは、まずやらなくていいので、非常に敷居は低いと思います。今回は、TensorFlowを使いましたが、Caffeなどを使っても実装難易度的には、ほぼ同じような感じかと思います。こういったライブラリのおかげで、簡単にニューラルネットワークのモデルをいじって試せるのは本当に良い世の中だと思います。
また、実行環境についてもAWSやGCPのおかげで非常に楽に試せます。私は、EC2(AWS)のc4.2xlarge(vCPU: 8, Mem: 15GB) 〜 c4.8xlarge(vCPU: 32, Mem: 60GB)を使っていますが、スポットインスタンスだと、c4.2xlargeの場合で、10円/hourくらいで使えたりします。(たまに跳ね上がりますが。。)私は未だにMacBookPro late 2011なんですが、AWSがあるのであまり困りません。
ちなみに、まともにCNNをやるなら、GPUは必須だと思います。c4.2xlargeでやっていたものをg2.2xlargeで試すと、7倍くらい早くなりました。人手で決めるパラメータもわりとあるので、試行錯誤やるには処理速度が早いに越したことないですから。
ってことで、次回の記事では、インスタンス別の速度比較してみようかと思います。