狠狠撸

狠狠撸Share a Scribd company logo
Webエンジニアが
初めて機械学習に触れてみた話
泰昌平 @ShoheiTai
泰昌平
スパイスファクトリー株式会社 事業部長
?平成生まれ
?ペチパー。CakePHP、Phalcon、WPなど。
?Pythonが好きで趣味レベルで色々動かしてま
す。
?フロントエンドの開発、最適化が好き。
?趣味はダーツ(ハード?ソフト)とバイク。
自己紹介
前回のLTではこれを動かしました。
http://www.slideshare.net/shouheitai/pythongoogle-57553654
機械学習の分野が好きな同期に勧められ
TensorFlowを触ってみました
Q.TensorFlowを触ったことある
人?
今日の内容について
○ TensorFlowの基本的な使い方
○ チュートリアルを動かしてみた話
○ 数学つらい的な话
TensorFlow
?Googleのディープラーニングライブラリ
?2015年11月にオープンソースとしてリリー
ス
?Apache2.0ライセンス、商用利用可
?GPU、CPUプログラミングに対応
?TensorBoardで学習結果をWebで確認できる
なんか面白そう!触ってみよう!
TensorFlowをインストールしてみた
Windows→TensorFlowが対応していない
Mac→持っていない
AmazonLinux(EC2)→普段使っていたPython環境
で2時間ハマり挫折。tensorflowのバージョン問題
…?
ubuntuでインストール
// Python環境
$ sudo apt-get install python-pip python-dev python-virtualenv
// tensorflowの仮想環境
$ virtualenv --system-site-packages ~/tensorflow
// 仮想環境の有効化
$ source ~/tensorflow/bin/activate
// tensorflowのインストール
(tensorflow)$ pip install --upgrade
https://storage.googleapis.com/tensorflow/linux/cpu/tens
orflow-0.8.0-cp27-none-linux_x86_64.whl
罢别苍蝉辞谤贵濒辞飞のコードを触ってみる
TensorFlowの書き方をざっくりと
1.データフローグラフをプログラムで組み立てる
→変数の定義やモデル式、学習アルゴリズム
2.セッションにデータフローグラフ(結果のノード)
を渡す
3.セッションで実行
簡単な計算
>>> import tensorflow as tf
>>> sess = tf.Session()
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> c = tf.add(a, b)
>>> sess.run(c) # sess.run(a+b)
42
https://github.com/tensorflow/tensorflow#try-your-first-tensorflow-program を一部変更
データフローグラフ
a
b
cadd
データフロー (ノード、オペレーシ
ョン)
?演算処理、定数を表す。
a
b
cadd
データフロー (エッジ)
?データの入出力を表す。テンソルが流れる道筋。
a
b
cadd
データフロー (テンソル)
?データ構造。n次元の配列。エッジの上を流れる。
a
b
cadd
セッション
?データフローグラフ(結果のノード)を受け取
り、非同期に処理を実行していく。
?セッションでrunするまでは処理が行われな
い。
?CPU、GPUへ処理の振り分けなども行う。
簡単な計算(再掲)
>>> import tensorflow as tf
>>> sess = tf.Session()
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> c = tf.add(a, b)
>>> sess.run(c) # sess.run(a+b)
42
https://github.com/tensorflow/tensorflow#try-your-first-tensorflow-program を一部変更
Introductionを動かして
機械学習を体験する
Introduction
https://www.tensorflow.org/versions/master/get_started/index.html
ここでやっていること
# ランダムなx値を生成
x_data = p.random.rand(100).astype(np.float32)
# 「y = x * 0.1 + 0.3」のデータを作成
y_data = x_data * 0.1 + 0.3
y = 0.1x + 0.3の「0.1」と「0.3」を
機械学習(最急降下法)で導き出す。
ここでやっていること
loss = tf.reduce_mean(tf.square(y - y_data))
optimizer =
tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss)
y = 0.1x + 0.3の「0.1」と「0.3」を
機械学習(最急降下法)で導き出す。
学習過程
学習を繰り返していく度に
「0.1」と「0.3」へ近づいている!
TensorFlowを触ってみて
?機械学習の事前知識が必要。軽く触ってみる
のも難しい。。
?数学的なアルゴリズムをプログラムで表現し
やすくなっており、ソースを読むことで理解で
きる部分も多かった。
ご清聴ありがとうございました
Credits
Special thanks to all the people who made and
released these awesome resources for free:
? Presentation template by 狠狠撸sCarnival
? Photographs by Unsplash
TensorFlow, the TensorFlow logo and any related
marks are trademarks of Google Inc

More Related Content

奥别产エンジニアが初めて机械学习に触れてみた话

Editor's Notes

  1. もともとアンテナを貼ってたのがWebやフロントエンド系なので機械学習などのアカデミックな分野には触れていませんでした。 ですが今回同期に勧めがきっかけで少しばかり触ってみました。 チュートリアルを触って、どういうものかを理解した程度のレベルなので、深い話はあまりできません。
  2. 僕は普段、PHPエンジニアをやっています。Pythonはそれなりに書けるんですが業務で触ったこともないですし、質問を三回すれば一度はボロを出すくらいの知識だと思います。 なので、業務レベルの本格的なコードや そんな僕がなぜこの場に立って伝えたいのは
  3. ▂▅▇█▓??(&#虫27;ω&#虫27;)??▓█▇▅▂うわああああああああああああ