(RNN에서 넘어옴)
개요
Feed Forward Neural Network와는 다르게, 은닉층의 출력 값을 출력층으로 보내는 것 뿐만 아니라, 내부적으로 다시 다른 은닉층으로 보내는 신경망을 말한다. RNN은 순차적인 데이터 혹은 시간 의존성이 있는 데이터를 다룰 수 있어서, 자연어 처리, 음성 인식, 시계열 예측등에 널리 사용된다.

RNN에서 Activation function을 통해서 결과를 도출하는 노드를 Cell이라고 하며, 메모리와 같은 역활을 수행하기 때문에 종종 Memory cell이라고 표현하기도 한다. 이는 전통적인 Feed forward neural network에서 각각의 노드들을 뉴런이라고 불렀던것과는 다르게, 각 노드들을 은닉층이라고 부른다. 이 은닉층들은 이전 단계의 출력을 현재 단계의 입력에 포함시키기 때문에, 데이터의 시간적 관계나 문맥을 학습할 수 있게 한다.
RNN는 그러나 Vanishing Gradient와 Exploding Gradient문제에서 자유롭지 않다. 이런 문제를 해결하기 위해서 Long Short-Term Memory(LSTM)같은 다양한 방식의 RNN아키텍쳐가 개발되었다.