Bamboo is coming

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

인공지능 개념

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

twenty 2023. 8. 23. 03:18

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

시계열 데이터에 적합한 네트워크로 신경망의 출력을 시퀀스 내의 이전 요소에 의존한다. 

메모리 셀이 이전 단계의 맥락을 기억해 과거의 정보를 기억하는 동시에 최신 데이터로 갱신할 수 있다.

메모리 셀은 t-1 시점의 메모리 셀이 보낸 은닉 상태값을 t 시점의 은닉 상태 계산을 위한 입력값으로 사용한다.

 

\[ h(t) = \text{tanh}(W_{hh}h(t-1) + W_{hx}x(t) + b_h) \]

h(t)는 시간 스텝 t에서의 은닉 상태를 나타내며, 이전 시간 스텝까지의 정보를 내포하고 있습니다. 이는 현재 입력 x(t)와 이전 은닉 상태 h(t−1)에 의존합니다.
예를 들어, "나는 오늘 밥을" 이라는 문장이 있을 때, "밥을" 이라는 단어를 처리하는 시점에서의  h(t)는 "나는 오늘"까지의 정보를 내포하고 있습니다.

- \(W_{hx}\) : 입력층에서 은닉층으로 전달되는 가중치 (x -> h)
- \(W_{hh} \) : t 시점의 은닉층에서 t+1 시점의 은닉층으로 전달되는 가중치 (h -> h)

 

\[ y(t) = \text{tanh}(W_{yh}h(t) + b_y) \]

y(t)는 시간 스텝 t에서의 네트워크 출력을 나타냅니다. 이 출력은 보통 h(t)에 의존하며, 특정 작업에 대한 예측이나 결과를 나타냅니다.

계속된 예를 들면, "나는 오늘 밥을 먹었다" 라는 문장에서 다음 단어를 예측하는 작업을 수행할 때, "밥을" 다음에 올 단어를 예측하는 출력 y(t)를 생성할 수 있습니다.

- \(W_{yh}\) : 은닉층에서 출력층으로 전달되는 가중치 (h -> y)

 

 

밑바닥 딥러닝에 따르면 RNN 계층으로부터 나가는 두 화살표가 똑같은 데이터가 복사돼 분기된다. 즉, 하나의 출력이 분기되어 \( \hat{y}_t \)로도, \( h_{t+1} \)로도 전달된다.

 

hidden layer는 RNN 셀의 내부 상태

output layer는 신경망이 예측하는 최종 상태를 의미한다.

 

가중치 Wxh, Whh, Why는 모든 시점에 동일하다는 것에 주의할 필요가 있습니다. 즉, 가중치를 공유하는데 그림 7-10과 같이 모든 가중치가 동일한 것을 확인할 수 있습니다.

 

입력과 출력의 길이에 따라서 일대다 ,다대일, 다대다로 나뉘는데 각각의 구조가 수행하는 작업이 다르다.

 

장점

- 맥락의 정보를 기억하는 메커니즘을 갖추고 있어 긴 시계열 데이터에 대응 가능하다.

 

단점

- 긴 시계열 데이터를 학습할때 BPTT의 컴퓨팅 자원도 증가한다.

- 시간 크기가 커지면 역전파시 기울기가 불안정해진다.

 

RNN에서의 오차역전파는  '시간 방향으로 펼친 신경망의 오차역전파법'이란 뜻으로 BPTT(Backpropagation Through Time)로 불린다

 

1. 순전파

입력 시퀀스를 모델에 순차적으로 전달하며 시간 단계마다 은닉 상태를 업데이트하고 출력을 계산

모든 시간 단계의 예측과 목표값 사이의 오차를 계산한다.

2. 역전파 

출력에서 입력 방향으로 그래디언트를 역전파

각 시간 단계에서, 현재 오차를 이전 시간 단계의 오차와 결합한다.

그래디언트는 시간을 거슬러 올라가며 누적된다.

3. 가중치 업데이트

누적된 그래디언트를 사용하여 모델의 가중치를 업데이트한다.

 

Truncated BPTT

큰 시게열 데이터ㅡㄹ 취급할 때는 흔히 신경망 연결을 적당한 길이로 끊는다. 

시간축 방향으로 적당한 지점에서 잘라내어 작은 신경만 여러개로 만들어 역전차를 수행한다.

주의점, 순전파의 흐름은 끈헝지지 않고 역전파의 연결만 적당한 길이로 잘라낸다.

 

BPTT의 특징과 과제
- 장기 의존성 (Long-Term Dependencies)
RNN은 이론적으로 장기 패턴을 학습할 수 있지만, 실제로는 그래디언트 소실(Vanishing Gradient) 또는 그래디언트 폭발(Exploding Gradient) 문제로 인해 어려움이 있을 수 있습니다.

- 계산 비용
긴 시퀀스의 경우, BPTT는 많은 계산을 필요로 할 수 있으며, 메모리도 많이 사용할 수 있습니다.

해결 방법
그래디언트 클리핑 (Gradient Clipping): 그래디언트 폭발 문제를 방지하기 위해 그래디언트의 크기를 제한할 수 있습니다.
게이트 있는 순환 유닛 (Gated Recurrent Units, GRU) 또는 LSTM (Long Short-Term Memory): 이러한 구조는 그래디언트 소실 문제를 완화하며, 장기 의존성을 더 잘 학습할 수 있게 해줍니다.

 

RNN은 기울기 폭주와 기울기 소실의 문제가 있다.

 

LSTM

입력 출력, 망각게이트로 기울기 소실 해결법으로 등장했다.

 

GRU(Gated Recurrent Unit, GRU)

reset과 updat 게이트를 사용한다.

GRU는 LSTM보다 학습 속도가 빠르다고 알려져있지만 여러 평가에서 GRU는 LSTM과 비슷한 성능을 보인다고 알려져 있습니다.

GRU와 LSTM 중 어떤 것이 모델의 성능면에서 더 낫다라고 단정지어 말할 수 없으며, 기존에 LSTM을 사용하면서 최적의 하이퍼파라미터를 찾아낸 상황이라면 굳이 GRU로 바꿔서 사용할 필요는 없습니다.

경험적으로 데이터 양이 적을 때는 매개 변수의 양이 적은 GRU가 조금 더 낫고, 데이터 양이 더 많으면 LSTM이 더 낫다고도 합니다. GRU보다 LSTM에 대한 연구나 사용량이 더 많은데, 이는 LSTM이 더 먼저 나온 구조이기 때문입니다

 

RNN
\[ a(t)= tanh(W_{hh}h(t-1) + W_{hx}X=x(t-1) + bh) \]
\[ y(t)=tanh(W_{yh}a(t-1)+by) \]

 

 

 

 

 

 

 

https://byumm315.tistory.com/entry/RNN%EC%9D%84-%EC%95%8C%EC%95%84%EB%B4%85%EC%8B%9C%EB%8B%A4

 

 

원본

https://colah.github.io/posts/2015-08-Understanding-LSTMs/

 

Understanding LSTM Networks -- colah's blog

Posted on August 27, 2015 <!-- by colah --> Humans don’t start their thinking from scratch every second. As you read this essay, you understand each word based on your understanding of previous words. You don’t throw everything away and start thinking

colah.github.io



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

 

Long Short-Term Memory (LSTM) 이해하기

이 글은 Christopher Olah가 2015년 8월에 쓴 글을 우리 말로 번역한 것이다. Recurrent neural network의 개념을 쉽게 설명했고, 그 중 획기적인 모델인 LSTM을 이론적으로 이해할 수 있도록 좋은 그림과 함께

dgkim5360.tistory.com

RNN_위키독스

https://www.ibm.com/kr-ko/topics/recurrent-neural-networks

Comments