working_helen

[NLP 학습] 1주차 : 순환신경망 RNN, LSTM 본문

deep daiv./NLP 스터디

[NLP 학습] 1주차 : 순환신경망 RNN, LSTM

HaeWon_Seo 2024. 8. 4. 13:48

 

출처 : https://kyull-it.tistory.com/212
출처 : https://brunch.co.kr/@jean/5

 

NMT (Neural Machine Translation)에 관해 학습하기 위해 NMT에서 seqeunce data 처리를 위해 사용되는 RNN과 LSTM을 먼저 학습해본다. 

 

1. RNN

2. LSTM

 


1. RNN

1) RNN의 등장배경

 

① 순차적 데이터 처리의 어려움
- sequential problem : 현실 데이터는 순서를 가지는 sequential data인 경우가 많음
- 자연어 처리, 음성인식, 기계번역, 시계열 예측 등
- sequential data는 이전의 state가 다음 state에 영향을 미치는 구조이기 때문에 이전 상태의 정보를 보존하여 현재의 입력과 함께 처리할 수 있어야 함
- DNN은 각각의 입력을 독립적으로 처리하기 때문에 이전 state의 정보를 제대로 반영하지 못함

 

② 고정된 길이의 입력과 출력만 처리

- 자연어와 음성 데이터의 경우 길이가 매우 가변적이라 input sequence의 길이가 고정되어 있지 않음
- DNN의 입력층과 출력층은 고정된 수의 노드로 구성
- input과 output이 고정된 크기의 vector로 인코딩되는 문제에만 적용 가능
- input의 길이가 고정되어 있지 않은 경우 적용이 어렵다는 한계를 가짐

 

➡️  RNN (Recurrent Neural Network, 순환신경망)
= input의 길이와 상관없이, 순차적으로 데이터를 처리하는 구조 
= 가변 길이의 순차적 데이터를 효율적으로 처리하기 위해 고안된 신경망 구조
= 자연어와 음성 데이터, 시계열 데이터 등 sequence 구조의 데이터를 처리하는데 효과적

 

순차적 데이터 처리 & 기억 능력
- RNN은 데이터를 순차적으로 처리하면서 이전 state의 정보를 기억하여 다음 state에 반영
- 현시점의 hidden state가 이전 state의 모든 history를 저장
- 데이터의 순서와 맥락을 고려한 처리가 가능

 

가변 길이의 입력을 처리 가능
- input의 길이와 상관없이 순차적으로 데이터를 처리
- 가변 길이의 데이터를 다룰 수 있음

 

 

 

2) RNN의 구조 

2024.01.30 - [교내 활동/인공지능 수업] - [NLP] Language Model / n-gram, NNLM, RNNLM

 

[NLP] Language Model / n-gram, NNLM, RNNLM

1. Language Model 2. n-gram Language Models 3. NNLM 4. RNN 1. Language Model (LM) - 가능한 모든 word sequence에 대하여 확률을 계산하는 모델 - 이전 단어들이 주어졌을 때 특정 단어가 그 다음으로 올 확률을 계산하

working-helen.tistory.com

 

 

 

 

 

2. LSTM

1) LSTM의 등장배경

 

" long term dependency 장기 의존성 문제 "
- RNN에서 input sequence의 길이가 길어지면 뒤로갈수록 초반 데이터에 대한 정보가 소실되는 문제
- 이전 정보를 제대로 기억하지 못하게 됨

➡️ LSTM (Long Short-Term Memory)
= long term dependency 문제를 보완한 RNN 모델
= RNN 은닉층의 연산 방식을 변형해 이전 정보를 오랫동안 기억할 수 있도록 개선한 모델
= 긴 input sequence도 효과적으로 처리



 

2) LSTM 구조

▶ 순환신경망 구조

출처 : https://incodom.kr/LSTM

 

▶ RNN의 은닉층 구조 : tanh layer 하나로 구성 

 

 

▶ LSTM의 은닉층 구조 : 상호작용하는 4개의 layer로 구성 

출처 : https://dgkim5360.tistory.com/entry/understanding-long-short-term-memory-lstm-kr

 

 

LSTM 구조 = cell state + forget gate + input gate + output gate

 

- 이전과 현재 state의 정보를 얼마나 기억할지 결정하는 역할을 하는 gate를 가짐
- gate를 이용해 이전 정보와 현재 정보를 적절히 통합하여 필요한 정보만 기억하도록 제어

 

 

cell state (셀 상태)

https://dgkim5360.tistory.com/entry/understanding-long-short-term-memory-lstm-kr


- 이전 상태에서 현재로 넘어오는 정보
- cell state로 이전 정보를 기억하고, 여기에 새로운 정보를 필요한 만큼 업데이트 

 

 

② forget gate (망각 게이트)

https://dgkim5360.tistory.com/entry/understanding-long-short-term-memory-lstm-kr

 

- 이전 셀 상태의 정보를 얼마나 받아들일 것인지 결정
- Sigmoid 함수를 활성화 함수로 사용
- Sigmoid의 함수값 0~1을 곱함으로써 넘어온 이전 정보를 얼마나 전달할지 결정 

 

 

input gate (입력 게이트)

https://dgkim5360.tistory.com/entry/understanding-long-short-term-memory-lstm-kr


- 현재 state의 정보를 얼마나 반영할 것인지 결정
- tanh와 Sigmoid 함수를 활성화 함수로 사용
- tanh는 기존의 RNN에서와 동일하게 nonlinearity를 부여하는 기능
  Sigmoid는 forget gate와 마찬가지로 현재 정보를 얼마나 전달할지 결정 

 

- cell state는 forget gate의 결과값과 곱해지고, input gate의 결과값과 더해지며 업데이트 

https://dgkim5360.tistory.com/entry/understanding-long-short-term-memory-lstm-kr

 

 

④  output gate (출력 게이트)

https://dgkim5360.tistory.com/entry/understanding-long-short-term-memory-lstm-kr

 

- 현재의 은닉 상태(h_t)를 계산 
- tanh와 Sigmoid 함수를 활성화 함수로 사용
- Sigmoid는 계산된 cell state에서 어떤 부분을 사용할지 결정
- tanh를 거친 cell state값과 위 값을 곱해줌으로써 cell state에서 원하는 부분만 출력

 

 

 

 

 

Reference

https://m.blog.naver.com/ter1943/221807918010
https://ctkim.tistory.com/entry/LSTMLong-short-time-memory-%EA%B8%B0%EC%B4%88-%EC%9D%B4%ED%95%B4
https://dgkim5360.tistory.com/entry/understanding-long-short-term-memory-lstm-kr

https://kyull-it.tistory.com/212