ジャバ・ザ・ハットリ
Published on

知識ゼロからTensorFlowを使った機械学習で人工知能を作るー入門編1

Authors
  • avatar
    ジャバ・ザ・ハットリ

今、機械学習が熱い。そんな機械学習に手を出したいけれど、いまいちこれまでの技術的バックグラウンドが畑違いで「どうしよう?」と考えている方向けに 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
作者: Sebastian Raschka
出版社/メーカー: Packt Publishing
発売日: 2015/09/23
メディア: Kindle 版

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

ITエンジニアのための機械学習理論入門
IT エンジニアのための機械学習理論入門
作者: 中井悦司
出版社/メーカー: 技術評論社
発売日: 2015/10/17
メディア: Kindle 版

関連記事