rueki

RNN과 LSTM에 대해서 알아보자 본문

DL

RNN과 LSTM에 대해서 알아보자

륵기 2020. 4. 4. 22:54
728x90
반응형

RNN은 순환 신경망으로서, Sequence data에 적합한 모델이다.

흔히 텍스트 데이터와 시계열 데이터를 다룰 때 많이 사용하는 구조이다.

 

RNN이 다른 Network와 다른 점은 hidden state를 가지고 있다는 것이다.

hidden state라 함은, 이전 layer의 정보를 기억할 수 있는 것이라 생각하면 쉽다.

이전 정보를 이어 받아서 기억해서 계속 갖고 다음 계층에 전달하는 방식이다.

 

RNN 구조

왼쪽의 식에서 y를 output h는 hidden state를 의미한다.

output은 h를 전달받아서 출력하는 구조이며,

hidden state 값 h는 이전 hidden state 값 ht-1을 받아서 갱신한다.

 

 

 

 

Activation function으로는 하이퍼볼릭 탄젠트 함수가 사용되었다.

tanh 함수는 sigmoid 함수와 다르게 -1에서 1로 범위가 설정되어 있으며,

함수의 중심값을 0으로 옮겨, sigmoid의 최적화 과정이 느려지는 문제를 해결했으나, 역시 vanishing gradient 문제는 남아있다고 한다.

 

RNN의 문제는 앞에서 언급한 것과 같이 Vanishing gradient가 있다는 것이다.

RNN에 긴 시퀀스를 갖고 있는 데이터를 적용했을 때, 일정 시간이 지나면 기억을 하지 못하게 된다.\

 빨강색은 tanh 함수, 초록색은 미분을 하는 것인데, 미분을 하게 되면 결국

0으로 수렴하는 것을 볼 수가 있다. 

즉, 역전파를 수행하면서, gradient는 계속 감소하고, 점점 사라져버리게 되는 문제를 나타나게 되는 것이다.

이 문제를 해결하고자 나온 것이 LSTM이다.

 

 

 

 

 

LSTM (Long - Short term Memory)

 

 LSTM의 구성은 아래와 같다.

  • forget gate
  • input gate
  • update gate
  • output gate

 

forget gate

필요하지 않은 정보는 잊어버리겠다라는 맥락에서 나온 gate이다.

활성화 함수로 시그모이드를 사용해서, 0일경우에는 cell state가 0이면 아무 영향이 없는 것이고,

1일 경우에는, 미래의 결과에 영향을 주도록 Cell state 를 그대로 보내도록 유지한다.

 

input gate

현재의 정보를 이용할 지 말지를 정하는 gate이다.

이전 hidden state와 현재의 입력을 받아서 시그모이드를 취하고,

별개로 같은 입력을 tanh를 취해주어 hadamard product를 연산한 값이 input gate가 내보내는 값이 된다.

여기서 hadamard product는 같은 크기의 두 행렬의 각 성분을 곱하는 것이다.

 

update gate

과거의 cell state를 새로운 cell state로 업데이트 하는 과정이다.

input gate * current state * forget * previous state가 된다.

 

Output gate

출력값으로 무엇을 내보낼지 결정하는 gate이다.

cell state를 tanh를 hadamard product 한 값을 결과 h 로 내보낸다.


참고

https://ratsgo.github.io/

wegonnamakeit.tistory.com

728x90
반응형

'DL' 카테고리의 다른 글

딥러닝 Optimization 함수 정리  (0) 2020.08.26
Batch Normalization  (0) 2020.07.05
Adam Optimizer (adaptive moment estimation)  (0) 2020.07.05
2. Activation Function  (0) 2020.02.18
1. Forward Propagation  (0) 2020.02.18
Comments