본문 바로가기
과학/머신러닝

딥러닝 주요 논문 리뷰 (2) - 자연어 생성

by pandatta 2022. 12. 4.

딥러닝 주요 논문 리뷰 시리즈

딥러닝 주요 논문 리뷰 (0) - 기초
MTL, TL, GDO
딥러닝 주요 논문 리뷰 (1) - 자연어
BiRNN, LSTM, Skip-gram, Word2Vec
딥러닝 주요 논문 리뷰 (2) - 자연어 생성
Seq2Seq, Attention, Transformer, GPT, BERT
딥러닝 주요 논문 리뷰 (3) - 이미지
CNN, AlexNet, ResNet, EffNet
딥러닝 주요 논문 리뷰 (4) - 이미지 생성
VAE, GAN, StyleGAN, StableDiffusion

딥러닝 주요 논문 리뷰 시리즈 Deep learning milestone papers review series

통계 공부에 이어 또 캐글 예제나 풀어볼까 하다가, 다시 초심으로 돌아가자는 마음에 딥러닝의 주요 논문들을 뽑아서 읽어보기로 했습니다. GitHub 웹사이트에서 Arxiv 논문을 찾아, 읽는 김에 요약도 해보기로 했습니다. 자세히 읽지는 않았으니 정확하지 않거나 핵심이 아닌 부분이 있을 수도 있고, 모든 딥러닝의 주요 논문이 있지도 않습니다. 혹시 공부하시다가 놓친 부분을 제 글에서 다시 잡으실 수라도 있으면 저는 뿌듯하겠습니다.

세번째 글은 Attention과 Transformer 등장 직전과 이후의 자연어처리에 대한 논문들입니다. Seq2Seq을 통해 번역 성능이 향상되고, self-attention으로 자연어 생성 모델이 구체화되었습니다. 머신러닝이나 딥러닝 기초를 학습하시고 싶은 분들은 단단한 머신러닝 또는 심층 학습 같은 교과서를 먼저 읽고 오시면 좋습니다.

1. Seq2Seq (Sequence to Sequence)

  • Sutskever, I., Vinyals, O., & Le, Q. V. (2014). Sequence to sequence learning with neural networks. Advances in neural information processing systems, 27.
  • LSTM을 이용해 CBA→WXYZ 번역을 해보자, 그러면 sequence vector로 sequence vector를 만들면 됨.
  • 단순히 C→W, B→X, A→YZ로 출력되는 LSTM도 있겠지만, 두 개의 언어가 어순이 다를 수 있으므로 순차적인 하나의 memory cell에 담기는건 쉽지 않음.
  • 따라서 일단 한 언어에만 해당하는 LSTM 모델에 ABC 순으로 거꾸로 넣어 기억을 전달시킴.
  • 그 다음 다른 언어에 해당하는 LSTM 모델에 그 기억을 전달시켜 번역 전 언어의 첫 단어가 번역 후 어떤 첫 단어로 바뀔지를 예측함.
  • 번역 후 첫 단어를 다음 입력으로 받아 순차적으로 다음 단어를 예측함.
  • 이 때 CBA 순으로 넣지 않고 문장의 역순으로 단어를 입력하는 이유는 첫 단어부터 예측을 시작하므로 첫 단어의 기억이 가장 뚜렷해야 하기 때문임.

2. Attention

  • Bahdanau, D., Cho, K., & Bengio, Y. (2014). Neural machine translation by jointly learning to align and translate. arXiv preprint arXiv:1409.0473.
  • 그럼 encoding 문장의 길이가 길어져버리면 어떡하지? Decoder에 들어가기 전까지 번역하고자 하는 언어의 모든 정보를 다 담고있을 수 있을까?
  • "Each time the proposed model generates a word in a translation, it (soft-)searches for a set of positions in a source sentence where the most relevant information is concentrated."
  • Decoding할 때 단어마다 encoder에서 가장 적절한 정보를 준 벡터를 찾아옴.
  • Encoder를 다 지나고 나서 완성된 vector를 하나만 사용하는게 아니라, 시점마다 vector를 만듦.
  • Decoder에서 참조하는 encoding 시점마다의 vector는, 각 encoding 단어의 decoding 단어와의 alignment score를 softmax 가중치하므로, 가장 큰 기여를 한 encoding 단어의 영향력을 높임.

3. Transformer

  • Vaswani, A., et al. (2017). Attention is all you need. Advances in neural information processing systems30.
  • LSTM에서 memory matrix를 별도로 만들어서 전달해주긴 했지만, 그래도 기억소실은 발생함.
  • 그래서 attention 알고리즘을 사용, 출력 시점에서 입력 시점의 각 단어와 유사도에 따라 가중치를 부여함으로써 어떤 단어에게 추가적인 기억을 더 물려받을 수 있음.
  • 기존 attention을 dot-product attention이라고 한다면, decoding 단어(query, Q)와 encoding 단어(key, K)의 가중치를 계산해 추가 정보(value, V)를 물려받는 형식임.
  • 여기서 multi-head attention, 즉 입력 벡터를 head 수로 쪼개서 병렬 처리 가능하게 함. 속도의 이점도 있겠지만, 차원을 임의로 쪼개었기 때문에 각 차원이 서로 영향을 받지 않고 추론한 다음 그냥 concat함으로써 계산 결과가 좋을 수도 있음.
  • 이 multi-head attention을 encoding할 때 self로 수행함으로써 한 언어모델 내에서도 attention 가능, 즉 단어간 가중치를 계산하게 함.
  • Decoding할 때도 multi-head attention을 self로 한 번 해서 해당 언어모델 내에서 각 단어의 서로에 대한 가중치를 계산하고, 이를 encoding attention 결과에 한 번 더 attention해서 언어 간 가중치를 계산해 반영함.

4. GPT (Generative Pre-trained Transformer)

5. BERT (Bidirectional Encoder Representations from Transformers)

댓글