RNN - Recurrent Neural Networks
개인적으로 공부하기 위해 블로그나 논문을 찾아보면서 정리한 글입니다. 내용에 이상이 있거나 저작권상 문제가 있을 경우 댓글 남겨 주세요.
반면에 RNN은 은닉층에서 연산한 결과를 출력층과 은닉층 두 곳에 보내는 구조를 띄고 있습니다. 은닉층으로 보내진 결과값은 다음 시점의 입력 값 가중치를 계산하는 데 사용되며, 이렇게 계산된 값은 또다시 출력층, 그리고 다음 시점의 은닉층으로 전송됩니다. 이로써 먼저 입력된 데이터 일지라도 무시되지 않고 다음 입력 값에 영향을 미치는, 즉 시간의 순서를 고려하는 것이 가능 해졌습니다.
RNN
RNN(Recurrent Neural Networks)는
입력과 출력을 시퀀스(배열) 단위로 처리할 수 있는 인공
신경망입니다. 입력 값의 길이가 고정되어 있는 기존의 인공 신경망과는 달리 다양한 길이의 입력 시퀀스를
처리할 수 있어, RNN은 문장이나 주식 등의 배열(시계열) 데이터 처리에 쓰이는 대표적인 인공 신경망 모델로 자리매김하였습니다.
과거 신경망과 비교
이전의 인공 신경망은 피드 포워드 신경망(Feed Forward
Neural Network)이라 하여, 값이 입력층에서 은닉층까지 순서대로 연산이
진행되어 출력층 방향으로 나가는 형태를 띄고 있습니다. 이 과정에서 데이터는 노드를 단 한 번만 지나가게
되므로, 이는 시간의 순서를 무시하고 주어진 데이터로만 독립적으로 학습하는 것을 의미합니다.
반면에 RNN은 은닉층에서 연산한 결과를 출력층과 은닉층 두 곳에 보내는 구조를 띄고 있습니다. 은닉층으로 보내진 결과값은 다음 시점의 입력 값 가중치를 계산하는 데 사용되며, 이렇게 계산된 값은 또다시 출력층, 그리고 다음 시점의 은닉층으로 전송됩니다. 이로써 먼저 입력된 데이터 일지라도 무시되지 않고 다음 입력 값에 영향을 미치는, 즉 시간의 순서를 고려하는 것이 가능 해졌습니다.
![]() |
| 그림1 - RNN의 도식 |
단점
RNN은 시퀀스 데이터 처리에 탁월한 성능을 보이지만, 이에 반해 명확한 한계도 가지고 있습니다. RNN은 짧은 시퀀스
데이터에선 효과를 보이나, 시퀀스가 길어질수록 데이터의 정확한 예측이 어려워집니다. 예측하고자 하는 데이터와 이를 참조하는 데이터의 시점이 가까울 경우엔 문제가 없으나, 이 차이가 벌어질수록 모델의 정확도가 떨어지는 것입니다.
![]() |
| 그림 2 - 장기 의존성 문제(the problem of Long-Term Dependencies) |
예를 들자면, “나는 캐모마일 허브 차를 좋아해서 카페에
갔는데, 갑자기 업무 전화가 와서 차를 시킬 수가 없었다…(중략)… 전화를 마치고 나서야 { }를 시킬 수 있었다.” 라는 문장에서 괄호 안의 단어(캐모마일 허브 차)를 예측한다고 할 때, 글의 길이가 길어질수록 엉뚱한 예측을 할 가능성이
높습니다.
맨 앞에서 언급된 캐모마일 허브 차의 가중치가 시점이 지날수록 더욱 옅어져, 예측하고자 하는 시점에는 영향력을 발휘하지 못할 정도로 그 수치가 작아졌기 때문입니다.
이렇게 발생한 문제를 장기 의존성 문제(the problem of Long-Term Dependencies)라고 합니다.
맨 앞에서 언급된 캐모마일 허브 차의 가중치가 시점이 지날수록 더욱 옅어져, 예측하고자 하는 시점에는 영향력을 발휘하지 못할 정도로 그 수치가 작아졌기 때문입니다.
이렇게 발생한 문제를 장기 의존성 문제(the problem of Long-Term Dependencies)라고 합니다.
RNN의 장기 의존성 문제를 해결하기 위해 모델을 개선하려는 여러
노력들이 있었는데, 그 결과로 LSTM(Long Short Term Memory networks)가 등장합니다.
출처
colah’s blog, 2015년 8월 27일, http://colah.github.io/posts/2015-08-Understanding-LSTMs/
wikidocs, 2019년 9월
22일, https://wikidocs.net/48558
AIdev,
2018년 7월 11일, https://m.blog.naver.com/PostView.nhn?
Team AI
Korea, 2015년 12월 28일, http://aikorea.org/blog/rnn-tutorial-4/
chris송호연, 2016년 11월 8일, https://brunch.co.kr/@chris-song/9
Wikipedia,
2019년 10월 20일, https://en.wikipedia.org/wiki/Recurrent_neural_network
ratsgo,
2017년 3월 9일, https://ratsgo.github.io/natural%20language%20processing/2017/03/09/rnnlstm/


댓글
댓글 쓰기