ラビットチャレンジ【深層学習day2】~過学習~

概要

過学習は深層学習において重要な問題である。過学習が起きている状態では未知のデータに精度よく予測することができない

過学習を防止するまでに様々な方法がある

この章では以下の項目を学んだ

過学習の基礎

正則化(確認テスト2つ含む)

・例題チャレンジ

ドロップアウト

・ハンズオン

過学習の基礎

過学習とは以下のようにテスト誤差と訓練誤差とで学習曲線が乖離することである

f:id:Maruring:20210716163949p:plain

原因としては下記のようなことが考えられる

・パラメータの数が多い

・パラメータの値が適切でない

・ノードが多い

その対応としてネットワークの自由度(層数、ノード数、パラメータ値)を制約するなどがある

代表的な方法として正則化ドロップアウトがある

正則化

そもそも過学習の原因の一つとして「重みの値が大きい」ということがあげられる

重みが大きいと入力される特定のデータを過大評価してしまい、学習が進まなくなる

そこで正則化手法を利用して過学習を抑制する

誤差に対して正則化項を加算することで重みを抑制する

その正規化項としてL1正則化L2正則化がある

L1正則化・L2正則化は以下のように表すことができる

f:id:Maruring:20210716165243p:plain

<<確認テスト>>

①リッジ回帰の特徴として正しい説明を選択せよ

(a)ハイパーパラメータを大きな値に設定すると、すべての重みが限りなく0に近づく

②L1正則化を表しているグラフを選べ

右図

例題チャレンジ

L2パラメータ正則化

grad += rate*param

L1パラメータ正則化

x = np.sign(param)

データ集合の拡張

image = image[top:bottom, left:right, :]

ドロップアウト

ランダムにノードを削除させて学習させること

ハンズオン

weigth_decay_lambdaの値を変更して正則化の強さを確認

L1正規化のほうがL2正規化よりも減衰率の値を強く受ける

f:id:Maruring:20210716175046p:plain

f:id:Maruring:20210716175059p:plain

optimizerとdropout_ratioの値を変更

すべてのオプティマイザーにおいて0.15以上の値でacctuacy_scoreが低い

f:id:Maruring:20210716175304p:plain

f:id:Maruring:20210716175317p:plain

f:id:Maruring:20210716175333p:plain

f:id:Maruring:20210716175345p:plain