소실·폭주 그라디언트

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

David Cecchini

Data Scientist

RNN 모델 학습

문장 끝까지 각 입력 단어로 순전파하고, 시간을 거슬러 가중치를 갱신하는 역전파를 보이는 RNN 전개도

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

관련 변수의 수학적 정의와 함께 순전파 단계 표시

예: $$a_2 = f(W_a, a_1, x_2)$$

$$= f(W_a, f(W_a, a_0, x_1), x_2)$$

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

수학적 정의와 함께 시간 역전파 단계 표시

기억하십시오:

$$ a_T = f(W_a, a_{T-1}, x_T) $$

$a_T$는 $a_{T-1}$에 의존하고, 이는 $a_{T-2}$와 $W_a$에 의존합니다. 계속됩니다.

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

BPTT 계속

도함수를 계산하면

$$ \frac{\partial a_t}{\partial W_a} = (W_a)^{t-1}g(X) $$

  • $(W_a)^{t-1}$은 0으로 수렴할 수 있음

  • 또는 $+\infty$로 발산할 수 있음!

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

그라디언트 문제의 해결책

몇 가지 해결책이 알려져 있습니다:

그라디언트 폭주

  • 그라디언트 클리핑/스케일링

그라디언트 소실

  • 행렬 W 초기화를 개선
  • 정규화 사용
  • tanh/sigmoid/softmax 대신 ReLU 사용
  • LSTM 또는 GRU 셀 사용!
Keras로 배우는 언어 모델링을 위한 순환 신경망(RNN)

연습해 봅시다!

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

Preparing Video For Download...