MATH & ML

RNN(Recurrent Neural Network) 본문

Machine Learning

RNN(Recurrent Neural Network)

BlogYong 2018. 4. 23. 17:36

Recurrent Neural Network(RNN)

먼저 recurrent라는 단어의 뜻은 '되풀이이되는, 반복되는'이다. 즉 다시말해 기존 뉴럴네트워크에서 다음스텝으로 넘어갈때의 출력결과에 이전 계산결과에 영향을 받는=되풀이 되도록 만든  neural network이다. 따라서 RNN은 연속적인 데이터(sequential Data)를 처리하는데 적합하다. 특히 NLP라 불리는 자연어처리 문제에 아주 뛰어난 성능을 보인다고 알려져있다. 실제 구글 번역기도 이 RNN을 이용한다.

Rnn의 구조는 보통 하나의 네트워크를 여러개로 복사된 형태로 표시하는데데, 즉 자신의 결과가 자기자신에 다시 영향을 주는것을 펼쳐서 나타낸다. 이러한 RNN에서 weight를 업데이트하기 위해서는 기존의 Back Propagation방법을 시간에 따라 진행하는 BPTT(Back Propagation Through Time)를 이용한다. 

이러한 방식으로 계산하다보면 일반적으로 RNN에서는 Vanishing Gradient문제가 발생한다. 편미분 과정에서 계속 1보다 작은 수들을 곱하다보면 급수적으로 0에 가까워 질정도로 작아져서 Gradient가 vanish되어 weight가 업데이트가 안되는 문제를 말한다. 따라서 이를 개선하기위해 나타난 아주아주 인기많은 네트워크로 LSTM(Long Short Term Memory network))가 RNN의 특별한 한 종류로서 등장하였다. 

LSTM은 기존의 RNN의 hidden state의 계산방식을 크게 3가지의 gate로 나누어 계산하였다. fotget gate, input gate, outputgate  총 3가지의 gate를 이용하여 state의 계산을 하였다.

이 LSTM을 좀 더 변형한 형태로 유명한것이 GRU(Gated Recurrent Unit)이다. GRU는 LSTM의 파라메터 갯수를 줄인 단순화 버전이라고 할 수 있다,(f, 1-f)


이 외에도 여러가지 변형형태가 존재한다.


참고자료 - 3개 사이트 참고

https://brunch.co.kr/@chris-song/9

https://www.slideshare.net/ssuser5ac863/rnn-76606859

https://github.com/oxford-cs-deepnlp-2017/lectures/blob/master/Lecture%204%20-%20Language%20Modelling%20and%20RNNs%20Part%202.pdf

'Machine Learning' 카테고리의 다른 글

capsnet(캡스넷)  (0) 2018.04.25
sequence to sequence(seq2seq)  (0) 2018.04.23
gradient descent  (0) 2018.04.13
머신러닝 용어 몇 가지 정리(GAN, CNN)  (0) 2018.03.29
MLE MAP Prior Posterior  (0) 2018.03.28
Comments