06.02 일지-light
진행상황(CS)
- 선형대수(Eigenvalue/Eigenvector/EigenSpace/Eigenvalue Matrix 등등.. )
- 딥러닝 수업(RNN(Recurrent Neural Network) - NLP(Natural Language Processing) 개요)
앞으로 계획
- 주말에 운영체제 과제 RCU보고서 5페이지까지 작성
- 주말에 선형대수 Eigen & Symmetric까지 이해
- 주말에 운영체제 진도(I/O device, deadlock) 정리
너무 비어보여서 딥러닝 수업시간에 정리한 것으로 채워보겠습니다 ㅎㅎ
14주차 정리
NLP key concept
지난 시간에 1 hot vector → language model을 사용했었는데
1 hot vector 보다 좋은 representation? - Word embeddings
Word to vector 중 Skip-grams
limitation 해결 접근법 알아보기 → Sentiment classification
Conditional language model = 예: 프랑스어 → 영어문장
: sequence를 다루다 보니 sequence to sequence 모델
& 효율성을 위한 Beam search
Word representation
: n개의 단어를 가진 사전을 만들어 놓고, n개의 dimension을 가지는 벡터로 모든 단어를 표현할 수 있다.(1 hot = 1개의 1 나머지는 0), Man(O_5391 notation)
how to generate sentence?
I want to a glass of orange _.
I want to a glass of apple _.
→ training set에 apple은 없었다면?
training 에서 orange와 apple 사이의 유사성이 표현되어야 만들어낼 수 있다.
⇒ 1hot vector를 사용하면 단어간의 비슷하고 다른 정도를 알기 힘들다
일반적으로 dot product로 유사성을 표현한다.
조금이라도 달라지면 어려움이 있다.
⇒ word representation 자체가 고유 의미를 인코딩할 수 있으면 좋겠다.
Featurized representation: word embedding
: category 별로 값들을 처리 = 단어가 가지는 고유성에 대한 값들을 매긴다.
Visualizing word embedding
: 군집화 ~ 300 dimension space → 시각화 알고리즘 t-sne
→ 사전을 미리 만들어져있으면 좋겠다 = transfer learning의 영역
Named entity recognition example
: bidirectional RNN → Name에 값을 1로 세팅
Sally Jonhson is an orange farmer
Robert Lin is an durian cultivator
back 과정에서 이름을 결정했다면, 유사성을 보이는 단어를 쓰더라도 비슷하다.
: 1 hot vector로 쓰기엔 엄청 많은 데이터를 필요로 한다…
durian cultivator와 같은 아예 training set에 없었을 수 있는 그것을 처리하기 위해서 위의 word embedding이…
Transfer learning and word embeddings
: pre-trained 된 word embedding을 다운받아서 처리
- Learn word embeddings from large text corpus (1-100B)
- Transfer embedding with smaller training set(100k) → 내가 가지고 있는 training set으로 업데이트하기 위해 조금 바꿔서 fine tuning해서 쓸 수도 있다.
- Optional: Continue to finetune the word embedding → 목적에 맞게 적용시킬 수 있다.
: transfer learning에는 Name entity recognition, parsing, summary에 유용하다.
machine translation or generating 에서는 뭉치를 가지고 transfer learning을 하기보단 테스트를 위해 모은 데이터의 활용도가 높음. 목적으로 모은 쪽이 더 큰 편이기도 하고..
Relation to face encoding
: embedding 방식 = 고유값을 벡터로 표현하는 representation은 어느 필드에서나 쓰인다.
encoding & embedding이 혼용되어 많이 사용(비슷한 의미) → 비전(encoding), nlp(혼용), word(embedding)
word embedding ⇒ Analogy 표현이 쉽다
Analogy → Man:Woman = King: ???
e_man - e_woman = [-2 0 0 … ] 이런 꼴
→ e값을 이용한 단어값 출력가능 → e_king - e_w 찾을 수 있다.
Analogies using word vectors
벡터가 기하적으로도 비슷, n dimension에서만 성립,
압축한 t-SNE에서는 사용불가. 오리지날 n-dim에서 성립
Sim(e_w, e_king - e_man + e_woman) 유사성의 최댓값을 표현하는 것이 중요
Cosine similarity
: dot product로 consine similarity를 표현하면 된다.
dot product/L2 norm → cosine simmilarity
: 벡터들의 차이값만 가지고 단어가 가지는 의미를 표현가능
!실제로는 dimension은 의미가 딱딱 떨어지진 않는다 = 사람이 이해하는 방식으로 이용하진 않는다.
category를 정해서 training을 시키는게 아니라 자기가 알아서 word 간 중요한 의미의 축을 만들어서 그에 대한 값을 학습한다.
Embedding matrix
E x O_6257 = e_6257
E: 300 x 10000 dim
O: 10000 x 1 dim
e: 300 x 1 dim
→ E를 가지고와서 활용하면 의미를 담은 vector representation을 사용할 수 있다.
10000 dim이 단어의 축이므로 1 hot vector를 곱하면 단어 중 해당되는 단어만 살아남아 계산에 사용된다.
Nueral language model(생성형 모델의 사용방식)
I → O_4343 → E → e_4343(300dim) ⇒
…
orange → O_6257 → E → e_6257(300dim) ⇒
⇒ 모아서 softmax에 넣는다.
e들을 모아서 입력값으로 넣을 때, 가변적이면 힘드니까
앞에 있는 것 중 n개의 단어만 보고 300n 개의 input을 받는 layer → softmax → 단어가 튀어나오게
Other context/target pairs
: target 단어가 중간에 있을 때?
Context: 인풋으로 넣기 위해 보는 단어
Last 4 words
4 word on left & right
last 1 words
Nearby 1 word: +- 4개 단어 중 1개를 random pick 해서 사용
→ (점점 더 알고리즘들이 간단하게 발달 ㅋㅋ 하지만 필요한 데이터베이스는 커진다.)
supervised learning context→targe || word embedding을 잘 만들기 위해서
context와 target을 pair화 해서 supervised-learning으로 E를 만들어낸다.
⇒ 이렇게 트레이닝된 모델이 E를 잘 만들어내더라
Skip-grams
: context-target 페어를 만들어 내는 것이 목적
context 주변에서 target 잡아내서 사용
Model: Skip-grams
Context(”orange”) → Target t (”juice”)
: orange에 따른 각각의 Softmax 확률을 하나하나 계산해봤을 때 juice가 가장 크게 나오는 것을기대?
p(t|c) = e^{𝜽_t x e_c} / ∑e^{𝜽_j x e_c} ( 𝜽_t: output t에 대한 파라미터)
⇒ 학습시켜준다 supervised learning이므로 y= 1 hot vector, y^ = softmax의 결과 ⇒ Loss function을 계산해서 처리
Problem: with Softmax classification
: softmax 계산할 때 10000개에 대해 ∑계산처리를 해야되는데 너무 오래걸리더라(10000개도 작은편)
→ 사실 제일 큰 놈만 골라내면 되는거라 hierarchical softmax를 활용 → 가장 적합한 것을 찾아내기 위함
10000개를 모두 계산해서 찾는 것이 아니라 5000/5000 중 어디로 가야하는지?
2500/2500 중 어디로 가야하는지? … log scale 연산을 이용해서 처리한다.
구조를 만들어서 하나를 픽하는 알고리즘도 있다.
how to sample the context c?
the of a and to → 많이 나오는 것에 비해 context에 크게 중요하지 않다.
context c를 선택할 때, 가지고 있는 데이터 셋에 대한 probability에 비례해서 뽑으면 큰 문제는 없지만 그 때,
the of a and 값은 것들이 너무 많이 걸린다.
⇒ 이 때 p(c)를 어떻게 구할 것인지…
Defining a new learning problem
: context와 target 을 바로 이어서 사용하지 않고, negative sampling 활용
I want a glass of orange juice to go along with my cereal
→ sentence로 부터 만들어진 pair는 label을 1로 주고
vocabulary 에서 랜덤하게 pair한 것은 label을 0으로 준다.
Context(c) / Word(t) / target(y)
dataset을 크게 가져갈수록 k를 작게 가져간다.
k: negative sample의 개수
기존의 Softmax를 10000개에 대해 classification 했다면
→ negative sampling 이후, c와 t가 주어졌을 떄, label 이 1이 되는 probabilty가 얼마나?
𝜎(𝜽_t x e_c) = ?
⇒ k+1개의 binary classification으로 계산하면 된다.(10000개를 모두 업데이트 하는 것이 아니라 k+1개의 값만 계산하면 되므로 훨씬 빠름, 선택적으로/부분적으로 트레이닝이 되는 경우 → 많이 해야함)
기존에 계산하는 시간보다 훨씬 빠르게 p(t|c)계산 가능
How to selecting negative example?
p(w_i) = f(w_i)^{3/4} / ∑f(w_j)^{3/4}
그 과정에서 만들어지는 Matrix가 analogy에 강하고 다양하게 활용할 수 있더라…
Sentiment classification problem
: like reviews → 레스토랑 평가 정량화
Simple sentiment classificatin model
사전에 있는 각각을 e_8929화, …
- 300dim을 averaging내고 softmax 해서 y^을 내도 어느 정도 괜찮다!
→ averaging의 경우 lacking good a, good b, good c 에서 문제가 생긴다. 제대로 몰라본다.
- Average로 처리 X, 단어간의 의미가 영향을 미치도록 RNN을 활용하자
RNN
…??
The probelm of bias(인간의 편견) in word embeddings
예 - Man: Woman as King:Queen
Father:Doctor as Mother:Nurse ← 단어가 사람이 가진 편견이 드러나있다…
: 인종 소득 수준 등으로부터의 문제가 발생할 수 있다.
Addressing bias in word embeddings
: 컴퓨터에서 편향을 없애기 위한 컨셉
word embedding시…
space 상에서 일단 해당 category의 dimension을 찾아야한다.
→ 나머지 dimension은 관계없으므로 무시
→ neutralize하기 위해서 definitional 하지 않은 경우 bias direction의 방향성을 0으로 만들도록 projection하면 된다.
방향성이 0인데, 다른 값들과의 관계에서도 비슷한 거리를 가져야 하므로,
babysitter 방향성 0으로 한 후, she/he, girl/boy 수정 = equalize pair
⇒ space상에서 조절함으로써 어느정도 조절할 수 있다.
Sequence to Sequence model
: 가장 가능성이 높은 경우를 만들거나…
→ in real, 확률에 따라서 랜덤하게 픽을 한다는 것.
many to many RNN 중에
input이 sequence로 들어가고 output으로 sequence가 나오도록…
Image captioning
: 이미지를 묘사하는 문장을 만들어내는 것
image classification 단계 통과 → softmax 이전의 feature vector를 그대로 RNN 모델에 넣어줌
마치 sequential(feature vector) input이 RNN으로 들어가는 것처럼
Machine translation as building a conditional language model
Language model
Machine translation: sequence를 바탕으로 conditional probability 계산?
conditional model
Finding the most likely translation
: SENTENCE
→ s1
→ s2
→ s3
⇒ translation은 제일 좋은 s1을 뽑아야하므로, probability를 고려하지 않는다.
language model: input이 없으므로 확률적으로 뽑아낸다.
translation: 정답이 있으므로 가장 적합한 것을 찾아내야함
Why not a greedy search?
: 그 때 그 때 마다 옳은 방법인 greedy search를 하는 방식을 쓰면?
→ 전체 맥락이 어울리게 만들어지는데 방해될 수도
Jane is visiting Africa ~
Jane is going ← going이 선택될 가능성이 더 높다..
⇒ 그러면 다 해보고 결정해야하나?
너무 많은 경우가 있음 10000^n 가짓수
Beam search algorithm
: 후보를 n개씩 뽑아내어 계산한다.
beam-width = n
후보 중에 가장 좋은 놈을 찾아서 계산한다.
Step1 3개 → Step2 → 3만개 중 3개를 선택한다. → p(y^<3> | x, “in september”) / … → … → end of sentence(문장 3개가 남음 → 제일 높은 확률을 선택한다.)
예: in september / jane is / jane visits → 또 3x10000 중 3개를 걸러내기
계층 수가 안맞으면? → 문장의 길이가 정해져있지 않아서 <EOS>
가 들쭉날쭉한 경우에는 어떻게 비교하..?
B가 1이 되면 greedy search랑 동일