본문 바로가기

머신러닝/[딥러닝을 이용한 자연어 처리]

Encoder & Decoder

학습목표

기계번역의 모델구조와 과정을 살펴봅니다.

핵심키워드

  • 기계번역(Machine Translation)
  • 소스 언어(Source Language)
  • 타겟 언어(Target Language)
  • 인코더(Encoder)
  • 디코더(Decoder)
  • 토크나이즈(Tokenize)
  • 하위 단어의 세분화(Subword Segmentation)
  • 자기회귀 언어 모델링(Autoregressive Language Modeling)

학습하기

 간단하게 시작해봅시다. Text classification이나 Language model이나 다 똑같이, 먼저 Vocabulary를 만들어야합니다. 만든 이후에는 정수 인덱스로 원래 단어를 찾아서 보여주게 되겠죠. 아래와 같습니다.

  그 이후에는 소스 언어가 있을 때, 이것의 Representation을 어떻게 찾을 것이냐가 있겠죠. 이미 너무 자주 말했어요. 5가지 방법론이 있었고, 그걸 채용하시면됩니다. 다만 Text classification 문제와는 달리, 고정된 길이의 벡터로 만들 필요는 없어요. 문장 분류의 문제에서는 각 토큰들의 Representation을 뽑고, 그거를 합쳐서 단하나의 벡터로 만들어야했는데, 굳이 여기서는 그럴 필요가 없죠. 정확히는 해도되지만, 그렇게해서 얻을게 없습니다. 그렇게 하나의 벡터로 Collapse하게 되면, 문장이 길어짐에 따라 번역 성능이 굉장히 못 봐줄 꼴이 되요. 

 그래서 Sentence representation을 Token 개수만큼 다 가져갈겁니다. Token 별로 Representation이 하나씩 다 살아있는 거죠. CBoW는 자주 쓰진 않지만 가능하겠죠. 그렇게 표현을 뽑아낸 다음 문장을 Generating 하는 데는, Decoder, Language model을 쓸겁니다. 

 N-gram을 쓰지않고, 이번에는 컨텍스트를 모두 볼겁니다. 스코어링을 할 때에는 N-gram이 괜찮은데, 기계번역에서는, 말도 되고 보기에도 좋은 문장을 생성하기 위해서는, 내가 서두를 어떻게 시작했고 중간에는 무슨 말을 했고, 방금 전에는 무슨 말을 뱉었는지가 모두 중요합니다. 그렇게 Autoregressive Language model을 통해서 무한한 컨텍스트를 볼 것이구요. 그러다보니까, 순서를 무시했던 CBoW도 어렵고, 개수를 제한하는 N-gram도 쓸 수가 없고, 궁극적으로 남는건 RNN, Self attention, Dilated conv였습니다. 달라지는 건 Conditional 파트에요. 기존 언어 모델은, 이전 단어들을 보고 다음 단어를 예측했는데, 지금은 이전 단어들과 동시에 소스 언어를 봐야겠죠. 이후 과정은 앞에서 했던 다른 내용과 유사합니다. 결국 소스 언어로 부터 뽑힌 표현과, 타겟 언어로 뽑힌 표현을 잘 섞어서 어떤 결과를 내놓는 것. 그게 기계 번역입니다. 이상입니다.

'머신러닝 > [딥러닝을 이용한 자연어 처리]' 카테고리의 다른 글

Learning to Describe Multimedia  (0) 2020.04.22
RNN Neural Machine Translation  (0) 2020.04.21
Overview: a bit of history remark  (0) 2020.04.19
Summary  (0) 2020.04.18
Questions  (0) 2020.04.17