Data Science/Neural Network

RNN 계열 신경망 모델

준나이 2021. 4. 19. 13:02

1. Vanilla NN

2. RNN

 

1) NN vs. RNN

  • NN은 INPUT을 sequential 하게 받을 수 없어서 보통 bag-of-words 으로 대신 표현함 (순서고려X)
  • RNN은 하나의 cell(or neuron) 을 재사용해서 sequential 한 데이터를 INPUT으로 받음

 

2) RNN vector

(1) static RNN vs. dynamic RNN

  • dynamic RNN (deprecated) : 
    • 문장의 길이(seq_len)만큼 recurrent가 일어남 
    • 별도로 각 문장마다 길이가 얼마인지를 명시해줘야함
  • static RNN :
    • 문장의 길이(seq_len)가 고정 되있음 
    • 보통 별도의 padding이나 truncating이 필요
  • dynamic이 더 합리적으로 보이는데 오히려 복잡도 등이 더 높다고 함

(2) input shape

  • static RNN의 경우 : batch_size * seq_len * emb_size(= n_hidden_unit) 
  • batch size 뿐만아니라 seq_len도 고려해서 feeding을 해줌
  • 주의 : cell(or neuron)의 갯수는 1개이다. seq_len * batch_size 개 가 아니다.
  • seq_len이 길어질수록 vanishing gradient 문제 발생 확률이 높아짐 
    → 이 문제 해결을 위해 세로운 형태의 Cell이 만들어지고 activation function이 만들어진다.
  • stateful : 다음 batch 때도 hidden_state를 유지할 것인가?

(3) vectorisation

  • one hot vector(bag-of-words) : one hot vector
  • pretrained vector : w2v 같은 이미 학습된 word embedding 사용
  • emb vector : 별도의 Embedding Layer를 두어 one hot vector와 동시에 사용
  • (참고) word embedding의 장점 :
    • 계산량 감소
    • vector가 의미를 갖게됨

 

3) Cell 종류

  • (좌) : GRU / (우) : LSTM
  • seq_len이 길어질수록 이전에 데이터는 잊혀지는데 이러한 문제를 해결하기 위해 별도의 셀을 사용
  • GRU vs. LSTM
    • GRU가 가벼움
    • 성능의 차이는 그리 크지 않음
    • LSTM이 overfitting될 확률이 더 높음

 

(4) Activation Function

back propagtion을 할 때 activation function의 역함수를 취하게 됨

sigmoid의 역함수는 결과 값(y)이 0~0.25 정도 → 곱하면 곱할수록 값이 0에 수렴하게 됨

tanh의 역함수는 sigmoid에 비해 값이 커서  0에 수렴하는 정도가 더 약함

→ tanh도 결국은 vanishing problem 문제를 완화한 것이지 극복한것은 아님

 

(5) RNN 종류

  • one-to-one : Vanilla NN
  • one-to-many : Image Captioning
  • many-to-one : Text Classification
  • many-to-many(1) : Seq2Seq
  • many-to-many(2) : Video 

 

3. Advanced RNN

Seq2Seq

[Enc-dec 구조] : encoder source 문장 meaning vector 변환하고 번역을 위해 decoder에 보낸다.

encoding 시 context vector를 만들면서 정보가 손실될 수 있음

decoding 시 강조 해야할 input vector를 파악할 수 없음

Attention

attention mechanism의 주요한 아이디어는 번역할 때 관련있는 source content에 "attention"을 줌으로써 target 문장과 source 문장 사이에 connection을 만드는 것이다. 

attention mechanism에서 얻은 또 다른 이점은 쉽게 source와 target과의 관계를 쉽게 시각화할 수 있다는 것이다.

BUT source ↔ source 혹은 target ↔ target 간의 관계는 도출하지 못함

 

Transformer

 

attention을 RNN을 보정하는 구조가 아니라 attention 만으로 인코더+디코더 구현 → Attention Is All You Need

참고자료 : https://wikidocs.net/31379

 

4. RNN for Rec 

GRU4Rec / SASRec

고객의 행동을 sequence 형태로 받아서 추천에 활용

기본 알고리즘과 달라지는 부분은 negative sampling과 마지막에 상품을 predict 할 때 factorization의 형태로 predict하는 점이 다르다.