파이썬 날코딩으로 알고 짜는 딥러닝
14장 Encoder - Decoder
JungGwig
2020. 12. 17. 00:50
인코더 - 디코더 구조
- 입출력
- 입력 형태와 출력 형태가 서로 독립적이다.
- 입력 x --(Encoder)--> Context Vector --(Decoder)-->출력 y
- 언어 처리에 매우 유용한 구조를 갖는다.
- Context Vector
- 인코더의 출력이자 디코더의 입력
- 보통 입출력에 비해 작고 간단한 형태로 설계
- 정보의 압축 효과 기대
- 입력의 형태를 변경하기에 용이
- 활용
- 입력 형태와 출력 형태가 다른 응용 분야
- 시각 --> 언어 : 사진의 내용을 설명하는 캡션 문구 생성
- 언어 --> 음원 : 텍스트 내용을 음성 합성으로 음원 생성
- 입력과 출력이 모두 시계열 데이터지만 입출력 사이의 시간대 의미가 서로 다른 경우
- Source 언어를 Target 언어로 번역하는 경우
- 입출력 언어 사이의 길이나 어순, 각종 표현 상의 차이 극복 가능
- 번역에 있어 단어에 대해 일대일 대응 방식은 한계가 있으며 이를 극복할 수 있다.
- 최근 자연어처리에서는 인코더-디코더 기본 구조 내부에 워드 임베딩과 Attention Mechanism 추가하여 구현
- 야구 기록표를 입력으로 하여 경기 요약문을 생성하는 경우
- 두 시간대 의미가 완전히 같거나 포함 관계에 있는 경우 하나의 RNN 신경망으로 처리 가능
- Source 언어를 Target 언어로 번역하는 경우
- 입력 형태와 출력 형태가 다른 응용 분야
분리학습
- 특별한 개입이 없다면 학습 과정에서 콘텍스트 벡터가 추출할 정보를 신경망이 자체적으로 결정
- 사람의 경우 바람직한 콘텍스트 벡터의 모습을 상정하는 경우가 많음
- 컨텍스트 벡터에 대한 모범 답안에 해당하는 내용 지정 가능
- 인코더와 디코더를 따로 학습시키는 것이 더 나은 결과를 가져올 가능성이 있다.