ニューラルネットワークの正則化

Keras で学ぶ画像モデリング

Ariel Rokem

Senior Data Scientist, University of Washington

ドロップアウト

各学習ステップで:

  • ユニットのサブセットを選択する
  • 順伝播でそれを無視する
  • 誤差逆伝播でも同様に無視する
Keras で学ぶ画像モデリング

ドロップアウト

Keras で学ぶ画像モデリング

Kerasでのドロップアウト

from keras.models import Sequential
from keras.layers import Dense, Conv2D, Flatten, Dropout

model = Sequential() model.add(Conv2D(5, kernel_size=3, activation='relu', input_shape=(img_rows, img_cols, 1)))
model.add(Dropout(0.25))
model.add(Conv2D(15, kernel_size=3, activation='relu')) model.add(Flatten()) model.add(Dense(3, activation='softmax'))
Keras で学ぶ画像モデリング

バッチ正規化

  • 出力をリスケールする
Keras で学ぶ画像モデリング

Kerasでのバッチ正規化

from keras.models import Sequential
from keras.layers import Dense, Conv2D, Flatten, BatchNormalization 


model = Sequential() model.add(Conv2D(5, kernel_size=3, activation='relu', input_shape=(img_rows, img_cols, 1)))
model.add(BatchNormalization())
model.add(Conv2D(15, kernel_size=3, activation='relu')) model.add(Flatten()) model.add(Dense(3, activation='softmax'))
Keras で学ぶ画像モデリング

併用時の注意点

ドロップアウトとバッチ正規化の不調和

Keras で学ぶ画像モデリング

練習しましょう!

Keras で学ぶ画像モデリング

Preparing Video For Download...