Replicated

순환 신경망 (RNN, Recurrent Neural Network) / LSTM 본문

학부/빅데이터마이닝

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

라구넹 2025. 6. 8. 15:09

RNN

- 순환 신경망

- 시간적으로 연속성이 있는 데이터를 처리 (시계열 데이터)

- Recurrent: 반복적인 순환 구조를 갖는다

- 기억 능력을 가짐. 새로운 입력이 들어올 때마다 기억이 조금씩 수정

- 최종 출력: 모든 입력을 요약한 정보

- 각 단계마다 같은 가중치를 학습함

 

다양한 구조

일대다

- 입력이 하나이고 출력이 다수인 구조

- 이미지를 입력해서 이미지에 대한 설명을 문작으로 출력하는 이미지 캡션(image captioning)이 대표적

 

다대일

- 입력이 다수이고 출력이 하나인 구조

- 문장을 입력해서 긍정/부정을 출력하는 감정 분석기에서 사용

 

다대다

- 입력과 출력이 다수인 구조

- 언어를 번역하는 자동 번역기 등이 대표적

 

 

RNN 구조

RNN 계층(layer)과 셀(cell)

- RNN 셀은 RNN 계층의 구성 요소

- RNN 셀은 하나의 단계(time step)를 처리

- 입력과 과거 상태를 가져와 새로운 상태 출력

 

RNN의 가중치

- RNN 셀은 입력에 Wxh, 출력에 Why, 다음 스텝으로 보내는 가중치에 Whh를 곱함

- 세 개의 가중치는 모든 타임 스텝에서 동일

 

은닉층

- 이전 은닉층과 새로운 현재 입력과의 조합

- 활성화 함수: 하이퍼볼릭 탄젠트

 

출력층

- 소프트 맥스를 사용해 확률값 도출

- 각 타임 스템마다 오차를 측정

- 손실 함수의 예: 실제값 yt와 y^t의 평균 제곱 오차 (Mean Squared Error)

 

 

RNN 학습

RNN의 역전파

- 각 타임 스텝마다 오차 측정하고 역전파

- BPTT (Back Propagation Through Time) 이라 부름

- 오차가 멀리 전파될 때 기울기가 점점 작아지는 기울기 소실 문제 (Gradient Vanishing) 발생

- 1보다 작은 값을 계속 곱하기 때문

* 하이퍼볼릭 탄젠트 미분값이 1-y^2. 최대값이 1

 

기울기 폭발 문제 (Gradient Explosion)

- 행렬곱 연산에 의해 역전파 시 기울기가 계속 증가

- 같은 가중치 값이 계속 곱해져서 가중치 값에 따라 기울기가 지수적으로 증가할 수도, 감소할 수도 있음

- 증가하는 경우를 기울기 폭발이라 함

 

기울기 소실과 폭발 문제를 저감하기 위한 모델

- LSTM, GRU


LSTM

- 망각 게이트, 입력 게이트, 출력 게이트라는 새로운 요소를 은닉층의 각 뉴런에 추가

- h: hidden state, 히든 상태: 단기 기억과 출력에 사용

- c: cell state, 셀 상태: 장기 기억

 

망각 게이트 (forget gate)

- 과거 정보를 어느 정도 기억할지 결정

- 과거 정보와 현재 데이터를 입력받아 시그모이드를 취한 후 그 값을 과거 정보에 곱해 줌

- 시그모이드 출력이 0이면 버리고 1이면 온전히 보존

* [A, B] : concatenation

- : forget gate의 출력 (0~1 사이)

- : 시그모이드 함수

- : 망각 게이트의 가중치 행렬

- [ht−1,xt]: 이전 은닉 상태와 현재 입력을 연결(concatenation) 한 것

- : 이전 셀 상태

- : 업데이트된 셀 상태

 

 

입력 게이트 (input gate)

- 새로운 정보를 셀 상태에 얼마나 반영할지 결정

it 입력 게이트의 출력 (얼마나 받아들일지 결정)
c~t 새로 들어올 셀 상태 (후보 기억)
ct−1 이전 셀 상태 (기존 기억)
ctc 최종 업데이트된 새로운 셀 상태
[ht−1,xt] 이전 은닉 상태와 현재 입력의 연결

- 과거 정보와 현재 데이터를 입력받아 시그모이드와 tanh를 기반으로 현재 정보에 대한 보존량을 결정

- 1이면 현재 입력 xt가 들어올 수 있도록 허용, 0이면 차단

 

 

정확한 LSTM 셀 상태 업데이트 수식

실제로는 망각 게이트와 입력 게이트가 모두 셀 상태에 관여

첫번째 항: 망각 게이트 관여

두번째 항: 입력 게이트 관여

 

 

출력 게이트 (output gate)

- 과거 정보와 현재 데이터를 사용해 뉴런의 출력 결정

- 은닉 상태와 t번째 입력을 고려해서 다음 은닉 상태 계산

- LSTM에서는 이 은닉 상태가 그 시점에서의 출력

- ot : 출력 게이트 값 (0 ~ 1 사이, 시그모이드 결과)

- ht : 현재 시점의 은닉 상태

- ct : 업데이트된 셀 상태 (장기 기억)

- tanh(ct) : 셀 상태를 출력에 맞게 변환 (단기 기억 생성용 변환. 모든 정보가 출력될 필요가 없으니 -1 ~ 1 사이로 정규화)

 

 

LSTM 역전파

- C의 값이 tanh나 sigmoid를 직접 거치지 않고 다음 셀로 전달됨

- 합성곱이 있지만 셀마다 다른 값이 곱해짐

-> 기울기 소실 / 폭발 문제 저감