티스토리 뷰
Sequence to Sequence Learning with Neural Networks
Machine Translate와 같은 자연어 처리 분야에 관한 연구가 진행되며 Seq2Seq는 기계 번역에 대하여 새로운 접근 방식을 제공한다. 이전의 Machine Tranlslate에서는 Phrase-by-Phrase(구문 대 구문)으로 번역을 진행하였기 때문에 '문법'에 의존하였으며 언어학자들의 역할이 컸다. Deep-Learning에 의한 새로운 접근법을 알아보자.
Sequence-to-Sequece
시퀀스란 연관된 연속의 데이터를 의미한다. 문장(Sentence)는 일련의 연속된 단어(Word)들의 표현으로 이루어 져있으며 좋은 시퀀스의 예이다. Clustering과는 다른 개념이며, Input Data를 문장과 같은 일련의 Sequence로 해석하는 것을 가능하게한다. 일반적으로 Seq2Seq는 Input Data의 처리를 위한 Encoder, Output Data 출력을 위한 Decoder로 나누어진다.
Introduction
초기 DNN에 의한 언어 학습은 우수한 성능에도 불구하고 Input, Target Data의 벡터들이 고정된 차원, 정해진 길이에서만 학습되었고 별도로 Encoding 후 사용가능하였다. 대부분의 문제들은 차원, 길이가 다양하고 고정되어 있지 않기 때문에 이러한 한계점은 매우 중요했다.(Training Parameter들이 고정되어 있어 Data 전처리, Output 형식이 제한되었다는 뜻.)
LSTM을 응용한 아래의 모델은 이러한 문제를 해결할 수 있다. Input Data는 LSTM에 의해 Time stamp에 따라 다차원 벡터로 변화되고, 다음 cell의 Input으로 변환된다. 장기 의존성 문제를 가진 Seq2seq 모델에서 LSTM은 당연한 선택이된다. 가변 길이의 입력 문장을 고정 차원 벡터 표현으로 매핑하는 것을 배우게 된다.
Encoder부분에서의 RNN은 Input Data들에 대하여 RNNLM의 단어 사전과 같은 Context Vector을 만들며, Input Data Vector들에 대해 최적의 Mapping을 하도록 학습된다.(Our approach is closely related to Kalchbrenner and Blunsom [18]who were the first to map the entire input sentence to vector, and is related to Cho et al. [5])
확률론적 Embedding 방법의 연장선으로 봤을 때, Continuous Sequence가 LSTM을 순회하며 통과한다면 Time step에 따른 정보를 기억하고 되고, 다음 Time step에서 가장 높은 확률값을 가진 Output을 출력하게 되며, 이들이 Sequence로 표현된다고 생각할 수 있다. 여기서 장기 종속성 문제의 방지하기 위해 LSTM에 Input Data를 역순으로 처리하여 해결하였다는 내용도 있는데 뒤 쪽에서 간단하게 설명하겠다.
위 그림에서 Encoder의 Input은 'ABC'이며 Decoder Input은 'WXYZ'가 된다.
Model
RNN에서의 input (x1,x2,x3,...,xt)(x_1,x_2,x_3,...,x_t)에 대하여 output (y1,y2,..,yt)(y_1,y_2,..,y_t)은 위와 같다. 정해진 크기의 Input,Output Vector를 이용하여 Mapping을 하게된다. RNN 특성 상 Step마다 Input, Output이 발생하여 서로간에 길이가 제한될 수 밖에 없는데, 이러한 RNN을 Input Sequence~fixed sized vector(Encoder)과 fixed sized vector~Output Sequence(Decoder) 2개를 두어 입출력의 길이에 대해 유연성을 더한다. Padding을 적용할 수 도 있지만 매핑과 변환을 담당하는 Vector을 따로 생성함으로써 효율을 높인 것 같다.
Input Lenght인 T와 Output Length인 T'는 서로 다를 수 있다. LSTM의 목적은 iput(x1,x2,..,xT)iput(x_1,x_2,..,x_T)에 대하여 최고 확률의 (y1,y2,..,,yT′)(y_1,y_2,..,,y_T')를 구하는 것이다. 이때 output yty_t는 매 step의 v벡터와 yty_t의 softmax로 구해진다. 'ABC'에 의해 생성된 Vector을 통해서 'WXYZ' 의 조건부 확률을 높이는 것이다.
논문에서는 실제 실험 시 LSTM층을 4개를 stack하여 진행하였는데 얕은 Model보다 깊은 Model에서의 성능이 뛰어남을 발견했다고 한다. 또한 a,b,c의 output 에 대응되는 a,b,ca,b,c에 있어 a,b,c를 역순으로 변환하여 (c,b,a) ~ (a,b,c)(a,b,c)로 진행하였다. 대응하는 Input, Output의 거리를 가깝게 해줌으로써 장기 의존성 문제에서 높은 효율을 보였다고 한다.
Decoding & Restoring
정답의 확률을 계산할 때에 loglog를 적용하여 값을 극대화하는 방법을 사용하였다. training set 입력 문장 S에 대해 번역된 T에 대한 확률을 다음과 같다.
test set에 대한 output T'는 조건부 확률이 최대인 값을 사용한다.
Reversing
모호하게 넘어갔던 Reversing에 대한 설명이 나온다. Input Data를 Reversing 하였을 때 성능이 증가한 것에 대하여 명확한 근거는 찾지 못하였다고 한다. (a,b,c)~(a,b,c)(a,b,c) 에서 대응되는 Input, Output과의 거리보다 (c,b,a)~(a,b,c)(a,b,c) 로 Reversing 하였을 때 대응되는 Input,Output의 평균거리가 증가하지 않고, Decoder부분의 처음 몇 단어는 Encoder의 마지막에 들어온 값이랑 유사하기 때문에 시간 종속성 문제가 크게 감소하여 성능 향상에 도움이 되는것 같다고 한다.
*역순에서 좋은 효율이 나온 것은 문장의 어순과 상관이 있다. 번역 기능에서 영어,독일어,프랑스어 등은 어순이 비슷하여 영어 'a b c d' 의 문장을 번역하면 'A B C D'와 같이 비슷한 의미를 가진 단어들이 비슷한 순서로 나열된다. Input에서 a는 Output A와 대응될 확률이 높기 때문에 a를 Input의 가장 마지막에 넣음으로써 Output의 가장 첫번째 출력이 되는 A와의 거리를 좁혀주는 것이다.
한국어-영어 의 번역을 하는 모델을 생성할 때에는 Input에 역순을 취하는 것이 좋은 효율을 나타낼 것이라고는 생각할 수 없다. 역순을 취하는 방법은 매우 제한적이며 특정 상황에서만 효율을 증대시킨다.(논문내용은 아닙니다.)
Analysis
2-dimensional PCA를 활용해 시각화 하였을 때, 이믜가 유사한 문장들끼리 클러스터링 되어있는 것을 확인 할 수 있다.
문장의 길이가 35단어 미만일 때 성능이 지속적으로 증가한 것을 알 수 있으며 등장하는 단어의 평균 횟수에 따라 성능이 하락하는 것 또한 알 수 있다.
Conclution
- 문장 구조에 대하여 사전 지식이 없이 학습을 하여도 우수한 성능을 확인 할 수 있다.
- Reversing Data를 사용하여 훨씬 우수한 결과를 도출하였다.
- LSTM 을 이용하여 장기 종속성 문제를 해결할 수 있었다.
- 정교하게 모델링되지 않은 모델을 사용하였지만 phrase-based SMT보다 우수한 성능을 보여 앞으로 많은 발전이 기대된다.
- (역주)Encoder,Decoder을 분리하여 Input,Output 종속성을 줄이고, Context Vector을 사용하여 Mapping하는데에 효율을 높였다.
seq2seq의 초반기 논문을 분석하였다. bidirectional RNN, Attention을 포함하여 어떠한 방향으로 발전하였는지 알아봐야겠다.
원문
Sequence-to-sequence-learning-with-neural-network
참고
Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation
아직 보지는 못하였지만 GRU, LSTM 등 셀 내부 연산에 대하여 자세히 다루고 있는 것 같다
*부족한점, 틀린점이 있다면 댓글달아주시면 정말 감사드리겠습니다.
≡- Total
- Today
- Yesterday
- style transfer
- Computer science
- signal
- Rolling
- database
- TensorFlow
- deep learning
- VPN
- numpy
- filter
- PYTHON
- Machine Learning
- tacotron
- pandas
- butterworth
- scipy
- 터널링
- AWS
- detrend
- IRR
- FFT
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |