조건부 생성 모델
우선 생성 모델 (Generative Model)은 주어진 학습 데이터를 학습하여 학습 데이터의 분포를 따르는 유사한 데이터를 생성하는 모델입니다. 아래 사진의 왼쪽과 같이 ‘가방’이라는 학습 데이터 분포를 따르는 유사한 데이터, 즉 랜덤한 가방 이미지를 샘플링하는 거죠. 근데 생성 모델은 데이터를 ‘생성'하기만 하고 내가 원하는대로 조작할 수는 없다는 특징이 있습니다.
이때, 원하는 모습대로 조건(condition)을 넣어 이에 맞는 데이터를 생성하는 조건부 생성 모델 (Conditional Generative Model)이라는 것이 있습니다. 위 사진의 오른쪽에 보이는 것과 같이, 특정한 가방의 스케치를 넣으면 그 스케치에 맞는 다양한 가방 데이터를 생성하는 거죠.
인코더-디코더 모델와 시퀀스-투-시퀀스 모델
인코더-디코더 모델 (Encoder-Decoder Model)은 조건부 생성 모델의 일종으로, 입력값을 토대로 벡터 표현을 생성하고 생선된 벡터 표현을 토대로 출력을 만드는 모델입니다. 인코더-디코더 모델을 시퀀스-투-시퀀스 모델이라고도 합니다. 아래는 주어진 스페인어 문장을 영어로 번역하는 시퀀스-투-시퀀스 모델의 구조입니다. 인코더와 디코더는 RNN 층으로 이루어져 있는데, 엘만RNN, LSTM, GRU 등 어떤 RNN이든 사용 가능합니다.
인코더
인코딩 (Encoding)은 주어진 데이터를 특정한 형식으로 변환하는 작업을 의미합니다. 위 구조에서 “Estoy de camino”라는 스페인어 문장이 입력 데이터입니다. 인코더는 이 문장 속 단어들을 순차적으로 입력 받아 단어 시퀀스를 2차원 벡터로 변환하는데, 이 2차원 벡터를 바로 은닉 상태 (Hidden state)라고 합니다. 인코더의 출력은, 입력 RNN의 마지막 은닉 상태인데, 이를 디코더로 넘겨주며 디코더의 첫 은닉 상태가 됩니다.
디코더
디코딩 (Decoding)은 인코딩된 은닉 상태, 즉 2차원의 벡터를 출력 시퀀스로 변환하는 작업을 의미합니다. 위 사진에서는 출력 시퀀스가 번역된 영어 문장이 되겠죠.
인코더-디코더 모델의 장점은 입력 시퀀스와 출력 시퀀스의 길이가 다를 수 있다는 것입니다. 위에 기계 번역 예시만 봐도 입력된 스페인어 문장은 단어 3개로만 이루어져있는 반면에 번역된 영어 문장은 단어 5개로 이루어진 것을 볼 수 있습니다.
인코더-디코더 모델 사용 예시는 일상생활에서 많이 찾아볼 수 있습니다. 앞서 예시로 들었던 기계 번역 이외에도 아래와 같이 이메일 응답 추천과 챗봇 등이 있습니다. 이메일 응답 추천에서는 A. 이메일 텍스트가 입력이고 B. 가능한 답변이 출력, 챗봇에서는 A’. 이미지와 A. 이미지에 대한 질문이 입력이고 이를 인코딩을 한 것을 바탕으로 한 B. 응답이 출력인 구조입니다.
다음 글 읽기