brunch

You can make anything
by writing

C.S.Lewis

by 라인하트 Sep 11. 2019

인공지능의 이해 (5/6): 순환 신경망(RNN)

순환 신경망의 개요

   순환 신경망 (RNN, Recurrent Neural Network)은 시계열 데이터와 같이 시간의 흐름에 따라 변화하는 데이터를 학습하기 위한 인공신경망입니다. 따라서, 과거의 출력 데이터를 재귀적으로 참조합니다. 전통적인 신경망들은 입력된 데이터에 대해서만 동작하기 때문에 연속적인 데이터를 처리하기 어렵습니다. '재귀'는 자기 자신을 참조한다는 의미로 현재 결과가 이전 결과와 연관성을 가진다는 의미입니다. 카드회사의 천 번째 고객 데이터와 천일 번째 고객 데이터 간에 연관성은 전혀 없지만, 일별 주식 변동 데이터는 어제의 시세가 시작점이므로 서로 상관관계가 있습니다.  


   순환 신경망의 대표적인 예는 글자나 문장을 완성해주는 알고리즘입니다. 문장 데이터의 경우 앞 뒤 데이터 간의 연관성이 있습니다. 'h, e, l'이 연속된 다음에 나올 글자는 'ㅣ'일 확률이 크고, 그다음에 'o'가 나올 확률이 큽니다. 또, 사용자가 '동해물과'를 입력하면 '백두산이'가 입력될 확률이 높습니다. RNN은 앞 뒤 데이터 간의 연관성이 있는 데이터셋에 사용되는 모델입니다. 또한, 음성인식 및 번역 시스템에도 많이 사용됩니다. 



순환 신경망의 원리

   RNN은 다층 퍼셉트론이고 은닉층을 콘텍스트 층 또는 히스토리 층이라고 합니다. RNN은 입력층, 은닉층, 출력층의 3 단계 구조로 이루어져 있습니다. RNN의 가장 큰 특징은 은닉층이 이전 데이터를 참조하도록 서로 연결되어 있습니다. 즉, 입력값  'xt'는 'ht'라는 결과값을 출력과 동시에 다음 출력값 'ht+1'에 영향을 미칩니다. 





   이전 데이터가 현재 데이터에 영향을 미치는 과정을 수식으로 표현하면 'yt = Whyht'입니다.  RNN은 state 값이라 불리는 ht 값은 시간을 기준으로 현재를 나타내는 상태값입니다. 'ht-1'은 이전 상태값을 나타냅니다. 인공지능은 ht 값을 계산하기 위해서는 'ht-1'의 값을 항상 참조합니다. 즉, yt는 ht 값에 가중치 why를 곱한 값입니다. 

   아래 그림은 RNN 모델을 이해하기 위해 글자를 입력하면 'hello'라는 단어를 자동 완성하는 모델을 가정하였습니다. 여기서는 'h, e, l, o' 4가지 알파벳만 사용하므로 입력층의 1의 위치로 4개의 문자를 구분합니다. (1,0,0,0) 은 'h'이고, (0,1,0,0)은 'e'이고, (0.0.1.0)은 'l'입니다. 출력층의 값들은 얼마나 확신이 있는 지를 나타냅니다. 학습단계에서는 녹색값은 확신이 높고 빨간색은 확신이 낮게 설정되도록 가중치 Why가 조정되어야 합니다.  



      복잡한 문제를 해결하기 위해 RNN의 은닉층도 여러층으로 반복될 때 여러 가지 문제가 발생합니다. 이런 문제점을 해결한 RNN의 대표적인 모델은 장단기 메모리(LSTM, Long Short  Memory Networks)가 있습니다.



RNN의 응용 사례

   RNN은 다양한 분야에 활용됩니다.  Vector to Squence는 첫 번째 타임 스텝에서 하나의 입력만 받아서 시퀀스를 출력하는 네트워크로 이미지를 보고 자막을 다는 Image Captioning에 활용합니다. Squence to Vector는 입력으로 시퀀스를 받아서 하나의 벡터로 출력하는 네트워크로 소비자의 상품평을 보고 긍정인지 부정인지를 판별하는 Sentiment Classification에 활용합니다. Sequence to Sequence는 시퀀스를 입력받아 시퀀스를 출력하는 네트워크로 주식 가격이나 시계열 데이터 예측에 활용합니다. 마지막으로 Delayed Squence to Squence는 자동번역에 활용합니다. 



   이미지에 캡션을 생성하는 인공지능은 콘볼루션 신경망 기술을 활용하여 이미지에서 단어를 추출하고, 순환 신경망을 활용하여 단어를 문장으로 만듭니다. 




참고자료:

   이 글은 송경빈 님의 브런치에 있는 '인공지능 기술/원리의 이해'라는 글을 필자가 공부하면서 각색하였습니다. 원문이 훨씬 더 이해하기 쉽고 자세합니다.  원문은 아래 링크를 참조하시기 바랍니다. 


https://brunch.co.kr/@morningb/3

매거진의 이전글 인공지능의 이해(4/6): 콘볼루션 신경망 (CNN)
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari