始める無料で始める

勾配爆発の問題

動画の演習では、RNNモデルでよく起こる2つの問題、勾配消失と勾配爆発について学びました。

この演習では、勾配爆発の問題を取り上げ、関数の導関数が指数的に大きくなること、そしてそれを簡単なテクニックで解決する方法を確認します。

データはすでに環境に X_trainX_testy_trainy_test として読み込まれています。

最適化手法には Stochastic Gradient Descent (SGD) を、損失関数には Mean Squared Error (MSE) を使用します。

最初のステップでは、学習データとテストデータでMSEを計算し、勾配爆発が起きている様子を観察します。ステップ2では、clipvalue パラメータを使って最適化手法を変更し、問題を解決します。

KerasでのStochastic Gradient Descentは SGD として利用できます。

この演習はコースの一部です

Kerasで学ぶ言語モデリングのためのRecurrent Neural Networks (RNNs)

コースを見る

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Create a Keras model with one hidden Dense layer
model = Sequential()
model.add(Dense(25, input_dim=20, activation='relu', kernel_initializer=he_uniform(seed=42)))
model.add(Dense(1, activation='linear'))

# Compile and fit the model
model.compile(loss='mean_squared_error', optimizer=____(learning_rate=0.01, momentum=0.9))
history = model.fit(X_train, y_train, validation_data=(____, ____), epochs=100, verbose=0)

# See Mean Square Error for train and test data
train_mse = model.____(X_train, y_train, verbose=0)
test_mse = model.evaluate(X_test, y_test, verbose=0)

# Print the values of MSE
print('Train: %.3f, Test: %.3f' % (____, ____))
コードを編集して実行