시작하기무료로 시작하기

Exploding gradient 문제

영상 연습 문제에서 RNN 모델을 다룰 때 발생할 수 있는 두 가지 문제, 즉 vanishing gradient와 exploding gradient에 대해 배웠습니다.

이번 연습에서는 exploding gradient 문제를 살펴보며, 함수의 미분값이 지수적으로 커질 수 있음을 확인하고 간단한 기법으로 이를 해결하는 방법을 알아봅니다.

데이터는 이미 X_train, X_test, y_train, y_test로 환경에 로드되어 있습니다.

옵티마이저로는 Stochastic Gradient Descent(SGD)를, 손실 함수로는 Mean Squared Error(MSE)를 사용합니다.

1단계에서는 학습/테스트 세트에서 MSE를 계산해 그래디언트가 폭주하는 현상을 관찰합니다. 2단계에서는 문제를 해결하기 위해 clipvalue 매개변수를 사용하여 옵티마이저를 변경합니다.

Keras에서 Stochastic Gradient Descent는 SGD로 불러옵니다.

이 연습은 강의의 일부입니다

Keras로 배우는 언어 모델링을 위한 순환 신경망(RNN)

강의 보기

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

# 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' % (____, ____))
코드 편집 및 실행