知識ゼロからTensorFlowを使った機械学習で人工知能を作るー入門編1
移転しました。
今、機械学習が熱い。そんな機械学習に手を出したいけれど、いまいちこれまでの技術的バックグラウンドが畑違いで「どうしよう?」と考えている方向けにTensorFlowを使った機械学習の入門書を書いた。
実は私自身が機械学習がやりたくてしょうがないけど、まったく分からないところから出発したばかり。勉強の過程で気づいた内容を初心者なりにどんな初心者でも分かるように書いた。
TensorFlow
TensorFlowはGoogleがオープンソースとして公開した機械学習のライブラリ。
www.tensorflow.org
ここしばらく機械学習の本読んで、TensorFlow触りまくって出した結論はこれ。
TensorFlowは機械学習の初心者がスグにカンタンに使えるモノではない
TensorFlowを使えば機械学習の概念をそのまま直感的にコードに落としこむことができる。ただ、そのためには機械学習の理論を予め知っておくことが必要。「ニューラル・ネットワーク」とか「構造パターンマイニング」とかの用語が分からないといちいちそこで手を止めて、調べる必要が出てくる。
ただ数学好きであれば、全てが数式で表現される世界が妙に楽しい。アルゴリズムや使い方さえ分かれば、かなりのレベルで面白いモノが実装できることは確かだ。
TensorFlowのインストール(MacOS編)
まーここ見てインストールしても一緒だけど、一応書いておく。だいたい5分もあれば完了する。
https://www.tensorflow.org/versions/master/get_started/os_setup.html
pythonのバージョン確認。2.7以上であればOk
$ python -V Python 2.7.10
pip をインストール
$ sudo easy_install pip
virtualenv をインストール
$ sudo pip install --upgrade virtualenv
virtualenv 環境を`~/tensorflow` に作成(もし別の場所に入れたければフォルダの指定を変える)
$ virtualenv --system-site-packages ~/tensorflow
tensorflowをアクティベートする。実行後、コマンドプロンプトの表示が (tensorflow)$になる。
$ source ~/tensorflow/bin/activate
TensorFlowをインストール
(tensorflow)$ pip install --upgrade https://storage.googleapis.com/tensorflow/mac/tensorflow-0.5.0-py2-none-any.whl
おわり。
まずはカンタンなPythonプログラム
小難しい理屈の前に「なんでもいいから動かしたい!」の気持ちにお応えして、Python未経験者でもカンタンに分かるPythonのコードから始める。
x = 1 y = x + 2 print(y)
このコードを書いてtest.pyとかの名前で保存。
で、実行すると
(tensorflow)$ python test.py 3
当然ながら3という結果が出る。
TensorFlowでカンタンなPythonプログラムを書き直す
次にこれをちょっとTensorFlow風に書き直してみる。
import tensorflow as tf x = tf.constant(1, name='x') y = tf.Variable(x + 2, name='y') print(y)
test2.pyで保存して実行した結果がこれ。
(tensorflow) $ python test2.py <tensorflow.python.ops.variables.Variable object at 0x10f6e5110>
なんか明らかに違うぞ、と。
理由はひとつ前のコードとは異なる処理を実行しているから。
test2.pyのコードを1行ずつ処理内容を解説する
- tensorflow moduleをインポートして、それをtfとする
- constant value作って、それをxとする。そのxに数字の1を入れる
- 変数作って、それをyとする。そのyの定義をx+2と同じ、とする
- yを出力する
つまり微妙な違いはyが定義されただけで、ひとつ前のコードのように数値がまだ入っていなかった。
これをちゃんとしたコードに修正するとこうなる。
import tensorflow as tf x = tf.constant(1, name='x') y = tf.Variable(x + 2, name='y') model = tf.initialize_all_variables() with tf.Session() as session: session.run(model) print(session.run(y))
1行ごとの解説
- tensorflow moduleをインポートして、それをtfとする
- constant value作って、それをxとする。そのxに数字の1を入れる
- 変数作って、それをyとする。そのyの定義をx+2と同じ、とする
- 変数をinitialize_all_variablesで初期化する
- 実行するためのsession作る
- 4で作ったモデルを実行する
- yを実行して出力する
すると結果はこの通り3となる。
(tensorflow) $ python test2.py can't determine number of CPU cores: assuming 4 I tensorflow/core/common_runtime/local_device.cc:25] Local device intra op parallelism threads: 4 can't determine number of CPU cores: assuming 4 I tensorflow/core/common_runtime/local_session.cc:45] Local session inter op parallelism threads: 4 3
入門編1のまとめ
上記の例だけでは「面倒くさー」と思うかもしれないが、これはあくまでカンタンな例だからだ。そしてこの辺りが通常のコードとTensorFlowがちょっと違う箇所になる。
「こんなカンタンなのじゃなくて『自然言語処理』とか『未来予想』なんかを解説しろよ」と思われた方は、まずはここが分かってないと後で結局またここに戻ってくることになってしまうので、まずはここから書いた。
AlphaGoが囲碁の世界チャンピオンを負かしたニュースに心がザワついて、しゃべりかけるだけでステキな反応を返すAmazonEchoに心をときめかせた方ならきっとTensorFlowを使った機械学習の世界にのめり込んでしまうだろう。いやー機械学習オモロイ!熱い!
この入門書が本格的に面白くなってくるのは次回以降ということで。
今、読んでる本。
- 作者: Sebastian Raschka
- 出版社/メーカー: Packt Publishing
- 発売日: 2015/09/23
- メディア: Kindle版
- この商品を含むブログを見る
tango-ruby.hatenablog.com
- 作者: 中井悦司
- 出版社/メーカー: 技術評論社
- 発売日: 2015/10/17
- メディア: Kindle版
- この商品を含むブログを見る