RNN(4)

Q·2025년 8월 25일

ML engineer

목록 보기
15/18

1. Seq2Seq (Sequence-to-Sequence)

개념

  • 기계 번역과 같이 입력과 출력이 모두 시퀀스인 Task에 쓰이는 대표적 모델.
  • Encoder-Decoder 구조로 이루어짐.
    • Encoder: 입력 문장을 읽어 고정된 길이의 Context Vector로 요약.
    • Decoder: Context Vector를 입력받아 출력 문장(번역 결과)을 순차적으로 생성.
  • 각 모듈은 보통 RNN/LSTM/GRU로 구현됨.

2. Encoder 동작

  • 입력 문장: "They are watching the movie."
  • 토큰 단위 입력: They → are → watching → the → movie
  • 각 시점마다 hidden state 업데이트: ht=f(xt,ht1)h_t = f(x_t, h_{t-1})
  • 최종적으로 Encoder는 Context Vector cc를 출력.
    c=q(h1,h2,,hT)c = q(h_1, h_2, \dots, h_T)
  • 입력 길이가 달라도 Context Vector는 고정 길이.

3. Decoder 동작

  • Context Vector c와 이전 시점의 토큰을 입력받아 번역된 단어를 생성.
    st+1=g(yt,c,st)s_{t+1} = g(y_t, c, s_t)
    P(yt+1y1,,yt,c)P(y_{t+1} \mid y_1, \dots, y_t, c)
  • 학습 시에는 Teacher Forcing 사용
    • Decoder가 이전 시점의 출력 단어 대신, 정답 라벨을 입력받음.
    • 잘못된 예측이 누적되는 것을 방지.
  • 테스트 시에는 라벨이 없으므로, Decoder는 자신이 이전에 출력한 단어를 입력으로 사용.

4. 예시

  • 번역 Task: 영어 → 한국어
  • 입력: "They are watching the movie."
  • Encoder → Context Vector 생성
  • Decoder:
    • t=1: Context Vector + → “그들은”
    • t=2: Context Vector + “그들은” → “영화를”
    • t=3: Context Vector + “영화를” → “보고 있다”
    • t=4: (문장 종료)
  • 이렇게 시점마다 단어를 순차적으로 생성.

5. Seq2Seq의 한계

  • Context Vector가 고정 길이라 긴 문장의 정보 손실 발생.
  • 이후 Attention Mechanism이 도입되어 개선됨. (다음 글에서 다룸 예정)

6. BLEU Score (기계번역 평가 지표)

개념

  • Candidate(모델 번역 결과)와 Reference(사람 번역 결과)를 비교.
  • N-gram PrecisionBrevity Penalty를 결합한 점수.

N-gram Precision

  • 문장을 N-gram 단위로 나누어 Reference와 겹치는 부분 비율 계산.

예시
Reference: "나는 오늘 여자친구와 함께 저녁을 먹었다."
Candidate: "나는 어제 여자친구와 따로 저녁을 먹었다."

  • 1-gram Precision: Candidate 단어 중 Reference에 있는 단어 비율.
    • Candidate 단어: 나는, 어제, 여자친구와, 따로, 저녁을, 먹었다
    • Reference에 존재: 나는, 여자친구와, 저녁을, 먹었다 (4개)
    • 총 단어 6개 → Precision = 4/6 = 2/3.

Brevity Penalty

  • 번역 문장이 Reference보다 지나치게 짧으면 불이익 부여.
    BP={1if c>re1r/cif crBP = \begin{cases} 1 & \text{if } c > r \\ e^{1-r/c} & \text{if } c \leq r \end{cases}
  • rr: Reference 길이, cc: Candidate 길이

최종 BLEU 계산

  • 1-gram ~ 4-gram Precision의 기하평균 계산 후 BP와 곱해 점수 산출.
  • 값은 0~1 사이, 보통 %로 환산.
profile
Data Engineer

0개의 댓글