image net classification with deep convolutional neural networks
DESCRIPTION
黒船がやってきた!!TRANSCRIPT
IMAGENet Classification _ with Deep Convolutional Neural Networks
2012 / 12 / 20本位田研究室 M1
堀内 新吾
NIPS ‘12
輪講:
発表論文『 IMAGENet Classification with Deep Convolutional Neural Networks 』会議: NIPS 2012著者: Alex Krizhevsky, Ilya Sutskever, Geoffrey E Hinton
トロント大学の Hinton 先生と愉快な仲間たち
Object Recognition
Cat? Leopard?
応用例:• カメラの顔認識• 自動レジ• ロボットの目• etc…近年の傾向:• クラス数• 訓練画像数• 特徴量の複雑化
ILSVRC2012
IM GENET Large Scale Visual Recognition Challenge• 世界最大規模の画像認識コンテスト
※ ↑ をダウンロードするだけで一週間かかるDifficulty:– データサイズの問題– 訓練画像の数の多さの問題– 識別の複雑さの問題
カテゴリ数 訓練画像 検査画像 テスト画像1000 120 万枚 50000 枚 150000 枚
Typical OR Approach
訓練画像 特徴量特徴抽出
クラス分類機
クラスラベル学習
テスト画像 特徴量特徴抽出 クラスラベル識別
“ どんな特徴量を使うか”が最重要、だった
Proposal Approach
• 内部で自動で特徴抽出• 各層の間に荷重付き枝を持つような Neural Network
訓練画像クラスラベル
テスト画像クラスラベル
DeepConventional
NeuralNetworks
Result of ILSVRC 2012
LEAR-XRCE
Univ. of A
musterd
am
XRCE/INRIA
OXFORD_VGG
Univ. of T
okyo
This!!
0
0.1
0.2
0.3
0.4
Error Rate
29%27% 27% 26%
34%
16%
わけがわからない
よ
Agenda
• Overview• ImageNet• Architecture– Deep Learning– Convolutional NNs– Acceleration– Reducing Overfitting
• Learning• Result and Evaluation
Intro.
Overviewwhy? 実世界におけるクラス分類に耐える識別機を作
るhow?
史上最大規模の Neural Networkそれを動かせる GPU
what? Reasonable な時間で圧倒的な性能を出した
contrib.Reasonable な時間で圧倒的な性能を出したGPU 用のコードを公開した
IM GENET
WordNet の階層に従う画像データベースurl: http://www.image-net.org/• カテゴリ 22000• 画像: 1500 万枚1画像1カテゴリで bounding-box や各種特徴量も配布
ex.)Chain-mail カテゴリの画像
Architecture
Deep Learning
Input
Output
識別機
教師なし学習
教師あり学習
Deep Learning
Input
Output
識別機Greedy Layer-wise Training[1]
• 一層ずつ学習• 一層の autoencoder
時間 効率× Overfitting
× 時間× 効率× Vanishing Gradient
Problem
Traditional Approach• まとめて学習• 多層
autoencoder
Convolutional NNs[2]
• NN s の問題
• 提案1
• 提案2
• 提案3
各ユニットが全て繋がっている ↓• 入力の欠損• 入力のズレ• ノイズの影響をNNs全体が学習してしまう
Convolutional NNs[2]
• NN s の問題
• 提案1
• 提案2
• 提案3
各ユニットへの入力を制限• 前の層の一部のユニットの出力だけを受け取る フィルタのようなもの→ 入力の誤差を全体に伝搬させない
• 入力範囲はオーバーラップするように選ぶ データの欠損に対応するため
Convolutional NNs[2]
• NN s の問題
• 提案1
• 提案2
• 提案3
重みを共有• 入力範囲の同じ入力座標は同じ重みをもつ • 同じフィルタを使って圧縮するイメージ → フィルタに対する入力の傾向を学習 → 入力のズレ,ノイズに対応
問題 : 1つのフィルタについてしか学習できない
Convolutional NNs[2]
• NN s の問題
• 提案1
• 提案2
• 提案3
フィルタの数を増加• 多数のフィルタを用意して出力を多次元化 異なる重みをもつ複数のフィルタを学習• 様々な特徴を学習可能
Architecture of CNNs
5 層の CNN s + 3 層の NN s• 入力: 150,528 次元• ニューロン:約 66 万個, GPU2 台に配置 253,440 – 186,624 – 64,896 – 64,896 – 43,264 – 4096 – 4096• 出力: 1000 次元
Acceleration
ReLU 非線形変換 GPU2 台の学習 Local Response
正規化Overlapping
Pooling
Acceleration
ReLU 非線形変換 GPU2 台の学習 Local Response
正規化Overlapping
Pooling
f(x)
ニューロンのモデル 入力 x : 前の層の出力を各枝ごとに重み付けした
もの出力 f(x): 入力に非線形な変形を加えたもの
ex.) f(x) = tanh(x), (1 + e-x)-1
問題点 : 莫大な回数行うとなると遅すぎる-> もっと単純な変形で出力を決定したい
ReLU 非線形変換 f(x) = max(0, x)予備実験において 6倍速くネットワークを収束
Acceleration
ReLU 非線形変換 GPU2 台の学習 Local Response
正規化Overlapping
Pooling
GPU 間のデータのやり取りを制限- 2,3 層間, 5,6 層間, 6,7 層間だけ
Acceleration
• ReLU 非線形変換の入力は全部負だとダメ → 近傍のフィルタの同じ座標の重みで正規化 予備実験では約 2%の性能向上
ReLU 非線形変換 GPU2 台の学習 Local Response
正規化Overlapping
Pooling
厚み: Nこの範囲で正規化する
Acceleration
• 近傍の出力をまとめる 出力 : 平均,最大値, etc…
• 一般的には範囲を分ける→Overlap させることでズレを吸収
0.3~0.4%の性能向上
ReLU 非線形変換 GPU2 台の学習 Local Response
正規化Overlapping
Pooling
図 :3×3, Overlap 1 の例
図 :Pooling のイメージ
Reducing Overfitting
試験前に必死で勉強 とりあえず丸暗記 問題集は完璧!!
応用問題しか出ない 暗記だけだからヤバい 勉強しない方が良かった
Dropout
Reducing Overfitting
データの拡張 バリエーションを増やす ラベルを保存するような変換1. トリミング +鏡像
訓練時:ランダムに切り取る
テスト時:中央+ 4隅2. 輝度の変更
主成分分析を利用ガウス分布から固有値を
抽出固有値と乱数で輝度を変
更約 1%の性能向上
Reducing Overfitting
データの拡張 バリエーションを増やす ラベルを保存するような変換1. トリミング +鏡像
訓練時:ランダムに切り取る
テスト時:中央+ 4隅2. 輝度の変更
主成分分析を利用ガウス分布から固有値を
抽出固有値と乱数で輝度を変
更約 1%の性能向上
Dropout[3]• 出力の半分を 0 にする CNNs なので重みは共有 → 他の部分で学習は可能 • 他ニューロン任せをやめる NN sは影響度の高いニューロンに 学習をまかせてしまうことがある
Dropout なし
Dropout あり
図:手書き数字画像から得た特徴
Learning
Learning
• 学習アルゴリズム:確率的勾配降下法• 重みの初期化:平均 0 のガウス分布からサンプリング
• 学習回数: 90回2 台の GPU で 5 , 6日かかった
Result & Evaluation
Result
図: ILSVRC の結果
error rate
圧倒的なエラー率の低さ
Sub-Result
• CNNs の構造の変化に対する性能評価
*付きは 2011 年のデータも使って事前学習したものを利用
Qualitative Evaluation
• 1 層目が獲得した特徴– GPU1 :傾き– GPU2 :色
• 脳の視覚野にも異なる性質に反応する部位が存在↑GPU 間の通信を制限したことによるのではないか?
1 層目のレイヤーの出力.上 : GPU1 ,下 : GPU2
Application
Summary
Sammary
実世界にも応用可能な識別問題を解くために
CNNs と Deep Learning を用いた巨大なネットワークを
GPU2 台の上に実装し
ImageNet のコンテストに応用したら
常識破りな結果が出ちゃった^^
Refference
[1]Deep Learning: A fast learning algorithm for deep belief nets, GE Hinton, S Osindero, YW Teh - Neural computation, 2006.
[2]CNNs: Face recognition: A convolutional neural-network approach, S Lawrence, CL Giles,et al. Neural Networks, IEEE Transactions on 1997参考 http://ceromondo.blogspot.jp/2012/09/convolutional-neural-network.html[3]Dropout:Improving neural networks by preventing co-adaptation of feature detectors, GE Hinton, N Srivastava, A Krizhevsky, et al. 2012