Lesson 15. 신경망 기계번역 Neural Machine Translation

조지아텍 온라인 석사과정 CS7647 ‘딥 러닝’ 15강 필기 내용

전체 필기 링크 (구글독스)

Lesson 15. 신경망 기계번역 Neural Machine Translation


1. 신경망 기계번역 (Neural Machine Translation)

1) 번역은 어려운 문제다

  • 통상적인 인풋 문장 1개에 대해 다양한 올바른 번역이 존재할 수 있다.
  • 언어는 모호하다. (‘The professor said on Monday we’d have an exam’에서 Monday는 무엇을 수식하는가? 교수가 말한 때인가, 시험을 보는 때인가?)
  • 언어는 문맥에 좌우된다. (동음이의어)
  • 언어는 서로 매우 다르다. (어순 등 구조적 차이, 암시/명시 차이)

2) 기계번역 모델

3) 시퀀스 생성은 자기회귀식(autoregressive)

  • 번역은 주로 조건부 언어 모델로 모델링된다.
  • p(t|s) = p(t_1|s) * p(t_2|t_1,s) * … * p(t_n|t_1, …, t_n-1, s)
  • 각 아웃풋 토큰의 가능성은 아래 내용에 기반해 좌->우 순서로 개별적으로 계산된다
  • 전체 인풋 문장 (인코더 아웃풋)
  • 이전까지의 모든 예측 토큰 (디코더 “상태(state)”)
  • argmax p(t|s)는 처리가 어렵다.
  • 가능한 시퀀스에 대한 지수 검색 공간 (exponential search space)
  • 빔 검색 (beam search)로 계산
  • 통상적 빔 크기는 4~6

4) 빔 검색 

  • 빔 서치(beam search)란?
  • 지수공간을 선형시간(O(n))으로 검색
  • 빔 크기 k는 검색의 ‘너비(width)’를 결정한다
  • 각 단계에서, k개 요소 각각을 1개 토큰만큼 늘린다
  • 이후 전체중 상위 k개 요소가 다음 단계의 빔 크기 k (= 가설(hypothesis))가 된다. 
  • 빔 서치 (추가 설명)
  • 각 빔 요소는 다른 상태(state)를 보유한다. (트랜스포머 디코더의 경우 이는 이전 단계에서의 셀프-어텐션 인풋이다)
  • 총 계산수 (total computation) 는 빔 너비와 선형으로 증감한다. 
  • 하지만 빔 전체에 걸쳐 계산을 병렬처리할 수 있다. 그래서 GPU에서 효율적이다. 

5) 신경망 기계번역 아키텍쳐들 (인코더/디코더에 사용)

  • RNN(주로 LSTM)
  • 양방향 인코더
  • 중대 돌파구 : 인코더-디코더 어텐션 (Bahdanau et al 2014)
  • 합성곱
  • 너비고정 합성곱 연산에 기반한 인코더/디코더
  • 단순 활성화 함수 
  • 트랜스포머
  • 대부분의 최신 연구에 사용되는 아키텍처
  • 처음엔 기계번역을 위해 제안되었음
  • 최근엔 BERT 및 그 부류들로 잘 알려짐


2. 효율적 추론 (Inference Efficiency)

1) 추론이 연산비용을 좌우한다 - 모델 대부분은 한번 훈련시키고 수만번 사용된다

  • 무엇이 비용을 차지하는가?
  • 단계별 연산 (자기회귀식 추론 (autoregressive inference))
  • 아웃풋 투영 : Θ (|단어| * 아웃풋 길이 * 빔 크기)
  • 모델 깊이
  • 전략
  • 아웃풋 단어집합 (vocabulary) 축소
  • 보다 효율적인 연산
  • 깊이를 얕게 하고 병렬성을 높임

2) 단어집합 축소 (Vocabulary reduction)

  • 단어집합이 크면 아웃풋 투영의 비용이 증가한다
  • 하지만 모든 인풋 시퀀스에 대해 모든 토큰이 똑같이 사용 가능성이 높은건 아니다
  • IBM 정렬모델 (IBM alignment model)은 통계적 기술을 사용해 한 단어가 다른 단어로 번역될 가능성을 모델링한다
  • 어휘 사용 가능성 (lexical probability) 을 통해 주어진 인풋에 대해 가능성 높은 아웃풋 토큰들을 예측할 수 있다.
  • 60%까지 속도 증가에 성공했다

3) 바이트-페어 인코딩 (Byte-Pair Encoding)

  • 문제: 사용 확률이 낮은 단어 모델링
  • 글자별 모델링을 할 경우, 실사용시 너무 느릴 수 있다
  • 서브워드 (subword) 모델은 단어를 빈도별로 잘라냄으로서 이를 해결한다
  • 널리 사용되는 알고리즘 중 하나는 바이트-페어 인코딩 (BPE)이다. 


  • 바이트-페어 인코딩은 ‘압축(compression)’에서 유래했다. 이는 가장 자주 맞붙어있는 쌍을 재귀적으로 교체하는 작업이다. 아래 예시 참고. 

4) 레이어 드롭 

  • ‘드롭아웃’ 과 유사한 개념이다. 확률적으로 레이어를 가지치기(prune)하는 것이다. 


5) 하드웨어 고려사항

  • 추론은 특수 하드웨어상에서 더 빠르다 (GPU, TPU 등)
  • 배치(batch) / 온디맨드(on-demand) : 여러 개의 인풋을 한번에 번역함으로서 평균 효율을 높일 수 있다
  • GPU/TPU 등 사용시 특히 그렇다
  • 하지만 실시간 시스템의 경우 적용이 어렵다
  • 병렬연산
  • GPU/TPU 사용시 특히
  • 자기회귀 추론 시간은 주로 decoder에 쓰인다


6) 양자화 (quantization)

  • 계산시간은 행렬곱셈이 다 잡아먹고 있다
  • lower precision domain에서 연산함으로서 추론 속도를 높일 수 있다
  • 훈련시에도 양자화가 가능하다 (예: NVIDIA GPU에서 F16)


7) 비-자기회귀적 기계번역 (Non-Autoregressive Machine Translation)

  • 현재 (2020년경) 시점 최신 연구분야




Share: X (Twitter) Facebook LinkedIn