시작하기무료로 시작하기

기울기 소실 문제

또 다른 기울기 문제는 기울기가 소실되어 0에 가까워지는 경우예요. 이 문제는 감지하기가 쉽지 않아 더 해결하기 어렵습니다. 손실 함수가 매 스텝마다 개선되지 않는다면, 기울기가 0이 되어 가중치가 업데이트되지 않아서일까요? 아니면 모델 자체가 학습을 잘 못해서일까요?

이 문제는 긴 메모리가 필요한 경우(긴 문장) RNN 모델에서 더 자주 발생합니다.

이번 연습에서는 더 긴 문장을 선택한 IMDB 데이터에서 이 문제를 관찰해 볼 거예요. 데이터는 Xy 변수에 로드되어 있으며, Sequential, SimpleRNN, Dense 클래스와 matplotlib.pyplot의 별칭 plt도 준비되어 있습니다. 모델은 100 epoch으로 사전 학습되었고, 가중치와 학습 이력은 파일 model_weights.h5와 변수 history에 저장되어 있어요.

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

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

강의 보기

연습 안내

  • 모델에 SimpleRNN 레이어를 추가하세요.
  • .load_weights() 메서드를 사용해 사전 학습된 가중치를 모델에 불러오세요.
  • 학습 데이터의 정확도('acc' 속성에 있음)를 플롯에 추가하세요.
  • .show() 메서드를 사용해 플롯을 화면에 표시하세요.

실습형 인터랙티브 연습

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

# Create the model
model = Sequential()
model.add(____(units=600, input_shape=(None, 1)))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='sgd', metrics=['accuracy'])

# Load pre-trained weights
model.____('model_weights.h5')

# Plot the accuracy x epoch graph
plt.plot(history.history[____])
plt.plot(history.history['val_acc'])
plt.legend(['train', 'val'], loc='upper left')
plt.____()
코드 편집 및 실행