이 레슨과 관련된 학습 키워드
인공지능(AI) — 기계가 생각하는 법 → 딥러닝(Deep Learning) — 인공 신경망의 세계 → 순환 신경망 및 시퀀스 모델 — 순서가 있는 데이터 다루기 → RNN 기초
시퀀스-투-시퀀스 작업을 위한 Bahdanau 어텐션을 가진 인코더-디코더 아키텍처를 구축합니다.
번역이라는 과제를 한번 생각해 봅시다.
한국어 "나는 학생이다"를 영어로 바꾸면 "아이 앰 어 스튜던트"가 됩니다.
입력은 세 토큰인데 출력은 네 토큰이에요.
이처럼 입력과 출력의 길이가 다른 것이 핵심 문제입니다.
왼쪽 그림을 보시면, 기존 모델들이 왜 이 문제를 못 푸는지 정리했습니다.
엠엘피는 고정 크기 입력과 고정 크기 출력만 처리할 수 있어요.
세 단어 입력으로 설계하면 다섯 단어 문장은 아예 처리가 안 됩니다.
씨엔엔도 필터 크기가 고정이라 가변 길이 시퀀스 생성이 어렵습니다.
알엔엔은 가변 길이 입력을 처리할 수 있다는 큰 장점이 있어요.
하지만 출력도 가변 길이여야 한다는 문제가 남습니다.
그래서 등장한 것이 바로 인코더 디코더, 시퀀스 투 시퀀스 아키텍처입니다.
하단 파란 박스를 보세요.
인코더 알엔엔이 입력을 하나의 벡터로 압축합니다.
그리고 디코더 알엔엔이 이 벡터에서 출력을 한 단어씩 생성합니다.
2014년 서스케버 등이 이 방식을 처음 제안했어요.
입력 엠개 토큰을 고정 벡터로 만들고, 여기서 엔개 토큰을 생성하는 거죠.
엠과 엔이 달라도 전혀 문제없는 구조입니다.
이건 정말 획기적인 아이디어였습니다.
하지만 여기에도 심각한 문제가 숨어 있었어요.
다음 블록에서 그 병목 문제를 자세히 알아보겠습니다.
선생님: 엠엘피나 씨엔엔이 번역 문제를 못 푸는 가장 핵심적인 이유는 뭘까요?
학생: 입력과 출력의 길이가 미리 정해져 있어서요. 세 단어 입력만 받게 만들면 다섯 단어는 처리 자체가 안 되잖아요.
선생님: 맞아요. 그렇다면 알엔엔은 왜 완벽한 해결책이 아닌 거죠?
학생: 알엔엔은 입력 길이는 자유롭지만, 출력 길이도 가변이어야 하는 건 해결 못 하니까요.
선생님: 정확합니다. 그래서 인코더와 디코더를 분리하는 시퀀스 투 시퀀스 구조가 필요했던 거예요.