IT 프로그래밍/AI

[cs231n] RNN, LSTM

기술1 2024. 11. 16. 22:31
반응형

coco 같은 경우 12만의 이미지를 가지고 있는 거대 데이터입니다. 이 데이터를 바탕으로 coco를 사용하면 우리가 데이터를 큰 학습 이 모델을 사용하면 정상적으로 사용가능합니다.

 

RNN이 좋은 성과를 보이고 있는데 RNN은 이미지를 전체적으로 한번만 보고 끝나지만 attention은 이미지 특정 부분을 보고 그 단어를 추출하는 것으로 어떤 부분을 보고 각 단어를 판단하는 것입니다. 이미지를 한번에 보는 것이 아닌 부분 부분을 보고 문장을 추출해내느 것입니다.

 

단순히 단어를 생성하는 것이 아니라 어디를 봐야하는지 알려주는 것으로 굉장히 주목받는 모델입니다. 

 

RNN 응용 - LSTM

RNN은 구조적으로 제약이 많아 실제 현업에서 사용되기 어렵습니다. RNN에서는 hidden state만 존재했지만, LSTM(Long Short-Term Memory)은 cell statehidden state가 함께 존재한다는 점에서 차별화됩니다. 매 시점(single time point)마다 hidden state 벡터와 cell state 벡터가 존재하며, 이 두 상태가 정보를 효율적으로 전달하고 조정하는 데 중요한 역할을 합니다.

 

특히, LSTM은 forget gate를 통해 현재 상태에서 이전 상태를 얼마나 잊을지를 조정합니다. forget gate의 값이 0이면 이전 상태를 완전히 리셋하여 고려하지 않겠다는 의미입니다.

 

또한, input gate를 통해 새로운 정보의 반영 여부를 결정합니다. 입력 값(i)은 주로 -1에서 1 사이의 값을 가지며, 이 값에 따라 현재 입력이 cell state에 반영될지 결정됩니다. 이 과정에서 input gate의 출력이 cell state의 업데이트를 제어하여 LSTM이 더 유연하고 효율적으로 동작할 수 있도록 돕습니다.

LSTM에서 입력 벡터(input vector)와 이전 단계의 hidden 벡터가 결합되어 연산이 이루어집니다. 이때 두 벡터의 결합 결과로 차원이 4n으로 변환되며, 이 값은 각각 input gate (i), forget gate (f), output gate (o), 그리고 내부 계산 값 에 할당됩니다.

 

현재의 cell state는 forget gate와 이전 단계의 cell state를 곱하고, 새로운 정보(i와 g)를 더하여 업데이트됩니다. 여기서 forget gate가 0이라면 이전 cell state는 전혀 반영되지 않으며, 결과적으로 cell state가 리셋됩니다.

 

i와 g 연산은 입력 값이 cell state에 어느 정도 반영될지를 결정합니다. gg는 새로운 입력을 얼마나 강조할지를 조정하며, 이는 cell state에 추가적으로 더해집니다. 이 과정을 통해 업데이트된 cell state는 흐름을 유지하며, 네트워크의 기억 구조를 형성합니다.

 

최종적으로, hidden state는 output gate(o)의 값을 사용하여 업데이트된 cell state에서 특정 정보를 추출해 결정됩니다. 이를 통해 cell state 중 어떤 부분이 hidden state로 전달될지를 조절합니다. 이렇게 계산된 hidden state는 오른쪽(시간 축 방향)으로 전달될 뿐만 아니라, 위쪽(예측 층 등 다른 연산 방향)으로도 전달됩니다.

 

LSTM의 bidirectional 구조를 활용하면 hidden state가 양방향으로 예측에 기여할 수 있으며, 이를 통해 더 나은 성능을 기대할 수 있습니다.

 

RNN 보다 왜 LSTM이 좋은지는 RNN에서는 전단계의 히든과 f를 더해줘서 tanh를 해준 것이 hidden state가 되었고 이것이 weight y는 transformative하게 변한다고 볼 수 있습니다.

 

하지만 LSTM에서는 Cellstate가 flow를 할 때, forget, input, output들이 조금씩 추가되는 즉 점진적으로 변화하는 것입니다. 

 

RNN보다 LSTM이 더 개선되었다고 보는 이유

LSTM의 구조에서 ResNet과 유사한 방식으로 **더하기 연산(additive operation)**이 적용되며, 이로 인해 RNN에서 발생하는 문제점들을 해결하려는 구조적 개선이 이루어집니다.

 

기본적으로 RNN에서는 backward 연산 시 문제가 발생하는데, 이는 역전파(backpropagation) 과정에서 gradient가 사라지거나(exploding/vanishing) 지나치게 커지는 문제가 있기 때문입니다. Forward path와 backward path에서 각각 반복적으로 WhhW_{hh}에 대해 곱셈 연산이 수행됩니다. A⋅v=λ⋅vA \cdot v = \lambda \cdot v라는 수식을 고려했을 때,

 

λ>1\lambda > 1이면 gradient가 폭발(exploding)하고, λ<1\lambda < 1이면 gradient가 사라지게(vanishing) 됩니다.이로 인해 RNN은 vanishing gradient 문제에 취약하며 학습이 제대로 이루어지지 않는 경우가 많습니다.

 

LSTM은 이러한 문제를 해결하기 위해 고안되었습니다. 특히 forget gate를 도입함으로써 vanishing gradient 문제를 완화할 수 있습니다. Forget gate는 이전 상태를 얼마나 유지하거나 잊을지를 조정하며, 필요에 따라 gradient가 완전히 0으로 수렴하지 않도록 bias를 추가해 조절합니다. 이를 통해 gradient가 멈추는 것을 방지하고 안정적인 학습이 가능해집니다.

 

LSTM은 다양한 변형 모델(예: GRU, Peephole LSTM 등)들이 개발되었지만, 실험 결과 대부분의 경우 성능 차이는 주목할 만한 수준이 아니었습니다. 이는 기본 LSTM 구조가 충분히 효과적인 솔루션을 제공하고 있다는 것을 보여줍니다.

 

결론적으로, RNN에서는 ResNet과 유사한 super highway 역할을 하는 additive 연산이 제대로 활용되지 못하지만, LSTM은 이를 보완하며 vanishing gradient 문제를 해결하고 안정적인 학습 경로를 제공합니다.

 

반응형

'IT 프로그래밍 > AI' 카테고리의 다른 글

Gradient descent, neural networks learn  (0) 2024.11.28
[cs231n] CNNs in practice  (1) 2024.11.16
[cs231n] Visualization, Adversarial examples  (0) 2024.11.15
[cs231n] Localization - as Regression  (5) 2024.11.15
[cs231n] CNN  (1) 2024.11.15