본문 바로가기

Machine, Deep Learning/Machine, Deep Learning 용어 설명

순환신경망(Recurrent Neural Networks)

반응형
SMALL

음악, 동영상, 에세이, 시, 소스 코드, 주가차트.. 이 것들의 공통점은 바로 시퀀스인 점입니다. 음악은 음계들의 시퀀스, 동영상은 이미지의 시퀀스, 에세이는 단어들의 시퀀스로 볼 수 있습니다.

시퀀스는 가변적이죠. 마치 소설이 한 페이지짜리도 있고 열권짜리 장편소서도 있는거 처럼. 기존의 뉴럴 네트워크 알고리즘은 이미지처럼 고정된 크기의 입력을 다루는 데는 탁월하지만, 가변적인 크기의 데이터를 모델링하기에는 적합하지 않습니다.


RNN 이해하기

RNN(Recurrent Neural Network, 순환신경망)은 시퀀스 데이터를 모델링 하기 위해 등장했습니다. RNN이 기존의 뉴럴 네트워크와 다른 점은 '기억'(Hidden state)을 갖고 있다는 점입니다. 네트워크의 기억은 지금까지의 입력 데이터를 요약한 정보라고 볼 수 있습니다.

 

따라서 새로운 입력이 들어올 때 네트워크는 자신의 기억을 조금씩 수정합니다. 결국 입력을 모두 처리하고 난 후 네트워크에게 남겨진 기억은 시퀀스 전체를 요약하는 정보가 됩니다.

 

이 글을 읽을 때도 우리는 이전까지의 단어에 대한 기억을 바탕으로 새로운 단어를 이해합니다. 이 과정은 새로운 단어마다 계속해서 반복되기 때문에 RNN에는 Recurrent, 즉 순환적이라는 이름이 붙습니다. 그렇기에 아무리 긴 시퀀스라도 처리할 수 있습니다.

위 다이어그램에서 빨간색은 입력, 노란색은 기억, 파란색은 출력을 나타냅니다. 첫 번째 입력이 들어오면 첫 번째 기억이 만들어 집니다. 두번째 입력이 들어오면 기존의 기억과 새로운 입력을 참고하여 새 기억을 만듭니다. 입력의 길이만큼 이 과정을 얼마든지 반복할 수 있습니다. 각각의 기억은 그때까지의 입력을 요약해서 갖고 있는 정보입니다. RNN은 이 요약된 정보를 바탕으로 출력을 만들어 냅니다.


그렇다면 RNN이 무엇을 할 수 있을까요??

 

RNN의 입력과 출력은 네트워크에게 시키고 싶은 것이 무엇이냐에 따라 얼마든지 달라질 수 있습니다.

  1. 고정크기 입력 & 고정크기 출력 : 순환적인 부분이 없기 때문에 RNN이 아닙니다.
  2. 고정크기 입력 & 시퀀스 출력 => 이미지를 입력해서 이미지에 대한 설명을 문장으로 출력하는 이미지 캡션 생성
  3. 시퀀스 입력 & 고정크기 출력 => 문장을 입력해서 긍부정 정도를 출력하는 감성 분석기
  4. 시퀀스 입력 & 시퀀스 출력 => 영어를 한국으로 번역하는 자동 번역기
  5. 동기화된 시퀀스 입력 & 시퀀스 출력 => 문장에서 다음에 나올 단어를 예측하는 언어 모델

RNN으로 이미지 처리

이미지를 처리하는 CNN(Convolutional Neural Network)과 RNN을 결합하여 이미지를 텍스트로 설명해주는 모델을 만드는 것이 가능합니다. 이 모델은 위의 구조들 중 두번째, 고정크기 입력 & 시퀀스 출력에 해당합니다. 이미지라는 고정된 크기의 입력을 받아서 몇 단어로 표현될지 모를 가변적인 길이의 문장을 만들어내기 때문입니다.


 

구글의 번역기와 네이버의 파파고는 RNN을 응용한 모델로 만들어졌습니다. RNN 기반 모델은 기존 통계 기반 모델의 비해 우수한 성능을 낸다고 알려져 있습니다. 이 모델은 시퀀스 입력 & 시퀀스 출력 구조를 갖고 있습니다. 이 구조의 모델을 다른 말로 encoder - decoder 모델이라고 부릅니다.


이상 순환신경망(Recurrent Neural Networks) 였습니다. ^_^

반응형
LIST