순환 신경망(RNN)은 순차 데이터를 처리하도록 설계된 신경망 아키텍처로, 각 단계에서 갱신되고 이후 입력 처리에 영향을 주기 위해 전달되는 내부 은닉 상태를 유지한다. 피드포워드 네트워크가 이전 입력에 대한 기억 없이 고정된 입력을 고정된 출력에 매핑하는 것과 달리, RNN은 시퀀스의 모든 단계에서 동일한 가중치를 공유하며, 원칙적으로 각각의 새로운 예측에 정보를 제공하기 위해 시퀀스에서 임의로 먼 과거의 정보를 사용할 수 있다.
역사
초기 순환 아키텍처에는 존홉필드의 1982년 홉필드 네트워크(연상 기억 모델)와 1990년 제프리 엘먼이 제안한 단순 순환 네트워크가 포함되며,后者는 단어 흐름에서 문법 구조를 명시적인 규칙 없이 학습할 수 있음을 보여주었다. 1990년대와 2000년대 내내 RNN은 자연어처리 및 음성인식 분야의 순차 작업에서 기본 아키텍처였다. 그러나 일반 RNN은 긴 시퀀스에서 훈련하기 어려웠는데, 시간에따른역전파를 통해 계산된 기울기가 시퀀스 길이에 따라 지수적으로 소멸하거나 폭발하는 문제가 1991년 제프힌턴에 의해 공식적으로 분석되었기 때문이다. 이 기울기 소멸 및 폭발 문제는 1997년 LSTM 아키텍처와 이후 더 단순한 게이트 순환 유닛(GRU)의 동기를 부여했으며, 둘 다 기울기가 많은 단계에 걸쳐 더 안정적으로 흐르도록 하는 게이팅 메커니즘을 추가했다.
아키텍처 및 훈련
RNN은 시퀀스를 한 요소씩 처리하며, 현재 입력을 이전 단계에서 전달된 은닉 상태와 결합하여 새로운 은닉 상태와 선택적으로 해당 단계의 출력을 생성한다. 훈련은 시간에 따른 역전파(BPTT)를 사용하는데, 이는 시퀀스의 모든 단계에 걸쳐 순환 계산을 펼친 다음 결과적으로 깊어진 네트워크에 일반적인 경사하강법을 적용한다. 이러한 펼침은 RNN의 주요 계산 병목이기도 하다. 각 단계가 이전 단계의 출력에 의존하므로 시퀀스는 본질적으로 병렬화할 수 없으며, 2010년대에 표준이 된 긴 시퀀스와 대규모 데이터 세트에서 RNN 훈련 속도가 느려졌다.
전성기와 쇠퇴
RNN, 특히 스택형 LSTM 변형은 2014년에 도입된 시퀀스투시퀀스 모델과 같은 아키텍처를 통해 실용적인 기계번역 및 음성 시스템의 첫 세대를 구동했다. 이 모델은 입력 시퀀스를 고정된 벡터로 압축하는 인코더 RNN과 그 벡터에서 출력 시퀀스를 생성하는 디코더 RNN을 짝지었다. 2015년경 시퀀스투시퀀스 모델에 추가된 어텐션 메커니즘은 디코더가 단일 압축 벡터에만 의존하는 대신 모든 인코더 상태를 다시 참조할 수 있게 하여 번역 품질을 크게 향상시켰고, 2017년 트랜스포머 아키텍처의 토대를 마련했다. 트랜스포머는 순환을 완전히 버리고 자기 어텐션에 의존하며, 시퀀스를 완전히 병렬로 훈련할 수 있었다. 트랜스포머는 당시 사용 가능한 GPU 하드웨어에서 훨씬 빠르게 훈련하면서 RNN의 성능에 필적하거나 능가했고, 수년 내에 대규모언어모델 및 대부분의 자연어처리 분야에서 지배적인 시퀀스 아키텍처로 RNN을 대체했다.
유산
RNN은 엄격한 메모리 또는 지연 시간 제약이 있는 환경과 일부 시계열 및 제어 응용 분야에서 여전히 사용된다. 또한 고정된 크기의 은닉 상태가 무한히 긴 이력을 요약할 수 있다는 핵심 아이디어는 2020년대 중반 상태공간모델 (예: Mamba)에서 부활했으며, 이 모델은 RNN과 유사한 선형 시간 추론과 트랜스포머에 더 가까운 훈련 효율성을 결합하는 것을 목표로 한다.