1. RNN의 등장 배경
가. 시계열 데이터
RNN(Recurrent Neural Network)은 시간에 따라 변화하는 데이터를 다루기 위해 등장했습니다. 기존의 신경망(DNN)은 독립적인 데이터를 처리하기에 적합하지만, 시계열 데이터와 같이 순서가 중요하고 이전 정보가 현재의 예측에 영향을 미치는 경우에는 효과적이지 않습니다. 예를 들어, 주가 예측, 음성 인식, 언어 모델링과 같은 분야에서 이전 정보가 현재 정보에 영향을 줍니다. RNN은 바로 이러한 문제를 해결하기 위해 개발되었습니다.
나. DNN 복습
DNN(Deep Neural Network)은 입력 데이터 간 독립성을 전제로 하며 데이터 간 상호작용이 없다고 가정합니다. 이로 인해 DNN은 데이터 간 시계열적 또는 순서적 연관성을 무시하게 됩니다. 반면 RNN은 시계열 데이터의 시간적 특성을 고려하여 이전 데이터의 정보를 현재 데이터에 연결하는 방식으로 작동합니다.
2. RNN의 구조
RNN의 핵심은 이전 시점의 정보를 현재 시점의 정보에 지속적으로 전달하는 구조입니다. RNN의 기본 구조를 수학적으로 표현하면 다음과 같습니다.
RNN은 각 시점에서 입력 와 이전 시점의 상태 을 결합하여 새로운 상태를 계산합니다. 이러한 순환적 구조는 과거 정보를 지속적으로 기억하고 활용할 수 있게 합니다.
3. RNN의 주요 Task
RNN은 입력과 출력 데이터의 시점에 따라 다음과 같은 여러 가지 작업(Task)에 활용됩니다.
- Many to One: 여러 시점의 입력 데이터를 받아 최종 시점에서 하나의 출력 데이터를 생성합니다. 예를 들어, 감정 분석, 문장 분류 등이 이에 해당합니다.
- One to Many: 하나의 입력 데이터를 기반으로 여러 시점의 출력을 생성합니다. 대표적인 예시로 이미지 캡셔닝이 있습니다.
- Many to Many (동기적): 입력과 출력 데이터의 길이가 같으며, 각 입력마다 즉각적인 출력을 생성하는 형태입니다. 대표적으로 POS 태깅(품사 태깅)이 있습니다.
- Many to Many (비동기적): 입력 데이터가 모두 처리된 후 별도의 출력 데이터를 생성하는 형태로, 입력과 출력 길이가 다를 수 있습니다. 대표적인 예시로는 기계 번역(seq2seq)과 같은 작업이 있습니다.
4. 순환신경망(RNN) 학습
가. Forward Propagation (순전파)
각 시점의 입력 데이터를 네트워크에 통과시키면서 은닉 상태 와 출력값 를 계산합니다.
이후 각 시점의 출력값과 실제 값(ground truth) 간의 손실(loss)을 계산합니다. 일반적으로 교차 엔트로피(cross-entropy) 또는 평균제곱오차(MSE)를 사용합니다.
나. Backward Propagation Through Time (BPTT, 시간적 역전파)
손실 함수 $L$을 기준으로 기울기를 계산하여 네트워크의 가중치를 업데이트하는 과정입니다. 시간적 역전파를 수식으로 나타내면 다음과 같습니다.
각 시점 의 기울기를 연쇄법칙(chain rule)을 이용하여 계산하며, 이전 시점으로 계속 거슬러 올라갑니다.
라. Parameter Update (파라미터 업데이트)
기울기를 이용하여 가중치 파라미터 $W$를 업데이트합니다.
여기서 는 학습률(learning rate)로, 경사 하강법(Gradient Descent), Adam, RMSProp 등의 최적화 알고리즘을 활용하여 가중치를 업데이트합니다.
5. 순환신경망(RNN)의 한계점
RNN은 시간적 연관성을 효과적으로 학습할 수 있지만, 긴 시간 동안의 정보를 유지하는 데는 한계가 있습니다. 과거 정보의 영향력이 감소하는 현상은 다음과 같은 수식으로 설명할 수 있습니다.
여기서 각 미분값은 tanh 활성화 함수의 미분으로 나타낼 수 있습니다.
이는 장기 의존성 문제(Long-term Dependency)라고 불리며, 시간이 길어질수록 과거의 정보가 현재 상태에 미치는 영향력이 점점 약해지는 문제가 발생합니다. 이를 'Vanishing Gradient Problem(기울기 소실 문제)'이라 부릅니다. 이 문제를 극복하기 위해 등장한 것이 LSTM(Long Short-Term Memory) 및 GRU(Gated Recurrent Unit) 등과 같은 개량된 RNN 모델입니다.
https://chickencat-jjanga.tistory.com/
딥러닝 수업정리) 12_Recurrent neural network(RNN)
CPU, GPU → 조금만 파괴시켜도 전체가 작동안함neural net, 뇌 → 일부분이 파괴되어도 전체가 망가지는건 아님. accuracy가 낮아질 뿐💡근데 뇌를 살펴보면 자기를 향하는 링크가 있음. RNN은 뇌와 마
chickencat-jjanga.tistory.com
https://www.youtube.com/watch?v=006BjyZicCo&list=PLpIPLT0Pf7IoTxTCi2MEQ94MZnHaxrP0j&index=12