관리 메뉴

Douglas' Space

RNN 신경망을 통해 이해하는 딥러닝 본문

Computing Tech. Diary/Artificial Intelligence

RNN 신경망을 통해 이해하는 딥러닝

똘키아빠 2022. 4. 30. 19:12
RNN(Recurrent Neural Net)은 순환신경망이라고 불리웁니다. 순환이라는 특징을 갖고 있어 붙여진 이름입니다. 순차적인 데이터(또는 시계열 데이터)를 학습하기 위해 고안되었습니다. 특정 t라는 시점의 데이터를 학습할 때 그 전 t-1이라는 시점의 출력 값을 합하여 출력을 계산한다고 하여 순환이라는 이름이 붙여 졌습니다. 아래 그림에서 처럼 X2를 입력 받는 노드가 그 전의 노드의 출력 값 h1을 입력받아 출력을 계산합니다. 다른 노드들도 모두 이와 같이 순환적으로 구성되어 있습니다. 
순차적 데이터라는 의미는  t라는 시점 또는 순서에 입력되는 데이터와 그 전 또는 그 후에 입력되는 데이터가 상호 시간적 또는 순서적 관계를 갖고 있다는 의미입니다.  예를 들어 시간적인 데이터의 분포를 나타내는 주식값의 변화, 단어를 구성하는 문자들의 순서,  또는 단어로 구성된 문장에서 단어의 순서 등이 대표적인 순차적 데이터의 특성을 갖습니다.
따라서 주식 추이값을 이용하여 현재 시점에서의 주가를 예측하거나, 검색 엔진에서 특정 단어를 입력하면 다음에 오는 단어들을 예측하여 추천을 한다거나 하는 응용 분야에 많이 사용되었습니다. Vanilla RNN(일반적으로 특정 신경망종류의 가장 기본적인 simple 모델을 Vanilla모델이라함) 보다 개선된 RNN인 LSTM(Long Short Term Memory), GRU(Gated Recurrent Unit) 등을 많이 사용합니다. 특히 GRU는 2014년도 뉴욕대학교의 한국 출신의 조경현교수가 제안한 모델로 유명합니다.
특히 RNN은 위처럼 입출력의 형태에 따라 4가지로 분류하는데, 각 형태에 따라 대표적인 응용분야가 존재합니다. one-to-many의 대표적인 응용은 image captioning이라는 것으로 사진을 입력으로 이 사진을 설명하거나 제목을 부여하는 형태의 응용입니다. many-to-one의 대표적인 응용은  sentiment analysis로서 특정 문장으로 부터 감정을 분류하는 것입니다. many-to-many(입력과의 시간지연)는 기계번역처럼 특정 언어의 문장을 다른 언어의 문장으로 변환하는 응용에 사용됩니다. 마지막 many-to-many(입력과 동시 출력)는 video classification으로 비디오의 특정 프레임을 해석하여 프레임을 분류하는 응용분야에 이용됩니다. 
물론 이러한 응용은 단순히 RNN만 사용하는 것이 아니라 전에 설명한 CNN도 같이 사용하게 됩니다. 예를 들어 이미지를 분류하고 이해하기 위해서는 CNN모델이 활용되기 때문입니다. 다시 말해 특정 문제를 해결하기 위해 다양한 ANN 모델을 혼합하여 원하는 문제를 해결할 수 있습니다.
Comments