순환 신경망 (2)

박경민·2023년 3월 16일
0

[ChatBot Project]

목록 보기
8/11
post-custom-banner

RNN 의 기울기 소실 문제 (Vanishing Gradient)

  • 원 하나하나가 노드 층 전체를 의미한다.
  • 빨간 원 하나마다 비용함수를 계산한다.
  • 엡실론 T를 계산한 후 역전파한다.
  • 계산에 참여한 모든 가중치에 역전파되어야 한다.
  • 여기서 문제가 발생한다.
  • 은닉층에 은닉층을 연결할 때 Wrec 이 사용된다.
  • 작은 수로 곱을 하면 값이 아주 빠르게 감소한다. 0에 근사한 임의값으로 시작하면 곱하면 곱할수록 작아진다. (기울기는 점점 더 작아진다.)
  • 기울기는 가중치 업데이트에 사용되므로 기울기가 작아질수록 업데이트하기가 어려워진다. 업데이트하는데 시간이 오래걸린다.
  • 전체 신경망의 훈련도 제대로 이루어지기 힘들다.

Wrec 이 너무 작으면 기울기 소실 문제, Wrec 이 너무 크면 기울기 폭주 문제가 발생한다.

이러한 문제는 어떻게 해결할까?
1. 기울기 폭주에 관해선

  • 시간 절단 역전파 기법. 일정 시간이 지나면 역전파를 절단한다.
  • 벌칙을 주는 방법.
  • 기울기 최대에 한계를 주는 방법.
  1. 기울기 소실 문제
  • 가중치 초기화
  • 에코 상태 신경망 (깊게 다루지는 않겠다.)
  • LSTM (CNN 구현 시 필수 신경망으로 여겨짐)

On the difficulty of training recurrent neural networks 를 읽어보자.

LSTMs (Long short term memory)

  • 맨 왼쪽 가중치가 오른쪽의 가중치보다 늦게 업데이트.

  • 왼쪽에서 입력값이었던 이전 층들의 출력값을 그대로 가져온다.

  • 전체 신경망이 타격을 입는다.

  • Wrec < 1 이면 소실문제가, > 1이면 폭주문제 발생.

  • LSTM 에서는 Wrec = 1 으로 지정하기도 한다.

  • 순환 신경망의 내부는 다음과 같다.

  • 출력값이 모듈로 들어가 연산, 다음 모듈로 들어가 출력되는 구조.

  • tanh 이 가중치가 적용되는 곳.

  • LSTM 모습은 다음과 같다.

  • Wrec = 1 은 위로 쭉 이어지는 선이다. (두 개의 점별 연산 포함) 메모리 파이프라인이라고도 하고 시간 흐름에 따라 삭제, 추가되기도 한다.

  • 왼, 오른쪽의 모듈은 다음과 같다.

  • C는 메모리셀, h 는 출력(전 모듈의 출력도 있다), Xt 는 인풋이다. 입력값이 3개, 출력이 2개다.

  • 하나의 원은 많은 값이 들어간 벡터이다. / 두 개의 선이 합쳐지는 것을 Concatenate 라 한다. / 하나의 선이 두 개로 나누어지면 Copy 라 한다. / 내부의 원은 점별 연산이라 한다, x 는 밸브이다. / 노란색은 층별 연산(시그모이드)이며, 밸브가 잠기고 풀리는 것을 결정. / tanh 탄젠트에 들어갈 수도 있다.

  • 가장 위로 메모리가 이동하고 밸브에 따라 추가 메모리가 결정되는 것이다.

  • 점별은 벡터이므로 여기에 밸브에 따라 0, 1 을 곱해주는 것이다.

  1. 새로운 값이 들어온다.
  2. 인풋과 이전 모듈 출력 두 가지가 결합되어 밸브를 통과할지 잠글지 결정한다.
  3. 결합된 것은 다시 평행하게 이동하여 층별 연산에서 사용하여 많은 값 중 어떤 값을 보낼지 결정한다.
  4. 이동하는 메모리에서는 망각 밸브가 있다. 그 다음 메모리 밸브가 있다. 여기의 업데이트를 위해 아래에서 온 메모리를 추가할 수도 있다.
  5. 결합된 두 값은 이동하여 메모리 파이프라인 중 어느 부분이 모듈의 출력이 될 지 (전체 또는 어느 정도)를 결정. 이 연산에도 h와 X 입력이 사용된다.

Understanding LSTM Networks

LSTM 실제 활용 사례

  • 리눅스의 코드이다. if 뒤에서만 활성화된다.
  • 추적에 메모리를 사용하는 것.
  • 신경망에 하드코딩은 없고 반복을 통한 학습만 있다.
  • 은닉 상태를 파악한 다음 텍스트에서 중요하게 추적할 대상을 고르는 것.

  • 초록은 활성, 파랑은 비활성 상태를 말한다.
  • 빨간색은 가능성이 매우 높고, 밝을수록 가능성이 없는 예측이다.
  • 은닉상태가 주시하는 것은 URL 일 수 있다. 첫 층 아래는 LSTM 이 예측하는 글자들이다. new 가 나오자 높은 확률로 s 를 잘 예측했다!

Karpathy.github.io
Visualizing and Understanding Recurrent Networks 도 참고하자.

profile
Mathematics, Algorithm, and IDEA for AI research🦖
post-custom-banner

0개의 댓글