본문 바로가기

Deep Learning/Terminology

Recurrent Neural Network (RNN)란 무엇인가?

ANN, DNN, CNN, RNN, LSTM, GRU 등 무수히 많은 인공지능 알고리즘들이 존재한다.

그중에서 오늘은 RNN에 개념에 대해 Posting 해보고자 한다.

RNN이란 시계열 및 자연어처리 (Natural Language Processing) 문제해결을 주된 목적으로
개발도어진 알고리즘으로서 Feedforward Network와 달리 이전 시점의 내부상태를
다음 시점으로 전달해 주는 구조를 통해 시간의 흐름에 따른 데이터특성을 반영하여 학습을
진행할 수 있다는 것이 가장 큰 특징이다. 아래의 그림과 같은 기본구조를 기반하여, 현재
실전 문제해결에서 보편적으로 사용되고 있는 LSTM 및 GRU등의 알고리즘들이 탄생하게 된다. 

[그림] RNN의 구조 예시

이 RNN을 기반한 다양한 알고리즘들은 CNN기반의 영상예측 알고리즘들과 달리 딥러닝학습을 진행시,
쉽게 수렴하지 않음(복잡한 문제공간에 대하여)을 또 다른 특징으로 가진다. 시계열 흐름을 더 잘 반영
하려다보니 신경망의 깊이를 깊게 만들게 되고 이에따라 Gradient 소실문제가 뒤따르게 된다. 

그렇다면 인공지능 연구자들은 어떻게 이 문제를 해결하였을까?

추후 포스팅에서 이 문제를 최소화한 알고리즘들인
LSTM(Long Short Term Memory)와 GRU(Gated Recurrent Unit)를 살펴 보도록 하자.