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

More Related Content

PPTX
冬のLock free祭り safe
PDF
Docker道場オンライン#1 Docker基礎概念と用語の理解
PDF
AS45679 on FreeBSD
PDF
深層学習による非滑らかな関数の推定
PPTX
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介
PDF
インディーゲーム開発の現状と未来 2021
PDF
[DL輪読会]Towards End-to-End Prosody Transfer for Expressive Speech Synthesis wi...
PPTX
Tensor コアを使った PyTorch の高速化
冬のLock free祭り safe
Docker道場オンライン#1 Docker基礎概念と用語の理解
AS45679 on FreeBSD
深層学習による非滑らかな関数の推定
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介
インディーゲーム開発の現状と未来 2021
[DL輪読会]Towards End-to-End Prosody Transfer for Expressive Speech Synthesis wi...
Tensor コアを使った PyTorch の高速化

What's hot (20)

PDF
Rust で RTOS を考える
PDF
Nginxを使ったオレオレCDNの構築
PDF
本当は楽しいインターネット
PDF
進化するIX
PDF
文字認識はCNNで終わるのか?
PDF
【プレゼン】見やすいプレゼン資料の作り方【初心者用】
PDF
WSDM2018 読み会 Latent cross making use of context in recurrent recommender syst...
PDF
論文紹介:Temporal Action Segmentation: An Analysis of Modern Techniques
PDF
トランザクションの並行実行制御 rev.2
PDF
心理的安全性を 0から80ぐらいに上げた話
PDF
スイッチ・ルータのしくみ
PDF
GPU最適化入門
PDF
絶対に止まらないバックボーン
 
PDF
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
PDF
Spannerに関する技術メモ
PDF
日曜プログラマーが
1週間くらいで通信対戦ゲームを作ってみた
PDF
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
PPTX
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
PDF
SSII2019OS: 深層学習にかかる時間を短くしてみませんか? ~分散学習の勧め~
PDF
DeepLearning 14章 自己符号化器
Rust で RTOS を考える
Nginxを使ったオレオレCDNの構築
本当は楽しいインターネット
進化するIX
文字認識はCNNで終わるのか?
【プレゼン】見やすいプレゼン資料の作り方【初心者用】
WSDM2018 読み会 Latent cross making use of context in recurrent recommender syst...
論文紹介:Temporal Action Segmentation: An Analysis of Modern Techniques
トランザクションの並行実行制御 rev.2
心理的安全性を 0から80ぐらいに上げた話
スイッチ・ルータのしくみ
GPU最適化入門
絶対に止まらないバックボーン
 
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Spannerに関する技術メモ
日曜プログラマーが
1週間くらいで通信対戦ゲームを作ってみた
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
SSII2019OS: 深層学習にかかる時間を短くしてみませんか? ~分散学習の勧め~
DeepLearning 14章 自己符号化器
Ad

Similar to TensorFlowプログラミングと分類アルゴリズムの基礎 (20)

PDF
Googleのインフラ技術から考える理想のDevOps
PDF
TensorFlowで遊んでみよう!
PPTX
【2017年】ディープラーニングのフレームワーク比較
PDF
大規模並列実験を支えるクラウドサービスと基盤技術
KEY
Windowsにpythonをインストールしてみよう
PDF
Intalio japan special cloud workshop
PDF
20120927 findjob4 dev_ops
PPTX
[DL Hacks]色々と進化しているTensorFlow - 紹介編 -
PPTX
ChainerでDeep Learningを試す為に必要なこと
PDF
TensorFlowで音声認識
PDF
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
PDF
Development and Experiment of Deep Learning with Caffe and maf
PDF
MTプラグイン入門以前
PPTX
ChainerでDeep Learningを試すために必要なこと
PPTX
プランナーがPR駆動してみた話
PPTX
ChatGPT(LLMによる生成系AI)の追加学習を No Code で行う ~ 概念モデリング教本を元に ~
PDF
Cloudn PaaSチームのChatOps実践
PPTX
Sphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjp
PDF
TensorFlowによるCNNアーキテクチャ構築
PDF
Pytorch
Googleのインフラ技術から考える理想のDevOps
TensorFlowで遊んでみよう!
【2017年】ディープラーニングのフレームワーク比較
大規模並列実験を支えるクラウドサービスと基盤技術
Windowsにpythonをインストールしてみよう
Intalio japan special cloud workshop
20120927 findjob4 dev_ops
[DL Hacks]色々と進化しているTensorFlow - 紹介編 -
ChainerでDeep Learningを試す為に必要なこと
TensorFlowで音声認識
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
Development and Experiment of Deep Learning with Caffe and maf
MTプラグイン入門以前
ChainerでDeep Learningを試すために必要なこと
プランナーがPR駆動してみた話
ChatGPT(LLMによる生成系AI)の追加学習を No Code で行う ~ 概念モデリング教本を元に ~
Cloudn PaaSチームのChatOps実践
Sphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjp
TensorFlowによるCNNアーキテクチャ構築
Pytorch
Ad

More from Etsuji Nakai (20)

PDF
PRML11.2-11.3
PDF
「ITエンジニアリングの本質」を考える
PDF
Googleのインフラ技術に見る基盤標準化とDevOpsの真実
PDF
Introducton to Convolutional Nerural Network with TensorFlow
PDF
Googleにおける機械学習の活用とクラウドサービス
PDF
A Brief History of My English Learning
PDF
TensorFlowによるニューラルネットワーク入門
PDF
Using Kubernetes on Google Container Engine
PDF
Lecture note on PRML 8.2
PDF
Machine Learning Basics for Web Application Developers
PDF
Your first TensorFlow programming with Jupyter
PDF
Deep Q-Network for beginners
PDF
Life with jupyter
PDF
TensorFlowで学ぶDQN
PDF
DevOpsにおける組織に固有の事情を どのように整理するべきか
PDF
PRML7.2
PDF
インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜
PDF
Exploring the Philosophy behind Docker/Kubernetes/OpenShift
PDF
「TensorFlow Tutorialの数学的背景」 クイックツアー(パート1)
PDF
Docker活用パターンの整理 ― どう組み合わせるのが正解?!
PRML11.2-11.3
「ITエンジニアリングの本質」を考える
Googleのインフラ技術に見る基盤標準化とDevOpsの真実
Introducton to Convolutional Nerural Network with TensorFlow
Googleにおける機械学習の活用とクラウドサービス
A Brief History of My English Learning
TensorFlowによるニューラルネットワーク入門
Using Kubernetes on Google Container Engine
Lecture note on PRML 8.2
Machine Learning Basics for Web Application Developers
Your first TensorFlow programming with Jupyter
Deep Q-Network for beginners
Life with jupyter
TensorFlowで学ぶDQN
DevOpsにおける組織に固有の事情を どのように整理するべきか
PRML7.2
インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜
Exploring the Philosophy behind Docker/Kubernetes/OpenShift
「TensorFlow Tutorialの数学的背景」 クイックツアー(パート1)
Docker活用パターンの整理 ― どう組み合わせるのが正解?!

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