Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Mt

124 views

Published on

모두를 위한 기계번역 (박찬준)
○ 개요
2014년 본격적으로 NMT에 대한 연구가 진행되었으며 현재는 Transformer 기반의 다양한 NMT 시스템들이 연구되고 있습니다.
더 나아가 최근 NLP에서 가장 뜨거운 연구분야인 Language Representation 분야에서도 Transformer를 기반으로 한 BERT, GPT-2, XLNET 등의 모델이 개발되고 있습니다.
본 테크톡에서는 먼저 RBMT와 SMT에 대해서 간략하게 살펴보고 RNN기반 NMT 부터 Transformer를 기반으로 하는 NMT까지 자세히 살펴볼 예정입니다.

더 나아가 최근 WMT에서 매년 Shared Task로 열리고 있는 Automatic Post Editing System과 Parallel Corpus Filtering, Quality Estimation 분야에 대해서 설명하며 NMT를 이용한 다양한 응용 연구분야를 소개해드리겠습니다. (ex. 실시간 강연통역 시스템, 문법교정 시스템) , 기계번역에 대해서 아무것도 모르시는 분, 궁금하시분들도 이해할 수 있는 수준으로 쉽게 설명을 진행할 예정입니다.

○ 목차
1)기계번역이란
2)RBMT에 대한 간략한 소개
3)SMT에 대한 간략한 소개
4)RNN기반 딥러닝부터 Transformer까지
5)NMT를 이용한 다양한 응용 연구 소개
a. Automatic Post Editing
b. Quality Estimation
c. Parallel Corpus Filtering
d. Grammar Error Correction
e. 실시간 강연통역 시스템
6)OpenNMT 소개

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Mt

  1. 1. 모두를 위한 기계번역 Natural Language Processing & AI Lab., Korea University 발표자: 박찬준
  2. 2. Who Am I 2 2018.06~2019.07: SYSTRAN (현: LLsoLLu ) Automatic Speech Recognition Machine Translation Grammar Error Correction Real-time lecture interpreter system 2019.07~Now: Korea University 컴퓨터학과 대학원 과정(지도교수: 임희석 교수님) NLP&AI Lab Research Interest: 기계번역, 문법교정, 실시간 통역 시스템 네이버 자연언어처리 전문 블로그 운영(For: 비전공자)
  3. 3. 목차 3 1. Overview of MT 2. RBMT 3. SMT 4. NMT (RNN ~ Transformer ~ MASS) 5. NMT 하위 분야 6. Open Source 7. 기계번역 서비스 해보기
  4. 4. Overview of MT Overview
  5. 5. 자연언어처리란? 5
  6. 6. 기계 번역이란? 6
  7. 7. 기계 번역이란? 7
  8. 8. 기계 번역이란? 8
  9. 9. RBMT 규칙기반 기계번역
  10. 10. 한눈에 보는 규칙기반 기계번역 10
  11. 11. 한눈에 보는 규칙기반 기계번역 11
  12. 12. SMT 통계기반 기계번역
  13. 13. 한눈에 보는 통계기반 기계번역 13
  14. 14. 한눈에 보는 통계기반 기계번역 14최적의 번역열 찾기
  15. 15. 한눈에 보는 통계기반 기계번역 15 처음에는 단어(word) 단위로 번역을 수행 2003년 여러 개의 단어 묶음인 구(Phrase) 단위의 번역 방식 제안: 단어 단위 보다 잘 번역 구(Phrase)내에 변수 개념을 도입한 것이 Hierarchical Phrase- Based SMT 예를 들어 "eat an apple -> 사과를 먹다" 이렇게 하는 것이 아닌 "eat X --> X를 먹다" 이런식으로 표현!! 이러한 방식의 장점은 X에 apple, banna 등 다양한 단어를 수용할 수 있음 !! Prereordering-based SMT는 번역하기 전 어순을 바꾸는 작업 !! Syntax Base SMT는 Hierarchical Phrase-Based SMT에서 eat X 를 eat NP(명사구) 로 변경한 것 !! 즉 모든 구가 올 수 있는 것이 아닌 명사구만 올 수 있다고 한정 지어 불필요한 번역 후보를 사전에 제거 !!
  16. 16. 한눈에 보는 통계기반 기계번역 16
  17. 17. 한눈에 보는 통계기반 기계번역 17
  18. 18. NMT 인공신경망 기반 기계번역
  19. 19. Neural Machine Translation 19
  20. 20. Neural Machine Translation 20
  21. 21. Neural Machine Translation 21
  22. 22. Neural Machine Translation 22
  23. 23. RNN Based NMT 23
  24. 24. RNN Based NMT 24
  25. 25. RNN with Attention 25
  26. 26. 26 RNN with Attention 모든 스텝의 hidden states를 decoder에게 넘김 출처) http://jalammar.github.io/illustrated-transformer/
  27. 27. RNN with Attention 27 스텝마다 관련된 부분에 더 집중할 수 있게 해주는 Attention model
  28. 28. RNN with Attention 28 스텝마다 관련된 부분에 더 집중할 수 있게 해주는 Attention model
  29. 29. Annotations == Bi RNN Concat Hidden 29 인코더에서는 Bidirectional RNN을 사용하여 Forward Network와 Backward Network에서 Hidden State Vector Set 를 각각 생성하여 각각의 단어 별로 두 벡터들을 합하여 Context Vector Set 를 생성한다. (annotations)
  30. 30. Attention 30 Attention Weight(Energy) 를 결정하기 위해서 Feed- Forward Neural Network(FFNN) 와 같은 신경망이 내부적으로 사용되고, Attention Weight를 이용하여 Context Vector Set의 가중치 합 (Weighted Sum)을 구하여 새로운 Context Vector C t를 아래와 같이 구한다: S E: Energy a: Align (좌)C: Context vector (우)C: annotation (우)C: annotation
  31. 31. 디코딩 과정 31 디코더는 새로 구한 Context Vector C t 와 디코더의 이 전 Hidden State Vector S t-1 와 이전 출력 단어 Y t-1을 입 력으로 받아서 Hidden State Vector S t를 갱신하고 이를 이용하여 새로운 출력 단어 Yt를 결정한다.
  32. 32. 32 더 쉽게 기존 RNN 디코딩에서 h3만 사용함. 출처) https://www.youtube.com/watch?v=WsQLdu2JMgI&t=4 18s
  33. 33. 33 더 쉽게 H1, H2, H3 모두 사용
  34. 34. 34 더 쉽게 Softmax를 거쳐서 Attention Weight를 만듬
  35. 35. 35 더 쉽게 Context Vector생성 H1에 90% H2에 0 % H3에 10% 참조할게 ! Initial Hidden
  36. 36. 36 더 쉽게 Context Vector 그때 그때 다름 !!! (핵심)
  37. 37. 37 더 쉽게
  38. 38. 38 더 쉽게 End가 나올 때 까지 !
  39. 39. Attention is All you need 39
  40. 40. Before Attention is All you need 40
  41. 41. Before Attention is All you need 41 Recurrent Convolution
  42. 42. Attention is All you need 42 Recurrent Convolution Solely on Attention Mechanisms, dispending with recurrence and Convolutions entirely
  43. 43. Attention is All you need 43 Parallelizable Less time to Train
  44. 44. Attention is All you need 44 SOTA
  45. 45. 결국 Seq2Seq 45 지난 방법론들 Attention, RNN Search, RNN Encoder Decoder, Luong Attention ➔ 결국 Seq2Seq
  46. 46. 결국 Seq2Seq 46 Transformer ➔ 결국 Seq2Seq 출처) http://jalammar.github.io/illustrated-transformer/
  47. 47. Encoder Decoder구조일 뿐 ! 47 결국 Seq2Seq ➔ Encoder Decoder 구조
  48. 48. 쌓아 올린 Encoder Decoder 구조일 뿐 48 Stack(쌓아 올린 구조) 따라서 입력 차원 출력 차원이 같다. 512차원 ! 몇 개를 Stack??? 6개 ➔ Transformer 12개 ➔ Transformer Big
  49. 49. Attention is All you need 49 N(6)개 Stack
  50. 50. Transformer 50 Encoder에 2개의 블록 Decoder에 3개의 블록
  51. 51. Encoder 51각 단어들은 크기 512의 벡터 하나로 embedding 위치에 있는 각 단어가 그만의 path를 통해 encoder에서 흘러간다
  52. 52. Encoder 52 바로 전의 encoder의 출력 word embedding
  53. 53. Self Attention 53 자기 들 끼리의 Attention
  54. 54. Self Attention 54 1단계) 3개의 벡터를 만든다 이름은 Query Key Value
  55. 55. Self Attention 55 이 벡터들은 입력 벡터에 대해서 세 개의 학습 가능한 행렬들을 각각 곱함으로써 만들어짐!! (WQ,WK,WV)기존의 벡터들 보다 더 작은 사이즈(64차원) multi-head attention의 계산 복잡도를 일정하게 만들고자 내린 구조적인 선택
  56. 56. Self Attention 56 2단계) 일종의 점수를 만든다? Query와 Key를 곱한다.
  57. 57. Self Attention 57 3단계) 나눈다(Scale) 뭘로? ➔ 8 8이란 숫자는 key 벡터의 사이즈인 64의 제곱 근 왜? ➔ 더 안정적인 gradient를 가지게 됨
  58. 58. Self Attention 58 4단계) Softmax 현재 위치의 단어의 encoding에 있어서 얼마나 각 단어들의 표현이 들어가는지에 대한 일종의 비율
  59. 59. Self Attention 59 5단계) Value 곱하기 ! Softmax값 높은 거는 큰 값 낮은 것은 무시해버리는 효과! ➔ 오른쪽은 본 논문에서 그린 그림 지금까지의 과정을 Scaled Dot Product Attention이라 함
  60. 60. Self Attention 60 6단계) 결과로 나온 벡터 다 합해버리기 ➔ 이것이 곧 Self Attention의 출력
  61. 61. Self Attention 61 수식도 어렵지 않다 Scale ➔ Key벡터에 제곱근 값으로 나누어줌 Dot-Product ➔ Query와 Key 곱해줌 ! Value도 곱해줌
  62. 62. Self Attention 62
  63. 63. Multi Head Attention 63 self-attention 계산 과정을 8개의 다른 weight 행렬들에 대해 8번 거친다. 1방에 하지 말고 8개로 나누어서 해보자 !! ➔ 여러 개의 “representation 공간”을 가지게 해줌!! 쉽게 생각해 다양한 표현을 학습함으로 더 잘 표현할 수 있음 self.dim_per_head = model_dim // head_count
  64. 64. Multi Head Attention 64 각각의 Query Key Value벡터를 가진다 ! 즉 8번의 Scale Dot Product Attention과정을 거친다 !! 따라서 결과값도 8개가 나올 것임 !!
  65. 65. Multi Head Attention 65 문제는 이 8개의 행렬을 바로 feed-forward layer으로 보낼 수 없다. feed-forward layer 은 한 위치에 대해 오직 한 개의 행렬만을 input으로 받음 ! 일단 모두 이어 붙여서 하나의 행렬로 만들어버리고, 그 다음 하나의 또 다른 weight 행렬인 W0을 곱해버립니다. 1개로 만들어버리기 성공 !!
  66. 66. 한눈에 보는 Multi Head Attention 66
  67. 67. 한눈에 보는 Multi Head Attention 67 각각의 Query Key Value벡터를 가진다 ! Head개수만큼 Attention과정 1개의 값으로 표현해야하니 Concat 거기에 Weight 행렬 곱해 !
  68. 68. Position-wise Feed-Forward Networks 68 position 마다, 즉 개별 단어마다 적용되기 때문에 position-wise !! 두 번의 linear transformation과 ReLU로 이루어짐 !
  69. 69. Positional Encoding 69 순서정보 알 수 있어야 ! Parallelizable 하니깐 알 방법이 없음 Transformer 모델은 각각의 입력 embedding에 “positional encoding”이라고 불리는 하나의 벡터를 추가
  70. 70. Positional Encoding 70 순서에 대한 정보 부여
  71. 71. Positional Encoding 71 순서에 대한 정보 부여 Embedding with Time Signal
  72. 72. Residual & Layer Normalization 72
  73. 73. Residual 73 Fast Forward Connection (Baidu) Residual Network (Google)
  74. 74. Decoder – Encoder와의 차이점 74 1. Masked 2. Key 와 Value 행렬들을 encoder의 출력에서 가져온다.
  75. 75. Decoder – Encoder와의 차이점 75 <1> Masked Decoder에서의 self-attention layer은 output sequence 내에서 현재 위치의 이전 위치들에 대해서만 Attention을 진행 할 수 있다. ➔ Decoder에서는 encoder와 달리 순차적으로 결과를 만들어내야 하기 때문 !! <2> Query 행렬들을 그 밑의 layer에서 가져오고 Key 와 Value 행렬들을 encoder의 출력에서 가져온다.
  76. 76. Decoder – Encoder와의 차이점 76
  77. 77. Linear & Softmax 77 Decoder를 거치고 난 후에는 소수로 이루어진 벡터 하나가 남게 됨 ! 이것을 Vocab 즉 단어로 변환해야 함 !! Linear layer은 fully-connected 신경망으로 decoder가 마지막으로 출력한 벡터를 그보다 훨씬 더 큰 사이즈의 벡터인 logits 벡터로 투영시킴 ! Logits벡터는 Vocab size와 동일 !!! softmax layer는 이 점수들을 확률로 변환해주는 역할
  78. 78. Linear & Softmax 78Linear layer 와 softmax layer를 통과하여 최종 출력 단어로 변환 !
  79. 79. 79 Experiment
  80. 80. 80 Experiment
  81. 81. 81 BERT & GPT Encoder Decoder BERT(좌측)는 Language Understanding을 위해 인코더를 Pre-train하는 반면, GPT(우측)는Language Modeling을 위해 디코더를 Pre-train 시키는 구조를 지니고 있음
  82. 82. 82 MASS Seq to Seq: 인코더 디코더 함께 훈련되어야 ! 문제는 기존 BERT, GPT는 함께 훈련 될 수 없는 구조 !
  83. 83. 83 MASS Input에서 k 개의 토큰 조각을 임의로 지정해 마스킹 한 후, 마스킹 된 해당조각들을 예측하도록 훈련시키는 Pre-training 기법 인코더 측 에서 마스킹 되지 않은 토큰들이 디코더 측에서 마스킹됨에 따라,디코더는 인코더가 제공한 hidden representation과 Attention 정보만을 참고해 마스킹 된 토큰들을 예측해야 하게 되고 이는Encoder와 Decoder가 함께Pre-train될 수 있는 환경을 제공하게 됨
  84. 84. 84 MASS K: 마스킹 되는 토큰 개수 BERT의 Masked LM: k=1일때 인코더 측에서는 하나의 토큰이 마스킹 되고,디코더는 마스킹 된 하나의 토큰을 예측 GPT의 Standard LM: k가Input 문장의 전체 길이인 m과 같을 때 인코더 측의 모든 토큰들이 마스킹 됨
  85. 85. 85 MASS 기본적으로 MASS는 Pre-training을 위해 monolingual 데이터를 필요로 함 그러나 기계번역과같은 Cross-lingual Task도 수행할 수 있음 영어-불어번역과 같은 Cross-lingual Task의 수행을 위해서는 Pre-training으로 하나의MASS 모델에 ‘English-English’와 ‘ French-French’ 데이터를 모두 학습시키는 방법을 사용 이때, 두 언어를 구분 짓기 위해 “Language embedding” 이라는 정보를 추가적으로 더해 줌 Facebook의 XLM은 인코더와 디코더를 각각 BERT의 Masked LM과 standard LM으로 Pre-train 시킨 모델
  86. 86. 86 CNN ?
  87. 87. NMT 하위 분야 APE, QE, Parallel Corpus Filtering 실시간 강연통역
  88. 88. Automatic Post Editing 88 번역문 사후 교정(Automatic Post-Editing, APE)은 기계 번역 시스템이 생성한 결과물에 포함되어 있는 오류를 수정하여 더 나은 품질의 번역문을 만들어내는 과정
  89. 89. Quality Estimation 89 기계번역 품질 예측은 정답번역문의 참고 없이 기계번역문장의 번역품질을 예측하는 것을 말하며, 최근 들어 기계번역분야에서 중요성이 강조되고 있다. 사용자가 원시 언어(source language) 나 목표 언어(target language)를 잘 알지 못하는 경우 유용! BLEU ??
  90. 90. Quality Estimation 90 원시문장 (source sentence)와 기계번역문장(translation sentence, target sentence)만을 보고 기계번역문장의 번역 품질 (translation quality)을 예측(estimation) 즉 정답문장이 필요 없음 !! BLEU와 결정적 차이점 데이터(QE 데이터): 1) 원시문장, 2) 기계번역문장, 3) 기계번역 문장의 각 수준 별 품질 주석 (quality annotations)
  91. 91. Parallel Corpus Filtering 91 Parallel Corpus Filtering이란 양질의 Parallel Corpus를 구축하기 위한 작업이며 좋은 품질의 Corpus만을 선별하는 작업을 의미한다.
  92. 92. 실시간 강연통역 92 실시간 동시통역 기술’은 한 문장씩 통역하는 기술을 넘어, 연속된 자유 발화를 통역사처럼 실시간으로 통역해 사용자에게 제공하는 방식 https://www.etri.re.kr/webzine/20190201/sub02.html 음성인식 기계번역
  93. 93. Open Source 기계번역 분야의 오픈소스 소개
  94. 94. OpenNMT 94
  95. 95. OpenNMT 95
  96. 96. Tensor2Tensor 96
  97. 97. Fairseq 97
  98. 98. Open Kiwi 98
  99. 99. Parallel Corpus Filtering 99
  100. 100. 기계번역 서비스 해보기 All About MT
  101. 101. 기계번역을 서비스 하는 과정 101 1. 데이터 수집 2. Parallel Corpus Filtering 3. Subword Tokenization 4. Train/valid/test Hyper Parameter Vocab 5. Transformer 6. Translate 7. Detoken 8. Evaluation 9. Service (Web server, Translation Server)
  102. 102. 기계번역을 서비스 하는 과정 102 1. 웹크롤링 구매 2. 규칙 정의 정제 모듈 3. BPE SentencePiece Mecab 4. 하이퍼 파리미터 튜닝 Vocab 개수 5. OpenNMT Or 직접 구현 6. Beam Search 7. BPE Code 보관하기 8. BLEU GLEU 3점/5점 척도 9. 서버 https://github.com/Parkchanjun/OpenNMT-Colab-Tutorial
  103. 103. 감사합니다. 박찬준 bcj1210@naver.com
  104. 104. 참고자료 104 [1]Bahdanau, D., Cho, K., and Bengio, Y. (2014). Neural Machine Translation By Jointly Learning To Align and Translate. In ICLR, pages 1–15 [2]Cho, K., van Merrienboer, B., Gulcehre, C., Bahdanau, D., Bougares, F., Schwenk, H., and Bengio, Y. (2014). Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation. In Proc of EMNLP. [3] Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N Gomez, Łukasz Kaiser, and Illia Polosukhin. Attention is all you need. In Advances in neural information processing systems, pages 5998–6008, 2017. [4] Marcin Junczys-Dowmunt, Roman Grundkiewicz, MS-UEdin Submission to the WMT2018 APE Shared Task: Dual-Source Transformer for Automatic Post-Editing [5] Rikters, Matīss, Impact of Corpora Quality on Neural Machine Translation(2018), In Proceedings of the 8th Conference Human Language Technologies - The Baltic Perspective (Baltic HLT 2018) [6]H. Xu and P. Koehn, Zipporah: a Fast and Scalable Data Cleaning System for Noisy Web-Crawled Parallel Corpora, Emnlp (2017), 2935–2940. http://www.aclweb.org/anthology/D17-1319% 0Ahttp://aclweb.org/anthology/D17-1318 [7] Rico Sennrich, Barry Haddow, and Alexandra Birch. 2016. Neural machine translation of rare words with subword units. In Proc. of ACL [8] Taku Kudo, John Richardson, SentencePiece: A simple and language independent subword tokenizer and detokenizer for Neural Text Processing, EMNLP2018 [9] Taku Kudo. 2018. Subword regularization: Improving neural network translation models with multiple subword candidates. In Proc. of ACL.
  105. 105. 참고자료 105 [10] Guillaume Klein, Yoon Kim, Yuntian Deng, Jean Senellart, and Alexander M. Rush. 2017. Opennmt: Open-source toolkit for neural machine translation. CoRR, abs/1701.02810. [11] Hyun Kim, Jong-Hyeok Lee, and Seung-Hoon Na. 2017. Predictor-Estimator using Multilevel Task Learning with Stack Propagation for Neural Quality Estimation. In Conference on Machine Translation (WMT). [12] 이 창 기 , 김 준 석 , 이 형 규 , 이 재 송 . (2015). Neural Machine Translation 기 반 의 영 어 - 일 본 어 자동번역. 정보과학회지, 33(10), 48-52. [13] http://jalammar.github.io/illustrated-transformer/ [14] 김기현의 자연어처리 딥러닝 캠프 [15] 자연어처리 튜토리얼 2019 [16] https://www.etri.re.kr/webzine/20190201/sub02.html [17] https://blog.naver.com/bcj1210 [18] https://brunch.co.kr/@kakao-it/156 [19] https://www.youtube.com/watch?v=WsQLdu2JMgI

×