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


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 구조
▶ 순환신경망 구조

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

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

LSTM 구조 = cell state + forget gate + input gate + output gate
- 이전과 현재 state의 정보를 얼마나 기억할지 결정하는 역할을 하는 gate를 가짐
- gate를 이용해 이전 정보와 현재 정보를 적절히 통합하여 필요한 정보만 기억하도록 제어
① cell state (셀 상태)

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

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

- 현재 state의 정보를 얼마나 반영할 것인지 결정
- tanh와 Sigmoid 함수를 활성화 함수로 사용
- tanh는 기존의 RNN에서와 동일하게 nonlinearity를 부여하는 기능
Sigmoid는 forget gate와 마찬가지로 현재 정보를 얼마나 전달할지 결정
- cell state는 forget gate의 결과값과 곱해지고, input gate의 결과값과 더해지며 업데이트

④ output gate (출력 게이트)

- 현재의 은닉 상태(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