1️⃣ AI•DS/πŸ“— NLP

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

isdawell 2022. 3. 24. 19:54
728x90

πŸ’‘ 주제 : Language models and RNN (Recurrent Neural Network) 

 

πŸ“Œ 핡심 

  • Task : λ¬Έμž₯이 μ£Όμ–΄μ§ˆ λ•Œ μ§€κΈˆκΉŒμ§€ λ‚˜μ˜¨ 단어듀 이후에 λ‚˜μ˜¬ 단어λ₯Ό 예츑
  • RNN : λ‹€μŒμ— 올 단어λ₯Ό μ˜ˆμΈ‘ν•˜λŠ” 과제λ₯Ό 효과적으둜 μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄ λ„μž…ν•œ NN 의 일쒅 

 

 

 

πŸ“Œ λͺ©μ°¨ / λ‚΄μš© 

1. Language model 

 

(1) Language model μ΄λž€ 

 

βœ” μ •μ˜ 

  • λ‹¨μ–΄μ˜ μ‹œν€€μŠ€(λ¬Έμž₯) 에 λŒ€ν•΄ μ–Όλ§ˆλ‚˜ μžμ—°μŠ€λŸ¬μš΄ λ¬Έμž₯인지λ₯Ό 'ν™•λ₯ ' 을 μ΄μš©ν•΄ μ˜ˆμΈ‘ν•˜λŠ” λͺ¨λΈ
  • Language modeling = μ£Όμ–΄μ§„ λ‹¨μ–΄μ˜ μ‹œν€€μŠ€μ— λŒ€ν•΄ λ‹€μŒμ— λ‚˜νƒ€λ‚  단어가 μ–΄λ–€ 것인지λ₯Ό μ˜ˆμΈ‘ν•˜λŠ” μž‘μ—… 

쑰건뢀확λ₯ λ‘œ ν‘œν˜„

 

단어 sequence πŸ‘‰ μ—°μ†μ μœΌλ‘œ λ°œμƒν•˜λŠ” 사건에 λŒ€ν•œ ν™•λ₯  πŸ‘‰ ν™•λ₯  κ³±

 

  • νŠΉμ • λ¬Έμž₯에 ν™•λ₯ μ„ ν• λ‹Ήν•œλ‹€. λ¬Έμž₯의 단어 w(1), w(2) , ... w(t) κ°€ μ£Όμ–΄μ‘Œμ„ λ•Œ λ‹€μŒμ— 올 단어 w(t+1) 의 ν™•λ₯  

 

 

 

βœ” ν™œμš© 

  • λ¬Έμž₯의 ν™•λ₯  λ˜λŠ” λ‹¨μ–΄μ˜ λ“±μž₯ ν™•λ₯ μ„ 예츑
  • κΈ°κ³„λ²ˆμ—­, μŒμ„±μΈμ‹, μžλ™μ™„μ„±(ex. ꡬ글 검색) 

 

 

 

(2) N-gram Language model 

 

βœ” μ •μ˜ 

  • NN (λ”₯λŸ¬λ‹ λͺ¨λΈλ“€) 이전에 μ‚¬μš©λ˜μ—ˆλ˜ μ–Έμ–΄λͺ¨λΈμ΄λ‹€. 
  • μ˜ˆμΈ‘μ— μ‚¬μš©ν•  μ•ž λ‹¨μ–΄λ“€μ˜ 개수 (window) λ₯Ό μ •ν•˜μ—¬ λͺ¨λΈλ§ν•˜λŠ” 방법 (이전에 λ“±μž₯ν•œ n-1 개의 단어듀을 μ΄μš©ν•΄ λ‹€μŒ 단어λ₯Ό μ˜ˆμΈ‘ν•œλ‹€) 
  • N-gram : n 개의 연이은 단어 λ­‰μΉ˜ 

전체 μ–Έμ–΄ λͺ¨λΈμ˜ ν™•λ₯ μ„ μ•žμ˜ 단어 n 개만 μ •ν•œ 쑰건뢀확λ₯ μ˜ N-gram μ–Έμ–΄λͺ¨λΈμ˜ ν™•λ₯ λ‘œ 근사

 

  • λ‹€μŒμ— 올 λ‹¨μ–΄λŠ” 이전에 λ“±μž₯ν•œ λ‹¨μ–΄λ“€μ—λ§Œ 영ν–₯을 λ°›λŠ”λ‹€λŠ” κ°€μ • ν•˜μ—, corpus μ—μ„œ counting 을 ν•˜λŠ” λ°©μ‹μœΌλ‘œ ν™•λ₯ μ„ κ΅¬ν•œλ‹€. 

전체 단어 ν™•λ₯  πŸ‘‰ N-gram ν™•λ₯ λ‘œ 근사 πŸ‘‰ Count λ°©λ²•μœΌλ‘œ ν™•λ₯ μ„ κ³„μ‚°ν•˜μ—¬ 근사

 

  • N-gram λ¬Έμž₯이 λ‚˜νƒ€λ‚  ν™•λ₯ κ³Ό (N-1) gram 이 λ‚˜νƒ€λ‚  ν™•λ₯ μ„ μ΄μš©ν•΄ ν˜„μž¬ λ¬Έμž₯이 μ£Όμ–΄μ‘Œμ„ λ•Œ λ‹€μŒ 단어가 올 ν™•λ₯ μ„ 계산해낼 수 μžˆλ‹€. μ΄λ•Œ 계산에 ν•„μš”ν•œ ν™•λ₯ μ€ 큰 corpus μ—μ„œ 'μΆœν˜„ λΉˆλ„' λ₯Ό μ„Έμ„œ 얻을 수 μžˆλ‹€. 
  • N-gram 의 λΉˆλ„μ— λŒ€ν•œ 톡계λ₯Ό μˆ˜μ§‘ν•˜κ³  이λ₯Ό λ‹€μŒ 단어λ₯Ό μ˜ˆμΈ‘ν•˜λŠ”λ° μ‚¬μš©

 

 

 

βœ” 계산 μ˜ˆμ‹œ 

books 단어가 λ“±μž₯ν•  ν™•λ₯ μ΄ 더 λ†’μœΌλ―€λ‘œ λ‹€μŒ 단어λ₯Ό books 둜 μ˜ˆμΈ‘ν•œλ‹€.

 

 

βœ” N-gram λͺ¨λΈμ˜ 문제점 

 

  1. Sparsity 문제 : n (window 크기) κ°€ 컀질수둝 μ•ˆμ’‹μ•„μ§€λ©° 일반적으둜 n < 5 둜 섀정함 

 

λ°μ΄ν„°μ—μ„œ ν•΄λ‹Ή μ‹œν€€μŠ€ λ¬Έμž₯이 ν•œ λ²ˆλ„ λ“±μž₯ν•˜μ§€ μ•ŠμœΌλ©΄ ν™•λ₯  계산이 λΆˆκ°€λŠ₯ν•˜κ±°λ‚˜ 0이 λœλ‹€ πŸ‘‰ backoff λ‚˜ smoothing ν•΄κ²° 방법이 쑴재

 

  • λΆ„λͺ¨μ—λŠ” smoothing 방식을 μ“°μ§€ μ•Šκ³  backoff 방식을 μ“°λŠ” 이유 : λΆ„λͺ¨κ°€ 0인 κ²½μš°κ°€ 더 μ‹¬κ°ν•˜κΈ° λ•Œλ¬Έ 

 

 

   2. Storage 문제 

  • n 이 μ»€μ§€κ±°λ‚˜ corpus κ°€ μ¦κ°€ν•˜λ©΄ Corpus λ‚΄ λͺ¨λ“  n-gram 에 λŒ€ν•œ count λ₯Ό μ €μž₯ν•΄μ€˜μ•Ό ν•˜κΈ° λ•Œλ¬Έμ— λͺ¨λΈμ˜ 크기가 μ¦κ°€ν•œλ‹€. (싀행이 μ˜€λž˜κ±Έλ¦¬λŠ” 단점) 

 

   3. Incoherence 문제 

 

πŸ€” N-gram 방식은 μ•žμ „ λ‹¨μ–΄λ“€λ§Œ μ΄μš©ν•˜λ‹ˆκΉŒ context (λ¬Έλ§₯)을 λ‹΄κΈ°μ—” ν•œκ³„κ°€ μžˆλŠ” 것 κ°™μ•„! 

  • λ‹€μŒ λ‹¨μ–΄λŠ” μ•žμ˜ λ‹¨μ–΄λ“€μ—κ²Œλ§Œ 영ν–₯을 λ°›λŠ”λ‹€λΌλŠ” κ°€μ • λ•Œλ¬Έμ— 이전 λ¬Έλ§₯을 μΆ©λΆ„νžˆ λ°˜μ˜ν•˜μ§€ λͺ»ν•¨
  • 즉 λ‹€μŒ 단어λ₯Ό μ˜ˆμΈ‘ν•˜λŠ”λ° μ•„μ£Ό μ€‘μš”ν•œ 정보가 κ·Έ 단어와 λ¬Έμž₯μ—μ„œ 멀리에 μœ„μΉ˜ν•˜λ©΄ κ·Έ 정보λ₯Ό λ†“μΉ˜κ²Œ 됨 
  • N 의 크기λ₯Ό 늘리면 μ–΄λŠμ •λ„ ν•΄κ²°ν•  수 μžˆμ§€λ§Œ sparsity λ¬Έμ œκ°€ 심해진닀. 

 

βœ” Process μ‚΄νŽ΄λ³΄κΈ° 

 

루이터 톡신 λ‰΄μŠ€κΈ°μ‚¬ μ½”νΌμŠ€λ₯Ό κ°€μ§€κ³  μ‹€ν—˜

 

  • κ°€λŠ₯μ„± μžˆλŠ” 단어듀이 ν™•λ₯ λΆ„ν¬λ‘œ λ„μΆœλ¨ 
  • condition 쑰건 선택 → sampling ν™•λ₯  λΆ„ν¬μ—μ„œ 제일 ν™•λ₯ μ΄ 높은 단어λ₯Ό 선택  → condition 쑰건 선택 ... 반볡 

 

 

생각보닀 문법적인 κ²°κ³Όκ°€ λ‚˜μ˜΄. κ·ΈλŸ¬λ‚˜ 전체적인 μ˜λ―Έμ—μ„œ 일관성이 μ—†κ³  n 을 늘리면 μš°λ €λ˜λŠ” ν¬μ†Œμ„± λ•Œλ¬Έμ— ν•œκ³„μ μ„ νŒŒμ•…ν•΄λ³Ό 수 있음

 

 

 

(3) Window-based Neural Network Language model (NNLM)

 

βœ” μ •μ˜ 

  • N-gram 의 문제점인 Sparsity (μΆ©λΆ„ν•œ 데이터가 μ—†λ‹€λ©΄ μ–Έμ–΄λ₯Ό μ •ν™•νžˆ λͺ¨λΈλ§ ν•˜μ§€ λͺ»ν•¨) , Incoherence λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ μ œμ•ˆλœ 신경망 기반의 λͺ¨λΈ
  • ν¬μ†Œ λ¬Έμ œλŠ” 기계가 단어 κ°„ μœ μ‚¬λ„λ₯Ό μ•Œ 수 μžˆλ‹€λ©΄ ν•΄κ²°ν•  수 있게 됨 : ν›ˆλ ¨ μ½”νΌμŠ€μ— μ—†λŠ” 단어 μ‹œν€€μŠ€μ— λŒ€ν•œ μ˜ˆμΈ‘μ΄λΌλ„ μœ μ‚¬ν•œ 단어가 μ‚¬μš©λœ 단어 μ‹œν€€μŠ€λ₯Ό μ°Έκ³ ν•˜μ—¬ μ •ν™•ν•œ μ˜ˆμΈ‘μ„ μˆ˜ν–‰ν•  수 있음 πŸ‘‰ μ΄λŸ¬ν•œ 아이디어λ₯Ό κ°€μ§€κ³  νƒ„μƒν•œ μ–Έμ–΄λͺ¨λΈμ΄ NNLM 
  • λ‹€μŒμ— λ“±μž₯ν•  단어λ₯Ό μ˜ˆμΈ‘ν•˜λŠ” μ–Έμ–΄λͺ¨λΈμ΄λ©΄μ„œ λ™μ‹œμ— λ‹¨μ–΄μ˜ 'distributed representation' (단어 벑터 ν‘œν˜„) 을 ν•™μŠ΅ν•œλ‹€. 
  • NNLM 도 N-gram κ³Ό μœ μ‚¬ν•˜κ²Œ μ •ν•΄μ§„ n 개의 λ‹¨μ–΄λ§Œμ„ μ°Έκ³ ν•΄μ„œ (μœˆλ„μš° λ²”μœ„) μ˜ˆμΈ‘μ„ μˆ˜ν–‰ν•œλ‹€. 

 

 

 

 

✨ x 의 μ‹œν€€μŠ€λ₯Ό window μ‚¬μ΄μ¦ˆ 만큼 μž…λ ₯ πŸ‘‰  단어λ₯Ό 원핫인코딩 λ²‘ν„°λ‘œ ν‘œν˜„ πŸ‘‰ 각 단어에 λŒ€ν•΄ μž„λ² λ”© 벑터λ₯Ό 뽑아내고 이λ₯Ό 이어뢙인닀 (e) πŸ‘‰ hidden layer πŸ‘‰ Softmax λ₯Ό 톡과 πŸ‘‰ κ·Έ λ‹€μŒ 단어가 λ‚˜νƒ€λ‚Ό 'ν™•λ₯ λΆ„포' λ₯Ό output 으둜 λ„μΆœ  

 

 

⚾ input : λ‹¨μ–΄λ“€μ˜ μ‹œν€€μŠ€ 

πŸ₯Ž output : λ‹€μŒ 단어에 λŒ€ν•œ ν™•λ₯  뢄포 

 

 

βœ” μž₯점

  • 단어 μž„λ² λ”©μ„ 톡해 Sparsity 문제λ₯Ό ν•΄κ²°
  • κ΄€μΈ‘λœ n-gram 을 μ €μž₯ν•  ν•„μš”κ°€ 없어짐 ← μž„λ² λ”© 방식을 톡해 κ°œλ³„ ν™•λ₯ μ΄ μ•„λ‹ˆλΌ 전체 ν™•λ₯ λΆ„ν¬λ‘œ ν‘œν˜„λ˜κΈ° λ•Œλ¬Έ 

 

βœ” 단점 

  • κ³ μ •λœ window 크기가 λ„ˆλ¬΄ μž‘λ‹€. (n<5)
  • Window 크기가 컀질수둝 W 도 컀진닀 → window 크기의 ν•œκ³„ 
  • 각 벑터듀은 μ™„μ „νžˆ λ‹€λ₯Έ κ°€μ€‘μΉ˜ Wκ°€ κ³±ν•΄μ§€λ―€λ‘œ 단어와 단어 간이 No symmetry ν•˜λ‹€λŠ” 문제점이 쑴재  

 

βœ” W μ—μ„œμ˜ symmetry

 

βž• http://norman3.github.io/prml/docs/chapter05/1.html

  • 곡간 λŒ€μΉ­μ„± : feed-forward λ„€νŠΈμ›Œν¬μ—μ„œ μ„œλ‘œ λ‹€λ₯Έ w에 λŒ€ν•΄μ„œλ„ λ™μΌν•œ μž…λ ₯에 λŒ€ν•΄ λ™μΌν•œ 좜λ ₯ κ²°κ³Όλ₯Ό λ§Œλ“€μ–΄λ‚Ό 수 μžˆλŠ” μ„±μ§ˆμ„ μ˜λ―Έν•œλ‹€. 
  • Sign-flip symmetry : λΆ€ν˜Έλ§Œ λ°˜λŒ€μΈ κ²½μš°μ—” 두 단계λ₯Ό 거치면 λ™μΌν•œ κ²°κ³Όλ₯Ό λ§Œλ“€ 수 μžˆλ‹€. 
  • Interchange symmetry : 같은 λ ˆμ΄μ–΄ λ‚΄ μž„μ˜μ˜ νžˆλ“  μœ λ‹› 2κ°œμ— λŒ€ν•΄ μ„œλ‘œ μœ„μΉ˜λ₯Ό 바꾸어도 μ΅œμ’… 좜λ ₯값은 λ³€ν™”κ°€ μ—†λ‹€. 

🀨 κ°€μ€‘μΉ˜ 깨짐

 

 

βœ” 단어와 단어가 symmetry ν•˜μ§€ μ•Šλ‹€λŠ” κ²ƒμ˜ 의미

  • 룩업 ν…Œμ΄λΈ” : μ›ν•«λ²‘ν„°μ˜ νŠΉμ„±μœΌλ‘œ 인해 i 번째 μΈλ±μŠ€μ— 1μ΄λΌλŠ” 값을 κ°€μ§€κ³  κ·Έ μ΄μ™Έμ—λŠ” 0의 값을 κ°€μ§€λŠ” 원핫단어 벑터와 κ°€μ€‘μΉ˜ W ν–‰λ ¬μ˜ 곱은 사싀상 Wν–‰λ ¬μ˜ i 번째 행을 κ·ΈλŒ€λ‘œ μ½μ–΄μ˜€λŠ” 것 (lookup) κ³Ό λ™μΌν•˜λ‹€λŠ” κ°œλ… 
  • 룩업 ν…Œμ΄λΈ”μ˜ μž‘μ—…μ„ 거치면 V 차원을 κ°€μ§€λŠ” μ›ν•«λ²‘ν„°λŠ” 이보닀 더 차원이 μž‘μ€ Mμ°¨μ›μ˜ λ‹¨μ–΄λ‘œ 맀핑이 λœλ‹€. ν…Œμ΄λΈ” 룩업 과정을 거친 ν›„ 이 λ‹¨μ–΄μ˜ 벑터λ₯Ό μž„λ² λ”© 벑터라고 ν•œλ‹€. 
  • 벑터와 κ°€μ€‘μΉ˜ ν–‰λ ¬μ—μ„œμ˜ 연산은 각 벑터듀이 각각 λ‹€λ₯Έ W κ°€μ€‘μΉ˜ 뢀뢄을 κ³±ν•˜κ²Œ λ˜λ©΄μ„œ 각 단어듀이 No symmetry ν•˜κ²Œ λ˜λŠ” λ¬Έμ œμ μ„ κ°€μ§€κ²Œ λœλ‹€. 

πŸ‘‰ 같은 단어가 λ‹€λ₯Έ μœ„μΉ˜μ— λ‚˜νƒ€λ‚˜λ©΄ λ‹€λ₯΄κ²Œ μ²˜λ¦¬λœλ‹€. λ‹¨μ–΄μ˜ μœ„μΉ˜μ— 따라 κ³±ν•΄μ§€λŠ” κ°€μ€‘μΉ˜κ°€ λ‹¬λΌμ§€λ―€λ‘œ λͺ¨λΈμ΄ λΉ„μŠ·ν•œ λ‚΄μš©μ„ μ—¬λŸ¬ 번 ν•™μŠ΅ν•˜λŠ” λΉ„νš¨μœ¨μ„±μ„ κ°€μ§„λ‹€. 

 

 

2. Recurrent Neural Network (RNN) 

 

(1) RNN

 

 

 

βœ” 비ꡐ 

  • FFNN : μ€λ‹‰μΈ΅μ—μ„œ ν™œμ„±ν™” ν•¨μˆ˜λ₯Ό μ§€λ‚œ 값은 였직 좜λ ₯μΈ΅ λ°©ν–₯으둜만 ν–₯ν•˜λŠ” 신경망 
  • RNN 은 μ€λ‹‰μΈ΅μ˜ λ…Έλ“œμ—μ„œ ν™œμ„±ν™” ν•¨μˆ˜λ₯Ό 톡해 λ‚˜μ˜¨ 결과값을 좜λ ₯μΈ΅ λ°©ν–₯μœΌλ‘œλ„ λ³΄λ‚΄λ©΄μ„œ λ‹€μ‹œ 은닉측 λ…Έλ„μ˜ λ‹€μŒ κ³„μ‚°μ˜ μž…λ ₯으둜 λ³΄λ‚΄λŠ” νŠΉμ§•μ„ κ°€μ§€κ³  μžˆλ‹€. 

 

βœ” μ •μ˜ 

  • μ‹œν€€μŠ€ 데이터λ₯Ό λͺ¨λΈλ§ν•˜κΈ° μœ„ν•΄ λ“±μž₯ν•œ λͺ¨λΈλ‘œ κΈ°μ‘΄ NN κ³Ό λ‹€λ₯Έμ μ€ 'κΈ°μ–΅(hidden state)' λ₯Ό κ°€μ§€κ³  μžˆλ‹€λŠ” 점이닀. 
  • κΈ°μ‘΄ 신경망은 λͺ¨λ“  μž…λ ₯이 각각 독립적이라고 κ°€μ •ν–ˆλŠ”λ°, NLP μ—μ„œλŠ” μ΄λŸ¬ν•œ κ°€μ •μ˜ 적용이 μ˜³μ§€ μ•Šμ„ 수 μžˆλ‹€. λ¬Έμž₯μ—μ„œ λ‹€μŒμ— λ‚˜μ˜¬ 단어λ₯Ό μΆ”μΈ‘ν•˜κ³  μ‹Άλ‹€λ©΄ 이전에 λ‚˜μ˜¨ λ‹¨μ–΄λ“€μ˜ 연속성을 μ•„λŠ” 것 μžμ²΄κ°€ 큰 도움이 될 수 μžˆλ‹€. 
  • Recurrent : 직전 μ‹œμ μ˜ μ€λ‹‰μΈ΅μ—μ„œ μƒμ„±λœ hidden states λ₯Ό λ‹€μŒ μ‹œμ μ˜ input 으둜 μ „λ‹¬ν•˜λŠ” 것이 νŠΉμ§•. 즉 좜λ ₯ κ²°κ³ΌλŠ” μ΄μ „μ˜ 계산 결과에 영ν–₯을 λ°›λŠ”λ‹€. 

 

  • λ™μΌν•œ κ°€μ€‘μΉ˜ W λ₯Ό 반볡적으둜 적용 πŸ‘‰ λ‹¨μ–΄κ°„μ˜ symmetric ν•˜μ§€ μ•Šμ•˜λ˜ NNLM 의 단점을 보완 

 

#python code
hidden_state_t = 0 # 초기 은닉 μƒνƒœλ₯Ό 0(벑터)둜 μ΄ˆκΈ°ν™”
for input_t in input_length: # 각 μ‹œμ λ§ˆλ‹€ μž…λ ₯을 λ°›λŠ”λ‹€.
    output_t = tanh(input_t, hidden_state_t) # 각 μ‹œμ μ— λŒ€ν•΄μ„œ μž…λ ₯κ³Ό 은닉 μƒνƒœλ₯Ό κ°€μ§€κ³  μ—°μ‚°
    hidden_state_t = output_t # 계산 κ²°κ³ΌλŠ” ν˜„μž¬ μ‹œμ μ˜ 은닉 μƒνƒœκ°€ λœλ‹€.

 

 

 

ν•΄λ‹Ή μ‹œμ μ˜ μž„λ² λ”© 벑터와 직전 μ‹œμ μ˜ hidden states λ₯Ό input 으둜 λ„£λŠ”λ‹€.

 

 

 

βœ” ν‘œκΈ° 

πŸ‘‰ h의 역할을 톡해 λ©”λͺ¨λ¦¬(κΈ°μ–΅λ ₯) 이 μžˆλŠ” 계측이라 λΆ€λ₯Έλ‹€. 

 

 

βœ” μž₯점

  • μ΄μ „μ˜ 정보듀을 ν™œμš©ν•  수 μžˆλ‹€. 
  • μ‹œν€€μŠ€ μˆœμ„œμ— 맞게 ν•˜λ‚˜μ”© μž…λ ₯ν•΄μ£ΌκΈ° λ•Œλ¬Έμ— μž…λ ₯의 길이에 μ œν•œμ΄ μ—†μŒ 
  • μ΄λ‘ μ μœΌλ‘œλŠ” 길이가 κΈ΄ timestamp t 에 λŒ€ν•΄ μ²˜λ¦¬κ°€ κ°€λŠ₯ν•˜λ‹€. (μ–΄λ–€ 길이의 ν…μŠ€νŠΈμ΄λ˜ 계산 κ°€λŠ₯) 
  • λ§€ step λ§ˆλ‹€ λ™μΌν•œ κ°€μ€‘μΉ˜ Wκ°€ 적용되기 λ•Œλ¬Έμ— μž…λ ₯에 λ”°λ₯Έ λͺ¨λΈμ˜ 크기가 μ¦κ°€ν•˜μ§€ μ•ŠλŠ”λ‹€. λͺ¨λΈμ˜ ν¬κΈ°λŠ” Wh 와 We 둜 κ³ μ •λ˜μ–΄ μžˆλ‹€. 
  • λ§€ step 에 λ™μΌν•œ κ°€μ€‘μΉ˜λ₯Ό μ μš©ν•˜λ―€λ‘œ symmetry ν•˜λ‹€  

 

βœ” 단점 

  • 단어가 ν•˜λ‚˜μ”© μž…λ ₯되기 λ•Œλ¬Έμ— 순차적인 계산이 ν•„μš”ν•˜μ—¬ Recurrent 계산이 λŠλ¦¬λ‹€. 
  • μ •λ³΄μ˜ 손싀 문제 (기울기 μ†Œμ‹€ 문제) λ•Œλ¬Έμ— μ‹€μ œλ‘œλŠ” 길이가 κΈ΄ timestep 에 λŒ€ν•΄μ„œλŠ” μ²˜λ¦¬κ°€ 되기 μ–΄λ ΅λ‹€. 즉, λ¨Ό 곳에 μžˆλŠ” 단어 정보λ₯Ό λ°˜μ˜ν•˜κΈ°λŠ” μ–΄λ ΅λ‹€λŠ” μ˜λ―Έμ΄λ‹€. = μ€‘μš”ν•œ μž…λ ₯κ³Ό 좜λ ₯ 단계 μ‚¬μ΄μ˜ 거리가 λ©€μ–΄μ§ˆμˆ˜λ‘ κ·Έ 관계λ₯Ό ν•™μŠ΅ν•˜κΈ° μ–΄λ €μ›Œμ§ πŸ‘‰ λ³€ν˜• λͺ¨λΈμΈ LSTM, attention λͺ¨λΈμ΄ μ œμ‹œ 

 

 

 

(2) RNN training 

 

βœ” κ³Όμ • 

각 좜λ ₯값에 λŒ€ν•΄ Loss λ₯Ό κ΅¬ν•œ ν›„ 전체 step 에 λŒ€ν•΄ 평균을 λ‚΄λ¦°λ‹€. 

 

1. λ‹¨μ–΄λ“€λ‘œ 이루어진 μ‹œν€€μŠ€μ˜ corpus λ₯Ό μ€€λΉ„ν•œλ‹€. 

2. 단어듀을 μˆœμ„œλŒ€λ‘œ RNN 에 μž…λ ₯ν•˜κ³  λ§€ 단계 t 에 λŒ€ν•œ 좜λ ₯뢄포λ₯Ό κ³„μ‚°ν•œλ‹€. 

3. t 단계에 λŒ€ν•œ μ†μ‹€ν•¨μˆ˜ Cross-Entropy λ₯Ό κ³„μ‚°ν•œλ‹€. 

4. 전체 training set 에 λŒ€ν•œ 손싀을 κ΅¬ν•˜κΈ° μœ„ν•΄ 평균값을 κ΅¬ν•œλ‹€. 

 

* 전체 corpus 에 λŒ€ν•œ loss 와 기울기 계산은 μ‹œκ°„μ΄ 많이 κ±Έλ¦¬λ―€λ‘œ μ‹€μ œλ‘  λ¬Έμž₯μ΄λ‚˜ λ¬Έμ„œ λ‹¨μœ„λ‘œ μž…λ ₯을 주기도 ν•œλ‹€. 

* ν˜Ήμ€ SGD λ₯Ό 톡해 μ΅œμ ν™”λ₯Ό ν•˜κΈ°λ„ ν•œλ‹€. 

 

 

βœ” Backpropagation

  • κΈ°μ‘΄ μ—­μ „νŒŒμ™€ λ‹€λ₯΄κ²Œ μˆœν™˜ 신경망은 계산에 μ‚¬μš©λœ μ‹œκ°„, μ‹œμ μ˜ μˆ˜κ°€ 영ν–₯을 μ€€λ‹€. λ”°λΌμ„œ μ‹œκ°„μ— λ”°λ₯Έ μ—­μ „νŒŒλΌλŠ” BPTT λ₯Ό μ‚¬μš©ν•˜κ²Œ λœλ‹€. 
  • BPTT(Backpropagation Through Time) 방식 : timestep 에 따라 gradient λ₯Ό 더해간닀. 

 κ° λ ˆμ΄μ–΄λ§ˆλ‹€μ˜ weightλŠ” μ‹€μ œλ‘  λ™μΌν•œ μ›¨μ΄νŠΈμ—¬μ•Ό ν•˜λ―€λ‘œ λͺ¨λ“  μ—…λ°μ΄νŠΈλ„ λ™μΌν•˜κ²Œ 이루어져야 ν•œλ‹€. λ”°λΌμ„œ 각 layerλ§ˆλ‹€ λ™μΌν•œ μœ„μΉ˜μ˜ weight에 ν•΄λ‹Ήν•˜λŠ” λͺ¨λ“  derivative errorλ₯Ό λ‹€ λ”ν•œλ‹€μŒ (λ”ν•˜λŠ” κ±°λ‚˜ 평균 λ‚΄λŠ”κ±°λ‚˜ 사싀상 같은 의미) weightλ₯Ό 1번 μ—…λ°μ΄νŠΈ ν•΄μ€€λ‹€.

 

 

(3) RNN 의 ν™œμš© 

 

βœ” RNN 의 μž…μΆœλ ₯은 task λͺ©μ μ— 따라 μ–Όλ§ˆλ“ μ§€ λ‹¬λΌμ§ˆ 수 μžˆλ‹€. 

 

 

  • One-to-One : μˆœν™˜μ μΈ 뢀뢄이 μ—†μœΌλ―€λ‘œ RNN 이 μ•„λ‹˜ 
  • One to many : 고정크기λ₯Ό μž…λ ₯ν•΄ μ‹œν€€μŠ€λ₯Ό 좜λ ₯ν•œλ‹€. 예λ₯Όλ“€μ–΄ 이미지λ₯Ό μž…λ ₯ν•΄ 이미지에 λŒ€ν•œ μ„€λͺ…을 λ¬Έμž₯으둜 좜λ ₯ν•˜λŠ” 이미지 μΊ‘μ…˜ 생성 task λ₯Ό μˆ˜ν–‰ν•œλ‹€. 
  • Many to one : μ‹œν€€μŠ€λ₯Ό μž…λ ₯ν•΄ κ³ μ • 크기λ₯Ό 좜λ ₯ν•œλ‹€. 예λ₯Όλ“€μ–΄ λ¬Έμž₯을 μž…λ ₯ν•΄ 긍뢀정 정도λ₯Ό 좜λ ₯ν•˜λŠ” 감정 뢄석기 task λ₯Ό μˆ˜ν–‰ν•œλ‹€. 
  • Many to Many : μ‹œν€€μŠ€λ₯Ό μž…λ ₯ν•΄ μ‹œν€€μŠ€λ₯Ό 좜λ ₯ν•œλ‹€. 예λ₯Όλ“€μ–΄ μ˜μ–΄λ₯Ό ν•œκ΅­μ–΄λ‘œ λ²ˆμ—­ν•˜λŠ” μžλ™ λ²ˆμ—­κΈ° task λ₯Ό μˆ˜ν–‰ν•œλ‹€. 
  • Many to Many(2) : λ™κΈ°ν™”λœ μ‹œν€€μŠ€λ₯Ό μž…λ ₯ν•΄ μ‹œν€€μŠ€λ₯Ό 좜λ ₯ν•œλ‹€. 예λ₯Όλ“€μ–΄ λ¬Έμž₯μ—μ„œ λ‹€μŒμ— λ‚˜μ˜¬ 단어λ₯Ό μ˜ˆμΈ‘ν•˜λŠ” μ–Έμ–΄ λͺ¨λΈ task (이번 chapter μ—μ„œ 닀룬 λ‚΄μš©) 을 μˆ˜ν–‰ν•œλ‹€. 

 

 

βœ” tagging : part-of-speech tagging, named entity recognition

 

 

βœ” λ¬Έμž₯λΆ„λ₯˜/감정뢄λ₯˜

 

 

 

βœ” encoder module : question answering, machine translation

 

 

 

βœ” generate text :  speech recognition, machine translation, summarization

 

 

3. Evaluating 

(1) Perplexity 

 

βœ” μ •μ˜ 

  • μ–Έμ–΄λͺ¨λΈμ€ μ£Όμ–΄μ§„ κ³Όκ±° 단어 μ •λ³΄λ‘œλΆ€ν„° λ‹€μŒμ— μΆœν˜„ν•  λ‹¨μ–΄μ˜ ν™•λ₯  뢄포λ₯Ό 좜λ ₯ν•˜λŠ” λͺ¨λΈ 
  • μ–Έμ–΄λͺ¨λΈμ„ ν‰κ°€ν•˜λŠ” λŒ€ν‘œμ μΈ 척도가 Perplexity πŸ‘‰ μΆœν˜„ν•  λ‹¨μ–΄μ˜ ν™•λ₯ μ— λŒ€ν•œ μ—­μˆ˜ 
  • 값이 μž‘μ„μˆ˜λ‘ 쒋은 μ–Έμ–΄λͺ¨λΈμ΄λΌ ν•  수 μžˆλ‹€. 

 

βœ” μˆ˜μ‹ ν˜•νƒœ 

  • μ†μ‹€ν•¨μˆ˜λ₯Ό λ„μž…ν•˜μ—¬ e^L ν˜•νƒœλ‘œ 정리됨 

 

βœ” 페이슀뢁 μ‹€ν—˜ κ²°κ³Ό 

 

πŸ‘€ 더 μ•Œμ•„λ³΄κΈ° 

  • μ–‘λ°©ν–₯ μˆœν™˜ 신경망 : μ‹œμ  tμ—μ„œμ˜ 좜λ ₯값을 μ˜ˆμΈ‘ν•  λ•Œ 이전 μ‹œμ μ˜ μž…λ ₯뿐만 μ•„λ‹ˆλΌ, 이후 μ‹œμ μ˜ μž…λ ₯ λ˜ν•œ μ˜ˆμΈ‘μ— κΈ°μ—¬ν•  수 μžˆλ‹€λŠ” 아이디어에 기반

 

 

πŸ“Œ μ‹€μŠ΅ 자료 

 

κΈ°μ΄ˆλΆ€ν„° μ‹œμž‘ν•˜λŠ” NLP: 문자-λ‹¨μœ„ RNN으둜 이름 λΆ„λ₯˜ν•˜κΈ° — PyTorch Tutorials 1.11.0+cu102 documentation

Note Click here to download the full example code κΈ°μ΄ˆλΆ€ν„° μ‹œμž‘ν•˜λŠ” NLP: 문자-λ‹¨μœ„ RNN으둜 이름 λΆ„λ₯˜ν•˜κΈ° Author: Sean Robertson λ²ˆμ—­: ν™©μ„±μˆ˜ 단어λ₯Ό λΆ„λ₯˜ν•˜κΈ° μœ„ν•΄ 기초적인 문자-λ‹¨μœ„ RNN을 κ΅¬μΆ•ν•˜κ³  ν•™μŠ΅ ν• 

tutorials.pytorch.kr

 

 

1) μˆœν™˜ 신경망(Recurrent Neural Network, RNN)

RNN(Recurrent Neural Network)은 μž…λ ₯κ³Ό 좜λ ₯을 μ‹œν€€μŠ€ λ‹¨μœ„λ‘œ μ²˜λ¦¬ν•˜λŠ” μ‹œν€€μŠ€(Sequence) λͺ¨λΈμž…λ‹ˆλ‹€. λ²ˆμ—­κΈ°λ₯Ό 생각해보면 μž…λ ₯은 λ²ˆμ—­ν•˜κ³ μž ν•˜λŠ” ...

wikidocs.net

 

 

6) RNN을 μ΄μš©ν•œ ν…μŠ€νŠΈ 생성(Text Generation using RNN)

λ‹€ λŒ€ 일(many-to-one) ꡬ쑰의 RNN을 μ‚¬μš©ν•˜μ—¬ λ¬Έλ§₯을 λ°˜μ˜ν•΄μ„œ ν…μŠ€νŠΈλ₯Ό μƒμ„±ν•˜λŠ” λͺ¨λΈμ„ λ§Œλ“€μ–΄λ΄…μ‹œλ‹€. ##**1. RNN을 μ΄μš©ν•˜μ—¬ ν…μŠ€νŠΈ μƒμ„±ν•˜κΈ°** 예λ₯Ό ...

wikidocs.net

 

728x90