TensorFlowプログラミングと分類アルゴリズムの基礎

1,541 views

Published on

2016/12/27 ver1.1 公開

Published in: Technology
0 Comments
8 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,541
On SlideShare
0
From Embeds
0
Number of Embeds
73
Actions
Shares
0
Downloads
44
Comments
0
Likes
8
Embeds 0
No embeds

No notes for slide

TensorFlowプログラミングと分類アルゴリズムの基礎

  1. 1. TensorFlow プログラミングと 分類アルゴリズムの基礎 Etsuji Nakai Cloud Solutions Architect at Google 2016/12/27 ver1.1
  2. 2. 2 $ who am i ▪Etsuji Nakai Cloud Solutions Architect at Google Twitter @enakai00 好評発売中
  3. 3. TensorFlow プログラミング入門
  4. 4. 4 (参考) Jupyter Notebook について ▪ Web ブラウザー上で Python によるデータ分析を行う ツール(オープンソースソフトウェア) ▪ TensorFlow を用いたコードの開発も可能 ▪ GCP 環境では、 Cloud Datalab で利用可能 ▪ 独自にセットアップする際は、こちらの手順を参照 ● GCP で Jupyter を使用する方法 ● http://enakai00.hatenablog.com/entry/2016/07/03/201117
  5. 5. 5 TensorFlow のプログラミングモデル ▪ 事前に関係式を定義しておき、その後、「セッション」 を立ち上げて計算処理を実施します。 ● 分散学習機能を使う場合は、各計算ノードのセッションが協 調して動作します。 ▪ 次の 3 種類の違いを意識して、コードを書くことに注意 が必要です。 ● トレーニングデータを代入する変数 : Placeholder ● チューニング対象のパラメーター: Variable ● これらを組み合わせた計算式
  6. 6. 6 例題:最小二乗法による平均気温予測 ▪ 気温変化の背後にあるなめらかな曲線を推測して、「来 年の月々の平均気温」を予測します。 ● 背後にある曲線を次の 4 次関数と仮定します。 ● この時、来年の予測気温は、次の行列計算で書き表すことが できます。 今年の月々の平均気温 計算式 Placeholder Variable
  7. 7. 7 例題:最小二乗法による平均気温予測 ▪ 推測した曲線のデータに対する「あてはまらなさ具合」を 表す「誤差関数」を定義して、これを最小化するようにパ ラメーター         をチューニングします。 ● これは、 TensorFlow のライブラリ関数を用いると、次 のように表現できます。 観測データと予測値 Placeholder :観測データ
  8. 8. 8 例題:最小二乗法による平均気温予測 ▪ これらの関係を TensorFlow のコードで表現すると、 次のようになります。 x = tf.placeholder(tf.float32, [None, 5]) w = tf.Variable(tf.zeros([5, 1])) y = tf.matmul(x, w) t = tf.placeholder(tf.float32, [None, 1]) loss = tf.reduce_sum(tf.square(y-t))
  9. 9. 9 例題:最小二乗法による平均気温予測 ▪ 最後に最適化アルゴリズムを指定します。 ▪ この後は、セッションを作成して、最適化アルゴリズムの実行を 繰り返すことで、パラメーターの最適化が実施されます。 sess = tf.Session() sess.run(tf.initialize_all_variables()) i = 0 for _ in range(100000): i += 1 sess.run(train_step, feed_dict={x:train_x, t:train_t}) if i % 10000 == 0: loss_val = sess.run(loss, feed_dict={x:train_x, t:train_t}) print ('Step: %d, Loss: %f' % (i, loss_val)) train_step = tf.train.AdamOptimizer().minimize(loss)
  10. 10. 10 例題:最小二乗法による平均気温予測 http://goo.gl/Dojgp4 ▪ 詳しくはデモでご紹介します!
  11. 11. 分類アルゴリズムの基礎
  12. 12. 12 線形2項分類器 https://goo.gl/fP0Tpn ▪ 2 種類のデータを直線で分類して、新しい データが「✕」に属する確率を計算するモ デルを作ります。 ● Neural Network Playground で、実際に 試してみましょう。
  13. 13. 13 ロジスティック回帰 ▪ 直線を次式で表現して、ロジスティック 関数 σ を用いて、確率に変換します。 ▪ トレーニングデータにフィットするよう に係数       を調整することを 「モデルの学習」と呼びます。 ロジスティック関数 σ
  14. 14. 14 (参考)「フィットした」ことの判断基準 ▪ 一般に「フィットしてなさ具合」を示す「誤差関数」を定義して、誤差関数を最小化す るようにパラメーターを決定します。 ● ロジスティック回帰では、計算された確率用いて、トレーニングデータを分類した時に「全問正 解する確率」を最大化するようにパラメーターを調整します。 ● n 番目のデータ      が「✕」である確率を  として、この確率で「✕である」と予測 します。実際のデータを     ( 1:✕, 0:○ )とすると、これが正解である確率は、 ● したがって、すべてのデータに正解する確率は、 ● 次で誤差関数を定義すると、「全問正解の確率最大」⇔「誤差関数が最小」となります。
  15. 15. 15 線形2項分類器の図形的解釈 ▪ 関数       のグラフを描くと、図のよう に「斜めに配置した板」で    平面が分割 されることがわかります。
  16. 16. 16 線形多項分類器(ハードマックス方式) ▪ 平面上のデータを直線で「 3 種類」に分類す るには、どのようにすればよいでしょうか? ▪ 直線を表す1次関数を 3 つ用意して、どの関 数が最大になるかで、その点を分類します。 ● 右図のように、「3枚の板」によって分類され ることがわかります。
  17. 17. 17 線形多項分類器(ソフトマックス方式) ▪ 点    が i 番目の領域である確率を次 式で定義します。 ▪ これは、    の大小関係を確率に変換し たもので、次の条件を満たすことがすぐにわ かります。
  18. 18. ニューラルネットワークによる 画像分類
  19. 19. 19 ソフトマックス関数による画像分類 ▪ たとえば、 28x28 ピクセルのグレイスケール画像 は、各ピクセルの値を一列にならべると、 784 次元 空間の点とみなすことができます。 ▪ 大量の画像データを 784 次元空間にばらまくと、類 似画像は互いに近くに集まると考えられないでしょ うか? ● ソフトマックス関数で 784 次元空間を分割すること で、画像を分類できるかも知れません・・・。
  20. 20. 20 TensorFlow でやってみた 正解例  不正解例 http://goo.gl/rGqjYh ▪ 詳しくはデモでご紹介します。
  21. 21. 21 畳み込みニューラルネットワークによる性能向上 ▪ 画像データをそのままソフトマックス関数に入力する のではなく、各種の画像フィルターを通して、特徴を 抽出してからソフトマックス関数に入力します。 ▪ 詳しくはこちらを参照!
  22. 22. 22 TensorFlow でやってみた http://goo.gl/UHsVmI http://goo.gl/VE2ISf ▪ 詳しくはデモでご紹介します。
  23. 23. 23 (おまけ)モデルの学習と適用のプロセス 既存モデル 改定版モデル A 追加データ 改定版モデル B 完成版モデル アプリケーション 利用 学習処理 本番環境 テスト テスト 既存モデル更新 学習処理 再学習処理 success fail 既存モデル既存モデル モデルの バージョン管理 モデルの調整 データの準備・投入 モデルの デプロイ ▪ これってソフトウェアの開発モデル (CI/CD) と 似ている気がしませんか? ▪ このプロセスを標準化/自動化する仕組み作り が本格活用の基礎となります。
  24. 24. Thank you!

×