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

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

by isdawell 2022. 5. 19.
728x90

πŸ’‘ 주제 : ConvNets for NLP 


πŸ“Œ 핡심 

 

  • Task : sentence classification 
  • CNN, 2014 λ…Όλ¬Έ, 2017 λ…Όλ¬Έ 

 

 

1️⃣ CNN


 

1. RNN 의 문제

 

 

βœ” Prefix context λ₯Ό λͺ¨λ‘ 포함

 

β—½ the, of .. 와 같은 prefix context 없이 phrase λ₯Ό μž‘μ•„λ‚΄μ§€ λͺ»ν•œλ‹€. 

β—½ μ΄μ „ 토큰듀에 λŒ€ν•΄ 연산을 λͺ¨λ‘ μ§„ν–‰ν•œ ν›„ λ‹€μŒ 토큰에 λŒ€ν•΄ 연산을 μ§„ν–‰ν•œλ‹€. 

 

βœ” Last hidden state 에 μ˜λ―Έκ°€ 좕약됨

 

β—½ softmax κ°€ λ§ˆμ§€λ§‰ step μ—μ„œλ§Œ κ³„μ‚°λ˜λ―€λ‘œ λ§ˆμ§€λ§‰ 단어에 영ν–₯을 많이 λ°›λŠ”λ‹€ πŸ‘‰ 단점을 λ³΄μ™„ν•˜κΈ° μœ„ν•΄ LSTM, GRU, Attention 같은 λͺ¨λΈλ“€μ΄ λ“±μž₯

 

 

 

2. CNN for text 

 

βœ” main Idea 

 

 

What if we compute vectors for every possible word subsequence of a certain length?

 

πŸ‘€ λ¬Έμž₯ λ‚΄ κ°€λŠ₯ν•œ λͺ¨λ“  단어 subsequence 의 representation (벑터) 을 κ³„μ‚°ν•˜λ©΄ μ–΄λ–¨κΉŒ (λͺ¨λ“  κ°€λŠ₯ν•œ μ–΄μ ˆμ— λŒ€ν•΄ 벑터λ₯Ό κ³„μ‚°ν•΄λ³΄μž) 

 

 

πŸ‘‰ μ˜ˆμ‹œλ¬Έμž₯에 λŒ€ν•΄ window size κ°€ 3인 tri-gram 으둜 λ„μΆœ κ°€λŠ₯ν•œ word subsequence λ“€ 

πŸ‘‰ Text CNN 의 ν•„ν„°λŠ” ν…μŠ€νŠΈμ˜ 지역적인 정보 (λ‹¨μ–΄μ˜ λ“±μž₯μˆœμ„œ/λ¬Έλ§₯정보) λ₯Ό λ³΄μ‘΄ν•œλ‹€. 

 

 

βœ” 단점 

 

β—½ 언어학적 Idea κ°€ μ•„λ‹ˆλ‹€ πŸ‘‰ ν•΄λ‹Ή ꡬ문이 λ¬Έλ²•μ μœΌλ‘œ μ˜³μ€μ§€ νŒλ‹¨ν•  수 μ—†λ‹€. 

β—½ CNN 은 λΉ„μ „ 뢄야에 많이 적용됨

 

 

βœ” CNN

 

 

β—½ 이미지에 filter λ₯Ό κ°€ν•˜μ—¬ feature λ₯Ό μΆ”μΆœν•΄λƒ„ 

 

 

 

2️⃣ 1d Convolution for Text


 

1. 1d Conv

 

βœ” filter 의 이동방ν–₯이 μœ„μ•„λž˜λ‘œλ§Œ 이동 πŸ‘‰ 1d 

 

 

 

β—½ input : λ¬Έμž₯ λ‚΄ 각 단어λ₯Ό λ‚˜νƒ€λ‚΄λŠ” dense word vector 

β—½ fiter size = (word window size) x (word embedding vector size) 

β—½ input κ³Ό filter λ₯Ό 내적 

β—½ κ²°κ³Ό 벑터가 shrunk → padding 적용 

 

 

 

 

β—½ embedding vector 와 filter 의 dot product λ₯Ό 톡해 λ¬Έμž₯ 벑터λ₯Ό λ„μΆœν•œλ‹€. 

β—½ μ‚¬μ „ ν›ˆλ ¨λœ μž„λ² λ”©μ„ 톡해 λ„μΆœν•œ embedding vector 에 λŒ€ν•΄ 1d Conv μ—°μ‚° μˆ˜ν–‰ πŸ‘‰ν…μŠ€νŠΈλŠ” ν•˜λ‚˜μ˜ 토큰에 λŒ€ν•˜μ—¬ μž„λ² λ”©λœ κ°’λ“€μ˜ 정보λ₯Ό λͺ¨λ‘ ν¬ν•¨ν•˜μ—¬ μœˆλ„μš° μŠ¬λΌμ΄λ”©μ„ ν•΄μ•Όν•˜λ―€λ‘œ ν•œ λ°©ν–₯으둜 μ§„ν–‰ν•œλ‹€. 

 

πŸ’¨ (7x4) → (3x4 filter) → (5x1) 

  : 7개 각 λ‹¨μ–΄λŠ” 4μ°¨μ›μœΌλ‘œ μž„λ² λ”© 된 벑터이고 크기가 3인 컀널을 μ‚¬μš©ν•˜μ—¬ 내적값을 κ³„μ‚°ν•˜λ©΄ 5x1 λ¬Έμž₯ 벑터가 λ„μΆœλœλ‹€. 

 

 

2. padding 

 

βœ” λ¬Έμž₯ 길이 보쑴 

 

padding = 1

 

β—½ sliding filter 연산을 ν•˜κ²Œλ˜λ©΄ μ›λž˜μ˜ sequence 길이보닀 μž‘μ€ 길이의 κ²°κ³Όκ°€ μ‚°μΆœλœλ‹€. κΈ°μ‘΄ sequence 길이λ₯Ό λ³΄μ‘΄ν•˜κΈ° μœ„ν•΄ padding 을 ν•˜μ—¬ filtering 을 ν•œλ‹€. 

 

 

 

 

3. multiple channel 1d Conv

 

βœ” λ¬Έμž₯ μ •λ³΄λŸ‰ 보쑴 

 

 

 

β—½ μ—¬λŸ¬ 개의 ν•„ν„°λ₯Ό μ μš©ν•˜μ—¬, 원 λ¬Έμž₯에 λŒ€ν•΄ 정보λ₯Ό 더 많이 μΆ”μΆœν•œλ‹€. (outuput 차원 증가)

β—½ λ˜ν•œ ν•„ν„°μ˜ 크기λ₯Ό μ‘°μ •ν•˜μ—¬ n-gram 의 λ‹€μ–‘ν•œ feature λ₯Ό λ§Œλ“€ 수 μžˆλ‹€ (word window size) πŸ‘‰ λ‹€μ–‘ν•˜κ³  λ§Žμ€ filter λ₯Ό μ‚¬μš©ν•˜μ—¬ output 차원을 늘리고, feature λ₯Ό 많이 μ‚¬μš©ν• μˆ˜λ‘ κΈ°μ‘΄ λ¬Έμž₯에 λŒ€ν•œ μ •λ³΄λŸ‰μ΄ 컀진닀

 

 

 

4. pooling 

 

 

νŠΉμ§•μ„ μš”μ•½ν•˜λŠ” μ—­ν• 

 

βœ” Max pooling 

 

μ΅œλŒ€κ°’μ„ κ°€μ Έμ˜΄

 

pytorch

 

πŸ’¨ NLP μ—μ„œλŠ” max pooling 을 μ„ ν˜Έν•œλ‹€. 정보가 λͺ¨λ“  토큰에 골고루 μžˆλŠ” 것이 μ•„λ‹ˆλΌ sparse ν•˜κ²Œ μžˆλŠ” κ²½μš°κ°€ 많기 λ•Œλ¬Έ!

 

 

βœ” average pooling 

 

평균값을 μ‚¬μš©

 

 

βœ” K-max pooling , k=2 인 경우 

 

각 μ—΄μ—μ„œ max 값을 k개 μ„ μ •ν•˜κ³ , ν•΄λ‹Ή 값은 μ •λ ¬ 없이 λ™μΌν•˜κ²Œ κ°€μ Έμ˜¨λ‹€.

 

 

 

 

5. PLUS

 

βœ” stride

 

β—½ κ±΄λ„ˆλ›°λŠ” 칸의 크기 

β—½ NLP μ—μ„œλŠ” sequence 길이의 κ°μ†Œλ‘œ stride 2 이상을 많이 μ‚¬μš©ν•˜μ§„ μ•ŠλŠ”λ‹€.  

β—½ stride 2 → 2μΉΈμ”© λ›°μ–΄κ±΄λ„ˆ ν•©μ„±κ³± μ—°μ‚° 

 

 

 

 

βœ”  local max pooling

 

β—½ local max pooling 

 

2κ°œμ”© λ³΄λ©΄μ„œ max pool

 

βœ” dilation 

 

β—½ Dilated Conv 

 : 넓은 λ²”μœ„λ₯Ό 적은 νŒŒλΌλ―Έν„°λ₯Ό 톡해 ν•©μ„±κ³± 연산을 μ§„ν–‰ν•œλ‹€. 적은 νŒŒλΌλ―Έν„°λ‘œ 더 넓은 λ²”μœ„λ₯Ό λ³Ό 수 있게 함 

 

 

https://zzsza.github.io/data/2018/02/23/introduction-convolution/

 

 

 

 

β—½ Dilation rate : filter μ‚¬μ΄μ˜ 간격을 λœ»ν•œλ‹€. 

 

 

✨ λ¬Έμž₯의 의미 더 많이 μ΄ν•΄ν•˜λ„λ‘ ν›ˆλ ¨ν•˜λŠ” 방법 

1. Filter 의 크기 μ¦κ°€μ‹œν‚€κΈ° 
2. Dilated Conv 둜 ν•œ λ²ˆμ— λ³΄λŠ” λ²”μœ„ 늘리기 
3. CNN depth 증가

 

 

 

 

 

3️⃣ CNN for sentence Classification 


 

✨ Goal : Sentence classification 

 

 

 

1. Toolkits

 

βœ” Gated Units 

 

ResNet μ—μ„œ λ“±μž₯ν•œ ꡬ쑰 : Residual block, highway block

 

β—½ LSTM, GRU 에도 적용된 아이디어 

 

 

βœ” 1x1 Conv

 

 

β—½ kernel size = 1 

β—½ μ μ€ νŒŒλΌλ―Έν„°λ‘œ channel 을 μΆ•μ†Œν•˜λ―€λ‘œ 훨씬 효율적 

 

 

 

βœ” Batch Normalization 

 

 

β—½ Batch λ‹¨μœ„λ‘œ μ •κ·œν™” (평균0, λΆ„μ‚°1) : νŠΉμ • batch μ—μ„œμ˜ convolution output 을 mean=0, unit variance 둜 rescale

β—½ νŒŒλΌλ―Έν„° μ΄ˆκΈ°ν™”μ— 덜 민감해지며, ν•™μŠ΅λ₯ μ— λŒ€ν•œ Tuning 이 μ‰¬μ›Œμ§€κ³ , λͺ¨λΈμ˜ μ„±λŠ₯ 결과의 ν–₯상을 κ°€μ Έμ˜¨λ‹€. 

 

 

 

2. Yoon Kim (2014) : Convolution Neural Networks for Sentence Classification 

 

 

 

βœ” One Conv layer and pooling 

 

h=3

 

β—½ ν–‰λ ¬ 연산이 μ•„λ‹Œ, 단어 벑터듀을 concat ν•˜μ—¬ μ—°μ‚°ν•˜λŠ” 방식을 μ·¨ν•œλ‹€. 

β—½ Word vector : k-dimension 으둜 μž„λ² λ”©λœ 사전 ν›ˆλ ¨λœ 단어벑터 

β—½ Sentence : word vectors concatenated 

β—½ Conv filter : W, over window of h words 

 

 

 

β—½ n 개의 단어, h 크기의 window 

β—½ ν•œ 채널에 λŒ€ν•œ μ—°μ‚°μ˜ κ²°κ³Ό : Ci 

 

 

 

 

 

β—½ feature map C λ₯Ό Max pooling ν•˜μ—¬ 각 μ±„λ„λ§ˆλ‹€ ν•˜λ‚˜μ˜ 값을 μ–»λŠ”λ‹€. (νŠΉμ§•μΆ”μΆœ)  max pooling 을 ν•˜λ©΄ filter weight 와 window size, λ¬Έμž₯ 길이의 변화에 강해진닀. (κ°€μž₯ μ€‘μš”ν•œ activation 을 찾아냄) 

β—½ filter size = 2,3,4 인 filter λ₯Ό feature map 으둜 각 100κ°œμ”© μ‚¬μš©ν•˜μ˜€λ‹€. 

 

 

 

 

 

β—½ input 으둜 μ›Œλ“œ μž„λ² λ”©μœΌλ‘œ μž„λ² λ”© 된 벑터λ₯Ό μž…λ ₯ν•  λ•Œ, 기쑴의 pre-trained word vector 둜 μ΄ˆκΈ°ν™” μ‹œμΌ°κ³ , fine-tuning 을 ν•œ 것 (static)κ³Ό μ•ˆν•œ 것 (non-static) 을 λ‘˜ λ‹€ μ‚¬μš©ν•œλ‹€. 

β—½ CNN 을 ν†΅κ³Όν•œ ν›„ pooling ν•œ μ΅œμ’… 벑터 z λ₯Ό μ†Œν”„νŠΈλ§₯슀λ₯Ό 톡해 μ΅œμ’… λΆ„λ₯˜λ₯Ό μˆ˜ν–‰ν•œλ‹€. 

 

Dropout κ³Ό L2Norm 을 μ μš©ν•΄ μ„±λŠ₯ ν–₯상을 꽀함

 

 

 

 

3. Alexis Conneau (2017) : VD-CNN

 

 

NLP λͺ¨λΈλ„ CNN처럼 κΉŠμ€ ꡬ쑰둜 λ§Œλ“€ 수 μžˆμ–΄!

 

βœ” Deep models 

 

β—½ ν…μŠ€νŠΈ λΆ„λ₯˜λ₯Ό 컴퓨터 λΉ„μ „ ꡬ쑰둜 μ‹€ν—˜ν•œ λ…Όλ¬Έ 

 

 

 

 

β—½ Character λ‹¨μœ„λ‘œ input 을 λ°›μŒ 

β—½ NLP μ—μ„œ RNN, Attention λ“±μ˜ λͺ¨λΈμ˜ layer κ°€ deep ν•˜μ§€ μ•ŠμŒ πŸ‘‰ VGG-Net 처럼 deep ν•˜κ²Œ μŒ“μ•„λ³΄μž!

β—½ Model from the character level κΈ€μž λ‹¨μœ„λ‘œ μž„λ² λ”©μ„ μ§„ν–‰ν•œλ‹€. 

   β—Ύ s = 1024 characters, 16 μž„λ² λ”©

   β—Ύ Text size λŠ” padding μ΄λ‚˜ μ ˆλ‹¨μ„ 톡해 ν…μŠ€νŠΈ 길이λ₯Ό λ™μΌν•˜κ²Œ ν•œλ‹€. 

   β—Ύ Local pooling 으둜 λ¬Έμž₯길이 μΆ•μ†Œ, channel 수λ₯Ό 2배둜 ν•˜μ—¬ feature λŠ” 두 배둜 μ¦κ°€μ‹œν‚΄ 

 

 

 

β—½ Convolution block 

  β—Ύ 2개의 Conv layer 

  β—Ύ Batch Norm, ReLU 적용 

  β—Ύ ν•„ν„° 크기 = 3 , padding μ μš©ν•˜μ—¬ input 길이 κ³ μ • 

 

 

 

 

πŸ‘‰ λ‹€μ–‘ν•œ 데이터셋에 λŒ€ν•΄ 측이 κΉŠμ–΄μ§ˆμˆ˜λ‘ μ„±λŠ₯이 κ°œμ„ λœ 점을 λ„μΆœ, κ·ΈλŸ¬λ‚˜ pooling 방법에 따라 μ„±λŠ₯은 λ°μ΄ν„°μ…‹λ§ˆλ‹€ 차이가 μ‘΄μž¬ν•¨μ„ 밝힘 

 

 

 

✨ CNN for NLP 

1. feature λ₯Ό ν¬μ°©ν•˜λŠ” μˆœμ„œ : tokens → multi-word → expressions →  phrases →  sentence 
2. κ΅¬ν˜„μ΄ 잘 λ˜μ–΄μžˆκ³  μ‚¬μš©ν•˜κΈ° νŽΈλ¦¬ν•˜λ‹€. 
3. 첫번째 단어와 λ§ˆμ§€λ§‰ 단어λ₯Ό 잘 ν¬μ°©ν•˜κΈ° μœ„ν•΄ λ§Žμ€ Conv layer κ°€ ν•„μš”ν•˜λ‹€. 
4. 전체λ₯Ό λ³΄λŠ” RN (relation network) 와 local ν•˜κ²Œ ν¬μ°©ν•˜λŠ” CNN 의 μž₯점을 합쳐 λ‚˜μ˜¨κ²ƒμ΄ Self Attention 이닀. 

 

 

4️⃣ Quasi-Recurrent Nueral Network


 

 

β—Ύ CNN κ³Ό RNN 을 κ²°ν•©ν•œ λͺ¨λΈλ‘œ, 두 λͺ¨λΈμ˜ μž₯μ λ§Œμ„ 가져와 Conv 와 Pooling 을 톡해 sequencial data λ₯Ό λ³‘λ ¬μ μœΌλ‘œ μ²˜λ¦¬ν•œλ‹€. 감정뢄λ₯˜λ₯Ό μ§„ν–‰ν–ˆμ„ λ•Œ, LSTM κ³Ό λΉ„μŠ·ν•œ μ„±λŠ₯을 λ³΄μ΄μ§€λ§Œ 3λ°° λΉ λ₯Έ 속도λ₯Ό λ³΄μ˜€λ‹€κ³  ν•œλ‹€!

 

 

 

5️⃣ CNN for NLP 에 κ΄€ν•œ λ‹€λ₯Έ 연ꡬ/μ‹€ν—˜


 

seq2seq 이전에 λ‚˜μ˜¨ λ²ˆμ—­ λͺ¨λΈλ‘œ encode 둜 CNN, decoder 둜 RNN 을 μ‚¬μš©ν•œ ꡬ쑰

 

 

 

 

728x90

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

Glove μ‹€μŠ΅  (0) 2022.05.31
[cs224n] 12κ°• λ‚΄μš©μ •λ¦¬  (0) 2022.05.23
ν…μŠ€νŠΈ 뢄석 β‘‘  (0) 2022.05.17
ν…μŠ€νŠΈ 뢄석 β‘   (0) 2022.05.14
[cs224n] 10κ°• λ‚΄μš© 정리  (0) 2022.05.13

λŒ“κΈ€