More Related Content Similar to Rabbit challenge 6_dnn4 (20) Rabbit challenge 6_dnn411. 2.2 Alpha Go Lee
方策関数:Policy Net
価値関数:Value Net
盤面特徴入力
19x19x48ch
Conv
192Filter
5x5
Relu
Conv
192Filter
3x3
Conv
1Filter
1x1
Softmax 出力
Conv
1Filter
1x1
Dense
256
出力
Dense
1
tanh
Conv
192Filter
5x5
Relu
Conv
192Filter
3x3
Relu
盤面特徴入力
19x19x49ch
19x19は碁盤のサイズ
19x19の確率値
(どこに打つのがベストか)
x11
Policy Netと同じ特徴
+現在の手番が黒か白かという特徴が加算される
勝てるかどうかを-1~1で表す
12. 2.3 Alpha Goの学習手順
Policy Netの学習
Policy Pool からランダムに選択されたPolicy Netと対戦を行い、その結果によって方策勾配法を行う。
Policy Pool:Policy Netを学習した過程を500イテレーションごとに記録して保存したもの
Value Netの学習
Policy Netを使用して対局シミュレーションを行い、その結果の勝敗を教師として学習する
1. まずSL Policy Net(教師あり学習で作成したPoliciy Net)でN手まで打つ(S(N)とする)
2. N+1手目の手をランダムに選択し、その手で進めた局面をS(N+1)とする
3. S(N+1)からRL Policy(強化学習で作成したPolicy Net)で終局まで打ち、その勝敗報酬をRとする
S(+1)とRを教師データ対とし、損失関数を平均二乗誤差とし、回帰問題として学習する
※SL Policy NetとRL Policy Netの手順を分けているのは過学習を防ぐため(とのこと)
13. 2.4 Alpha Go Zero
Alpha Go Leeとの違い
モデル
Conv
256Filter
5x5
Relu Residual
Black
盤面特徴
入力
19x19x
17ch
教師あり学習をやめる
特徴入力からヒューリスティック要素(人間のかかわる要素)を排除→医師の配置のみとした
Policy NetとValue Netを統合
Residual Netを導入
モンテカルロ木探索からRollOutシミュレーションをなくす
x39
Policy Net
Batch
Norm
Conv
2Filter
1x1
Relu
Batch
Norm
Dense
362
Softmax 出力
Conv
1Filter
1x1
Relu
Batch
Norm
Dense
256
Dense
1
tanh
Relu
出力
Value Net
14. 2.5 Residual Net
Residual Netの派生
Conv
256Filter
3x3
Relu
Batch
Norm
Conv
256Filter
3x3
Batch
Norm
Relu
Add
ショートカットパスを設ける
アンサンブル効果が期待できる
勾配消失、勾配爆発を抑えつつ多層化できる
1.Residual Blockの工夫
①Bottle Neck:1x1 kernelのConvにより1層目で次元削減し、3層目で復元する3層構造
2層構造と計算量がほぼ同じだが1層増やせるのがメリット
②Pre Activation:Batch Norm→Relu→Conv→Batch Norm→Relu→Conv→Addで性能向上を狙う
2. Network構造の工夫
①Wide Resnet:ConvのFilter数をk倍にする段階的に幅を増やすことで浅い層数でも深い層数と同じ精度
②Pyramid Net:Wide ResNetで幅が広がった直後の層に過度の負荷がかかるので、
段階的ではなく、各層でFilterを増やすResnet
19. 3.4 GPU
GPGPU:General Purpose GPU、グラフィック以外の用途で使われるGPU
GPU開発環境
CUDA
並列コンピューティングP/F
NVIDIAが開発するGPUのみで使用可能
Deep Learning用の提供されているので使いやすい
OpenCL
オープンな並列コンピューティングP/F
IntelやAMDなどのGPUでも利用可能
Deep Learningに特化しているわけではない
27. 4.4 DepthwiseとPointwiseの組み合わせ
畳み込み演算量の比較
通常の畳み込み演算 H × W × C × K × K × M = 100 × 100 × 3 × 10 × 10 × 10 = 3×107
W=100
H=100
C=3
入力マップ
K=10
K=10
M=10
例として、入力マップ(100x100x3ch)、カーネルサイズ(10x10)、カーネル数=10として計算量を比較する
Depthwise
Convolution
Pointwise
Convolution
M=1
K=10
K=10
空間方向の畳み込み チャネル方向の畳み込み
H × W × C × K × K × M
= 100 × 100 × 3 × 10 × 10 = 3×106
1
1
M
空間方向×チャネル方向の畳み込み
H × W × C × K × K × M
= 100 × 100 × 3 × 10 = 3×105
Depthwise + Pointwise = 3×106 + 3×105 = 0.33×107
※通常の畳み込み計算量と比較して 0.33÷0.3 = 11%の計算量となる
30. 5.2 DenseNetのモデル構成
入力 Conv
Dense
Block
Conv Pooling
Dense
Block
Conv Pooling
Dense
Block
Conv Pooling 出力
Transition Layer
1x1 Conv + Average Pooling
Convではチャネル数を圧縮し次のDense Blockの入力に備える
Transition Layer
Dense Block
Batch
正規化
Relu Conv
入力
中間出力
入力を中間出力に加える
・・・(繰り返す)
入力をk0枚とすると、Dense Blockの層数を重ねるごとに
k0 +k → k0 +2k → ・・・→ k0 + nk (nはDense Blockの層数)
と出力枚数が増えていく。
このkはハイパーパラメータであり、growth rate(成長率)という。
増えた出力枚数はTransition Layerによって調整される
36. 7.2 物体検知に使われるデータセット
クラス数 データ数 Box/画像 Instant Anno.
VOC12 20 11540 2.4 〇
ILSVRC17 200 476668 1.1 ×
MSCOCO18 80 123287 7.3 〇
OICOD18 500 1743042 7.0 〇
Box/画像
クラス数
VOC12 ILSVRC17
MSCOCO18 OICOD18
Box/画像が多い画像は日常画像に近い画像
→目的に応じた利用
39. 7.5 物体検知の検証例
画像番号 Conf Predict IoU
P1 0.92 物 0.88
P2 0.88 物 0.46
P2 0.81 物 0.92
P3 0.78 物 0.84
P1 0.60 物 0.70
P3 0.54 物 0.31
物 物
物
物
正解画像(合計4枚)
P1 P2 P3 P4
Conf>0.5の画像をソートしてリスト化 IoU>0.5の画像をTrueとする
TP
FP
TP
TP
FP
FP
𝑅𝑒𝑐𝑎𝑙𝑙(再現率) =
𝑇𝑃
𝑇𝑃+𝐹𝑁
=
3
3+1
=0.75
𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛(適合率) =
𝑇𝑃
𝑇𝑃+𝐹𝑃
=
3
3+3
=0.5
正解画像 P4が一つも検出されていないため
FN=1となる。
P1はすでに検出済なのでFalse Positive扱い
40. 7.6 Average Precision
Confの
threshold(β)
IoU Precision Recall
0.05 0.5 0.1 0.2
0.10 0.5 0.2 0.4
0.15 0.5 0.5 0.6
・・・ ・・・ ・・・ ・・・
0.95 0.5 0.2 0.2
1.00 0.5 0.1 0.1
𝑅𝑒𝑐𝑎𝑙𝑙 = 𝑅(β)
𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛 = 𝑃(β)
𝑃 β = 𝑓 𝑅
Precision-Recall Curve
ConfのThresholdをβとし、βを変化させるとPrecision, Recallが変化する
𝐴𝑃 =
0
1
𝑃 𝑅 ⅆ𝑅
Average Precision
(Precision-Recall Curve下側面積)
mean Average Precision
(クラスごとにAverage Precisionを計算した平均値)
𝑚𝐴𝑃 =
1
𝐶
𝑖
𝐶
𝐴𝑃𝑖
41. 7.7 物体検知のフレームワーク
1.2段階検出器(Two Stage detector)
候補領域の検出とクラス推定を別々に行う(※)
相対的に精度は高めだが計算量が多くなる
例:RCNN、SPPNet、FastRCNN、FasterRCNN、RFCN、FPN、MaskRCNN
2.1段階検出器(One Stage detector)
候補領域の検出とクラス推定を同時に行う
相対的に精度は低めだが計算量が少なくて済む
例:DetectorNet、YOLO、SSD、YOLO9000、RetinaNet、CornerNet
※入力→位置推定→クラス分類
42. 7.8 SSD (Single Shot Detector)とは
SSD(Single Shot Detector)の基本方針
人 人
Default Boxを用意 Default Boxを変形しながらConfを出力
人:0.93
車:0.40
犬:0.21
SSDのネットワークアーキテクチャ
【物体検出】SSD(Single Shot MultiBox Detector)の解説
VGG16の各層から特徴マップを抽出し、
複数のDefault Boxを生成する
47. 8.2 FCNのネットワーク構造
FCN=Fully Convolutional Network
224x224
112x112
56x56
28x28
14x14
7x7 Conv層
MaxPoolingで解像度が
落ちていく
Up
Sampling
元の解像度に戻す処理が必要
=Up Sampling処理
VGG16
VGG16ではFC層だが、
FCNではConv層に変更してHeat mapを得る
Deconvolution
48. 8.3 DeconvolutionによるUp Sampling
1. 特徴マップのピクセル間隔をStride分空ける
2. 特徴マップの周りに(kernel size - 1) - padding
の余白を作る
3. 畳み込む
Conv層
特徴マップ カーネル 出力
Deconvolution
Deconv 出力 + Deconv 出力 + ・・・
低レイヤーのPooling層の出力をelement-wise addition(要素ごとの和)を取ることで、
ローカルな特徴量を補完してからUp Samplingする
FCN=Fully Convolutional Network
52. 9.1 言語モデル
言語モデル
単語の並びに対して尤度(どれだけその単語がその位置に出現し得るか=文章として自然か)を
確率で評価する
例
You are good guy. :p=0.092
You are good buy. : p=0.003
𝑃 𝑤1, ⋯ , 𝑤𝑚 = 𝑖=1
𝑚
𝑃 𝑤𝑖 𝑤1, ⋯ , 𝑤𝑖−1
各単語の出現確率=事後確率の積として表現される( 𝑤1, ⋯ , 𝑤𝑖−1が出現した条件下における𝑤𝑖の出現確率)
時刻𝑡 − 1までの情報で時刻𝑡の事後確率が最大となる単語を求めるのが目標となる
𝑎𝑟𝑔𝑚𝑎𝑥
𝑤∈𝑉
𝑃(You, 𝑎𝑟𝑒, 𝑔𝑜𝑜ⅆ, 𝑤)
guy, buy, joy, ....
全ボキャブラリーから検索
54. 9.3 Seq2Seq
em em em
私 は です。
E E …
E
Encoder
RNN
embed
Encoder-Decoderモデル(Seq2Seq)による翻訳
h
Encoder
em em em
BOS famous
D D …
D
Decoderは中間層の初期値にEncoderの内部状態を受ける
embed
Decoder
Decoder
RNN
sm sm sm
softmax
this
(Begin of statement)
this is doctor.
教師データ
単語を数値化して
RNNに入力可能とする
ボキャブラリー内で
最も高確率な単語を選択
…
教師データとの間でLossを取
ることで誤差逆伝播できる
58. Attention
9.7 Attentionの種類
Attentionには大きく分けて2種類の使い方がある
Source Target Attention
memory
Key
Query Value
Target=["私","は","とても","良い",...]
受け取った情報に対して狙うべき情報が近いものを出力
input
Source=["I","am","is,"nice",...]
matmul matmul
sm +
別モノ
output
Attention
Self-Attention
memory
Key
Query Value
Target=["私","は","とても","良い",...]
自己情報の中で注目すべきものを出力
input
matmul matmul
sm +
同じモノ
output
Target=["私","は","とても","良い",...]
参考:作って理解する Transformer / Attention
softmax softmax
61. 10.2 GANの価値関数
GANは「2プレイヤーのMin Maxゲーム」
一人が自分の勝つ確率を最大化=相手の勝つ確率を最小化
価値関数Vを定義し、Dを最大化、Gを最小化する 𝑚𝑖𝑛
𝐺
𝑚𝑎𝑥
D
𝑉(𝐷, 𝐺)
𝑉(𝐷, 𝐺) = 𝔼𝑥~𝑝𝑑𝑎𝑡𝑎 𝑥 [𝑙𝑜𝑔𝐷 𝑥 ]+ 𝔼𝑧~𝑝𝑧 𝑧 [log(1 − 𝐷 𝐺(𝑧 )]
価値関数
※ 𝔼𝑥~𝑝𝑑𝑎𝑡𝑎 𝑥 :期待値( 𝑥 𝑃𝑑𝑎𝑡𝑎 𝑥 )
この項は、 𝐷 によって、 𝐺が生成した画像を
偽物(𝐷 𝐺(𝑧 )=0)と判断できたら最大となる
この項は、 𝐷 によって真の画像を、正しく
判定できたら(𝐷(𝑥)=1)最大となる
参考:GAN (Generative Adversarial Networks):敵対的生成ネットワーク
𝐿 = −𝑦 log 𝑦 − 1 − 𝑦 log 1 − 𝑦
バイナリ―クロスエントロピーに帰着させて解いていく
※𝑦: ground truth, 𝑦: predicted value
63. 10.4 GANの学習イメージ
𝑝𝑑𝑎𝑡𝑎
𝑝𝑔
𝐷(𝑥)
𝑥
𝑧
𝑥 = 𝐺(𝑧)
1.初期状態
𝑧は等間隔に取ったものとする
𝐺(𝑧)により偏った分布の𝑝𝑔に変換される
𝑝𝑑𝑎𝑡𝑎は与えられた真値
𝐷(𝑥)は真値を予想できる確率
(未学習なのでうまく分類できていない状態)
2. 𝜃𝑑の更新
𝑝𝑑𝑎𝑡𝑎
𝑝𝑔
𝐷(𝑥)
𝑥
𝑧
𝑥 = 𝐺(𝑧)
学習によって𝐷 𝑥 の分類精度が向上
3. 𝜃𝑔の更新
𝑝𝑑𝑎𝑡𝑎
𝑝𝑔
𝐷(𝑥)
𝑥
𝑧
𝑥 = 𝐺(𝑧)
学習によって𝐺(𝑧) 𝐷(𝑥)の勾配を元に
𝑝𝑔を𝑝𝑑𝑎𝑡𝑎に近づける
4. 最終状態(理想)
𝑝𝑑𝑎𝑡𝑎
𝑝𝑔
𝐷(𝑥)
𝑥
𝑧
𝑥 = 𝐺(𝑧)
最終的には𝑝𝑔と𝑝𝑑𝑎𝑡𝑎が一致し、
𝐷(𝑥)はうまく分類できないため1/2で一
定になる事を目指す
64. 10.5 DCGAN
DCGAN(Deep Convolutional GAN)は、
GANよりも自然な画像を生成する事が可能となっている
GANに対する主な改善点は以下の通り
1. Generatorに全結合層やPooling層ではなく、Transposed Convolution層(Deconvolution層と同義)を使っ
ている
2. Discriminatorに全結合層やPooling層ではなく、Convolution層を使っており、Reluの代わりにLeaky Reluを
使っている
3. Generator,Discriminator共通の変更点として、Batch Normalizationを使っている
参考:DCGAN (Deep Convolutional GAN):畳み込みニューラルネットワークによる敵対的生成