오답노트

[NLP] RNN (Recurrent Neural Network) 본문

Python/DL

[NLP] RNN (Recurrent Neural Network)

권멋져 2022. 10. 6. 19:36

https://wikidocs.net/22886

 

1) 순환 신경망(Recurrent Neural Network, RNN)

RNN(Recurrent Neural Network)은 입력과 출력을 시퀀스 단위로 처리하는 시퀀스(Sequence) 모델입니다. 번역기를 생각해보면 입력은 번역하고자 하는 ...

wikidocs.net

RNN (Recurrent Neural Network)

RNN은 입력과 출력을 시퀀스 단위로 처리하는 시퀀스 모델이다. RNN은 은닉층에 hidden state를 이용하는 방법으로 다음 입력에 hidden state를 사용 하여 입력에 대한 새로운 hidden state를 계속 만들어낸다.

 

RNN은 시퀀스 단위로 처리하기 때문에 품사태깅의 모호성을 해결할 수 있다.

 

현재 시점의 hidden state ht는 직전 시점의 hidden state ht-1과 현재 시점의 input x를 받아서 갱신한다.

그리고 현재 상태의 output y는 ht를 받아 출력하게 된다.

 

식으로 나타내면 아래와 같다.

 

 

하이퍼볼릭 탄젠트 (Hyperbolic Tangent : tanh)

하이퍼볼릭 탄젠트는 hidden state의 활성 함수이다.

하이퍼볼릭 탄젠트는 실수 범위의 입력값을 받아 (-1,1) 사이의 출력 값으로 변환한다.

기울기가 양수, 음수 모두 존재하므로 sigmoid 함수보다 학습 효율성이 뛰어나다.

또 sigmoid 함수보다 출력값 범위가 넓기 때문에 기울기 소멸 현상이 더 작다.

 

RNN 문제점

  1. RNN은 시퀀스 단위로 입력이 들어오기 때문에, 긴 시퀀스를 가진 입력이 들어오면 모델 성능이 저하된다.
  2. 특정 시간대에 형성된 정보를 먼 시간대로 전달하기 어렵다 -> 시퀀스 길이가 길어지면 뒤로 갈 수록 앞의 값을 제대로 전달하지 못함
  3. gradient vanishing, gradient exploding이 발생하여 모델이 최적화되지 않음
  4. 사람의 장기 기억에 해당하는 요소가 RNN에서는 작동하기 어려움

 

RNN 언어 모델

  1. 많은 양의 데이터와 목적에 맞는 언어, 도메인
  2. 형태소분석하여 사전 구축
  3. 단어의 인코딩 (벡터값 등..)
  4. RNN 모델을 만들어 softmax를 통해 단어를 예측

'Python > DL' 카테고리의 다른 글

[NLP] Sequence-to-Sequence (seq2seq)  (1) 2022.10.06
[NLP] Long Short-Term Memory (LSTM)  (1) 2022.10.06
[NLP] CNN 기반 텍스트 분류  (0) 2022.10.06
[NLP] 워드 임베딩 (Word Embedding)과 Word2Vec  (1) 2022.10.05
[NLP] 문서 클러스터링  (0) 2022.10.04