[Deep Learning - NLP] Language Modeling With RNN

2022. 5. 9. 21:33AI/Codestates

728x90
반응형

RNN ( Recurrent Neural Network, 순환 신경망 ) 이란?

입력과 출력을 시퀀스 단위로 처리하는 시퀀스 ( Sequence ) 모델

▶ RNN의 종류

① one to one : 1개의 벡터를 받아 Sequential한 벡터를 반환

ex) 이미지 캡셔닝(Image captioning)

② one to many :  Sequential 벡터를 받아 1개의 벡터를 반환

ex) 감성 분석(Sentiment analysis)

③ many to many (1) :  Sequential 벡터를 모두 입력받은 뒤 Sequential 벡터 출력

ex) 시퀀스-투-시퀀스(Sequence-to-Sequence, Seq2Seq) 구조, 기계 번역(Machine translation)

③ many to many (2) :  Sequential 벡터를 입력받는 즉시 Sequential 벡터를 출력

ex) 비디오를 프레임별로 분류(Video classification per frame)

▶ RNN 장점

→ 모델이 간단함
어떤 길이의 sequential 데이터라도 처리할 수 있음

▶ RNN 단점

→ 병렬화 불가능 (1) 

→ 기울기 소실 및 폭발 (2)

LSTM과 GRU 이란?

▶ LSTM ( Long Short Term Memory, 장단기기억망 )

→ Gate

○ Forget Gate : 과거 정보 유지 비율

○ Input Gate : 새로운 정보 반영 비율

○ Output Gate : 출력으로 얼마나 넘겨줄까의 비율

→ State

○ Cell State

○ Hidden State

▶ GRU ( Gated Recurrent Units )

→ State

○ Hidden State

→ Gate

○ Reset Gate

○ Update Gate ( Forget Gate + Input Gate )

Attention이란?

처리하고자 하는 시퀀스가 길 때, 앞쪽 토큰의 정보를 잃어버리는 문제를 해결하기 위해 인코더에서의 전체 입력 문장을 다시 한 번 참고하는 것

 

→ 쿼리 : 분석 하고자 하는 단어에 가중치 벡터

→ 키 : 각 단어가 쿼리에 해당하는 단어와 얼마나 연관있는지를 비교하기 위한 가중치 벡터

→ 벨류 : 각 단어의 의미를 살려주기 위한 가중치 벡터

dict = {"a" : 1} # Key "a", Value 1
dict["a"] # Query

728x90
반응형