본문 바로가기

BLOG/딥러닝

RNN의 한계

【5】RNN 기본 다지기 / 실무에서 활용되는 LSTM 이해하기

RNN의 한계

 

RNN의 구조를 다시 한번 보자. RNN은 계속해서 같은 셀의 반복으로 구성된다. 반복 횟수는 입력의 길이(sequence)에 따라 달라지는데 입력의 길이가 길면 그만큼 시간 축이 길게 펼쳐지므로 신경망이 깊어진다. 즉, 신경망의 깊이는 입력에 의존적이라고 할 수 있다. 

 

 

또한 RNN의 동작은 아래의 수식과 같이 표현할 수 있었는데  마치 양파처럼 이전 타임스텝들이 가중치로 겹겹이 쌓인 구조를 띄었다. 이렇게 RNN은 이전 타임스텝의 모든 입력을 참조하는 특징을 가지는데 다시 말하면 서로 다른 층들이 매개변수를 공유한다고 할 수 있다. 

 


RNN의 이러한 특징으로 인해 훈련에 큰 어려움이 발생한다. 입력 순차열이 길다면 상황은 더욱 안좋아진다. 앞서 설명했듯이 입력 길이가 긴 만큼 신경망은 깊어지고 기억해야할 이전 타임스텝의 데이터 양 또한 많아지게 된다. 이전 데이터가 하나도 빠짐없이 같은 비율로 기억이 되면 좋겠지만 우리의 바람처럼 되지 않는 것이 문제이다. 앞에서 언급했듯이 RNN은 마치 양파 구조처럼 이전 층을 참조한다. 만약 기울기(gradient)가 0.5라면 이전 셀의 기울기는 0.5*0.5이며 그 전 셀은 0.5*0.5*0.5가 되고 … 맨 앞쪽의 셀은 0.5t가 된다. 1보다 작은 수가 계속 곱해지므로 결국 기울기는 0에 가까워진다. 이는 앞쪽 데이터에 대한 기억이 희미해 지는 것을 뜻한다. 반대로 기울기가 1보다 크면 앞쪽으로 갈수록 기울기가 점점 커질 것이다. 이 두가지 경우를 각각 기울기 소실(vanishing gradient), 기울기 폭발(exploding gradient) 이라고 하며 RNN의 학습이 잘 되지 않게 만드는 주범이다.

 

 

 

 


작성자 홍다혜 ghdek11@gmail.com / 이원재 wonway333@gmail.com