convolutional neural network @ cv勉強会関東
DESCRIPTION
TRANSCRIPT
第23回 コンピュータビジョン勉強会@関東
Convolutional Neural Network東大 学際情報学府 M1
加賀谷 北斗
第23回 コンピュータビジョン勉強会@関東
自己紹介
★ 加賀谷 北斗(@hokkun_cv / @Fried_garlicHKT) ★ 東京大学大学院学際情報学府学際情報学専攻先端表現情報学コース
!★ 卒論:食事画像認識/検出 ★ Interest of research:機械学習,一般物体認識,Deep Learning
!★ @ketsumedo_yarou先輩の紹介で参加させていただきます
2
第23回 コンピュータビジョン勉強会@関東
アウトライン
1. Introduction to Convolutional Neural Network
2. The Detail of Conventional CNN Techniques
3. Other Topic
4. Implementation
3
第23回 コンピュータビジョン勉強会@関東
アウトライン
1. Introduction to Convolutional Neural Network
2. The Detail of Conventional CNN Techniques
3. Other Topic
4. Implementation
4
第23回 コンピュータビジョン勉強会@関東
ILSVRC 2012
5
チーム Result 手法
SuperVision 15.3% Deep CNN
ISI 26.1% FV + PA
OXFORD_VGG 26.7% FV + SVM
XRCE/INRIA 27.1% FV + SVM
Univ. of Amsterdam 29.6% FV + SVM
LEAR-XRCE 34.5% FV + NCM
1. Introduction to Convolutional Neural Network
第23回 コンピュータビジョン勉強会@関東
ILSVRC 2013
6
チーム Result 手法
Clarifai 11.7% Deep CNN
NUS 13.0% SVM based + Deep CNN
ZF 13.5% Deep CNN
Andrew Howard 13.6% Deep CNN
OverFeat-NYU 14.1% Deep CNN
UvA-Euvison 14.2% Deep CNN
1. Introduction to Convolutional Neural Network
第23回 コンピュータビジョン勉強会@関東
Other dataset..
• CIFAR-10 • CIFAR-100 • “Network in Network”, ICLR 2014 !
• MNIST • “Regularization of Neural Networks using DropConnect”, ICML, 2013
7
全てCNN (が基にある)
1. Introduction to Convolutional Neural Network
第23回 コンピュータビジョン勉強会@関東
知識の流れHubel and Wiesel [1962]
(単純細胞,複雑細胞,局所受容野) !!
Fukushima [1980] (Neocognitron)
!!
LeCun [1989, 1998] (Convolutional Neural Network→手書き文字認識への応用)
8
1. Introduction to Convolutional Neural Network
第23回 コンピュータビジョン勉強会@関東
基本構造
9
2 3 56 7 41 7 3
Convolution(畳み込み)
2 3 56 7 41 7 3
2 3 56 7 41 7 3
Pooling(プーリング,適切な日本語訳なし?)
※画像はイメージです
2 3 56 7 41 7 3
1. Introduction to Convolutional Neural Network
※画像はイメージです
いわゆる移動フィルタの形で,画像を移動しながら注目画素の周辺の画素値を用いて計算.このフィルタをたくさん用意する
(フィルタ=重み行列が局所的)
第23回 コンピュータビジョン勉強会@関東
10
1. Introduction to Convolutional Neural Network
第23回 コンピュータビジョン勉強会@関東
11
http://www.vision.is.tohoku.ac.jp/files/9313/6601/7876/CVIM_tutorial_deep_learning.pdf
1. Introduction to Convolutional Neural Network
第23回 コンピュータビジョン勉強会@関東
全体構造• 基本的にはこの2層を繰り返すことで成り立つ. • 最終層は出力層として,ソフトマックス関数を置くことが多い(分類問題の場合) • そこにいたるいくつかの層はフル接続とすることが多い.
12
1. Introduction to Convolutional Neural Network
LeNet-5 [LeCun, 1998]
第23回 コンピュータビジョン勉強会@関東
学習Stochastic Gradient Descend (SGD, Batch training)
!
+ !
Back Propagation (誤差逆伝搬法)13
1. Introduction to Convolutional Neural Network
第23回 コンピュータビジョン勉強会@関東
アウトライン
1. Introduction to Convolutional Neural Network
2. The Detail of Conventional CNN Techniques
3. Other Topic
4. Implementation
14
第23回 コンピュータビジョン勉強会@関東
全体構造(再掲)• 基本的にはこの2層を繰り返すことで成り立つ. • 最終層は出力層として,ソフトマックス関数を置くことが多い(分類問題の場合) • そこにいたるいくつかの層はフル接続とすることが多い.
15
1. Introduction to Convolutional Neural Network
LeNet-5 [LeCun, 1998]
第23回 コンピュータビジョン勉強会@関東
Convolutionは先ほど説明したとおりだが… !☆いくつカーネル(フィルタ)を用意する? ☆カーネルのサイズは? ☆「端っこ」の扱いは? ☆活性化関数は? ☆重みやバイアスの決定は? ☆フィルタの動かし方は?
Convolution
16
2. The Detail of Conventional CNN Techniques
[conv] type=conv inputs=data channels=3 filters=32 padding=4 stride=1 filterSize=9 neuron=logistic initW=0.00001 initB=0.5
第23回 コンピュータビジョン勉強会@関東
• 直感的にはある程度の領域を「まとめる」ことで位置情報を捨て,変化に対してロバストにする作業のこと.
• 広義では,抽出した生の特徴表現を,認識に必要な部分だけ残すような新たな表現に変換すること. !!
• 無意識に多く使われている • 「最大値をとる」「平均をとる」「(語弊あるが)まとめる」 • 要素技術しかり,アルゴリズム全体然り • ex) SIFT[Lowe 99], Bag of Features[], Spatial Pyramid[], Object Bank[2010],
Pooling
17
2. The Detail of Conventional CNN Techniques
第23回 コンピュータビジョン勉強会@関東
Pooling
18
2. The Detail of Conventional CNN Techniques
• Max pooling !!!
• Avg. pooling (平均プーリング) !!!
• (一般の) Pooling
hi,k+1 = max
j2Pi,k
hj
hi,k+1 =1
|Pi|X
j2Pi
hj
hi,k+1 =
✓1
|Pi|X
j2Pi
hpj
◆ 1p
p=1 avg p=∞ max
※実際にはavg~maxのつなぎ方は他にもあり,詳細は[Boureau, ICML 2010]を参照
第23回 コンピュータビジョン勉強会@関東
Pooling
19
2. The Detail of Conventional CNN Techniques
• 結局どれがいいのか • [Boureau, CVPR 2010及びICML 2010]に詳しい議論 • Cardinality(プーリングサイズ)による • 直感的には・・ • 元画像に対し,広い部分を扱うときは平均プーリング,小さい部分の時はmaxの方が良い?
第23回 コンピュータビジョン勉強会@関東
☆プーリング開始画素は? ☆プーリングサイズは?(Overlap) ☆動かす幅は?(Overlap) ☆活性化関数は? ☆プーリングの種類は?
Pooling
20
2. The Detail of Conventional CNN Techniques
[pool] type=pool pool=max inputs=local32 start=0 sizeX=4 stride=2 outputsX=0 channels=32 neuron=relu
第23回 コンピュータビジョン勉強会@関東
局所コントラスト正規化
21
2. The Detail of Conventional CNN Techniques
• 発端は?:計算神経科学(哺乳類の初期視覚野のモデル) • 脳のニュートンによる情報伝達はパルス数によって制限(有限)
• どうやってやる?:減算初期化と除算初期化 • どちらかというと除算が重要か(?) !
• 意味は?: • ①上記の脳の初期視覚野のモデルを表現 • ②複雑視覚野におけるニュ―ロンの選択性がコントラストに非依存であることの説明
第23回 コンピュータビジョン勉強会@関東
局所コントラスト正規化
22
2. The Detail of Conventional CNN Techniques
• 減算正規化 !!!!
• 除算正規化
h̄i,j,k = hj,k �X
i,p,q
wp,qhi,j+p,k+q
h : 前層の出力 j, k : 画素
i : フィルタ番号 w : 平均を調整するための重み
c : 定数h0i,j,k =
h̄i,j,kqc+
Pi,p,q wp,qh̄2
i,j+p,k+q
文献によっては,減算をしていないもの [Krizhevsky 2012]もある また,いくつかのフィルタにまたがる場合(across map)とまたがらない場合がある
第23回 コンピュータビジョン勉強会@関東
局所コントラスト正規化
23
2. The Detail of Conventional CNN Techniques
• 具体的な効果は?: • improves invariance • improves optimization • increase sparsity [以上,Ranzato, CVPR 2013 Tutorial]
第23回 コンピュータビジョン勉強会@関東
アウトライン
1. Introduction to Convolutional Neural Network
2. The Detail of Conventional CNN Techniques
3. Other Topic
4. Implementation
24
第23回 コンピュータビジョン勉強会@関東
なぜ学習がうまくいくのか?• Bengio「Although deep supervised neural networks were generally found too difficult to train before the use of unsupervised pre-training, there is one notable exception: convolutional neural networks.」[Bengio, 2009] !
• 一般に多層のNNは過学習を起こす • なぜCNNはOK? !
• “One untested hypothesis” by Bengio • 入力数(fan-in)が少ないと誤差なく勾配伝搬する? • 局所的に接続された階層構造は認識タスクに向いている? • FULL < Random CNN < Supervised CNN
25
3. Other Topic
第23回 コンピュータビジョン勉強会@関東
DropOut• DropOut [Hinton et al., 2012] • 学習時に,中間層の出力の50%をrandomに0にする • 一時的に依存関係を大幅に減らすことで,強い正則化の効果がある
• 一般化→DropConnect [Wan et al., 2013] • 50% -> (1-p)% • Sparseな接続の重み行列に
26
3. Other Topic
第23回 コンピュータビジョン勉強会@関東
CNNの問題点
•ただただパラメータが多い
27
3. Other Topic
第23回 コンピュータビジョン勉強会@関東
CNNの問題点
28 http://www.slideshare.net/yurieoka37/ss-28152060
3. Other Topic
←最初に決めるが,一番難しい…
第23回 コンピュータビジョン勉強会@関東
Convolutionは先ほど説明したとおりだが… !☆いくつカーネル(フィルタ)を用意する? ☆カーネルのサイズは? ☆「端っこ」の扱いは? ☆活性化関数は? ☆重みやバイアスの決定は?
Convolution(再掲)
29
[conv] type=conv inputs=data channels=3 filters=32 padding=4 stride=1 filterSize=9 neuron=logistic initW=0.00001 initB=0.5
3. Other Topic
第23回 コンピュータビジョン勉強会@関東
☆プーリング開始画素は? ☆プーリングサイズは?(Overlap) ☆動かす幅は?(Overlap) ☆活性化関数は? ☆プーリングの種類は?
Pooling(再掲)
30
[pool] type=pool pool=max inputs=local32 start=0 sizeX=4 stride=2 outputsX=0 channels=32 neuron=relu
3. Other Topic
第23回 コンピュータビジョン勉強会@関東
いわゆるハイパパラメータ• いくつかの決定手法は提案されてはいる • ランダムサーチのほうが性能がいい?[Bergstra, 2012] • 基本的には層は多くあるべき? [Bengio, 2013] • http://www.slideshare.net/koji_matsuda/practical-recommendation-fordeeplearning
!!
• しかし基本的に問題依存とされる • 経験則しか頼りづらいBlack-box tool
31
3. Other Topic
第23回 コンピュータビジョン勉強会@関東
アウトライン
1. Introduction to Convolutional Neural Network
2. The Detail of Conventional CNN Techniques
3. Other Topic
4. Implementation
32
第23回 コンピュータビジョン勉強会@関東
cuda-convnet• LSVRC2012優勝のSupervisionのコード • GPU利用が前提 • 演算部分はC++ / CUDA, UI部分はPython !
• @hokkun_cvの卒論にて利用
33
4. Implementation
第23回 コンピュータビジョン勉強会@関東
cuda-convnet• 基本的なCNNの機能を網羅 • ただし自分たちで使ってるDropOutの実装はない • (Forkして公開している人はいる) !
• UI部分はPythonなのでいじりやすい !
• 欠点: • 画像を読み込ませるためにデータ加工するコードを自分で書かなければならない
• 並列処理ライブラリCUDAを用いているので,重要な処理の部分を変更するにはそれなりの知識が必要
34
4. Implementation
第23回 コンピュータビジョン勉強会@関東
まとめ• CNNはConvolutionとPoolingの繰り返しでできている • アイデア自体はかなり古い !
• 同じ層分だけあるフル接続NNよりも性能が良い • なぜかはまだ理論的説明がない !
• 局所的な正規化を行うことで性能向上 !
• あらゆる場所でコンテストを行っても上位独占 • 特にSupervisionの快挙は2013年にその改良を行う論文が多く執筆されたことからもわかる
35
第23回 コンピュータビジョン勉強会@関東
• ご清聴ありがとうございました.
36