https://www.youtube.com/watch?v=w6yYXzC6tRw&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI&index=23

RNN W3L01 : Basic Models

image

번역 알고리즘은 squence to squence model 의 대표적 사용 예이다. 

image

번역 알고리즘은 image captioning 알고리즘과 유사하다. 


https://www.youtube.com/watch?v=5lMjCjjZPtQ&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI&index=24

RNN W3L02 : Picking the most likely sentence

image

상단은 일반 language model을 보여주고 있다. 번역 알고리즘은 원문장 (condition)이 있을때 발생할수 있는 번역된 문장의 확률을 확인한다는 점이 다르다.  

image

이 강의에서는 원문장이 불어이고 번역 타겟 문장이 영어인 경우를 설명하고 있다. 

image

network를 거치면서 각 단계에서 그 순간 최고의 확률을 가지는 단어를 하나씩 순서대로 찾아가는 방법을 greedy search라고 한다. 이 방법의 경우 그림 하단에서 처럼 일반적으로 자주 사용되는 단어로 번역하려는 성향을 가지는 문제를 가지게 된다.


https://www.youtube.com/watch?v=n8x_Qh60D5E&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI&index=25

RNN W3L03 : Basic Search

heuristic search라고 부르기도 한다. 가장 높은 확률의 몇몇 번역 후보를 계속 유지하면서 최고의 번역을 얻는 방법이다.

image

위의 그림은 beam width가 3인경우이며 이 경우 가장 높은 확률의 번역 3개를 뽑는 과정을 반복하게 된다. 

image

맨처음에 가장 높은 확률로 뽑은 단어중에 다음 단계에서 다른 단어에의해 뽑힌 다른 단어보바 확률이 떨어지면 처음 뽑혔던 단어라도 제거된다. 위의 그림에서는 semtember가 제거되었다. 확률이 높은지 낮은 지를 확인할때는 conditional probability를 이용한다. ( 위그림 중간 )

image

beam width가 1인경우 greed search라고 할수 있다.


https://www.youtube.com/watch?v=DSQ6ByxGuqw&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI&index=26

RNN W3L04 : Refinements to Beam

beam search를 사용하는데 보다 효과적으로 사용하기 위한 약간의 변형을 설명한다.

image

여러 단어가 연속적으로 선택되기 때문에 연속된 conditional probability의 곱으로 표현된다. 확률은 1보다 작은 수이기 때문에 연속해서 곱하게 되면 그 수가 매우 작아 지게 된다. 그래서 문제가 발생할수 있는데 이를 해결하기 위해 곱연산이 덧셈으로 전환되는 log를 이용하게된다. 또 각 단어의 평균 확률을 구하기위해 총 단어수인 Ty로 나누어 주게 된다. 또 alpha power를 이용해 부드럽게 그 효과가 부드럽게 적용이 되게해서 사용하기도 한다. 

image

beam갯수가 많으며 좋은 결과를 얻을수 있지만 속도가 느리게 된다. 또 beam 갯수가 작으면 좋은 결과는 얻을수 없지만 속도가 빨라지게 된다. 

beam의 갯수가 1000까지 가는 경우는 드물다.


https://www.youtube.com/watch?v=Ypnh5h1gbLU&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI&index=27

RNN W3L05 : Error Analysis in Beam

일반적인 번역하는 알고리즘은 RNN과 beam search으로 구성되는데 어느 부분이 취약한지를 확인하는 방법을 설명하고 있다.

image

P( y | x) 는 RNN에서 계산하는 부분이다. 실제 사람이 번역한 문장 y* 과 번역 알고리즘이 최종적으로 만들어낸 문장 y hat의 P()을 얻고 이를 비교한다. 

image

P( y* | x) 값이 P( y hat | x) 보다 큰경우 RNN은 제대로 작동하나 Beam search가 잘 안되고 있다는 것을 뜻한다. 

image

여러문장을 통해 P( y* | x)과 P( y hat | x) 를 비교해서 최종적으로 어느 부분이 취약한지 알아 낼수 있다. 


https://www.youtube.com/watch?v=9ZvTxChwg9A&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI&index=28

RNN W3L06 : Bleu Score (Optional)

Bilingual evaluate understudy

이는 얼마나 번역이 잘 되었는지를 평가하는 기준이 될수 있다. 번역의 경우 정답이 하나가 아니고 여러개가 있을수 있다는 점에 유의한다.

image

위 그림은 unigram 을 이용한 방법이다. machine translation의 각 단어별 등장횟수의 합이 분모가 된다. 정답 ( 사람이 번역한 정답 )들의 각 문장에서 기계가 번역해서 나온 문장의 단어 하나하나가 몇번씩 나오는지 확인한다. 이때 횟수 최대값은 정답 문장중 최대로 많이 나온 횟수가 top cap이 된다. 위의 예시의 경우 ref 1에서 최대 두번 등장했으므로 top cap은 2가 된다. 그러므로 count clip 값은 2가 된다. 

image
image

정답 문장안에 machine이 번역한 문장의 2단어 각각 부분이 등장한 횟수 (단 각문장의 top cap 갯수를 고려) 의 총합을 구하고 이를 machine 번역문의 각부분의 총합으로 나눈다. 

image

P1, P2, P3… 각각의 값이 같다는 것은 번역한 문장이 정답문장에 매우 근접했다는 뜻이다.

기계의 번역문이 짧을 수록 bleu score가 크게 나올수 있으므로 이에 대한 보완책으로 BP를 사용한다. 


https://www.youtube.com/watch?v=LLJmFO6KPBk&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI&index=29

RNN W3L07 : Attention Model Intuition

image

일반 RNN의 번역의 경우 파란색 그래프처럼 문장이 아주 짧거나 문장이 길어질수록 그 성능이 떨어지게 된다. 문장이 길어지질수록 성능이 떨어지는 것을 보완하는 방법으로 attention model을 들수 있다.

image

전다계에서의 결과값과 forward a<t>, backward a<t>의 종합으로 alpha값이 결정된다. 


https://www.youtube.com/watch?v=FMXUkEbjf9k&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI&index=30

RNN W3L08 : Attention Model

image

시간단계가 총 t 개 있는 경 alpha <1 , t> 를 1 – t 까지 다 더한 값은 1이된다. (중간 오른쪽 쪽) . C는 context 값이며 이는 모든 alpha 1 – t 까지와 a 의 곱으로 구해진다. 

image

exp는 자연로그값을 구하는 함수이다. 

image

attention 값 alpha를 구하기 위해서는 softmax값을 구해야 한다(모든 시간단계에 대한). 그러기 위해서 a<t> 와 s<t-1>를 이용한 새로운 small neural network를 이용한다. (좌측하단) 그래서 Tx * Ty 만큼의 작업이 더 필요하게 되는 것이며 이는 단점중의 하나이다.


https://www.youtube.com/watch?v=OXFZYChtYko&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI&index=31

RNN W3L09 : Speech Recognition

image

위는 일반적인 speech recognition의 알고리즘을 보여준다.

image

ctc cost 를 이용한 방법을 보여주고 있다. 


https://www.youtube.com/watch?v=Ky2qMDfkLqk&index=32&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI

RNN W3L10 : Trigger Word Detection

https://www.youtube.com/watch?v=hjx-zwVdfjc&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI&index=13

RNN W2L01 : Word Representation

image

위 그림은 특별히 features (각 단어의 특성)이 적용되지 않는 one hot vector의 모습이다.

image

이 강의에서는 300개의 특성을 각 단어마다 부여했다.

image

t-SNE를 사용해서 300개의 특성을 단순화해서 2d 면에서 단어간의 관계를 보여 주고 있다. 


https://www.youtube.com/watch?v=Qu-cvY4HP4g&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI&index=14

RNN W2L02 : Using Word Embeddings

image

orange 와 apple, durian은 비슷한 featurized 단어이며 farmer, cultivator도 같은 부류의 단어이다. 그러므로 문장 첫 두 단어가 사람이름을 추측할수 있다. 다른 외부 의 수많은 자료를 통해 위와 같은 관계의 일반화된 규칙을 만들어 찾아낼수 있고 이를 다시 작은 프로젝트에 이용할수 있는데 이를 word embeddings이라고 한다.

image
image

face verification에서 사용했던 encoding과 word embedding은 거의 같은 개념이다.


https://www.youtube.com/watch?v=upto_vdrXFI&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI&index=15

RNN W2L03 : Properties of Word Embeddings

image
image

sim은 두 벡터의 유사성을 계산하는 함수이다. 두 벡터간의 거리를 측정하는 유클리드 기하학을 이용한 거리 측정 방법, 코싸인 유사도를 이용할수 있다.

image

위와 같은 알고리즘으로 word emebedding에 필요한 단어간의 유사성을 찾아낼수 있다. (우측 내용과 같은)


참고자료) cosine similarity

https://www.youtube.com/watch?v=if6tjHAT6iM

image
image
image

money money money…. 의 문장과 money money laundering이 서로 더 유사하다고 볼수 있지만 벡터의 특성상 유클리드 기하학을 이용한 방법은 이를 알아 내지 못한다.  

image
image
image

문장에 각단어의 횟수가 각 dimension에 대응하는 좌표가 되므로 그 값이 음수가 될수 없으며 최소값은 0이다. 


https://www.youtube.com/watch?v=VkjSaOZSZVs&index=16&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI

RNN W2L04 : Embedding matrix

image

embedding matrix는 vocabulary에 있는 모든 단어에 대한 features값들이 있는 matrix이다. 이를 사용하는데 vector곱을 통해 가져오는 방법을 보여주고 있다. 그러나 실제로는 한단어에 대한 feature 칼럼에 접근해서 칼럼을 쭉 아래로 한 줄 가져오면 된다. 


https://www.youtube.com/watch?v=xtPXjvwCt64&index=17&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI

RNN W2L05 : Learning word embeddings

이 강의에서는 문장 빈칸에 들어갈 알맞은 단어를 고르는 문제를 다루고 있다.

image

처음부터 끝까지의 모든 단어를 가지고 예측할수도 있지만 간단하게 마지막 4단어를 이용해도 좋은 결과를 낼수 있다.

image

4단어를 이용하기도 하지만 때로는 앞4, 뒤4 단어를 함께 보기도 한다. 마지막 1단어 , 근처의 한단어를 보기도 한다. 


https://www.youtube.com/watch?v=jak0sKPoKu8&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI&index=18

RNN W2L06 : Word2Vec

Word2Vec skip grams에 대해서 설명한다

image

한 단어를 context 단어로 선정하고 그 단어를 중심으로 일정 크기 window안에서 ( 근처 5단어, 근처 10단어 내에서)  무작위로 단어를 뽑는다. 

image

Oc는 one shot vector이며 E는 embedding matrix이다 이들의 곱으로 ec를 구한다. 그리고 이를 softmax에 넣어 결과를 얻는다. 

image

Word2Vec skip grams의 단점은 10,000 vocabulary는 괜찮을지 모르나 그 크기가 커지면 속도에 문제가 생긴다. 시그마 과정때문에 속도가 느려질수 있으므로 전체에 대해 합을 구하지 않고 일부만 하는 방법으로 단점을 극복할수 있다. 오른쪽 참조

context 단어를 선정할때 무작위로 해도 좋지만 자주 등장하는 단어에 너무 자원이 집중되지 않도록 고려해야 한다. 

 참고자료) word2vec https://www.youtube.com/watch?v=64qSgA66P-8


https://www.youtube.com/watch?v=vYTihV-9XWE&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI&index=19

RNN W2L07 : Negative Sampling

image

이 강의는 문장의 빈칸에 들어갈 알맞은 단어를 찾는 알고리즘에 대해 이야기 한다.

우선 context단어의 바로 인접한 단어에는 1을 배정한다. 그리고 임의의 k 개 만큼의 상관 없는 단어를 뽑아 0을 배정한다. 이때 이 단어가 skip grams의 window에 있는 단어라도 상관없다. 그냥 0을 배정한다. k의 갯수는 vocabulary sample data set이 작은 경우 5 -20 큰경우에는 2-5로 한다. 

image

일반 word2vec 에서 softmax를 이용해서 해당 단어만의 vector (theta weight)을 얻는 것이 목적인데 이는 너무 많은 자원을 소모한다. 그러므로 그 대신에 간단한 sigmoid를 이용한다. 

E는 features 값들이 있는 matrix이다. 

theta t 는 target 단어의 features vector이다.

image

negative sample을 선정하는데 일반문장에 많이 등장하는 단어 감안해서 뽑는 방법에 대한 설명이다. 

glove 에 대해서는 나중에 다시 확인이 필요하다.

https://www.youtube.com/watch?v=yjm19W5QDtA&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI&index=20

RNN W2L08 : GloVe word vectors

stanford RNN 강좌에서의 glove 내용 부분

 https://youtu.be/ASn7ExxLZws?t=2294

모두의 연구소에서 설명한 내용 in korean

https://www.youtube.com/watch?v=uZ2GtEe-50E&list=PLWKf9beHi3Tg50UoyTe6rIm20sVQOH1br&index=28


https://www.youtube.com/watch?v=5aNUPwtuL5I&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI&index=21

RNN W2L09 : Sentiment Classification

데이터를 통해 사람의 감정상태를 예측, 분류하는 작업을 sentiment classification이라고 한다.

image

sentiment classification의 단점은 데이터의 갯수가 대체로 적다는데 있다. 10000 – 100000 단어수 정도로 적으며 때로는 더 적을수도 있다.

image

위위그림에서의 문제를 많은 수의(100 billions 정도) 데이터를 이용해서 만든 words embeddings를 이용해서 해결할수 있다. 위의 그림은 단순히 단어 각각이 가진 features값들을 더하거나 평균내서 예측값을 뽑아내는 간단한 알고리즘이며 이런경우 좋지 않은 의미의 문장 안에서 사용된 좋은 의미의 단어 ( 위의 예시에서는 good ) 사용마저도 사람이 좋게 표현하고 있다고 잘못 판단할수 있다. 이를 해결하게 위해서는 RNN을 사용한다.  

image


https://www.youtube.com/watch?v=fg8ijSPHyx0&index=22&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI

RNN W2L10 : Debiasing word embeddings

편견이 들어있는 데이터를 통해 학습된 model은 편견을 가지게된다.

image
image

이 강의에서 각 단어는 300개의 features를 가지고 있다. 2단계에서는 편견이 들어있는 1 dimension feature를 찾아서 그 부분의 값을 neutralize한다.  

image

neutralized feature 값이 반영된 특정단어에 대해 다른 단어들을 조정한다. 여기의 예시에서는 grandfather와 grandmother가 babysitter에 대해 같은 거리에 있게 조정 한다. 

https://www.youtube.com/watch?v=efWlOCE_6HY&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI

RNN W1L01 : Why Sequence Models

RNN의 사용예시를 보여준다.

image


https://www.youtube.com/watch?v=XeQN82D4bCQ&index=2&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI

RNN W1L02 : Notation

image

(i) 는 example number이다. <t> 는 한 example에서 몇번째 단어인지를 나타낸다. T (i) x 는 i example에서의 총 단어수 이다.

image

30000 ~ 50000 vocabulary 수가 일반적인 비즈니스에서 사용된다. 때때로 1 mil이 사용되기도 한다. vector옆 숫자는 vocabulary 목록에서의 인덱스 번호이다. 


https://www.youtube.com/watch?v=2E65LDnM2cA&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI&index=3

RNN W1L03 : RNN Model

image

위 그림은 왜 일반 neural network를 사용할 수 없는지를 설명한다.

image

오른쪽 다이어그램과 왼쪽 다이어그램은 같은 내용이다. 다만 왼쪽은 과정을 풀어서 설명한 것이다.waa는 전단계의 a값에 곱해져서 이번단계의 계산에 사용되는 weight이며 a1, a2, a3…. 등에 쓰이며 모두 같은 값이다. wax는 입력값에 적용되는 weights이며 여러군데에서 사용되는데 모두 같은 값이다. wya는 해당 layer에서 출력되는 값을 구하기 위해 사용되는 weights이며 여러군데에서 사용되는데 모두 같은 값이다. 이 강의에서 Tx와 Ty는 같다고 가정한다. 일반 RNN의 단점으로 전단계의 정보는 이번단계에서 사용될수 있지만 나중에 오는 정보를 이번 단계에서 사용할수 없다는 것을 들수 있다. 이를 해결하기 위한 방법으로 bidirectional RNN을 사용한다. 

image

a 값을 위한 g 함수로 tanh, ReLU를 사용하는 경우가 많다. y값의 경우는 sigmoid를 사용하는 경우가 많다. 

image

waa와 wax를 합쳐서 wa matrix를 만들었다. 전체적인 vectorization을 보여주고 있다.


https://www.youtube.com/watch?v=esgbmJ6SnSY&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI&index=4

RNN W1L04 : Backpropagation through time

image

빨간선인 back prop 과정을 보여준다. 가장 중요한 부분은 빨간 동그라미 부분이다. loss fucntion은 logistic regression과 같다. 각 layer에서 나오는 y hat value와 실제 값을 비교해서 얻어진 loss의 총합이 최종 cost가 된다. 이 과정을 backpropagation through time이라고 한다.


https://www.youtube.com/watch?v=G5kW3V6qHuk&index=5&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI

RNN W1L05 : Different types of RNNs

image
image
image

many to many의 경우 Tx와 Ty의 수가 같은 경우와 다른 경우가 있다. 


https://www.youtube.com/watch?v=1rOCxV0fSyM&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI&index=6

RNN W1L06 : Language Model and sequence generation

image

이 강의 에서 P() 는 () 안의 문장이 실제로 사용될수 있는 확률을 알려준다. 

image

각 단어 하나 하나를 하나 하나의 y<>로 구분한다. 이를 tokenize한다고 한다. 문장끝은 <EOS> token으로  생각한다. 문장 부호도 token으로 생각하는 경우가 있다. 기존의 vocabulary에 없는 단어의 경우는 <UNK> token으로 치환한다.  

image

우측 하단은 각각 단어별 가능 확률의 곱으로 확률이 만들어 짐을 확인한다. 두번째 단어이후로는 conditional probability인 것을 확인한다.


https://www.youtube.com/watch?v=CKrxdgqBheY&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI&index=7

RNN W1L07 : Sampling novel Sequences

image
image

character level model의 경우 더많은 자원을 필요로 하며 앞쪽의 글자의 영향력이 뒤쪽에 잘 전달되지 않는 문제가 있다. 


https://www.youtube.com/watch?v=3Hn_hEPtciQ&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI&index=8

RNN W1L08 : Vanishing gradients with RNNs

image

network가 너무 깊거나 RNN의 경우 초반부의 내용이 뒷부분에 영향을 주지 못하는 문제를 가지고 있다. 

RNN과 많은 layer를 가진 network의 경우 vanishing gradient, exploding gradient 문제에 취약하다. exploding gradient의 경우 결과중에 NAN 값으로 표현되는 경우가 많아서 인지 하기가 쉬우며 clipping gradient를 통해 손쉽게 해결이 가능하다. 그러나 vanishing gradient의 경우 찾아내기 쉽지않다. 해결 방법으로는 gated recurrent unit GRU를 사용하거나 LSTM을 사용해 해결한다. 


https://www.youtube.com/watch?v=xSCy3q2ts44&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI&index=9

RNN W1L09 : Gated Recurrent Unit GRU

image

위 그림은 일반 RNN의 모습을 보여준다.

image

왼쪽 상단의 다이어그램의 보라색 박스와 오른쪽 수식의 보라색 대괄호는 같은 내용이다. 보라색 부분을 보면 GAMMA u의 값이 0이면 전단계의 C<t-1> 그대로 유지되고 값이 1이면 새로운  tilda C<t> 의 값이 저장된다. GAMMA u 값이 스위치 역활을 하게 된다. C<t> 와 tilda C<t> 와 GAMMA u 는 모두 같은 사이즈의 vector이며 보라색 박스 안에서 * 연산은 elementwise 연산이 된다. 

image

기존의 GRU에서 좀더 확장된 알고리즘이며 보다 많이 사용된다. GAMMA r은 relevance gate이다. 이와 비슷한 역할을 하는 알고리즘으로 LSTM을 들수 있다. Full GRU 설명하는데 수식 왼쪽의 notation이 대신 사용되기도 한다. 


https://www.youtube.com/watch?v=5wh4HWWfZIY&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI&index=10

RNN W1L10 : Long Short Term Memory (LSTM)

image
image

gates 계산에 C<t-1>을 넣어서 하는 경우도 있는데 이를 peephole connection이라고 한다. LSTM가 GRU보다 먼저 개발된 알고리즘이다. LSTM은 gate 가 GRU보다 많기 때문에 자원소비가 좀더 있지만 좀더 강력하고 유연하다. LSTM은 보다 간단하기에 대형 network 제작에 좀더 유리하다. 전반적으로 LSTM을 좀더 사용하낟. 


https://www.youtube.com/watch?v=bTXGpATdKRY&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI&index=11

RNN W1L11 : Bidirectional RNN

기본 RNN의 경우 전단계의 데이터가 현단계에 적용될수 있지만 이후단계의 정보는 적용될수 없다. 이를 보완 하기 위한 방법으로 Bidirectional RNN를 사용하며 일반 RNN, LSTM, GRU에 사용될수 있다.

image
image

단하나의 순환 단계가 없는 acyclic graph 형태이다. y hat <3>를 계산하는경우 노란색의 방향으로 계산된다. x<1>  , a-><1> , x<2>  , a-><2> 와 반대방향으로 부터에서의 x<4>  , a-><4> 가 같이 들어와서 상단 수식에 의해 계산된다.  


https://www.youtube.com/watch?v=U7wN1x8zsG8&index=12&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI

RNN W1L12 : Deep RNNs

기존의 RNN보다 층이 여러층으로 늘어났다. 각 층은 세로 가로로 연결되어 있다. 

보통은 3층(가로로도 연결된 층)을 초과해서는 만들지 않는다. 하단부에 가로 세로로 연결된 층을 만들고 상단부에는 세로로만 쌓여있는 network를 만들기도 한다.  

Understanding LSTM Networks — colah’s blog