狠狠撸

狠狠撸Share a Scribd company logo
ImageNet Classification with Deep
Convolutional Neural Network
gasin
CNNとは
? Convolutional Neural Netの略
? 畳み込み層と、プーリング層とfully-connected layerがある
? 畳み込み層??いい感じに画像の特徴を抽出する(本質)
? プーリング層??画像を圧縮してぼかす(一般化する意味も)
? fully-connected layer??最終的な結果を計算する
? ニューラルネットの一種なので誤差逆伝播などを使うことで学
習できる。
1.Abstract
? ImageNet LSVRC-2010という、1.2*10^6枚の画像を1000個のクラ
スに分類するコンテストでいい成績残した。
? パラメータやニューロンはいっぱいある。
? 5つの畳み込み層があり、そのうちいくつかはプーリング層を
伴っていて、また、fully-connected layerが3つある。(もちろん
クラス分類だからソフトマックスが最後にある)
? 計算量減らすためにネットワークの辺を適当に切り落し、また、
とても強いGPUを使った。
? fully-connected layerでの過学習を防ぐために最近発明され
た”dropout”と呼ばれる正則化を行った。
2.Introduction
? MNISTなどの文字認識では数万オーダーの画像があればよかっ
たけど、画像認識ではもっと必要でImageNetに15*10^6ぐらい
データがあるからそれを使った。
? しかし、それだけデータがあっても画像認識の複雑性が大きす
ぎるので強い仮定をする必要があって、データ間のエッジをか
なり少なくした。(最善よりも多少は悪化するだろうが問題な
いだろうとして)
? CNNはかなり大きいけど、二次元の畳み込みを実装している
GPUはかなり強いので計算できる。
? メモリが大きくなったり、GPUがもっと強くなったらCNNを大
きくすることでもっといい結果が得られると予測される。
3.The Architecture
? Figure 2が今回のCNNの図。
5つの畳み込み層の後に3つのfully-connected layerがある。
? これから重要だと思われる順でこのネットワークの特徴につい
て述べる。
3.1 ReLU Nonlinearity
? 活性化関数にはシグモイド関数やらtanhなどが使われるが、こ
こではReLU(ランプ関数)を使っている。f(x)=max(x,0)という単
純なものである。Figure 1を見ればわかるように、学習が高速で
ある。また、このような実験ができるのも、辺を適当に捨てて
るからである。
? 過去にも活性化関数を変えようとした人はいて、f(x)=|tanh(x)|
としたらうまくいくということもあった。
? 速く学習出来たらたくさん学習出来て性能は向上するのでこれ
は大事。
3.2 Training on Multiple GPUs
? GTX 580 GPUは3GBしかなく、GPUが足りなかったため、二つの
GPUを並列化して使うことにした。
? この二つのGPUはホストを介さずに直接相互に読み書きができ
る。
? kernel(neuron)を共に半分ずつ持ち、特定の層においてのみ相互
を参照する。(Figure 2のように)
? 一つのときに比べて、少しだけ速度が上がった。
3.3 Local Response Normalization
? ReLU自体にはinputの制約はないが、正則化を行うことで入力を
一般化することができるので精度が改善されると予測される。
(実際に改善された)
? 3.3に書かれている式のように正則化する。
? 事前にカーネルが順に並べられていて、その近辺のカーネルを
用いて正則化をする。(LCNと呼ばれる正則化は、他のカーネ
ルは関係なく、カーネルごとに独立して正則化する)
? 畳み込み層の後に正則化を行う。(畳み込み→プーリング→正
則化という方法もある)
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の一部は重複している)
3.5 Overall Architecture
? 最後の層はソフトマックス関数を使っている
? ReLUは全ての層の出力において適用されている
? マックスプーリングをしている場所や、GPUの使われ方、畳み
込みをすることによるサイズの変化などはFigure 2を見ればわか
る。
4 Reducing Overfitting
? このCNNネットワークには6*10^7のパラメータがあるのにクラ
スは1000個しか存在しないため、一つのクラスあたり10bitも割
り当てられることとなり、過学習をしやすくなっている
? これの対策として、主に二つの手法を用いた。
4.1 Data Augmentation
? 過学習を防ぐ最も基本的な手段はデータを増やすこと。また、
ここで述べる画像処理は軽いので、GPUで学習してる間にCPU
で処理しており、計算量は実質0である。
? 一つ目の手法として、256*256の画像データを224*224に切り出
し、また、それらの左右対称の画像を生成することでデータ量
を32*32*2=2048倍にできる。(テストのときには中央+4隅の
224*224とそれの左右対称画像の10枚についてニューラルネッ
トを通して、それらの出力を平均して結果を決める)
? 画像の色について、PCA(主成分分析)をしている。よく理解で
きていないが、この処理を行うと、色の激しさや照明などによ
る影響を緩和することができるらしい。
4.2 Dropout
? 多くのニューラルネットの予測値を統合することは有効だが、
大きなニューラルネットではコストがかかりすぎるので、
Dropoutという手法を用いる。
? Dropoutとは各ニューロンの出力を50%の確率で0にするという
もの。これを行うことで過学習を防ぐことができると期待され
る。(複数のネットワークを扱っているようになるため)
? テスト時には、全てのニューロンの出力の値を0.5倍する。
5 Details of leaning
? ハイパーパラメータについての記述
? バッチサイズ128で確率的勾配分布法(128個のサンプルごとにパラ
メータを更新という感じ)
? モメンタムは0.9(前のパラメータの変化量をどれだけ加味するか)
? 重み減衰は0.0005(元々は正則化をするためのもので、ここでは訓練
誤差を小さくする意味もあるらしい)
? 重みの更新は式の通り
? 重みの初期値は[-0.01,0.01]のガウス分布に従ってつけた
? バイアスは1または0(1はReLUに正の値を渡すことで初期の学習を加
速させるため)
? 学習係数はヒューステリクスに決めており、初期値は0.01で、改善
が止まったら学習係数を0.1倍している。
6 Results
? ILSVRC-2010 において、top-1で失敗率が37.5%、top-5で失敗率
が17.0%という、圧倒的な精度で一位を取った。
? その他、このニューラルネットで成功した事例の列挙。
6.1 Qualitative Evaluations
? Figure 3のように、何か指示を与えたわけではないのに、GPU1
とGPU2で役割を分担しているように見える。(GPU1は色の非
依存性を示していて、GPU2は色の特徴を示しているように見え
る)
? Figure 4が示すようにクラス分類をしている。
? 画像の類似度を評価する方法として、4096次元のユークリッド
距離を求めるという方法が考えられるが意味のない輪郭を抽出
してしまうだろうから、この方法を用いるには画像を圧縮する
自動符号化器を訓練することが必要になるだろう。
7 Discussion
? この結果は、大きなニューラルネットが教師あり学習に効果的
だということを示している。なぜなら、一つでも層を除くと精
度が落ちるからだ。
? 教師なし学習をデータセットに適応した場合、精度がより改善
されることは予測されたが、今回は簡潔さを優先してそれをあ
えて行わなかった。
? もし、より大きな計算資源を手に入れ、大きなニューラルネッ
トを構成したら、より精度が上がることが期待される。究極的
には動画などにもこの技術を応用していきたい。
参考文献
? http://www.cs.toronto.edu/~fritz/absps/imagenet.pdf
? http://may46onez.hatenablog.com/entry/2016/01/08/142843
? 「深層学習」 著 岡谷貴之

More Related Content

Image net classification with deep convolutional neural network

  • 1. ImageNet Classification with Deep Convolutional Neural Network gasin
  • 2. CNNとは ? Convolutional Neural Netの略 ? 畳み込み層と、プーリング層とfully-connected layerがある ? 畳み込み層??いい感じに画像の特徴を抽出する(本質) ? プーリング層??画像を圧縮してぼかす(一般化する意味も) ? fully-connected layer??最終的な結果を計算する ? ニューラルネットの一種なので誤差逆伝播などを使うことで学 習できる。
  • 3. 1.Abstract ? ImageNet LSVRC-2010という、1.2*10^6枚の画像を1000個のクラ スに分類するコンテストでいい成績残した。 ? パラメータやニューロンはいっぱいある。 ? 5つの畳み込み層があり、そのうちいくつかはプーリング層を 伴っていて、また、fully-connected layerが3つある。(もちろん クラス分類だからソフトマックスが最後にある) ? 計算量減らすためにネットワークの辺を適当に切り落し、また、 とても強いGPUを使った。 ? fully-connected layerでの過学習を防ぐために最近発明され た”dropout”と呼ばれる正則化を行った。
  • 5. 3.The Architecture ? Figure 2が今回のCNNの図。 5つの畳み込み層の後に3つのfully-connected layerがある。 ? これから重要だと思われる順でこのネットワークの特徴につい て述べる。
  • 6. 3.1 ReLU Nonlinearity ? 活性化関数にはシグモイド関数やらtanhなどが使われるが、こ こではReLU(ランプ関数)を使っている。f(x)=max(x,0)という単 純なものである。Figure 1を見ればわかるように、学習が高速で ある。また、このような実験ができるのも、辺を適当に捨てて るからである。 ? 過去にも活性化関数を変えようとした人はいて、f(x)=|tanh(x)| としたらうまくいくということもあった。 ? 速く学習出来たらたくさん学習出来て性能は向上するのでこれ は大事。
  • 7. 3.2 Training on Multiple GPUs ? GTX 580 GPUは3GBしかなく、GPUが足りなかったため、二つの GPUを並列化して使うことにした。 ? この二つのGPUはホストを介さずに直接相互に読み書きができ る。 ? kernel(neuron)を共に半分ずつ持ち、特定の層においてのみ相互 を参照する。(Figure 2のように) ? 一つのときに比べて、少しだけ速度が上がった。
  • 8. 3.3 Local Response Normalization ? ReLU自体にはinputの制約はないが、正則化を行うことで入力を 一般化することができるので精度が改善されると予測される。 (実際に改善された) ? 3.3に書かれている式のように正則化する。 ? 事前にカーネルが順に並べられていて、その近辺のカーネルを 用いて正則化をする。(LCNと呼ばれる正則化は、他のカーネ ルは関係なく、カーネルごとに独立して正則化する) ? 畳み込み層の後に正則化を行う。(畳み込み→プーリング→正 則化という方法もある)
  • 9. 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の一部は重複している)
  • 10. 3.5 Overall Architecture ? 最後の層はソフトマックス関数を使っている ? ReLUは全ての層の出力において適用されている ? マックスプーリングをしている場所や、GPUの使われ方、畳み 込みをすることによるサイズの変化などはFigure 2を見ればわか る。
  • 11. 4 Reducing Overfitting ? このCNNネットワークには6*10^7のパラメータがあるのにクラ スは1000個しか存在しないため、一つのクラスあたり10bitも割 り当てられることとなり、過学習をしやすくなっている ? これの対策として、主に二つの手法を用いた。
  • 12. 4.1 Data Augmentation ? 過学習を防ぐ最も基本的な手段はデータを増やすこと。また、 ここで述べる画像処理は軽いので、GPUで学習してる間にCPU で処理しており、計算量は実質0である。 ? 一つ目の手法として、256*256の画像データを224*224に切り出 し、また、それらの左右対称の画像を生成することでデータ量 を32*32*2=2048倍にできる。(テストのときには中央+4隅の 224*224とそれの左右対称画像の10枚についてニューラルネッ トを通して、それらの出力を平均して結果を決める) ? 画像の色について、PCA(主成分分析)をしている。よく理解で きていないが、この処理を行うと、色の激しさや照明などによ る影響を緩和することができるらしい。
  • 13. 4.2 Dropout ? 多くのニューラルネットの予測値を統合することは有効だが、 大きなニューラルネットではコストがかかりすぎるので、 Dropoutという手法を用いる。 ? Dropoutとは各ニューロンの出力を50%の確率で0にするという もの。これを行うことで過学習を防ぐことができると期待され る。(複数のネットワークを扱っているようになるため) ? テスト時には、全てのニューロンの出力の値を0.5倍する。
  • 14. 5 Details of leaning ? ハイパーパラメータについての記述 ? バッチサイズ128で確率的勾配分布法(128個のサンプルごとにパラ メータを更新という感じ) ? モメンタムは0.9(前のパラメータの変化量をどれだけ加味するか) ? 重み減衰は0.0005(元々は正則化をするためのもので、ここでは訓練 誤差を小さくする意味もあるらしい) ? 重みの更新は式の通り ? 重みの初期値は[-0.01,0.01]のガウス分布に従ってつけた ? バイアスは1または0(1はReLUに正の値を渡すことで初期の学習を加 速させるため) ? 学習係数はヒューステリクスに決めており、初期値は0.01で、改善 が止まったら学習係数を0.1倍している。
  • 15. 6 Results ? ILSVRC-2010 において、top-1で失敗率が37.5%、top-5で失敗率 が17.0%という、圧倒的な精度で一位を取った。 ? その他、このニューラルネットで成功した事例の列挙。
  • 16. 6.1 Qualitative Evaluations ? Figure 3のように、何か指示を与えたわけではないのに、GPU1 とGPU2で役割を分担しているように見える。(GPU1は色の非 依存性を示していて、GPU2は色の特徴を示しているように見え る) ? Figure 4が示すようにクラス分類をしている。 ? 画像の類似度を評価する方法として、4096次元のユークリッド 距離を求めるという方法が考えられるが意味のない輪郭を抽出 してしまうだろうから、この方法を用いるには画像を圧縮する 自動符号化器を訓練することが必要になるだろう。
  • 17. 7 Discussion ? この結果は、大きなニューラルネットが教師あり学習に効果的 だということを示している。なぜなら、一つでも層を除くと精 度が落ちるからだ。 ? 教師なし学習をデータセットに適応した場合、精度がより改善 されることは予測されたが、今回は簡潔さを優先してそれをあ えて行わなかった。 ? もし、より大きな計算資源を手に入れ、大きなニューラルネッ トを構成したら、より精度が上がることが期待される。究極的 には動画などにもこの技術を応用していきたい。