번역과 RNN의 한계
단어만 하나씩 바꾸면 번역이 될까?
화면을 누르면 다음 장으로 넘어갑니다
해 보면
이렇게 됩니다
- 나는
- 어제
- 친구를
- 만났다
↓
- I
- yesterday
- friend
- met
단어는 다 맞는데 영어 문장이 아닙니다.
이유
언어마다 단어가 놓이는 순서가 다릅니다
- 나는
- 어제
- 친구를
- 만났다
- I
- met
- a friend
- yesterday
한국어는 동사가 맨 끝에, 영어는 주어 바로 뒤에 옵니다. 그래서 문장을 끝까지 본 뒤에야 첫 단어 다음에 무엇을 쓸지 정할 수 있습니다.
그래서
번역 모델을 둘로 나눴습니다
- 인코더
- 원문을 끝까지 읽는다읽는 쪽
- 디코더
- 번역문을 한 단어씩 쓴다쓰는 쪽
읽기를 마친 인코더가 내용을 넘겨주면, 디코더가 그것을 보고 씁니다.
문제
넘겨주는 것이 메모 한 장뿐이었습니다
- 나는
- 어제
- 친구를
- 만났다
↓
인코더가 넘기는 것크기가 정해진 벡터 하나
↓
- I
- met
- …
벡터는 숫자 여러 개를 한 줄로 묶은 것입니다. 예전 방식인 RNN(순환 신경망)은 원문 전체를 이 벡터 하나에 눌러 담았습니다.
한계
문장이 길어져도 메모지는 그대로입니다
- 지난주
- 토요일에
- 학교
- 앞
- 카페에서
- 오랜만에
- 고등학교
- 친구를
- 만났다
같은 크기에 더 많은 내용을 담아야 하니, 앞쪽 내용과 멀리 떨어진 단어 사이의 관계가 흐려집니다.
다음 편