#azurejp
https://www.facebook.com/dahatake/
https://twitter.com/dahatake/
https://github.com/dahatake/
https://daiyuhatakeyama.wordpress.com/
https://www.slideshare.net/dahatake/
#azurejp
機械
学習
教師あり
学習
教師なし
学習
強化学習
決定木
線形回帰
SVM
ロジスティック回帰
ニューラルネットワー
ク
クラスタリン
グ
次元削減
K-mean法
主成分分析
正準相関分析
ディープ ニュー
ラル
ネットワーク
畳みこみニュー
ラルネットワー
ク
再帰的ニューラ
ルネットワーク
回帰結合ニュー
ラルネットワー
ク
Q学習
深層学習
画像解析, 音声認識, 自動生成
深層強化学習
自立学習型ロボット
自動運転車
数値予測
回帰分析
Regression
・売上予測
・需要予測
・品質管理
ラベル予測
分類
Classification
・不良品分析
・故障予測
・チャーン分析
・販促効果測定
・与信分析
クラスタリング
Clustering
・セグメンテーション
・顧客グルーピング
・メール キャンペーン
Class 1 Class 2
2つ以上でも良い
Is there a deer in
the image?
Where is the deer
in the image?
Where exactly is the
deer? What pixels?
Which images are similar
to the query image?
Image
Classification
Object
detection
Image
segmentation
Image
Similarity
Similar
image
Query
imageYes
Cluster 1
Cluster 2
Cluster 3
Input data
Data Transformation
Train Model
Algorithm Split Data
Score Model
Evaluate Model
プログラミング
との
違い
#azurejp
汎用品
データが全て
精度の考え方
#azurejp
汎用品
データが全て
精度の考え方
2 + 3 = 5
2 + 3 = 5
簡単
大変…
2 + 3 = 5
簡単
大変…
それぞれの写真: 猫? Yes/No
Program = Algorithm
人が書く
タスクの仕様の定義
アルゴリズムは固定
アルゴリズムは容易に説明できる
ソフトウェアが書く
目的: 汎化
アルゴリズムはデータに依存
アルゴリズムは時間とともに変わる
Program = Algorithm
人が書く
タスクの仕様の定義
アルゴリズムは固定
アルゴリズムは容易に説明できる
ソフトウェアが書く
目的: 汎化
アルゴリズムはデータに依存
アルゴリズムは時間とともに変わる
実世界の全てを想定して、
プログラミングするのは、難しい…
<Python> Modelの保存
出力された Model <C#>Model の読み込み
<C#>Model の利用 (実行)
#azurejp
汎用品
データが全て
精度の考え方
推論
デプロイメントデータの準備 モデル構築・学習
世界中の研究者が
論文として公表。
多くの実証コードも
公開される。
最新の技術を利活用
んなデータを整備するか?
競争力のための
自社にしかないデータが
活用できるか?
ビジネスフロー全体の中の
どこでモデルを
利用すべきか?
Alpha Go Zero
独占
権威
変革の速度
競争領域
• 強い因果関係と説明責任が必要
• 想定外の事態での危機管理 な
ど
• 因果関係が必要な予測
• 人間の予測と機械学習の予
測の両方を使う
• 相関関係が分かればいいことの
予測
• 誰が正しいのか議論しても
あまり意味がないもの
http://tylervigen.com/spurious-correlations
Kate Crawford’s NIPS 2017 Keynote presentation: Trouble with Bias
#azurejp
汎用品
データが全て
精度の考え方
①True Positive(真陽性) : 100%に近いほど良好
⇒A/(A+C)
②False Positive(偽陽性) : 0%に近いほど良好
⇒B/(B+D)
③True Negative : 100%に近いほど良好
⇒D/(B+D)
④False Negative : 0%に近いほど良好
⇒C/(C+D)
⑤Accuracy(正解率) : 100%に近いほど良好
⇒「○」「×」を正しく予測できた割合
⇒(A+D)/(A+B+C+D) : 100%に近いほど良好
⑥Precision(適合率) : 100%に近いほど良好
⇒A/(A+B)
⑦Recall(再現率) : 100%に近いほど良好
⇒①に同じ
⑧F1 Score :1.0に近いほど良好
⇒⑥、⑦の複合指標
⇒2×(⑥×⑦)/(⑥+⑦)
検証用データ 予測で得たクラス
○ ×
正解の
クラス
○ A件 C件
× B件 D件
正解が「○」
のデータ
推測で「○」と
されたデータ
A件C件 B件
D件
予測結果例 主な評価指標
karugamoが写っているの
に、
モデルは推定できなかっ
た
▶モデルの見逃し
あり[予
測]
なし[予
測]
あり[正
解]
XX XX
なし[正
解]
XX XX
Karugamo でないもの
に、
Karugamo と推定
▶モデルの過検知?
あり[予
測]
なし[予
測]
あり[正
解]
XX XX
なし[正
解]
XX XX
再現率(Recall)
適合率
(Precision)
ヒット数↑
ノイズ ↑
精度↑
漏れ↑
再現率、適合率の最適な
ブレイクポイント
プログラミング 機械学習
アプローチ 演繹的 帰納的。つまりブラックボック
スは残る
機能保証 (≒ 精度):
Function Test
可能 訓練データ次第。ただ、統計の
域を出ない
性能保証:
Performance Test
可能 可能
妥当性確認試験:
Validation Test
可能 やってみないと、わかならい
トレーニング済みのモデル
ビジネスロジックにMLをアタッチ
Azure Databricks VMs
Deep Learning Framework
Deep Learning モデルの作成 TensorFlow KerasPytorch
Azure
Machine Learning
LanguageSpeech
…
SearchVision
On-premises Cloud Edge
生産性の高いサービス
データサイエンティストと開発チームの生産性を上げる
パワフルな Compute
Deep Learning の学習と推論の加速
柔軟な推論環境の選択肢
Cloud と Edge へのモデル展開と管理
Chainer
Automated Machine Learning
Hyper parameter tuning
Distributed Deep Learning
New FPGA-powered models
Python SDK
Azure Notebook 連携
My Computer
Experiment
Docker Image
Data Store
Compute Target
Azure ML
Workspace
次のボーナ
ス2018/12
Source: http://scikit-learn.org/stable/tutorial/machine_learning_map/index.html
Mileage
Condition
Car brand
Year of make
Regulations
…
Parameter 1
Parameter 2
Parameter 3
Parameter 4
…
Gradient Boosted
Nearest Neighbors
SVM
Bayesian Regression
LGBM
…
Mileage Gradient Boosted Criterion
Loss
Min Samples Split
Min Samples Leaf
Others Model
Which algorithm? Which parameters?Which features?
Car brand
Year of make
Criterion
Loss
Min Samples Split
Min Samples Leaf
Others
N Neighbors
Weights
Metric
P
Others
Which algorithm? Which parameters?Which features?
Mileage
Condition
Car brand
Year of make
Regulations
…
Gradient Boosted
Nearest Neighbors
SVM
Bayesian Regression
LGBM
…
Nearest Neighbors
Model
繰り返し
Gradient BoostedMileage
Car brand
Year of make
Car brand
Year of make
Condition
Mileage
Condition
Car brand
Year of make
Regulations
…
Gradient Boosted
Nearest Neighbors
SVM
Bayesian Regression
LGBM
…
Gradient Boosted
SVM
Bayesian Regression
LGBM
Nearest Neighbors
Which algorithm? Which parameters?Which features?
繰り返し
Regulations
Condition
Mileage
Car brand
Year of make
データセット
目標設定
学習の一貫性
出力入力
学習を並列処理
Compute リソース管理
ベストなモデルの選択
Optimized model
from azureml.train.automl import AutoMLConfig
##Local compute
'classification'
'AUC_weighted'
12000
20
3
0.9985
'kNN' 'LinearSVM'
#azurejp
大量のデータ
データ
に対する知見
データ分析の
知識・経験
データ分析
ツール・基盤× × ×
大量の分析用データを
保持している
分析用データの中身を
理解している
分析内容やデータ
に適してアルゴリ
ズムを把握してい
る
大量データを分
析できるツール
を持ち
使いこなせる
最も重要
#azurejp
© 2018 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.
The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a
commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation.
MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
#azurejp
ドアの後ろに人がいます
入ってくる人は、男性 / 女性 のどちらで
しょうか?
既知の情報は以下のみ
年齢: 35歳
年収: 600万円
有給残数: 12日
F (性別) = (0.03 * 年齢) + (0.07 * 年収) – (0.04 * 有給残数) + 0.05
= (0.03 * 3.5) + (0.07 * 6.0) – (0.04 * 1.2) + 0.05
= 0.41
0.5 よりも小さいから
= 女性
トレーニングデー
タ
独立したデータ, 特徴, シグナル, 属
性
“Predict したい分類, クラス, ラ
ベル, 依存しているデータ
35
49,000
M
3.5
4.9
-1.0
1.0
0.0
0.23
Age
Income
Sex
0.15
Republican0.62
Education
可能性
inpu
t
hidd
en
outp
ut
High
Activate
Function
Input Layer Hidden Layer
(妥当な数で)
重み
(Weight)
入力層 隠れ層 出力層
𝑦1 𝑤11
𝑦2 𝑤12
𝑏1
𝑦 = 𝑓 𝑦1 𝑤11 + 𝑦2 𝑤12 + 𝑏1
𝑦: 出力
𝑤: 重み
𝑏: バイアス
𝑓 𝑥 : 活性化関数
パラメータ更新:誤差逆伝播法(Back Propagation)
→ 全ての「重み」と「バイアス」を調整する
Loss Function
(実際値と予測値の差を計算)
Dense
(
全
結
合
層
)
ReLU
Dense
ReLU
Dense
Softmax
Input Layer Hidden Layer Output LayerHidden Layer
Convolution
ReLU
Pooling
Convolution
ReLU
Pooling
Convolution
ReLU
Pooling
Dence(Affine)
None
CNNの処理フロー Cognitive Toolkitを使った実装例
Dence(Affine)
None
学習用データ Input Layer Hidden Layer Output Layer
直線がない
直線がある
計算していく
学習用データ Input Layer Hidden
Layer
(妥当な数で)
Output
Layer
直線がない
直線がある
結果が違う場合は、
勾配法で最適化
1. 課題の特定
2. データの取得と加工
3. モデルの設計
4. モデルの学
習
5. モデルの
テストと評価 a. 初期化
b. データセットからミニバッチ
データ取得
c. 損失(差分)を計算d. 最適化: 損失(差分)の最小
化
e. 重みづけの更新
y =Wx + b
loss = |desired – actual outcome|δ
6. 展開と推論
整理
しましょう
最適化 (Optimization) とは、関数やパラメータなどを最適な状態に近づ
けること
最適化 (Optimization) とは、誤差を最小化(または最大化)するための
最適化対象となるパラメータを探索手法を用いて最適化(探索)すること
言いかえると
ニューラルネットワークにおける学習とは、
モデルの予測値と実際の値との誤差から、パラメータ(重み)を適切に更新する
こと
損失関数 最適化最適化対象
重要なのはこの3つ
「損失関数」、 「最適化対象」、 「最適
• 各層間の「重み」と
「バイアス」
• 平均二乗誤差
(Mean Squared Error /
Classification Error)
• 交差エントロピー誤差
(Cross-Entropy Error)
• 勾配法
(Gradient method)
最適化対象
(Optimization Target)
損失関数
(別名:目的関数 - loss function)
最適化手法
(別名:探索、Optimizer,
Learner)
ニューラルネットワークにおける学習とは、
モデルの予測値と実際の値との誤差から、パラメータ(重み)を適切に更新する
こと
学習用データ Input Layer Hidden
Layer
(妥当な数で)
Output
Layer
直線がない
直線がある
入力データを計算していく
平均二乗誤差
(Mean Squared Error /
Classification Error)
回帰や二項分類でよく使われる
交差エントロピー誤差
(Cross-Entropy Error)
多項分類でよく使われる
σ(z) がsigmoid 関数の場合、0,1近傍
で微分が≃0となってしまい、コスト
関数の
変化(学習)が止まってしまう
差が大きくなればなるほど、コスト
関数の
変化も大きくなる
Cross-entropyが使われることが多いが、Cognitive Toolkit のチュートリアルでは両方使っている。
Activate
Function
Input Layer Hidden Layer
(妥当な数で)
↑学習対象
These are target
Activate Function
恒等写像(identity mapping)
ReLU
シグモイド関数(Sigmoid)
ソフトマックス関数(Softmax)
x
f(x)
Input Layer Hidden Layer Output
Layer
直線がない
直線がある
総和 1
入力画像データ Input Layer Hidden Layer
(妥当な数で)
Output Layer
直線がない
直線がある
学習用データ Input Layer Hidden
Layer
(妥当な数で)
Output
Layer
直線がない
直線がある
結果が違う場合は、
勾配法で最適化
計算していく
SGD
MomentumSGD
• 色々な勾配法
- Gradient Descent
- SGD
- MomentumSGD
- AdaGrad
- AdaDelta
- Adam
- RMSpropGraves
- NesterovAG
学習率
(Learning Rate)
学習率 モーメンタム
(Momentum)
「学習率」を
ハイパーパラメータとして指定
「学習率」と「モーメンタム」を
ハイパーパラメータとして指定
勾配消失問題
(Vanishing Gradient)
過学習
(Overfitting)
モデルの学習では重みの勾配 (精度に与える影響
度)を
求める必要があるが、その勾配が 「0」 になって
しまうこと
過学習 (Overfitting) とは、学習データに対して学
習されているが、未知のデータに対して適合でき
ていない
(汎化できていない)状態。
特にニューラルネットは複雑なモデルのため
過学習に陥りやすい
• Batch Normalization
• Dropout
• Regularization
• Expanding the training
data
内容 解決策課題
引用元: http://qiita.com/supersaiakujin/items/935bbc9610d0f87607e8
https://arxiv.org/pdf/1512.03385v1.pdf
https://deepage.net/deep_learning/2016/10/26/batch_normalization.html
http://akimacho.hatenablog.com/entry/2016/07/02/001202
Mini-batch単位で違うネットワークを内部的に育成する効果があり、
L2+Dropoutは多くの領域でNeural netsの改善をもたらす
L1
regularization
L2
regularization
Cost function(C0) にL1正規化項を追加
※λ:正規化パラメータ
wが大きい: L1 shrinks the weight much less than L2 does.
wが小さい: L1 shrinks the weight much more than L2 does.
Cost function(C0) にL2正規化項を追加
※λ:正規化パラメータ
→The effect of regularization is to make it so the network
prefer to learn small weight
Wight decay it makes weight smaller lower complexity reduce overfitting
引用例:http://sig.tsg.ne.jp/ml2015/ml/2015/06/29/techniques-of-learning.html
learner = C.momentum_sgd(
tl_model.parameters,
lr_schedule,
mm_schedule,
l2_regularization_weight=0.0005
)
元データ ずらしたり 広げたり 回転させたり さらに回転させたり !?
“Is algorithm A better than algorithm B??”
“What training data set are you using?”
• uniform
• normal
• xavier
• glorot_uniform
• glorot_normal
• he_uniform
• he_normal
• bilinear
• initializer_with_rank
• truncated_normal
Xavierの初期値
Heの初期値
Glorotの初期値
Learning rate η?
Hidden Layer の数は?
Mini-batchはどのくらい必要?
Cost functionをどうする?
何epochでやるの?
Weight initializationはど
うする?
Regularization parameter λ?
Cost function
epoch
η= 2.5
η= 0.025
η= 0.25
パラメータチューニングに正解はないので、
Try-and-Errorでやっていきましょう。
または、先人の設定から学びましょう。
Automated Machine Learning
Hyper parameter tuning
Distributed Deep Learning
New FPGA-powered models
Python SDK
Azure Notebook 連携
Number_of_
hidden_layers
Number_of_
nodes_in_layer
Input layer
Hidden layer 1 Hidden layer 2
Output layer
E.g.
Learning_rate
Batch_size
Challenges
• 探索箇所が広大
• 低密度の中での、最適な値の組み合
わせ
• 評価までのリソースが膨大(時間、人、
カネ)
例えば..
• Number_of_layers と
learning_rate の最適値
• Number_of_layers – [2, 4, 8]
• learning_rate – 0 から 1 の間の
あらゆる値
#1
#2
#𝑝
𝑟𝑢𝑛1
𝑟𝑢𝑛2
𝑟𝑢𝑛 𝑝
…
Hyperparameter Tuning runs in Azure ML
𝑟𝑢𝑛𝑗
𝑟𝑢𝑛𝑖
𝑟𝑢𝑛 𝑘
(B) 起動中のジョブの管理
• どれくらいの間実行してい
るのか?
???
(A) 新規ジョブ起動
• 探索する、Parameter を設
定
𝒓𝒖𝒏 𝟏= {learning rate=0.2, #layers=2, …}
𝒓𝒖𝒏 𝟐= {learning rate=0.5, #layers=4, …}
𝒓𝒖𝒏 𝒑= {learning rate=0.9, #layers=8, …}
Early terminate poorly
performing runs
## エスティメーターの作成
from azureml.train.dnn import TensorFlow
script_params = {
'--data-folder': ws.get_default_datastore().as_mount(),
'--batch-size': 50,
'--first-layer-neurons': 300,
'--second-layer-neurons': 100,
'--learning-rate': 0.01
}
estimator = TensorFlow(source_directory=script_folder,
script_params=script_params,
compute_target=compute_target,
entry_script='tf_mnist.py',
use_gpu=True)
## 探索空間の設定
from azureml.train.hyperdrive import GridParameterSampling
param_sampling = GridParameterSampling( {
"num_hidden_layers": choice(1, 2, 3),
"batch_size": choice(16, 32)
}
)
## 探索空間の設定
from azureml.train.hyperdrive import MedianStoppingPolicy
early_termination_policy = MedianStoppingPolicy(evaluation_interval=1, delay_evaluation=5)
## Hyperparameter Search 設定
from azureml.train.hyperdrive import HyperDriveRunConfig
hyperdrive_run_config = HyperDriveRunConfig(estimator=estimator,
hyperparameter_sampling=param_sampling,
policy=early_termination_policy,
primary_metric_name=’accuracy’,
primary_metric_goal=PrimaryMetricGoal.MAXIMIZE,
max_total_runs=100,
max_concurrent_runs=4)

エンジニアのための機械学習の基礎

Editor's Notes