번역과 RNN의 한계

단어만 하나씩 바꾸면 번역이 될까?

화면을 누르면 다음 장으로 넘어갑니다

해 보면

이렇게 됩니다

  • 나는
  • 어제
  • 친구를
  • 만났다
↓
  • I
  • yesterday
  • friend
  • met

단어는 다 맞는데 영어 문장이 아닙니다.

이유

언어마다 단어가 놓이는 순서가 다릅니다

  • 나는
  • 어제
  • 친구를
  • 만났다
  • I
  • met
  • a friend
  • yesterday

한국어는 동사가 맨 끝에, 영어는 주어 바로 뒤에 옵니다. 그래서 문장을 끝까지 본 뒤에야 첫 단어 다음에 무엇을 쓸지 정할 수 있습니다.

그래서

번역 모델을 둘로 나눴습니다

인코더
원문을 끝까지 읽는다읽는 쪽
디코더
번역문을 한 단어씩 쓴다쓰는 쪽

읽기를 마친 인코더가 내용을 넘겨주면, 디코더가 그것을 보고 씁니다.

문제

넘겨주는 것이 메모 한 장뿐이었습니다

  • 나는
  • 어제
  • 친구를
  • 만났다
↓
인코더가 넘기는 것크기가 정해진 벡터 하나
↓
  • I
  • met
  • …

벡터는 숫자 여러 개를 한 줄로 묶은 것입니다. 예전 방식인 RNN(순환 신경망)은 원문 전체를 이 벡터 하나에 눌러 담았습니다.

한계

문장이 길어져도 메모지는 그대로입니다

  • 지난주
  • 토요일에
  • 학교
  • 앞
  • 카페에서
  • 오랜만에
  • 고등학교
  • 친구를
  • 만났다

같은 크기에 더 많은 내용을 담아야 하니, 앞쪽 내용과 멀리 떨어진 단어 사이의 관계가 흐려집니다.

다음 편

메모 한 장 대신 원문을 다시 볼 수 있다면?

2편필요한 곳을 다시 본다 4강 목록