원문 : https://devblogs.nvidia.com/parallelforall/introduction-neural-machine-translation-with-gpus/
Neural machine translation은 최근 순수 신경망에만 기초한 기계번역으로 제안된 프레임워크다. 이 포스팅은 neural machine translation 시스템을 구현한 간단한 encoder-decoder 모델을 설명한 시리즈중 첫번째 포스팅이다. [Cho et al., 2014; Sutskever et al., 2014; Kalchbrenner and Blunsom, 2013]. 차후 포스팅에서는, 어떻게 attention mechanism 이 간단한 encoder-decoder모델에 통합될 수 있는지를 설명하겠다[Bahdanau et al., 2015]. 이 통합모델은 영-프, 영-독, 영-터,영-중을 포함한 수많은 Language pair들 에 대한 최신의 기계번역모델이 됐다[Gulcehre et al., 2015; Jean et al., 2015]. 더 나아가, 이러한 neural translation 의 프레임워크를 이미지나 영상 description generation에 적용한 최근 연구를 소개할것이다 [Xu et al., 2015; Li et al., 2015].
Statistical Machine Translation
기계번역에 대한 하나의 중요한 특징은 목표(번역) 함수가 기계학습에 대한 많은 다른 적용들에서 같이(예를들어, 분류문제 (다대일) 일대일 혹은 다대일 이 아니라 하나의 source sentence가 많은 가능한 문장들로 변역될수 있다는 측면에서 일대다 라는 점이다. 이것 때문에, 우리는 번역 함수를 결정론적(deterministic) 함수가 아닌 목적문장(번역)의 조건부확률로써 모델링 한다. 이 조건부확률은 하나 이상의 잘 나뉘어진 배치(configuration) 혹은 문장들에 동등한 높은 확률을 적용한다. 이것은 source와 targe(목적) 문장들 간의 일대다 관계로 이끈다.
이제 당신이 영어로된 source sentence를 불어로된 target sentence로 번역하는 통계적 기계번역시스템을 만들고 싶다고 해보자. 첫번째 그리고 아마 가장 중요한 일은 source sentence와 이에 따른 반응 번역(target sentence)를 모으는 것이다. source sentense와 이들의 반응 번역들을 나타내기 위해 각각 , 으로 나타내겠다. 승수자리에 있는 n은 이것이 많은 짝들의 집합중에서 n 번째 짝이라는 것을 의미한다. (보통 정말 많은 짝들이 좋은 번역모델을 훈련하는데 필요하다.) N개의 짝들의 데이터셋을 표현하기 위해 이렇게 나타낸다.
어디에 이 훈련 짝데이터들을 얻을수 있을까? 일반적으로 기계번역에서 사용되는 언어에 대해서는 Workshop on Statistical Machine Translation or the International Workshop on Spoken Language Translation를 확인해보기 바란다.
수중의 훈련데이터들로, 우리는 D훈련데이터에 대해 모델이 얼마나 잘 작동하는지를 보는것으로 모델을 평가할 수 있게 됐다. 이 평가점수는 모델의 로그우도가 된다. 이 로그우도값은 각 짝 에 대한 모델의 평균로그우도값이다. 기계번역모델의 확률적해석은, 각 짝에 대한 모델의 로그우도는 단순히 모델이 해당 짝에 로그확률을 얼마나 높게 할당하는지를 보여준다. 다시말해 모델을 정의하는 파라미터들의 집합을 나타내는 말한다. 그렇다면, 전반적인 훈련데이터에 대한 모델의 평가는 다음과 같다.
만약 로그우도 이 낮다면, 그 모델은 올바른 번역 짝들에 충분한 확률질량(probability mass)을 주고있지 않다는 것이다. 이것은 몇몇 잘못된 번역들에 모델의 확률질량을 낭비하고 있다는 것을 의미한다. 그러므로 우리는 모델의 한 문장, 즉 이 로그우도를 최대화하는 파라미터 의 값을 찾는것이다.
기계학습에서는 이를 Maximum Likelihood Estimator라고 알려져있다. 그러나 더 중요한 문제가 남았다. 어떻게 을 모델링 할 것인가?
Statistical Machine Translation (almost) from Scratch
조건부확률 분포를 모델링하는 방법에 대한 질문은 20여년전 IBM T.J. Watson Research Center에서 시작하여 오랫동안 다루어져왔다 [Brown et al., 1993 and references therein]. 통계적 기계번역(SMT)에서 그 당시에 주된 연구는 log-linear 모델이었다. 이 모델은 우리가 많은 피쳐들의 선형결합을 사용해 참조건부확률의 로그를 대략적으로 근사시킨다.
C는 일반화 상수이다. 이 케이스에서는, 연구의 가장 큰 부분은 좋은 피쳐함수,의 집합을 찾는것이다. 그리고 이것에 대한 모든 세부사항을 잘 다룬 책이 있다. [Koehn, 2009].
이러한 SMT의 접근법에서, 종종 기계학습에 남는 유일한 것은 다른 피쳐들사이의 균형을 잘 맞추는 계수들의 집합을 찾거나, log-linear 모델로부터 해석된 잠재적인 번역들의 집합을 필터링 혹은 재순위 매기기 를 하는것이다 [Schwenk, 2007]. 더 자세히, 인공신경망은 피쳐함수를 찾는것과 n개의 최고로 가능한 번역들로 불리는 재순위매기기 이 두가지 역할로써 사용됐다. Fig.2의 중간과 오른쪽 판넬에 있는것이 이를 설명한것이다.
이 포스팅에서, 반대로 신경망 기계번역(neural machine translation)으로 최근에 제안된 방식에 초점을 맞추겠다. 이 방식은 Fig.2의 왼쪽 판넬에 있는것과 같이 SMT까지 포함하여 모델링한것이다.
Neural Machine Translation
Recurrent Neural Networks
예를들어 Recurrent activation function은 종종 요소단위별 비선형 함수에 의한 단순한 아핀변환으로 실행된다.
이 공식에서, 파라미터들은 input 가중치 행렬 , Recurrent 가중치 행렬 그리고 bias 벡터 를 포함한다. 이것이 유일한 Recurrent activation function은 아니다. 새로운 Recurrent activation function을 만드는 것에 대해서 아직 많은 가능성들이 남아 있다. [Pascanu et al., 2014]로부터 몇몇 예제들이 Fig.3에 있다.
이 단순한 RNN은 CPU 또는 GPU 둘중 하나에서 실행되는 Theano를 사용하여 매우 쉽게 구현될 수 있다. Recurrent Neural Networks with Word Embeddings를 참고해라, 모든 RNN 코드들이 10줄 미만으로 쓰여졌다는 것에 주목할만하다.
최근에, Long-Short Term Memory(LSTM) unit [Hochreiter and Schmidhuber, 1997]과 Gated Recurrent unit [Cho et al., 2014] 같은 최신의 활성화함수들로 RNN을 학습하는것이 더 낫고 쉬워졌음을 볼 수 있다.
단순한 Recurrent 활성화함수에 있던것과 마찬가지로, 파라미터들은 input 가중치 행렬들 , , , Recurrent 가중 행렬들 , , 그리고 편향 벡터들 , , 을 포함하고 있다.
비록 이러한 unit들이 단순 RNN보다는 더 복잡해 보일지라도, Theano 또는 Torch같은 다른 deep learning framework로 간단해 질수 있다. 예를 들어 다음 예제를 확인해봐라 LSTM Networks for Sentiment Analysis (example code).
RNN을 history compressor로 설명했다. 그러나 이것은 확률적 모델 시퀀스에 사용될수도 있다. 확률적 시퀀스로 모델링하여 어느 주어진 시퀀스의 확률 을 계산하는 기계학습 모델을 말한다. 어떻게 우리가를 recurrence를 써서 표현할수 있을까?
를 로 다시 쓰는것 부터 시작해보자. 는 조건부확률의 정의로부터 나왔다 이것으로부터, 우리는 다음과 같이 recursive formula을 만들수 있다.
이제 RNN이 아래 식에 의해 각 t시점에서 를 모델링하도록 하자.
는 를 통해 번째 symbol까지의 전체 history에 대한 조건부 확률분포를 출력한다. 다르게 말하면, 각 t 스텝에서, RNN은 input symbol들의 history를 고려해 다음 symbol들을 예측하려고 한다.
RNN에 대한 많은 흥미로운 속성들과 특징들이 있다. RNN에 대해 더 관심이 있는 독자는 아래 논문들을 읽어보거나 혹은 다음 슬라이드를 확인해보길 바란다. my slides on how to use recurrent neural networks for language modeling.
- Graves, Alex. “Generating sequences with recurrent neural networks.” arXiv preprint arXiv:1308.0850 (2013).
- Pascanu, Razvan et al. “How to construct deep recurrent neural networks.” arXiv preprint arXiv:1312.6026 (2013).
- Boulanger-Lewandowski, Nicolas, Yoshua Bengio, and Pascal Vincent. “Modeling temporal dependencies in high-dimensional sequences: Application to polyphonic music generation and transcription.” arXiv preprint arXiv:1206.6392 (2012).
- Mikolov, Tomas et al. “Recurrent neural network based language model.” INTERSPEECH 2010, 11th Annual Conference of the International Speech Communication Association, Makuhari, Chiba, Japan, September 26-30, 2010 1 Jan. 2010: 1045-1048.
- Hochreiter, Sepp, and Jürgen Schmidhuber. “Long short-term memory.” Neural computation 9.8 (1997): 1735-1780.
- Cho, Kyunghyun et al. “Learning phrase representations using rnn encoder-decoder for statistical machine translation.” arXiv preprint arXiv:1406.1078 (2014).
- Bengio, Yoshua, Patrice Simard, and Paolo Frasconi. “Learning long-term dependencies with gradient descent is difficult.” Neural Networks, IEEE Transactions on 5.2 (1994): 157-166.
이 포스팅에서는 기계번역을 소개했고 어떻게 SMT가 기계번역의 문제에 접근했는지를 설명했다. SMT의 프레임워크에서, 어떻게 인공신경망이 전반적인 번역성능을 향상하는데 사용될 수 있는지를 보였다.
이 블로그 시리즈는 neural machine translation에 대한 최신 패러다음을 소개하는 것이다. 이 포스팅은 RNN의 두가지 중요기능에 집중하여 기초작업을 했다. :순서요약(Sequence summarization)그리고 순서에 대한 확률적 모델링(probabilistic modeling of sequences).
이 두 특징에 기초해, 다음 포스트는 RNN에 기초한 실제 neural machine translation system을 설명할 것이다. 또한 왜 GPU가 NMT(Neural Machine Translation)에 중요한지를 보일것이다.
'ML & DM > Deep Learning' 카테고리의 다른 글
Learning rate decay (0) | 2016.08.04 |
---|---|
BETTER COMPUTER GO PLAYER WITH NEURAL NETWORK AND LONG-TERM PREDICTION 1부 (0) | 2016.01.29 |