ベルリンのITスタートアップで働くジャバ・ザ・ハットリの日記

日本→シンガポール→ベルリンへと流れ着いたソフトウェアエンジニアのブログ

知識ゼロから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行ずつ処理内容を解説する

  1. tensorflow moduleをインポートして、それをtfとする
  2. constant value作って、それをxとする。そのxに数字の1を入れる
  3. 変数作って、それをyとする。そのyの定義をx+2と同じ、とする
  4. 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行ごとの解説

  1. tensorflow moduleをインポートして、それをtfとする
  2. constant value作って、それをxとする。そのxに数字の1を入れる
  3. 変数作って、それをyとする。そのyの定義をx+2と同じ、とする
  4. 変数をinitialize_all_variablesで初期化する
  5. 実行するためのsession作る
  6. 4で作ったモデルを実行する
  7. 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を使った機械学習の世界にのめり込んでしまうだろう。いやー機械学習オモロイ!熱い!

この入門書が本格的に面白くなってくるのは次回以降ということで。


今、読んでる本。

Python Machine Learning

Python Machine Learning

これは解説が丁寧なので初心者でも読みやすいし、きっとある程度マスターした後でも何度も読み返すほどの情報量のある本。アマゾン.comのMachine Learning部門でベストセラーになってただけに期待を裏切らない良書。
 
 
tango-ruby.hatenablog.com

tango-ruby.hatenablog.com

ITエンジニアのための機械学習理論入門

ITエンジニアのための機械学習理論入門