본문 바로가기
인공지능/신경망

순환신경망(RNN), LSTM, GRU

by 베니스스토리 2023. 7. 15.

순환 신경망(Recurrent Neural Network, RNN)은 딥러닝의 한 종류로, 시퀀스 데이터를 처리하기 위해 설계된 신경망입니다. 시퀀스 데이터는 순서와 시간적인 의존 관계를 가지는 데이터로, 예를 들면 문장, 음성, 주식 가격 등이 있습니다. RNN은 이러한 시퀀스 데이터의 특성을 이해하고 활용하여 예측, 분류, 생성 등 다양한 작업을 수행할 수 있습니다.

 

RNN의 구조

RNN은 기본적으로 반복적인 구조를 가지고 있습니다. 각 시간 단계에서 입력을 받아 처리한 후, 이전 시간 단계의 출력을 기반으로 현재 시간 단계의 출력을 계산합니다. 이를 위해 RNN은 순환연결(recurrent connection)을 사용하여 이전 시간 단계의 출력을 현재 시간 단계의 입력과 함께 고려합니다. 이러한 구조로 인해 RNN은 이전 정보를 기억하고 현재 입력과 결합하여 의미 있는 출력을 생성할 수 있습니다.

 

RNN의 기본 구조를 수식으로 나타내면 다음과 같습니다. 시간 단계를 t라고 하고, 입력을 x(t), 이전 시간 단계의 출력을 h(t-1), 현재 시간 단계의 출력을 h(t)라고 표현합니다. RNN은 다음과 같은 과정을 거쳐 출력을 계산합니다.

 

 

입력과 이전 시간 단계의 출력을 결합하여 현재 시간 단계의 입력을 만듭니다.

z(t)=Wxh*x(t)+Whh*h(t-1)+b

여기서 Wxh는 입력 x(t)에 대한 가중치, Whh는 이전 출력 h(t-1)에 대한 가중치, b는 편향(bias)을 나타냅니다.

 

현재 시간 단계의 입력을 활성화 함수(activation ffunction)에 적용하여 출력을 계산합니다.

h(t)=f(z(t))

여기서 f는 비선형 활성화 함수입니다.

 

RNN은 시간의 흐름에 따라 입력과 출력의 길이가 달라질 수 있는 유연한 구조를 가지고 있습니다. 예를 들어, 문장의 길이가 다른 경우에도 RNN은 문장의 시작부터 끝까지 순차적으로 처리하면서 문맥을 파악할 수 있습니다. 이는 자연어 처리 작업에서 특히 유용하게 활용됩니다.

 

RNN 알고리즘

RNN은 역전파(backpropagation) 알고리즘을 사용하여 학습됩니다. 주어진 입력 시퀀스와 대응하는 출력 시퀀스를 이용하여 모델의 가중치를 조정하고, 오차를 최소화하는 방향으로 학습이 진행됩니다. 이를 위해 시간 단계별로 역전파가 진행되며, 각 시간 단계의 출력과 입력으로부터 기울기(gradient)를 계산하여 가중치를 업데이트합니다.

 

그러나 RNN에는 기울기 수신(vanishing gradient) 문제가 발생할 수 있습니다. 기울기 소실 문제란 역전파 과정에서 기울기가 지나치게 작아져 가중치가 제대로 업데이트되지 않는 현상을 말합니다. 이는 RNN의 순환 구조로 인해 장기 의존 관계를 모델링하는 데 어려움을 초래하 수 있습니다.

 

RNN의 변형

이러한 문제를 해결하기 위해 LSTM(Long Short-Term Memory)과 GRU(Gated Recurrent Unit)와 같은 변형된 RNN 구조가 제안되었습니다. LSTM과 GRU는 기본 RNN에 메모리 셀(memory cell)이 추가된 구조로, 중요한 정보를 기억하고 필요한 만큼만 전달할 수 있는 능력을 가지고 있습니다. 이를 통해 RNN은 장기적인 의존 관계를 모델링할 수 있게 되었습니다.

 

요약하자면, RNN은 시퀀스 데이터를 처리하는 신경망으로, 이전 시간 단계의 출력을 현재 시간 단계의 입력과 함께 고려하여 출력을 생성합니다. RNN은 시간의 흐름에 따라 입력과 출력의 길이가 다를 수 있으며, 역전파 알고리즘을 사용하여 학습됩니다. 그러나 기울기 소실 문제를 해결하기 위해 LSTM과 GRU와 같은 변형된 LSTM과 GRU와 같은 변형된 LSTM과 GRU 구조가 사용됩니다. LSTM과 GRU은 자연어 처리, 음성 인식, 시계열 데이터 분석 등 다양한 분야에서 활용됩니다.

 

LSTM(Long Short-Ter Memory)

LSTM은 기본 RNN에 메모리 셀이 추가된 구조를 가지고 있습니다. 메모리 셀은 시간의 흐름에 따라 정보를 기억하고 유지할 수 있는 공간입니다. LSTM은 다음과 같은 주요 구성 요소로 이루어져 있습니다.

 

LSTM 의 구성

- 입력 게이트(Input Gate) : 현재 시간 단계의 입력과 이전 시간 단계의 출력을 기반으로 어떤 정보를 메모리 셀에 저장할지 결정합니다. 입력 게이트는 시그모이드 활성화 함수를 통해 0과 1 사이의 값으로 출력되며, 0에 가까울수록 해당 정보를 무시하고 1에 가까울수록 해당 정보를 저장합니다.

 

- 삭제게이트(Forget Gate) : 이전 시간 단계의 출력과 현재 시간 단계의 입력으 기반으로 어떤 정보를 메모리 셀에서 삭제할지 결정합니다. 삭제 게이트는 시그모이드 활성화 함수를 통해 0과 1 사이의 값으로 출력되며, 0에 가까울수록 해당 정보를 완전히 삭제하고 1에 가까울수록 해당 정보를 유지합니다.

 

- 셀 상태(Cell State) : 메모리 셀 내에서 장기적인 정보를 저장하는 역할을 합니다. 셀 상태는 삭제 게이트와 입력 게이트를 통해 조절되며, 현재 시간 단계의 입력과 이전 시간 단계의 출력을 기반으로 갱신됩니다.

 

- 출력 게이트(Output Gate) : 메모리 셀 내에 저장된 정보 중 어떤 부분을 현재 시간 단계의 출력으로 사용할지 결정합니다. 출력 게이트는 시그모이드 활성화 함수를 통해 0과 1사이의 값으로 출력되며, 0에 가까울수록 해당 정보를 무시하고 1에 가까울수록 해당 정보를 출력에 반영합니다.

 

 

GRU(Gated Recurrent Unit)

GRU는 LSTM과 마찬가지로 RNN의 변형된 구조입니다. LSTM과 마찬가지로 GRU는 RNN의 기울기 소실 문제와 장기 의존 관계 모델링의 어려움을 해결하기 위해 고안되었습니다. GRU는 LSTM과 비슷한 성능을 가지면서도 더 간단한 구조를 가지고 있어 계산적인 측면에서 유리할 수 있습니다.

 

GRU의 구성

- 업데이트 게이트(Update Gate) : 현재 시간 단계의 입력과 이전 시간 단계의 출력을 기반으로 얼마나 이전 정보를 유지할지 결정합니다. 업데이트 게이트는 시그모이드 활성화 함수를 통해 0과 1 사이의 값으로 출력되며, 0에 가까울수록 이전 정보를 무시하고 1에 가까울수록 이전 정보를 유지합니다.

 

- 재설정 게이트(Reset Gate) : 이전 시간 단계의 출력과 현재 시간 단계의 입력을 기반으로 이전 정보를 잊을지 결정합니다. 재설정 게이트는 시그모이드 활성화 함수를 통해 0과1 사이의 값을 출력하며, 0에 가까울수록 해당 정보를 완전히 잊고 1에 가까울수록 이전 정보를 유지합니다.

 

- 은닉 상태(Hidden State) : GRU의 메모리 역할을 수행하는 부분으로, 현재 시간 단계의 입력과 업데이트 게이트의 출력을 기반으로 새로운 은닉 상태를 계산합니다. 은닉 상태는 이후 시간 단계의 계산에 사용됩니다.

GRU Gating. Chung, Junyoung, et al. “Empirical evaluation of gated recurrent neural networks on sequence modeling.” (2014)

'인공지능 > 신경망' 카테고리의 다른 글

활성화 함수1  (0) 2023.07.17
GAN(Generative Adversarial Network)  (0) 2023.07.16
합성곱 신경망 (CNN)  (0) 2023.07.14
딥러닝의 종류  (0) 2023.07.13
딥러닝이란  (0) 2023.07.12