
순환 신경망으로, 시퀀스 데이터(시계열)를 처리하기 위해 설계된 인공 신경망입니다. RNN은 순차적으로 입력을 처리하고, 이전 입력의 정보를 기억하여 현재 입력을 처리할 때 활용할 수 있습니다. 이 특성 때문에 시계열 데이터, 자연어 처리, 비디오 분석 등에서 매우 유용합니다.
기본 RNN에서는 입력 시퀀스 가 주어졌을 때, 각 시점 에서 이전의 숨겨진 상태 와 현재 입력 을 결합하여 새로운 숨겨진 상태 을 계산합니다.
RNN은 기울기 소실(Vanishing Gradient) 또는 기울기 폭발(Exploding Gradient) 문제를 겪습니다. 이 문제는 주로 역전파(Backpropagation)를 통해 가중치를 업데이트할 때 발생합니다. 긴 시퀀스를 처리할 때, 초기 시점의 정보가 시퀀스가 길어지면서 점점 희석되어 영향력을 잃게 되거나, 반대로 기울기가 지나치게 커져서 계산이 불안정해지는 문제가 발생할 수 있습니다.
LSTM(Long Short-Term Memory) 및 GRU(Gated Recurrent Unit)는 RNN의 이 문제를 해결하기 위해 개발된 방법입니다.
LSTM은 게이트 메커니즘(input gate, forget gate, output gate)을 사용해 중요한 정보는 기억하고, 불필요한 정보는 잊도록 조정합니다. 이로 인해 장기 종속성(long-term dependency)을 더 잘 처리할 수 있습니다.
GRU는 LSTM의 단순화된 버전으로, 비슷한 기능을 제공하지만 더 적은 파라미터를 사용해 계산 효율성을 높였습니다.
RNN은 기본적으로 고정된 입력 및 출력 시퀀스 길이를 요구하지만, 많은 자연어 처리나 음성 인식 문제에서는 입력과 출력의 시퀀스 길이가 서로 다를 수 있습니다. 예를 들어, 기계 번역에서는 한 언어에서 다른 언어로 번역할 때 단어의 수가 달라지기 때문에 Many-to-Many 구조에서 이러한 유연성이 필요합니다.
Seq2Seq (Sequence-to-Sequence) 모델은 이러한 문제를 해결하기 위해 고안되었습니다. Seq2Seq 모델은 인코더(Encoder)와 디코더(Decoder)로 구성되어 있습니다.
인코더는 입력 시퀀스를 고정된 길이의 벡터로 인코딩하고,
디코더는 이 벡터를 기반으로 출력 시퀀스를 생성합니다. 이를 통해 입력과 출력의 길이가 다르더라도 유연하게 대응할 수 있습니다.
비록 LSTM과 GRU가 장기 종속성을 처리하는 데 능하지만, 매우 긴 시퀀스에서는 여전히 문제가 발생할 수 있습니다. 특정 중요한 정보가 시퀀스 내의 멀리 떨어진 위치에 있을 때, LSTM/GRU도 그 정보를 충분히 반영하기 어려울 수 있습니다.
Attention 메커니즘은 이러한 문제를 해결하기 위해 도입되었습니다. Attention은 모든 입력 단어에 대한 가중치를 학습하여, 모델이 필요한 정보에 더 집중할 수 있도록 합니다. 이는 시퀀스의 어느 부분에 중요 정보가 있든지 간에 그 부분을 보다 직접적으로 처리할 수 있게 합니다.
예를 들어, Transformer 모델은 Attention 메커니즘을 중심으로 설계된 모델로, RNN 구조를 아예 사용하지 않고도 더 긴 시퀀스를 효과적으로 처리할 수 있습니다.
Issue 1: 기울기 소실/폭발 → LSTM/GRU가 장기 종속성을 잘 처리할 수 있게 함.
Issue 2: 입력과 출력 시퀀스 길이의 유연성 부족 → Seq2Seq 모델이 인코더-디코더 구조를 통해 해결.
Issue 3: 매우 긴 시퀀스를 처리할 때의 문제 → Attention 메커니즘이 특정 위치의 정보에 더 집중할 수 있도록 도움.