What does tf.nn.conv2d do in tensorflow?

http://blog.naver.com/PostView.nhn?blogId=suyoung515&logNo=90125266472

분산과 평균과의 관계 설명 

제평평제  

https://stats.stackexchange.com/a/52699

Random state (Pseudo-random number) in Scikit learn

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에 대해 같은 거리에 있게 조정 한다.