Notice
Recent Posts
Recent Comments
Link
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
Tags
more
Archives
Today
Total
관리 메뉴

archive

[7주차 (1)] Sequential Model -RNN 본문

ML_AI/네이버 부클 AI 엔지니어 기초 다지기 : AI Tech 준비과정

[7주차 (1)] Sequential Model -RNN

안정민 2024. 6. 7. 14:32

1. Sequential Model

- RNN 은 주어지는 입력 자체가 Sequential 

- Sequential 데이터 -> audio, video, 손의 모션 등

-Sequential 데이터 처리의 어려움 -> 우리가 얻고자 하는 데이터의 출력값은 "하나의 라벨값"일 때가 많음, 그러나 이는 정의상 입력의 길이를 가늠할 수가 없음, 즉 입력의 차원을 예측 불가능

-따라서 CNN을 사용할 수 없음, 몇 개의 입력이 들어오든 입력의 차원과 상관 없이 데이터를 처리할 수 있는 모델이 필요해짐

 

-기본적인 Sequential 모델 : Naive Sequential Model, 입력이 들어올 때 다음의 입력값을 예측하는 것 ex) 언어 모델

-첫 번째 입력 벡터는 아무 것도 고려하지 않아도 됨, 두 번째 입력 벡터는 첫 번째 입력 벡터도 함께 고려, 세 번째 입력 벡터는 첫 번째와 두 번째 입력 벡터를 모두 함께 고려

-즉, 입력이 늘어날 수록 가장 마지막에 입력된 벡터가 고려할 사항이 많아지는 구조 

 

- 가장 쉬운 모델 구현 : Autoregresive model, past timespan을 고정시키는 것, 과거의 몇 개만 보는 것   

- ex) 과거의 다섯 개만 고려하겠다 

-Markov model (first-order autoregressive model)

-Markov assumption을 가지는 모델, 가장 큰 특징은 내가 가정하기에 나의 현재는 과거에만 의존적이다라는 것

-많은 정보를 버릴 수밖에 없는 모델임

-가장 큰 장점은 joint distribution을 표현하는 것이 굉장히 쉬워진다는 것

 

-Latent autoregressive model

-과거의 많은 정보를 고려해야하는데 그럴 수가 없음, 따라서 중간에 hidden state 를 삽입하고 이 hidden state는 과거의 모든 정보를 요약해서 가지고 있음, 따라서 최신 input data는 이 hidden state를 고려하면 되는 원리

-이전의 과거 요소 그 자체들을 보는 것이 아니라 summarized 된 정보를 참고하는 것 (hidden latent state)

-어떻게 latent state를 만드느냐에 따라서 성능이 달라짐

 

 

2. Recurrent Neural Networks

- Sequential Model을 가장 쉽게 구현할 수 있는 방법이 RNN

- MLP랑 하나의 차이점 -> 자기자신으로 돌아오는 길이 존재, 따라서 X(t)는 t-1이전의 state에도 dependant하게 됨

-중요한 사실은 Recurrent 구조를 가진 모델을 시간 순으로 풀게 된다면, 이는 아주 많은 입력을 가지는 Fully current 모델로 표현할 수 있게 된다. 각각의 네트워크의 파라미터를 공유하는 하나의 큰 네트워크가 형성된다

 

-특징

-Short-term dependancies :  과거에 얻어진 정보들이 summarized됨, 따라서 아주 먼 과거의 정보들이 살아남기 어려운 환경이 조성되는 단점이 있음

-따라서 Long-term dependancy를 잡는 것이 굉장히 어렵다는 단점이 있다는 것

 

-RNN 학습 : 네트워크를 풀게 되면, timeline만큼 커지게 됨

-시그모이드를 activation function으로 사용하는 경우에 vanishing 정보가 죽어버려서 그 다음으로 정보가 안 넘어가게 됨

-ReLU를 activation function으로 사용하게 되면 exploding gradient로 네트워크가 폭발, 학습이 안 됨

 

 

 

3. Long Short Term Memory

-가장 기본적인, 이전에 살펴본 RNN 모델 구조

-tangent hyperbolic을 activation function으로 가지는 기본 구조

-위 모델이 LSTM, 즉 Long term dependancy 문제를 해결해줄 수 있는 모델이다.

-input value인 x가 일반적으로 언어 모델이라면 단어가 됨, x는 단어를 워드 임베딩을 통해서 벡터화시킨 값

-h는 hidden state에 반영될 값들, 마지막h는 최종 결과물

-Previous cell state : LSTM 밖으로 나가진 않음, 내부에서만 흘러가고 이것이 결과론적로 말하면 timestamp의 정보들을 모두 취합해주는 역할

-LSTM의 입력으로 들어가게 되는, 아래로 흐르는 화살표는 previous cell state에서 합산된 이전 결과들의 summary 값

-시그모이드가 3개

-gate를 위주로 LSTM을 이해하면 좋음, LSTM은 3개의 gate로 이루어져있음, 아래에서 각각의 gate들에 대한 설명이 이어짐

 

-LSTM의 가장 큰 아이디어 : 중간에 흘러지는 Cell state, 즉 요약된 정보 (컨베이어벨트와 같음)

-누적되는 정보들을 잘 manipulation, 다음번으로 넘기는 과정이 가장 큰 아이디어, 이를 바로 gate로 구현

- Forget gate: 어떤 정보를 버릴 것인지 결정하는 게이트

-현재의 입력과 이전의 아웃풋을 입력으로 받아서 f(t)를 제작, 이는 입력값들의 가중치를 고려한 activation function 의 연산값을 활용하여 결정하고 제작하게 된다.

-Input gate: 현재의 입력이 들어왔을 때, 얘를 무작정 올리는 것이 아니라, 현재 입력 내의 어떤 정보를 올릴지 결정해서 최종적으로 올릴지 결정하는 gate

-올릴 정보를 알아야 함, 이는 따로 학습된 NN을 통해서 C-tilda를 만들어냄, 즉 cell state 예비군과 적절히 조합된 i(t)를 배출

-Update cell : i(t)를 f(t) 만큼 버릴 건 버리고 c-tilda를 가지고 i(t)만큼 곱해서 combine한 것을 새로운 정보로 올림

-Output Gate : 궁극적인 cell state를 배출, LSTM은 이 정보를 한 번 더 조작, 어떤 정보를 배출할 것인지 선별하여 밖으로 output 정보로 배출

 

 

4. Gated Recurrent Unit

-파이토치 등 ML 툴을 활용하다 보면 크게 세 가지로 RNN 실행, (1) Vanilla RNN 가장 기본적인 RNN, (2) LSTM, (3) ㅎ껴

- GRU: 게이트가 두 개밖에 없음, reset gate와 update gate

-cell state가 없고 hidden state가 바로 있는 구조, 즉 아웃풋 게이트가 필요없어지고, 히든스테이트가 곧 아웃풋임

-reset gate 는 forget gate와 비슷한 역할을 하게 된다.

 

-같은 task에 대해서 LSTM을 활용할 때보다 GRU를 활용할 때 성능이 올라가는 case들이 많음

-파라미터가 LSTM보다 작음, 더 작은 파라미터 수로 동일한 아웃풋을 내게 된다면 generalized performance가 올라간다는 것의 관점에 입각

-요즘엔 transformer가 나오게 되면서 많이 사용되진 않음, transformer가 더 성능이 좋음 

 

 

 

 

 

 

본 포스트의 학습 내용은 부스트클래스 <AI 엔지니어 기초 다지기 : 부스트캠프 AI Tech 준비과정> 강의 내용을 바탕으로 작성되었습니다.