티스토리 뷰

1. Traditional Machine Translation (statistical)

기존의 classical machine translation 은 아무래도 statistics (다르게 얘기하면 co-occurrence frequencies)를 이용한 방법이 대부분이었다. parallel corpus 를 사용했다. 기존의 방법은 다양한 feature engineering 을 요구하는 방식이었다. 예를 들어 기본적인 machine translation system 은 1) alignment model 2) language model 3) re-ordering model 등이 필요하다. alignment 는 parallel corpus 에서 co-occurrence 를 기준으로 뽑아내는데 input sentence 를 align 할 때, 나눌 수 있는 chunks 의 길이도 다양하고 또  거기에 맞는 번역 options 들도 다양하기 때문에 하나의 문장 전체를 번역한다는 것은 수많은 possible paths 중에서 선택하는 거나 다름없다. 이를 위해서 beam search 등을 이용해서 최종적으로 최고의 번역 output 을 선택하기도 한다. 

식을 살펴보면 Bayes rules (조건부 확률에 관한) 에 의해서 다음과 같은 식을 도출할 수 있다. (French 가 source 언어이고, English 가 target 언어일 때) 


식에서 는 alignment model이 되고, 는 language model 이 되는거다.  


어쨌든 classic 한 방법의 machine translation 은 고도의 feature engineering 을 요구한다. 그래서 답은 "Deep learning 도와줘요!!"


2. Deep learning 을 이용한 machine translation 

보통 Deep learning 을 이용한 machine translation 은 encoder-decoder 구조를 가지고 있다. 모든 input 이 Encoder 를 통해 인코드 되고나면, 마지막으로 인코딩 된 부분으로부터 Decoder 가 차례대로 output 을 만들어낸다. 이 때, 이의 그림에서처럼 동그라미 쳐진 부분, 즉 인코더를 통해 만들어진 마지막 output 이 전체 input sentence 를 capture 하고 있는 것이다. 


Decoder 는 각각의 time step 에서 output 을 반환하는데,  vocabulary 에 있는 단어이거나 혹은 문장의 마지막을 나타내는 <eos> - end of sentence 를 반환한다. 이게 EOS 토큰이면 디코더는 output 을 반환하는 것을 멈춘다. 디코더의 top layer 는 softmax layer로, vocabulary 에 있는 단어들에 대한 probability 를 반환한다. 



이번 수업에서 자주 쓰는 게 위 이미지의 파이 표시인데, 의미하는 바는 괄호 안에 오는 각각의 식에 대해 업데이트 해야 할 associated weight 이 있다는 의미임. 

여기서는 최종적으로 1) previous hidden state 2) C 3) previous output 이다. 


우선 여기서 C 는 뭐냐! 위의 그림에서 보면 인코더가 마지막으로 output 한 vector ! 


그리고 궁금한 것은 왜 previous hidden state 만 고려하면 됐지 왜 previous output 까지 고려하느냐에 대한 건데, 여러가지 이유가 있지만 이렇게 하는 게 디코더가 같은 단어를 반복해서 produce 하지 않도록 돕는다고 한다. 




좀 더 모델을 향상시키기 위해서는 여러가지 layers 을 추가할 수도 있고 (3.), bidirectional encoder 를 사용할 수도 있고 (4.), input sentnece 의 word order 를 역으로 뒤집어서 encoder 로 보내는 방법이 있다. 4번과 5번 방법은 같이 쓰는게 아니라, 4번 혹은 5번을 쓴다. 


왜 그렇게 하냐고?? 아래의 그림을 보시오. 



하지만 그 어떤 modification 도 GRU 보다 더 성능을 향상시킬 수는 없지! Main improvement 을 위한 GRU 를 살펴보자.

3. Gated recurrent units


우선 GRU 의 핵심적인 부분부터 말하자면 gates 를 쓴다는 것인데, gate 가 차단기처럼 작용해서 어떤 information 을 어떤 layer 의 output 을 위해서 얼마나 쓸지를 결정함. Gates 를 씀으로써 long depencies 에 있는 단어들까지 잘 catch해 낼 수 있다! 



GRU 에는 우선 update gate 와 Reset gate 가 있다. 위의 수식에서 좀 더 주의 깊게 볼 2가지는 
1) 각 gate 의 활성함수가 시그모이드 함수이다. 즉 0~ 1 사이의 값을 반환한다. 
2) 각 gate Weight 들의 위첨자는 (z, r) 그냥 각각의 gate 과 associated 된 weight 이라는 것을 의미한다.


하나의 GRU (unit) 이 어떻게 이루어졌는지 보자! 여기서 왜 이걸 unit 이라고 하나면 Deep neural network 에서 여러 개의 layers 를 사용하는 것처럼 GRU 도 여러 개의 겹을 쌓을 수 있는데, GRU 나 LSTM 에서는 layer 를 unit 으로 표현한다. 


하나의 GRU 를 이루는 것들에는 뭐가 있을까?

1) Update gate 

2) Reset gate 

3) New memory content

4) Final memory 


우선 Update gate 랑 Reset gate 는 각각 new memory content 와 Final memory 를 계산하기 위해 필요함. 

위의 그림의 수식에서 New memory content 를 보면, update gate 가 previous hidden state 와 element-wise 곱을 이루는 것을 볼 수 있다. 이게 의미하는 바가 뭐냐면, update gate 가 0이 되면 new memory content 를 계산하기 위해서 previous hidden state 을 완전히 무시하는 것이다. 


그리고 Final memory (=current hidden state) 에서 쓰이는 reset gate 를 보자. Reset gate 가 1이면 previous hidden state 를 많이 고려하고, current memory content 는 무시하는 것이다. 


각각 update gate 와 reset gate 의 효용을 실제 task 에서의 예와 함께 살펴보자. 

주어진 task 가 movie comment  에 대한 sentiment analysis 라고 할 때, 어떤 movie comment 가 "이 영화에서 순이나 준이는 서로 사랑하는 사이로 나온다. 그들은 불우한 가정환경을 가지고 .... . 굉장히 지루한 영화였다." 라고 하자. 이전에 나왔던 words 는 단순히 스토리를 설명하기 위한 것이고 실제로 sentiment analysis 에 중요한 부분은 '지루한 영화' 였다는 것이다. 이 경우 update gate 를 0에 가깝게 해서 current step 에서의 classification 을 위해 past 를 완전히 무시하면 된다. 


반대로 "이 영화 진짜 최고야! 일단 도입부에서 순이와 준이가 만나서 사랑을 키워가는데, 서로 불우한 가정환경..." 과 같이 처음에 이미 이 영화에 대한 평이 나오고, 그 나머지는 sentiment 와 상관없는 스토리 설명이다. 이 경우 reset gate 를 1에 가깝게 해서 previous hidden state 를 가지고, 현재의 current memory 는 무시해버리면 된다. 


사실, reset gate 와 update gate 을 왜 2가지를 쓰냐. 서로 같은 일(?)을 하는 거 아니냐고 생각할 수 있는데, 각각 new memory content 에서의 previous hidden step 과 Final memory 에서의 previous hidden state & current memory content 의 영향력을 조절하는 것이다. 


4. Long-short-term-memories 



공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
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
글 보관함