2016年6月8日水曜日

前途多難の機械学習

最近機械学習が流行っているらしい。今進んでいる画像認識とか音声認識の技術とかを使うと、ネットに流れていたキャラが誰なのかとか、好きな声優さんの声を使って会話させるとか、とりあえず面白そうであることは確かだ。

こないだ、オタク機械学習の勉強会に行き、色々なことをやっている人がいるんだなーと他人事のように感心してしまったばかりだが、自分でも何かやれるようになりたい。

そこで必要になるのは、スキルと環境である。

スキル

まず、最初に知るべきことは機械学習(Machine Learning)とは何かということである。2015年に chainer や TensorFlow が公開されたので深層学習(Deep Learning)に光が当たっているが、これも機械学習の手法の一つでしかない。

どうやら機械学習には確率を考えるものと考えないものがあり、確率を考えた方がモデルの比較等が楽にできるというメリットがあるらしいが、最初に TensorFlow を知ったので確率を使わないニューラルネットワーク方面で勉強してみようと思う。

機械学習を学ぶにあたって、数学的知識、特に微積分や統計、線形代数辺りが必要になるらしい。幸いにもどれも昨年大学で習ったが、ぶっちゃけ忘れたことも多い。

本を買って学んでいくのが一番ではあるが、数式と向き合うだけでは感覚がつかめず先に進めない可能性があるので、実践とともに並行して進めたい。

勉強会のセッションでは様々な手法が示されていたが、数学の話が少し難しくなってくるともうわからない。これはかなり手ごわそうだ。

環境

スキルに合わせてもう一つ必要になるのは、実行環境である。

深層学習のフレームワークとして割と使われていて資料が多いのは、今のところ次の二つ。
  • Chainer
  • TensorFlow
前者は Linux, CentOS で、後者はLinux, Mac OS Xがあるとよい。というか、Windows には公式に対応していない。

なんということか...

Windows の場合は Python もデフォルトでは入っていないため、実行環境の構築にかなり手間がかかるようだ。

今も両方の環境構築に頭を悩ませている。

TensorFlow の場合は Docker を使うか Linux とのデュアルブート環境にするか。Chainer の場合は Anaconda とか Visual Studio とか Microsoft Visual C++ とかを入れて頑張るか、Linux とのデュアルブートにする方法などがあるらしい。

インストールだけでは終わらない

パソコンをよりハードに近い面で使用した経験がほぼないため、応用性を考えるとどれがいいのかよくわかっていない。

Docker による TensorFlow の実行環境は構築することができたが、ファイルを読み込む方法などがわからず詰んだ。

一方、Chainer はインストールには成功した模様だが、Python で import できない。コマンドプロンプトで操作するのでなければだが。

import する際の参照しているディレクトリの設定と、実際に Chainer が存在しているディレクトリが異なっているようだが、参照ディレクトリの変更に関する記事も Mac OS X 向けが多く、知識がないので厳しい。

色々試してみたが結局 import できなかったので、TensorFlow では実行できた MNIST すらできていないという残念な有様。

デュアルブートは怖い

ここまで様々な手段を試し考えた結果、Linuxを使うのが一番手っ取り早いだろうということがわかった。

しかし、今使っている Windows ノート PC はかなり限られた予算でようやく購入できたので、インストールに失敗してぶっ飛んでも困る。非常に困る。

かといって、OS 無しのパソコンをわざわざ買ってくるのも微妙。家にある10年くらい前の Windows XP だったパソコンを Ubuntu にするのも微妙。

古いパソコンでは性能が低く、計算に時間かかりすぎ問題が発生するであろうと懸念しているからである。

因みに、Macbook を買うということは考えはしたが、お金ないので残念ながら却下。

最終手段として思いついたのが、UbuntuをUSBメモリに入れ、それでブートするという方法である。USB3.0 であれば読み込み速度の心配も減る。

Windows での Chainer, TensorFlow の利用例を見ても Ubuntu の USB ブートによる環境構築は見当たらなかったため可能なのかはわからないが、パソコンを買うよりは USB メモリを買ったほうが遥かに安く、無駄がない。

というわけで、明日秋葉原で USB メモリを調達して来ようと思う。

スポンサーリンク