경사도 사라짐 문제(Vanishing Gradient Problem) & LSTM & GRU
경사도 사라짐 문제(Vanishing Gradient Problem)
정의
경사도 사라짐 문제는 딥러닝 모델을 훈련할 때, 역전파 과정에서 아웃풋 레이어의 에러값이 이전 레이어로 전달될 때
기울기(Gradient)가 점점 작아져서 거의 사라지는 현상을 말한다.
이는 특히 깊은 신경망이나 RNN(순환 신경망) 에서 두드러진다.
RNN에서의 경사도 사라짐 문제
RNN은 시간 축을 따라 시계열 데이터를 처리하는데,
시간이 지남에 따라 초기 데이터의 영향력이 감소하여 장기적인 패턴을 학습하는 데 어려움을 겪는다.
이는 RNN이 장기 기억을 유지하지 못하고, 현재 시간과 가까운 데이터만을 고려하게 만들어 모델 성능을 저하시킨다.
LSTM ( Long Short-Term Memory Networks )
정의 및 목적
LSTM은 RNN의 단점으 ㄹ보완하여 경사도 사라짐 문제를 해결하기 위해 제안된 발전된 RNN구조이다.
중요한 정보를 오랜 시간 동안 유지하고 필요하지 않은 정보를 잊어버리는 능력을 갖추고 있다.
LSTM의 구조
LSTM은 메모리블록(Memory Block)으로 구성되며, 각 블록은
인풋게이트(Input Gate), 포겟게이트(Forget Gate), 아웃풋 게이트(Output Gate) 로 이루어져 있다.
- 인풋 게이트 (Input Gate): 현재 입력 데이터를 얼마나 반영할지 결정
- 포겟 게이트 (Forget Gate): 이전 시간 단계에서 넘겨받은 정보를 얼마나 잊을지 결정
- 블럭 인풋 게이트(Block Input Gate): 메모리 입력값에 활성 함수를 씌움
- 아웃풋 게이트 (Output Gate): 현재 상태를 얼마나 출력할지 결정
은닉층의
아래쪽은 인풋 게이트,
왼쪽은 포겟 게이트,
위쪽은 아웃풋 게이트 를나타낸다.
또한
O는 게이트가 열린,
-는 게이트가 닫힌 상태 를 나타낸다.
LSTM의 수식
다음과 같은 수식을 통해 작동한다.
- 인풋게이트
$ a_{I}^{t} = \sum_{i=1}^{I}W_{iI}X_{i}^{t}\sum_{h=1}^{H}W_{hi}b_{h}^{t-1}+\sum_{c=1}^{C}W_{cI}s_{c}^{t-1} $
- $ W_{iI} $: 입력 X와 인풋 게이트 간의 가중치 행렬.
- $ b_{h}^{t-1} $: 이전 시점 t−1에서의 은닉 상태 h.
- $ W_{hI} $: 이전 은닉 상태 h와 인풋 게이트 간의 가중치 행렬.
- $ s_{c}^{t-1} $: 이전 시점 t−1에서 셀 상태 s
- 포겟 게이트
$ a_{F}^{t} = \sum_{i=1}^{I}W_{iF}X_{i}^{t}\sum_{h=1}^{H}W_{hF}b_{h}^{t-1}+\sum_{c=1}^{C}W_{cF}s_{c}^{t-1} $ - 블럭 인풋 게이트
$ a_{c}^{t} = \sum_{i=1}^{I}W_{ic}X_{i}^{t}\sum_{h=1}^{H}W_{hc}b_{h}^{t-1} $ - 활성함수 g:
$ g(a_{c}^{t}) = g(a_{c}^{t}) $ - 아웃풋 게이트
$ a_{O}^{t} = \sum_{i=1}^{I}W_{iO}X_{i}^{t}\sum_{h=1}^{H}W_{hO}b_{h}^{t-1}+\sum_{c=1}^{C}W_{cO}s_{c}^{t} $
GRU ( Grated Recurrent Unit )
LSTM의 간략화된 버전으로, 비슷한 성능을 유지하면서도 계산 비용을 줄이는것 을 목표로 한다.
GRU는 리셋 게이트(Reset Gate)와 업데이트 게이트(Update Gate)를 사용하여 데이터를 처리한다.
GRU의 구조
- 리셋 게이트(Reset Gate): 현재 입력 데이터와 이전시간 단계의 출력값을 얼마나 반영할지 결정한다.
- 업데이트 게이트(Update Gate) : 현재 시간 단계에서의 새로운 정보와 상태정보를 어떻게 결합할지 결정한다.
- 메모리 블럭의 내부 셀 출력 h
GRU의 수식
- 리셋 게이트(Reset Gate) z
$ z = \sigma (x_{t}U^{z} + s_{t-1}W^{z}) $- $ U^{z} $ : 입력 $ x_{t} $ 에 대한 가중치 행렬. 이는 입력 데이터와 리셋 게이트 간의 관계를 나타낸다.
- $ W^{z} $ : 이전 은닉 상태 $ s_{t-1} $ 에 대한 가중치 행렬. 이는 이전의 은닉 상태와 리셋 게이트 간의 관계를 나타낸다.
- 업데이트 게이트(Update Gate) r
$ r = \sigma (x_{t}U^{r}+s_{t-1}W^{r}) $
- $ U^{r} $ : 입력 $ x_{t} $ 에 대한 가중치 행렬. 이는 입력 데이터와 업데이트 게이트 간의 관계를 나타낸다.
- $ W^{r} $ : 이전 은닉 상태 $ s_{t-1} $ 에 대한 가중치 행렬. 이는 이전의 은닉 상태와 업데이트 게이트 간의 관계를 나타낸다.
- 메모리 블럭의 내부 셀 출력값 h
$ h = tanh(x_{t}U^{h} +(s_{t-1}*r)W^{h}) $- $ x_{t} $ : 현재 시점 t에서의 입력벡터
- $ s_{t-1} $ : 이전 시점 t-1 에서의 은닉상태 벡터
- $ r $ : 리셋 게이트 벡터.
- $ U^{h} $ : 입력 $x_{t}$ 에 대한 가중치 행렬.
- $ W^{h} $: 리셋 게이트가 적용된 이전 은닉 상태 $ s_{t-1} $ 에 대한 가중치 행렬
- $ tanh $ : 하이퍼볼릭 탄젠트 활성화 함수. 입력값을 -1과 1사이로 변환하여, 새로운 은닉상태의 비선형 변환을 수행한다.
GRU의 작동원리
- 리셋 게이트
리셋게이트는 이전 상태의 정보를 얼마나 무시할 지를 결정한다.
이는 새로운 정보가 현재 상태에 얼마나 영향을 미칠지를 제어한다.
리셋 게이트가 0에 가까울 수록 이전 상태의 정보는 무시되고 1에 가까울 수록 이전 상태의 정보가 유지된다. - 업데이트 게이트
새로운 입력 정보와 기존 정보를 결합하여 현재 상태를 업데이트 한다.
업데이트 게이트가 0에 가까울수록 새로운 입력정보가 무시되고, 1에 가까울수록 새로운 입력 정보가 크게 반영된다.
정리하면, GRU는 LSTM에서 출력 게이트를 제거하고, 인풋 게이트와 포겟 게이트의 역할을 업데이트 게이트와 리셋 게이트가 나눠가진 형태로 볼 수 있다.
보통 LSTM이 조금 더 강력한 성능을 보여주지만, GRU도 LSTM과 비슷한 성능을 보여주면서 연산량이 감소되었기 떄문에, 컴퓨팅 환경에 따라 LSTM대신 GRU를 사용하는것 도 좋다.