✍️ 3주차 복습

김수진·2025년 11월 23일

RNN

RNN 셀(cell)은 이전 시점의 은닉 상태(hidden state)를 현재 시점의 입력과 함께 사용하여 새로운 은닉 상태를 계산한다.

그 구조를 시간축으로 펼치면(unfold) 각 시점별로 동일한 셀을 반복해서 사용하는 형태가 된다.
왼쪽에 있는 그림을 보면, 동그라미 안에 S는 state(은닉 상태)이다.
그런데, 화살표가 자기 자신으로 들어오고 있다.
이것은 "이전 상태가 다시 자기 자신에게 입력된다." 는 것을 의미한다.
이로써 RNN은 순서를 더 잘 기억할 수 있다.


RNN은

ht=tanh(Wxxt+Whht1+b)h_t = \tanh(W_x x_t + W_h h_{t-1} + b)

로 계산된다.

  • x_t : t 시점의 입력
  • h_{t-1} : 이전 시점의 은닉 상태
  • h_t : 현재 시점의 새로운 은닉 상태
  • W_x : 입력을 hidden state로 변환하는 가중치 행렬
  • W_h : 이전 hidden state를 다음 시점으로 전달하는 가중치 행렬
  • b : 편향(bias)
  • tanh : 비선형 활성화 함수

수식에서도 볼 수 있듯이, 이전 시점의 은닉상태를 항상 현재 시점의 은닉 상태에 반영한다.
이는 즉, RNN은 이전 시점의 hidden state를 다음 시점 계산에 사용하도록 구조화되어 있다는 것을 뜻한다.

RNN 구조

RNN은 다양한 형태의 입출력 구조에 적용된다.

  • one-to-many : 하나의 입력 → 여러 출력
  • many-to-one : 여러 입력 → 하나의 출력
  • many-to-many : 여러 입력 → 여러 출력

RNN 문제점

  1. 장기 의존성(Long-Term Dependency) 문제
    RNN은 기본적으로 짧은 범위의 의존성은 잘 학습하지만, 긴 거리의 의존성은 거의 학습하지 못한다.

  2. 기울기 소실(Gradient Vanishing)
    RNN 학습에서 가장 치명적인 문제는 바로 기울기 소실이다.
    RNN의 반복 구조는 같은 가중치 행렬을 계속 곱해 나가게 된다.
    그런데, tanh처럼 미분값이 1보다 작은 함수가 여러 번 곱해지면 기울기는 지수적으로 줄어든다.
    그 결과, 앞 시점으로 갈수록 기울기가 0에 가까워지고, 모델은 사실상 초반 단어에 대한 오류 신호를 받을 수 없게 된다.

  3. 병렬 처리 및 계산 효율 문제
    RNN 구조는 각 시점이 이전 시점의 은닉 상태에 의존하므로 병렬 처리가 어렵다. 따라서 대규모 시퀀스나 긴 문장 처리 시 계산 속도 및 자원 효율이 떨어질 수 있다.

LSTM

LSTM은 기본적으로 Recurrent Neural Network(RNN)의 장기 의존성(long-term dependency) 문제를 해결하기 위해 고안된 구조다.

RNN 셀 내부에는 tanh 하나만 존재한다.

LSTM 셀 내부는 복잡하고 정교하다. 사진에서 볼 수 있는 것 같이 LSTM은 RNN과 달리, 안에 여러 개의 연산 모듈이 들어있다.

셀을 확대한 사진이다.

Forget Gate

어떤 이전 정보를 버릴지 결정

  • σ(시그모이드) → 0~1 출력을 가짐

  • 0이면 완전 삭제, 1이면 완전 유지

Input Gate

새로운 정보 중 어떤 것을 기억할지 결정

Candidate Memory (tanh)

입력을 tanh로 변환한 새로운 기억 후보

Cell State

Cell state는 직선 경로로 이어져 있고,
이 경로를 통해 기억이 장기적으로 흐를 수 있는 구조가 만들어진다.

ct=ftct1+itgtc_t = f_t \cdot c_{t-1} + i_t \cdot g_t

Output Gate

어떤 정보를 hₜ로 보낼지 결정

  • hₜ = oₜ * tanh(cₜ)

0개의 댓글