Problema de gradiente explosivo
No exercício em vídeo, você aprendeu sobre dois problemas que podem surgir ao trabalhar com modelos RNN: os problemas de gradiente desaparecido e explodido.
Esse exercício mostra o problema do gradiente explosivo, mostrando que a derivada de uma função pode aumentar exponencialmente e como resolver isso com uma técnica simples.
Os dados já estão carregados no ambiente como X_train, X_test, y_train e y_test.
Você vai usar um otimizador de descida gradiente estocástico (SGD) e o erro quadrático médio (MSE) como função de perda.
Na primeira etapa, você vai ver o gradiente explodir ao calcular o MSE nos conjuntos de treinamento e teste. Na etapa 2, você vai trocar o otimizador usando o parâmetro “ clipvalue ” para resolver o problema.
A descida do gradiente estocástico no Keras é carregada como SGD.
Este exercício faz parte do curso
Redes Neurais Recorrentes (RNNs) para Modelagem de Linguagem com Keras
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# 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' % (____, ____))