λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
1️⃣ AI•DS/πŸ“— NLP

[cs224n] 2κ°• λ‚΄μš© 정리

by isdawell 2022. 3. 14.
728x90

πŸ’‘ 주제 : Word vectors and Word Senses 

πŸ“Œ 핡심 

  • Task : 단어 μž„λ² λ”© - Word2vec (2κ°•) , Glove (3κ°•) 

 

πŸ“Œ λͺ©μ°¨ 정리 

1. μ΅œμ ν™” 

  •  Gradient Descent 
  •  Stochastic Gradient Descent 
    • ν•™μŠ΅ 데이터 μ€‘μ—μ„œ λžœλ€ν•˜κ²Œ μƒ˜ν”Œμ„ ν•œκ°œμ”© 뽑아 gradient λ₯Ό κ³„μ‚°ν•œ ν›„ μ—…λ°μ΄νŠΈ ν•˜λŠ” 방식 
    • κ³„μ‚°λŸ‰μ΄ 적음 & ν•™μŠ΅μ΄ 빠름 & local min 에 λΉ μ§€μ§€ μ•Šκ³  ν•™μŠ΅λ  수 있음 
    • word vector κ°€ sparse 해짐 → λΆˆν•„μš”ν•œ 계산 λ°œμƒ

 

2. Word2vec 의 계산 νš¨μœ¨μ„± 높이기 (SGD μ™Έ) 

  • Negative Sampling 
    • λ“±μž₯ λ°°κ²½ : softmax λ₯Ό 좜λ ₯μΈ΅μ—μ„œ 계산할 λ•Œ, 전체 단어λ₯Ό λŒ€μƒμœΌλ‘œ 벑터 내적과 exp 계산을 μ·¨ν•΄μ£Όμ–΄μ•Ό 함 → μ—°μ‚°λŸ‰ 증가 
    • ν•΄κ²° 아이디어 :  parameter λ₯Ό κ°±μ‹ μ‹œν‚¬ negative sample 을 λ½‘λŠ” 것 (즉, 일뢀 λ‹¨μ–΄λ§Œμ„ κ°€μ§€κ³  계산) βž• λ§ˆμ§€λ§‰ 단계λ₯Ό 이진뢄λ₯˜ binary logistic regression 문제둜 λ³€ν™˜ ( μ£Όλ³€ 단어듀을 긍정 - positive , 랜덀으둜 μƒ˜ν”Œλ§ 된 단어듀을 λΆ€μ • - negative 둜 λ ˆμ΄λΈ”λ§ ) 
    • πŸ‘€ Negative sample : μ‚¬μš©μžκ°€ μ§€μ •ν•œ μœˆλ„μš° μ‚¬μ΄μ¦ˆ 내에 λ“±μž₯ν•˜μ§€ μ•ŠλŠ” 단어 

pizza κ°€ negative sample 에 ν•΄λ‹Ή

 

 

  • Subsampling 
    • is, the, a 와 같이 자주 λ“±μž₯ν•˜λŠ” λ‹¨μ–΄λŠ” 적게 λ“±μž₯ν•˜λŠ” 단어듀보닀 μ •λ³΄μ˜ κ°€μΉ˜κ°€ λ–¨μ–΄μ§€λ―€λ‘œ, λ§λ­‰μΉ˜μ— 자주 λ“±μž₯ν•˜λŠ” λ‹¨μ–΄λŠ” ν•™μŠ΅λŸ‰μ„ ν™•λ₯ μ μœΌλ‘œ κ°μ†Œμ‹œν‚€λŠ” 기법 
    • f(wi) : (ν•΄λ‹Ή 단어 λΉˆλ„/단어 전체 수) 

 

  • Hirerachical softmax 

 

3. Word prediction Methods 

 

  • Count based vs Direct Prediction 

 

4. Glove : global vectors for word representation 

 

⭐ Direct Predictionκ³Ό count based 방식을 ν•©μΉœ μ›Œλ“œ 벑터화 방식 

⭐ co-occurence Matrix

πŸ’¨ μœ μ‚¬ν•œ μ“°μž„/의미λ₯Ό λ³΄μœ ν•œ λ‹¨μ–΄λ“€λΌλ¦¬λŠ” λΉ„μŠ·ν•œ 벑터 ꡬ성을 λ³΄μœ ν•˜κ²Œ λœλ‹€. λΉ„μŠ·ν•œ 단어듀은 λΉ„μŠ·ν•œ ν™˜κ²½/λ¬Έλ§₯μ—μ„œ μ‚¬μš©λ˜λ―€λ‘œ λΉ„μŠ·ν•œ 단어듀과 μΈμ ‘ν•˜κ²Œ λœλ‹€. 

πŸ’¨ κ·ΈλŸ¬λ‚˜ sparse 행렬을 ν˜•μ„±ν•˜κ²Œ λ˜λŠ” + λ‹¨μ–΄μ˜ μˆ˜κ°€ 증가할 수둝 ν–‰λ ¬ 차원이 μ»€μ§€λŠ” 단점이 쑴재 → SVD μ°¨μ›μΆ•μ†Œ 

πŸ’¨ 높은 λ™μ‹œλ“±μž₯ count λ₯Ό κ°€μ§€λŠ” ν–‰λ ¬ 값을 μ€‘μ‹¬μœΌλ‘œ 차원을 μΆ•μ†Œν•œλ‹€. 

 

 

⭐ co-occurence probabilities 

  • P( k | i ) : λ™μ‹œλ“±μž₯ ν–‰λ ¬λ‘œλΆ€ν„° νŠΉμ • 단어 i 의 전체 λ“±μž₯ 횟수λ₯Ό μΉ΄μš΄νŠΈν•˜κ³ , νŠΉμ • 단어 i κ°€ λ“±μž₯ν–ˆμ„ λ•Œ μ–΄λ–€ 단어 k κ°€ λ“±μž₯ν•œ 횟수λ₯Ό μΉ΄μš΄νŠΈν•˜μ—¬ κ³„μ‚°ν•œ 쑰건뢀 ν™•λ₯  

λ™μ‹œλ°œμƒ ν™•λ₯  λΉ„μœ¨μ˜ νŠΉμ„±μ„ μ΄μš©ν•΄ 단어벑터λ₯Ό μƒμ„±ν•΄λ³΄μž

 

 

⭐ objective function 

  • μž„λ² λ”©λœ 두 단어벑터 쀑심단어와 주변단어 λ²‘ν„°μ˜ 내적이 corpus μ „μ²΄μ—μ„œμ˜ λ™μ‹œμ— λ“±μž₯ν•˜λŠ” ν™•λ₯ μ˜ λ‘œκ·Έκ°’μ΄ λ˜λ„λ‘ μž„λ² λ”© 벑터λ₯Ό λ§Œλ“ λ‹€. 

β—Ύ Wi : 쀑심단어 i 의 μž„λ² λ”© 벑터

β—Ύ Wj : μ£Όλ³€ 단어 k 의 μž„λ² λ”© 벑터

β—Ύ P(i|j) : 쀑심단어 i κ°€ λ“±μž₯ν–ˆμ„ λ•Œ μœˆλ„μš° λ‚΄ μ£Όλ³€ 단어 j κ°€ λ“±μž₯ν•  ν™•λ₯ 

 

  • λͺ¨λΈ λ“±μž₯ motivation 
  • λͺ©μ  ν•¨μˆ˜ μœ λ„ 
  • λ‹€λ₯Έ λͺ¨λΈκ³Όμ˜ 관계 
  • 계산 λ³΅μž‘λ„ 

⭐ μž₯단점  

  • λ™μ‹œλ“±μž₯ ν™•λ₯ μ˜ κ°œλ…μ„ λ„μž… → Global statistical information 의 효율적인 μ‚¬μš©μ΄ κ°€λŠ₯ , κ·ΈλŸ¬λ‚˜ λ©”λͺ¨λ¦¬ cost λŠ” λ†’μŒ 
  • λΉ λ₯Έ ν•™μŠ΅μ†λ„, Big, Small corpus 에 λŒ€ν•΄μ„œ μ„±λŠ₯이 μ’‹μŒ 
  • Polysemous word (λ‹€μ˜μ–΄) 문제 ν•΄κ²° X 

⭐ Hyperparameter 

 

from glove import Corpus, Glove 
corpus = Corpus() 


# ν›ˆλ ¨ λ°μ΄ν„°λ‘œλΆ€ν„° Glove μ—μ„œ μ‚¬μš©ν•  λ™μ‹œ λ“±μž₯ ν–‰λ ¬ 생성 
corpus.fit(result, window = 5) 

glove = Glove(no_components = 30, learning_rate=0.05, alpha = 0.75, max_count=100, max_loss = 10.0, random_state = None)

 

Parameter λ‚΄μš© 
no_components word vector 의 차원 크기 μ„€μ •
learning_rate ν•™μŠ΅μ†λ„ μ„€μ • (SGD estimation μ‹œ μ‚¬μš©) 
Alpha, max_count weight λΆ€μ—¬ν•  λ•Œ μ‚¬μš©
random_state μ΅œμ ν™”μ‹œ μ΄ˆκΈ°ν™” λ•Œ μ‚¬μš©λ˜λŠ” μƒνƒœ 

 

 

 

⭐ μ‹œκ°ν™” 

 

λ°˜μ˜μ–΄ 관계에 μžˆλŠ” λ‹¨μ–΄μŒ 2차원 μ‹œκ°ν™” (λΉ„μŠ·ν•œ κ°„κ²©μœΌλ‘œ 곡간 내에 μœ„μΉ˜)

 

 

5. word vectors 평가방식 

 

  • Extrinsic vs Intrinsic 

⭐ intrinsic : μ˜¬λ°”λ₯΄κ²Œ task λ₯Ό ν•΄κ²°ν–ˆλŠ”μ§€ ν™•μΈν•˜λŠ” 방법. word vector analogy

⭐ Extrinsic : μ‹€μ œ μ‹œμŠ€ν…œμ—μ„œ μ‚¬μš©ν•΄μ„œ μ„±λŠ₯을 ν™•μΈν•˜λŠ” 방법. Named Entity Recognition (NER)

 

→ 두 평가방식 λͺ¨λ‘ Glove λͺ¨λΈμ—μ„œ κ½€ 쒋은 μ„±λŠ₯ κ²°κ³Όλ₯Ό λ³΄μž„ 

 

6. Word senses and Word sense ambiguity 

 

  • λ™μΌν•œ λ‹¨μ–΄μ˜ μ„œλ‘œ λ‹€λ₯Έ 의미λ₯Ό ν‘œν˜„ν•˜λŠ” 방법
  • Multiple sensors for a word (clustering - re labeling) 
  • Weighted average 

πŸ“Œ μ‹€μŠ΅μ½”λ“œ

 

 

05) κΈ€λ‘œλΈŒ(GloVe)

κΈ€λ‘œλΈŒ(Global Vectors for Word Representation, GloVe)λŠ” 카운트 기반과 예츑 κΈ°λ°˜μ„ λͺ¨λ‘ μ‚¬μš©ν•˜λŠ” λ°©λ²•λ‘ μœΌλ‘œ 2014년에 λ―Έκ΅­ μŠ€νƒ ν¬λ“œλŒ€ ...

wikidocs.net

 

 

GloVe, word representation

GloVe λŠ” Word2Vec κ³Ό λ”λΆˆμ–΄ 자주 μ΄μš©λ˜λŠ” word embedding λ°©λ²•μž…λ‹ˆλ‹€. Word2Vec 과의 차이점에 λŒ€ν•˜μ—¬ μ•Œμ•„λ³΄κ³ , Python 의 κ΅¬ν˜„μ²΄μΈ glove_python 의 νŠΉμ§•μ— λŒ€ν•΄μ„œλ„ μ‚΄νŽ΄λ΄…λ‹ˆλ‹€. 그리고 glove_python 을 μ΄μš©ν•˜

lovit.github.io

 

 

LSTM 및 GloVe μž„λ² λ”©μ„ μ‚¬μš©ν•œ 감정 뢄석

감정 뢄석은 μ›Ή μ‚¬μ΄νŠΈμ˜ 고객 κΈ°λ°˜μ— λŒ€ν•œ μœ μš©ν•œ 톡찰λ ₯을 μ œκ³΅ν•˜μ—¬ μ˜μ‚¬ κ²°μ • 과정을 λ•λŠ” λ§Žμ€ 쑰직과 νšŒμ‚¬μ— μ€‘μš”ν•œ λ„κ΅¬λ‘œ λΆ€μƒν–ˆμŠ΅λ‹ˆλ‹€. 였늘 μ €λŠ” LSTM 및 GloVe Word Embeddingsλ₯Ό μ‚¬μš©ν•˜μ—¬ κ°„

ichi.pro

 

 

πŸ‘€ kaggle μ½”λ“œμ—μ„œ glove λ₯Ό 라이브러리λ₯Ό ν™œμš©ν•˜μ§€ μ•Šκ³  μ•„λž˜μ˜ ν˜•νƒœλ‘œ κ°€μ Έμ˜€λŠ” 방식 이해해보기 : https://lsjsj92.tistory.com/455 

glove_dir = '../input/glove-global-vectors-for-word-representation/'
embedding_index = {}

f = open(os.path.join(glove_dir,'glove.6B.50d.txt'))
for line in f:
    values = line.split()
    word = values[0]
    coefs = np.asarray(values[1:],dtype='float32')
    embedding_index[word] = coefs
f.close()

print('found word vecs: ',len(embedding_index))

 

728x90

'1️⃣ AIβ€’DS > πŸ“— NLP' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[cs224n] 6κ°• λ‚΄μš© 정리  (0) 2022.03.24
[cs224n] 5κ°• λ‚΄μš© 정리  (0) 2022.03.22
[cs224n] 4κ°• λ‚΄μš© 정리  (0) 2022.03.18
NLP deep learning  (0) 2022.03.15
[cs224n] 3κ°• λ‚΄μš© 정리  (0) 2022.03.14

λŒ“κΈ€