-
Learning Word Embeddings: Word2vec & GloVeGoogle ML Bootcamp/Sequence Models 2023. 10. 2. 14:53728x90
※ Word2Vec
■ Skip Gram Model
- Vocab size가 10,000 이라고 할 때, context X와 target Y(learn 하고 싶은 단어)를 설정한다.
- O_c -> E -> e_c -> O_softmax -> yhat (e_c = E * O_c)
- E는 e_c에 해당하는 매개 변수를 가진다.
- O_softmax에는 theta_t 매개 변수를 제공하는 매개 변수도 있다.
- 모든 매개 변수를 기준으로 Loss Function을 최적화하면 실제로 상당량의 vector 포함 set을 얻을 수 있다.
- softmax : p(t | c)
- y라는 target vector를 형성했을 때, learn 하고 싶은 단어의 숫자가 4834라면 이는 target vector의 4834번 요소가 된다.
- Problem : 데이터가 굉장히 많아질 경우 매번 분모를 합산하는 것은 매우 느리고 cost가 비싸다.
- Solution : 계층적 소프트맥스 분류자를 사용한다. 트리 형태로 구축하여 이진 분류 느낌으로 계층을 형성해서 데이터 합산 갯수를 현저히 줄일 수 있다. 완벽한 대칭 트리를 사용하지 않는다. 계층적 소프트웨어 분류자는 일반어는 상위 계층에 있고 자주 사용되지 않는 단어는 더 깊은 계층에 존재할 수 있다. 일반적인 단어를 훨씬 많이 접할 수 있기도 하고 일반적인 단어들을 얻기 위해서는 몇 개의 통과 계층만 필요할지도 모르기 때문이다.
※ Negative Sampling
- SoftMax Function을 이용하다보니 데이터가 많아진 경우의 비싼 cost 때문에 생겨난 기법
- 학습 과정에서 전체 단어 집합이 아니라 일부 단어 집합에만 집중할 수 있도록 하는 방법
- 단어 집합에서 무작위로 주변 단어가 아닌 단어들을 선택해서 일부 가져오고 해당 집합을 이진 분류 문제로 변환한다. target 단어의 주변 단어들을 positive로, 랜덤으로 샘플링 된 단어들을 negative로 레이블링하여 이진 분류 문제로 변환시킬 수 있다. -> 연산량의 효율 극대화
※ GloVe Word Vectors
- X_ij는 i와 j가 서로 얼마나 자주 가깝게 나타나는지를 나타냄.
- theta_i, e_j are symmetric
※ Sentiment Classification
- 단어를 split해서 one-hot vector로 만든다.(O_c -> E -> e_c)
- yhat에서 sentiment 결과값을 얻어낼 수 있음.
728x90'Google ML Bootcamp > Sequence Models' 카테고리의 다른 글
Transformer Networks (1) 2023.10.04 Various Sequence To Sequence Architectures (0) 2023.10.03 Word Embeddings (1) 2023.10.01 Recurrent Neural Networks (0) 2023.09.29