読者です 読者をやめる 読者になる 読者になる

【DeepLearning】AlexNetも状態遷移する話 (と思ったら学習率の微調整が原因だった話)

※追記

 Twitterで学習率下げてるだけというご指摘をいただきました

 確かにそのタイミングで学習率が是正されているので

 原因それっぽいですね、

 僕の勘違いで混乱を招いていたらすいません

    検証に学習率固定でAlexNetで同じ課題を

 今やってみてます。*1

 ご指摘ありがとうございます。

 

 

AlexNetで今回は150エポック回してみた

SGD stochastic gradient descent使ったので

1エポックはミニバッチで分割した学習用画像読み込み

->学習(train)

->検証用画像でテスト(val)

の1フローみたいですね

 

環境は前回と変わっていません

OS:Ubuntu14.04

GPU:Geforce GTX 960 4GB

データセット:cifar100

 

100クラス画像分類学習とテストを7hほど回しました。

 

結果はこちら

1.AlexNetのaccuraccy, lossのグラフ変化

f:id:manjirou99:20160414092057p:plain

 

AlexNetでも突然正答率(accuracy)が上昇する現象が50エポック目くらいで

確認できますね

1.1 AlexNetの構成図

File:Alexnet.svg - Wikimedia Commons

 

GoogLeNetと比較してみましょう

2.GoogLeNetのaccuraccy, lossのグラフ変化

f:id:manjirou99:20160414000406p:plain

2.1.GoogLeNetの構成図

GoogleNetは構成が複雑と思ってましたがConvolution6つとPooingがひとつという

Inceptionという構造にわかれています。

f:id:manjirou99:20160414095511p:plain

Inceptionを9層ほど積層して途中で更に

畳み込みをいくつか噛ませた後Softmax層でクラス分類結果の確率を出力している

ようです。4,7,9層目のInception後の結果それぞれに対してグラフ描画している為複数のaccuraccyやlossの描画が為されるみたいですね。

 

 

3.考察的なもの

実は単純に重みが微調整されてただけっぽいです。

 

*1.

実際、検証するまでもなく

学習率はステップダウンで実行していたのである程度精度が上がり学習率が0.01->0.001へ小刻みに更新されるよう変化しcifar100データセットに対して最適化された事で

精度が上がったんだと思います。

微調整することでこんだけ精度上がるんですね

 

多分微調整しすぎると

モデル全体としてはcifar100以外のデータセットに対して汎化能力が失われてしまうのではないかと思います。

検証してる人もういるんじゃないかと思いますけど

個人的には自分で手を動かして理解するというのが大事

なので色々やってみます。

 

 

参考文献

イラストで学ぶ ディープラーニング (KS情報科学専門書) : 山下 隆義 : 本 : Amazon.co.jp

[1409.4842] Going Deeper with Convolutions

GoogLeNet

 

スライド: