본문 바로가기

TECH/AI

RNN, LSTM, GRU | 자연어처리 #2

지난 포스팅에서는 자연어의 특징에 대해서 알아봤습니다.
# 자연어의 특징| 자연어처리 #1 - https://miff.tistory.com/m/6

 
이번에는 현재 GPT, BERT 등 높은 성능의 LLM이 나오기까지 어떠한 아이디어를 가지고 발전했는지 보겠습니다.

RNN

자연어는 시계열의 특징을 가진다고 했습니다.
 
따라서 시간 별로 같은 가중치(weight)을 공유하는 것이 특징입니다.

tUXy
시간입력상태, hidden state출력

 
함수 f(first order system)는 현재 시간의 상태가 이전 시간의 상태와, 현재 입력으로 결정된다는 의미.
함수 h(state-space Model)는 현재 상태로 출력된 결과 y를 내놓는다. 

RNN

 
RNN은 이전 시간의 자신의 상태를 참고하므로, 왼쪽 그림과 같이 순환 모형으로 그려지며, self feedback을 한다고 말한다. 그리고 여러 시점으로 나타냈을 때, 오른쪽 그림과 같이 나타낼 수 있으며, input, output 개수에 따라 Many-to-Many, Many-to-One, One-to-Many로 나눠지는데, Many-to-Many는 잘 쓰이지 않는다. 
 
다만 Seq2Seq로 Many-to-Many를 활용하곤 한다. Many-to-One <-> One-to-Many의 조합으로 말이다.

Seq2Seq

RNN의 문제점

다만 Wxx 가중치를 계속해서 곱하기 때문에, 생기는 문제가 있다.
Exloding gradient : 곱해지는 값(Wxx)이  1보다 크다면, Nan, inf( ) 값이 생길 수 있다.
Vanishing gradient : 곱해지는 값(Wxx)이 1보다 작다면, 0이 될 수 있다. / 업데이트가 되지 않는 것
 
Exploding gradient는 clipping 기법으로 상한값과 하한값을 조정할 수 있지만, Vanishing gradient는 학습이 종료된건지, vanishing gradient 문제가 발생한건지 파악하기 어렵기 때문에, Gated RNN이 등장했다.
 
또한 현재 t 시점으로부터 오래될 수록 가중치의 영향력이 줄어든다는 특징이 있다.
 

LSTM

RNN의 문제를 해결하기 위해 LSTM이 등장했다.

Xh
입력출력 / hidden state
CellInput GateForget Gate
정보가 전혀 바뀌지 않고 그대로만 흐르게 하는 부분 / 시간이 지나도 gradient가 전파됨.입력과 이전 상태를 얼마의 비율로 사용할 것인가또는 얼마나 잊어버릴 것인가

 
정보 수용의 정도를 Gate로 조절하여 정보의 흐름을 제거함으로써 vanshing, exploding 문제를 해결했으며, cell state로 시간이 오래 지난 정보도 보존했다. 이렇게 LSTM은 RNN의 할계를 극복하고, 장기 의존성이 있는 시퀀스 데이터를 처리하는데 효과적인 모델이 되었다.
 

GRU

LSTM의 cell state를 제거하여, 간소화한 버전이다. 

 
GRU는 기존 LSTM에 비해 더 간단한 구조를 가지고 있어, 파라미터 수가 적은 것이 장점이라 할 수 있다. 성능 면에서 LSTM과 비교해서 우월하다고 할 수 없고, 테스트를 통해 성능을 비교하는 것이 일반 적이다. 하지만 둘 다, RNN보다 우수하다고 평가된다.
 
 
메타코드 M이 개념을 잘 정리해줘, 참고하여 작성했다.
https://www.youtube.com/watch?v=Hn3GHHOXKCE

 
 
https://www.youtube.com/watch?v=rbk9XFaoCEE

 

'TECH > AI' 카테고리의 다른 글

Multi CUDA - ubuntu 24.04  (1) 2024.09.25
CNN : CV #1  (0) 2024.09.21
Introducing RAG  (0) 2024.09.11
자연어의 특징| 자연어처리 #1  (0) 2024.09.11
데이터 분석 이전에  (0) 2024.09.03