티스토리 뷰
1. Traditional Machine Translation (statistical)
식에서 는 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 (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
'NLP > CS224n' 카테고리의 다른 글
[CS224n]Lecture11.Further topics in NTM and Recurrent models (0) | 2019.06.24 |
---|---|
[CS224n]Lecture10. MT with deep learning/ Attention mechanism (0) | 2019.05.29 |
[CS224n] Lecture8. RNN and language model (0) | 2019.05.11 |
[cs224n]Lecture 6. Dependency parsing (0) | 2019.05.06 |
[CS224n] Lecture 4. Word window classification and neural networks (0) | 2019.04.29 |
- Total
- Today
- Yesterday
- transformer
- neural network
- word embedding
- 워터마킹
- 언어모델
- GPTZero
- Elmo
- neurone
- LM
- weight vector
- 벡터
- 뉴럴넷
- 뉴런
- cs224n
- Pre-trained LM
- Bert
- Neural Language Model
- Statistical Language Model
- nlp
- Attention Mechanism
- language model
- Contextual Embedding
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |