본문 바로가기

AI_theory/Stanford cs224(NLP)

Stanford CS224N(Winter2021) : Lecture 2 (Neural Classifiers)

Neural Classifiers 

 

[ Word2Vec ] 

- 단어의 순서는 고려하지 않고 빈도수만 고려하는 bag of words model이다. 

- 단어 유사도로 word vector를 만든다.

Q. 좋은 word vector를 어떻게 만들까?

1. 0에 가까운 random word vector로 시작

2. SGD사용해서 loss를 최소화  

SGD 사용이유 : gradient descent를 이용해서 loss를 한번 구할려면 corpus를 한번 다 돌아야함 (오래걸리고, 리로스가 많이 듬)

 

- skip-grams(center word로 context words 예측), CBOW(context words로 center word 예측)를 이용해서 word vector를 만듬  

+ skip-grams with negative sampling

skip-grams alogrithm에서 일반적인 softmax를 취할 경우 학습량이 많아짐 (vacabulary size 많음 dot product를 해야함), train binary logistic regression문제로 바꿈 

 { 네거티브 샘플링은 Word2Vec이 학습 과정에서 전체 단어 집합이 아니라 일부 단어 집합에만 집중할 수 있도록 하는 방법입니다. 가령, 현재 집중하고 있는 주변 단어가 '고양이', '귀여운'이라고 해봅시다. 여기에 '돈가스', '컴퓨터', '회의실'과 같은 단어 집합에서 무작위로 선택된 주변 단어가 아닌 단어들을 일부 가져옵니다. 이렇게 하나의 중심 단어에 대해서 전체 단어 집합보다 훨씬 작은 단어 집합을 만들어놓고 마지막 단계를 이진 분류 문제로 변환합니다. 주변 단어들을 긍정(positive), 랜덤으로 샘플링 된 단어들을 부정(negative)으로 레이블링한다면 이진 분류 문제를 위한 데이터셋이 됩니다. 이는 기존의 단어 집합의 크기만큼의 선택지를 두고 다중 클래스 분류 문제를 풀던 Word2Vec보다 훨씬 연산량에서 효율적입니다. 참고 : https://wikidocs.net/69141

 

[ co-occurrence matrix ] 

building a co-occurrence matrix X를 만드는 방식은 2가지로 나뉜다.

1. windows method ( similar to word2vec, use window around each word : syntatic and semantic정보를 잘 얻는다)

2. full document method ( 

 

- Window based co-occurrence matrix 

when) Window length = 1

단점 : spare vector, vector size가 vocab size만큼 엄청 커진다(심지어 |V|^2)

-> 많은 양의 정보를 담고있는 small size vector로 바꾸자(dense vector)

the, he, has같이 잦은 빈도로 출현하는 단어는 어떻게 처리하고 vector의 차원을 줄일까? (solvce -> 빈도수에 log취하기, min(X, 등장 횟수), ignore하는 function만들기)

 

Encoding meaning in vector differences

-> crucial insight : 동시 등장 확률의 비율을 의미 

    -> (log)확률은 단어간 dot-product를 통해, 

[ GLOVE ] 

전체 corpus에서 중심단어와 주변단어간(위에서 설명한)동시 등장 확률을 높이는 것

- 빠른 학습, 작은 corpus에서도 좋은 성능을 보임, 큰 corpus에서 사용가능한 확장성 

 

[ word vector를 평가하는 법 ] 

- Intrinsic(컴퓨터 계산)

특정 subtask에 대한 평가 ,빠른 계산, 확실하지 않음

- Extrinsic(사람이 함)

real task에 대한 평가, 오래 걸릴 수 있음

 

[ Analogy evalutation and hyperparameters ]

- 학습단어가 많아 질수록 성능이 좋아짐

- dimensionality를 높이면 성능이 좋아짐 (~300)

 

-> 많이 등장하는 단어, 동음이의어 등에 대해서는 단어에 대해서 어떻게 처리할까?

- clustering을 통해 비슷한 뜻을 가지는 단어끼리 묶자 

- 한 단어의 다른 의미는 동음이의어 등장 확률과 weight의 linear weighted sum으로 계산해보자 -> 단어의 뜻을 전혀 못 나타낼 것 같으나 효과가 있다!

 

수업 링크 : https://www.youtube.com/watch?v=gqaHkPEZAew&list=PLoROMvodv4rOSH4v6133s9LFPRHjEmbmJ&index=2

'AI_theory > Stanford cs224(NLP)' 카테고리의 다른 글

Stanford CS224N(Winter2021) : Lecture 1  (0) 2023.01.17