eubinecto / k4ji_ai

4명의 김씨, 한명의 진씨, 한명의 임씨가 모여서 인공지능을 공부하고 있습니다.
13 stars 0 forks source link

스터디:LSTM:11.1:순환벡터와 기울기 정보의 소멸 및 폭주 #8

Closed eubinecto closed 3 years ago

eubinecto commented 3 years ago

LSTM에 대한 간략한 소개

깊은 신경망에서의 기울기 손실 & 폭주 문제

깊은 신경망에서의 기울기 손실 & 폭주 문제 해소

순환 신경망에서의 소멸 및 폭주 문제

순환 벡터 원소 값의 소멸 및 폭주 문제

순환 계층 순전파 과정과 역전파 과정에서의 소멸 및 폭주 문제

순환 계층 소멸 및 폭주 문제의 심각성

순환 계층 소멸 및 폭주 문제의 대안 및 해결책

eubinecto commented 3 years ago

LSTM에 대한 간략한 소개

슬라이드
image
eubinecto commented 3 years ago

깊은 신경망에서의 기울기 손실 & 폭주 문제

슬라이드
image

경사도 하강법:

vanishing & exploding gradients 문제의 원인은 무엇이고, 어떤 현상이 나타나며, 심층 신경망의 학습에 어떠한 영향을 주는가?

problem 원인 결과 학습에 주는 영향
vanishing gradient the loss gradient is close to zero virtually no change in the weights after gradient descent because the "step" is too small image The weight hardly changes. (does not converge)
exploding gradient the loss gradient is too large too much change in the weights after gradient descent because "step" is too huge, inconsistent image The weight changes too much. (diverges)

두 경우 모두, gradient가 불안정해짐으로 인해, 모델의 학습이 더뎌지는 것으로 볼 수 있다.

그렇다면 이 두 문제의 원인은 무엇이고, 사람들은 이 문제를 어떻게 해결했을까?

unstable gradients 의 원인

여러 이유가 있겠으나, 활성화 함수가 시그모이드인 경우, 모든 값이 0보다 크고 평균값이 0.5인 점이 기울기의 소멸의 큰 원인될 수 있는 것으로 분석한 논문이 있음.

Understanding the difficulty of training deep feedforward neural network:

sigmoid function을 사용함으로 인한 레이어 출력의 saturation 현상
image
sigmoid function이 saturate 할 때
image

매우 흔한 문제

기울기의 폭주로 weight값이 NaN이 되어서 어쩔 줄 모르겠는 사람들이 아주 많이 보인다.

eubinecto commented 3 years ago

깊은 신경망에서의 기울기 손실 & 폭주 문제 해소

슬라이드
image

Bengio & Glorot은 논문에서

fan-in, fan-out에서의 convariance가 모든 레이어에 대하여 동일하도록 유지해야 한다.

라고 주장함.

완벽하게는 아니지만, 그런 효과를 어느정도 기대할 수 있는 방법:

혹은 배치 졍규화 레이어를 중간 중간에 추가한다.

Unstable gradients: how do we deal with them?

깊은 신경망은 학습과정에서 그런 문제가 있었으나, 지금은 그 문제를 어느정도 해결할 수 있는 방법이 고안되었다.

eubinecto commented 3 years ago

순환 신경망에서의 소멸 및 폭주 문제

슬라이드
image

vanishing & exploding gradient은 RNN에서도 발생하며, 사실 DNN보다 RNN에서 두 문제가 더 심각하다. 이는 "동일한 내용의 가중치 행렬이 각 시간대에 반복 이용"되기 때문이다.

다음의 코드에 break point를 두고, 이게 무슨 말인지 알아보자. https://github.com/eubinecto/k4ji_ai/blob/e94a5d01fb0fb59a82e0a32e016356bbc9a75840/eb/src/chap_10/rnn_basic_model.py#L45-L54

그런데 각 시간대에 동일한 가중치를 사용하는 것이 왜 정보의 소멸 & 폭주문제를 야기할까? 어떤 정보가 소멸 혹은 폭주한다는 것인가? 왜 그런 문제가 유독 RNN에서 더 심할까?

eubinecto commented 3 years ago

순전파 과정: 순환 벡터 원소 값의 소멸 및 폭주 문제

슬라이드
image

먼저, 각 시간대에 동일한 가중치를 사용하는 것은 순전파 과정에서부터 순환 벡터 정보의 손실 / 폭주를 야기할 수 있다. 다른 요인들(가중치, 각기 다른 벡터성분)에 의해 완화될 수 있기에 손실 기울기의 소멸 및 폭주 문제보다 심각하지는 않다.

eubinecto commented 3 years ago

역전파 과정: 손실 기울기 소멸 및 폭주 문제

슬라이드
image

각 시간대에 동일한 가중치를 사용하는 것은 역전파 과정에서는 손실 기울기 정보의 손실 / 폭주를 야기할 수 있다.

Stanford CS224N: NLP with Deep Learning | Winter 2019 | Lecture 7 – Vanishing Gradients, Fancy RNNs:

왜 손실 기울기가 불안정해지는가?
image

chain rule을 따라서 가장 과거에 존재하는 시간대의 최종 loss에 대한 편미분을 구해보면 위와 같다. 미래 시간대에 존재하는 시간대에서의 손실 기울기 편미분을 차례대로 곱해주어야 한다. image| 그런데 만약, 손실 기울기가 그렇게 backpropagate하는 과정 속에서, 중간의 손실 기울기가 모두 0에 가깝거나, 절댓값이 1보다 크다면 어떻게 될까? 각각 h1에서의 손실 기울기의 소멸 / 폭주를 초래할 것이다.| image| 좀더 formal proof sketch. 만약 i=20이고, previous state j=0이라면, 전체 손실기울기에 대한 j=0에서의 손실 기울기는 똑같은 가중치 행렬 W_h를 20번 제곱을 해야한다(만약 W_h의 절댓값이 1보다 작다면 j=0에 도달 했을 때, 최종 손실 기울기는 0에 가까워져 "vanish"해버린다). 즉, 만약 가중치 행렬 속 원소값의 절댓값이 1보다 작다면 / 크다면, i <-> j의 격차가 벌어지면 벌어질 수록 j에서의 손실 기울기는 소멸한다 / 폭주한다.

그런데 이러한 순환 벡터 & 손실 기울기 정보의 손실은 RNN의 성능에 어떠한 영향을 미치는가?

eubinecto commented 3 years ago

순환 계층 소멸 및 폭주 문제의 심각성

슬라이드
image

그렇다면 RNN에서의

[Stanford CS224N: NLP with Deep Learning Winter 2019 Lecture 7 – Vanishing Gradients, Fancy RNNs](https://youtu.be/QEw0qEa0E50?t=804): why is vanishing gradient a problem?
image

vanishing gradients with RNN: 특히, long-term dependency가 중요하게 작용하는 언어를 학습 시킬 때 문제가 된다.

예를 들면, plurality 매칭:

이렇게 멀리 떨어져서 존재하는 패턴의 경우, RNN은 입력 time frame이 길어지면 기울기 손실 & 폭주 가능성이 높아지는 현상으로 인해, 학습을 잘하지 못한다.

즉, RNN으로 짧은 문장을 만드는 것은 가능하지만, 앞뒤가 맞는 하나의 유기적인 에세이를 쓰도록 훈련시키는 것은 매우 어렵다.

그리고 그 이유는 위에서 설명하듯, sequence의 길이가 길어질수록 똑같은 가중치가 각 시간대에 동일하게 곱해지면서, 기울기 손실 & 폭주가 빈번하게 일어나기 때문.

비유하자면 "단기기억상실증"에 걸린 모델이다
Dori's Short-term memory lossimage
(pg. 514, Hands on ML 2) ... After a while, the RNN's state contains virtually no trace of of the first inputs. This can be a showstopper. Image Dory the fish trying to translate a long sentence; by the time she's finished reading it, she has no clue how it started
eubinecto commented 3 years ago

순환 계층 소멸 및 폭주 문제의 대안 및 해결책

슬라이드
image

LSTM to the rescue

RNN의 이런 문제를 극복하기 위해, RNN의 기본 단위를 보다 더 복잡한 구조로 바꾸는 방법이 모색되었다. 그런 motive를 바탕으로 고안된 모델이 LSTM이다.

JinYeJin commented 3 years ago

p.491 "문제를 일으킬 소지가 있는 특정 데이터를 다른 데이터와 혼합해 처리" 부분에 대한 코멘트인데요.

Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift 위 논문의 한국어 정리

이 논문에 기반해서 나온 얘기인 것 같은데 맥락은 이해가 가지만 여전히 "문제를 일으킬 소지가 있는 특정 데이터를 다른 데이터와 혼합해 처리"라는 표현은 잘 모르겠네요.