image net classification with deep convolutional neural network

18
ImageNet Classification with Deep Convolutional Neural Network gasin

Upload: sato-eiichiro

Post on 22-Jan-2018

167 views

Category:

Engineering


2 download

TRANSCRIPT

Page 1: Image net classification with deep convolutional neural network

ImageNet Classification with Deep Convolutional Neural Network

gasin

Page 2: Image net classification with deep convolutional neural network

CNNとは

• Convolutional Neural Netの略

•畳み込み層と、プーリング層とfully-connected layerがある

•畳み込み層・・いい感じに画像の特徴を抽出する(本質)

•プーリング層・・画像を圧縮してぼかす(一般化する意味も)

• fully-connected layer・・最終的な結果を計算する

•ニューラルネットの一種なので誤差逆伝播などを使うことで学習できる。

Page 3: Image net classification with deep convolutional neural network

1.Abstract

• ImageNet LSVRC-2010という、1.2*10^6枚の画像を1000個のクラスに分類するコンテストでいい成績残した。

•パラメータやニューロンはいっぱいある。

• 5つの畳み込み層があり、そのうちいくつかはプーリング層を伴っていて、また、fully-connected layerが3つある。(もちろんクラス分類だからソフトマックスが最後にある)

•計算量減らすためにネットワークの辺を適当に切り落し、また、とても強いGPUを使った。

• fully-connected layerでの過学習を防ぐために最近発明された”dropout”と呼ばれる正則化を行った。

Page 4: Image net classification with deep convolutional neural network

2.Introduction

• MNISTなどの文字認識では数万オーダーの画像があればよかったけど、画像認識ではもっと必要でImageNetに15*10^6ぐらいデータがあるからそれを使った。

•しかし、それだけデータがあっても画像認識の複雑性が大きすぎるので強い仮定をする必要があって、データ間のエッジをかなり少なくした。(最善よりも多少は悪化するだろうが問題ないだろうとして)

• CNNはかなり大きいけど、二次元の畳み込みを実装しているGPUはかなり強いので計算できる。

•メモリが大きくなったり、GPUがもっと強くなったらCNNを大きくすることでもっといい結果が得られると予測される。

Page 5: Image net classification with deep convolutional neural network

3.The Architecture

• Figure 2が今回のCNNの図。5つの畳み込み層の後に3つのfully-connected layerがある。

•これから重要だと思われる順でこのネットワークの特徴について述べる。

Page 6: Image net classification with deep convolutional neural network

3.1 ReLU Nonlinearity

•活性化関数にはシグモイド関数やらtanhなどが使われるが、ここではReLU(ランプ関数)を使っている。f(x)=max(x,0)という単純なものである。Figure 1を見ればわかるように、学習が高速である。また、このような実験ができるのも、辺を適当に捨ててるからである。

•過去にも活性化関数を変えようとした人はいて、f(x)=|tanh(x)|としたらうまくいくということもあった。

•速く学習出来たらたくさん学習出来て性能は向上するのでこれは大事。

Page 7: Image net classification with deep convolutional neural network

3.2 Training on Multiple GPUs

• GTX 580 GPUは3GBしかなく、GPUが足りなかったため、二つのGPUを並列化して使うことにした。

•この二つのGPUはホストを介さずに直接相互に読み書きができる。

• kernel(neuron)を共に半分ずつ持ち、特定の層においてのみ相互を参照する。(Figure 2のように)

•一つのときに比べて、少しだけ速度が上がった。

Page 8: Image net classification with deep convolutional neural network

3.3 Local Response Normalization

• ReLU自体にはinputの制約はないが、正則化を行うことで入力を一般化することができるので精度が改善されると予測される。(実際に改善された)

• 3.3に書かれている式のように正則化する。

•事前にカーネルが順に並べられていて、その近辺のカーネルを用いて正則化をする。(LCNと呼ばれる正則化は、他のカーネルは関係なく、カーネルごとに独立して正則化する)

•畳み込み層の後に正則化を行う。(畳み込み→プーリング→正則化という方法もある)

Page 9: Image net classification with deep convolutional neural network

3.4 Overlapping Pooling

•例えば、6*6のマップを2*2のマップにプーリングする場合、従来の方法ならば6*6から3*3を4つ取り出して3*3を1*1に変換することで2*2のマップを作っていた。しかし、overlapping poolingでは、6*6から4*4を4つ取り出して4*4を1*1に変換することで2*2のマップを作るというようなことをする。(もちろん、4*4の一部は重複している)

Page 10: Image net classification with deep convolutional neural network

3.5 Overall Architecture

•最後の層はソフトマックス関数を使っている

• ReLUは全ての層の出力において適用されている

•マックスプーリングをしている場所や、GPUの使われ方、畳み込みをすることによるサイズの変化などはFigure 2を見ればわかる。

Page 11: Image net classification with deep convolutional neural network

4 Reducing Overfitting

•このCNNネットワークには6*10^7のパラメータがあるのにクラスは1000個しか存在しないため、一つのクラスあたり10bitも割り当てられることとなり、過学習をしやすくなっている

•これの対策として、主に二つの手法を用いた。

Page 12: Image net classification with deep convolutional neural network

4.1 Data Augmentation

•過学習を防ぐ最も基本的な手段はデータを増やすこと。また、ここで述べる画像処理は軽いので、GPUで学習してる間にCPUで処理しており、計算量は実質0である。

•一つ目の手法として、256*256の画像データを224*224に切り出し、また、それらの左右対称の画像を生成することでデータ量を32*32*2=2048倍にできる。(テストのときには中央+4隅の224*224とそれの左右対称画像の10枚についてニューラルネットを通して、それらの出力を平均して結果を決める)

•画像の色について、PCA(主成分分析)をしている。よく理解できていないが、この処理を行うと、色の激しさや照明などによる影響を緩和することができるらしい。

Page 13: Image net classification with deep convolutional neural network

4.2 Dropout

•多くのニューラルネットの予測値を統合することは有効だが、大きなニューラルネットではコストがかかりすぎるので、Dropoutという手法を用いる。

• Dropoutとは各ニューロンの出力を50%の確率で0にするというもの。これを行うことで過学習を防ぐことができると期待される。(複数のネットワークを扱っているようになるため)

•テスト時には、全てのニューロンの出力の値を0.5倍する。

Page 14: Image net classification with deep convolutional neural network

5 Details of leaning

• ハイパーパラメータについての記述• バッチサイズ128で確率的勾配分布法(128個のサンプルごとにパラメータを更新という感じ)

• モメンタムは0.9(前のパラメータの変化量をどれだけ加味するか)• 重み減衰は0.0005(元々は正則化をするためのもので、ここでは訓練誤差を小さくする意味もあるらしい)

• 重みの更新は式の通り• 重みの初期値は[-0.01,0.01]のガウス分布に従ってつけた• バイアスは1または0(1はReLUに正の値を渡すことで初期の学習を加速させるため)

• 学習係数はヒューステリクスに決めており、初期値は0.01で、改善が止まったら学習係数を0.1倍している。

Page 15: Image net classification with deep convolutional neural network

6 Results

• ILSVRC-2010 において、top-1で失敗率が37.5%、top-5で失敗率が17.0%という、圧倒的な精度で一位を取った。

•その他、このニューラルネットで成功した事例の列挙。

Page 16: Image net classification with deep convolutional neural network

6.1 Qualitative Evaluations

• Figure 3のように、何か指示を与えたわけではないのに、GPU1とGPU2で役割を分担しているように見える。(GPU1は色の非依存性を示していて、GPU2は色の特徴を示しているように見える)

• Figure 4が示すようにクラス分類をしている。

•画像の類似度を評価する方法として、4096次元のユークリッド距離を求めるという方法が考えられるが意味のない輪郭を抽出してしまうだろうから、この方法を用いるには画像を圧縮する自動符号化器を訓練することが必要になるだろう。

Page 17: Image net classification with deep convolutional neural network

7 Discussion

•この結果は、大きなニューラルネットが教師あり学習に効果的だということを示している。なぜなら、一つでも層を除くと精度が落ちるからだ。

•教師なし学習をデータセットに適応した場合、精度がより改善されることは予測されたが、今回は簡潔さを優先してそれをあえて行わなかった。

•もし、より大きな計算資源を手に入れ、大きなニューラルネットを構成したら、より精度が上がることが期待される。究極的には動画などにもこの技術を応用していきたい。

Page 18: Image net classification with deep convolutional neural network

参考文献

• http://www.cs.toronto.edu/~fritz/absps/imagenet.pdf

• http://may46onez.hatenablog.com/entry/2016/01/08/142843

•「深層学習」 著 岡谷貴之