> Sequential Models
시퀀셜 모델을 처리하는데 있어 가장 어려운 점?
우리가 얻고싶은건 하나의 라벨인 경우가 많음.
내가 하는 말이 무엇이다. 라는걸 라벨하려는건데.
그러나 Sequential Models은 정의상 데이터의 길이가 언제 끝날지 모름.
그래서 받아 들여야할 입력의 차원의 수를 알수가 없음.
→ 즉 몇개의 입력이 들어오든 동작할 수 있어야함.
기본적 시퀀설 모델은
입력이 여러개 들어왔을때 다음번 들어올 입력을 예측하는것.
과거에 들어왔던 입력을 고려할게 서서히 늘어남.
- 과거에 몇개의 입력만 보는거 = Fix the past timespan
가장 쉬운 모델이 Markov model (first-order autoregressive model)
가장 큰 특징 : 내가 가정을 하기에 나의 현재는 (바로 전 )과거에만 디펜던트 한 것.
말이 안되는 모델 : 내일 수능은 어제 공부한것만 디펜던트. 과거 공부한것도 고려하는게 맞음.
많은 정보를 버리게됨.
Latent autoregressive model
중간에 히든 스테이트가 들어가있음.
이 히든 스테이트는 과거의 정보 요약정보
다음 예측은 이 히든 스테이트에만 디펜던트
즉 하나의 과거에 디펜던트하는데 그 하나의 과거가 이전의 정보를 요약한 어느 히든 스테이트
> Recurrent Neural Network
이러한 앞에 말한 컨셉들을 쉽게 설명 , 구현한 방법이 RNN임.
다 동일한데 한가지 차이점이있다면 자기 자신으로 돌아오는 구조가 하나 있다는 것
RNN을 시간순으로 푼다 라고 말을합니다.
RNN을 하나 두면 현재 입력이 들어가고 이전의 입력이 들어오죠
매 입력마다 히든 스테이트 제작 (h)
RNN의 가장 큰 단점 : Short-term dependencies
과거에 얻어지는 어떤 정보들이 다 취합되서 그걸 고려하는데, RNN은 특정 Fix rule로 이 정보들을 계속 취합하기 때문에 먼 과거 내용은 살아남기 힘든 것. 즉 가까운 정보는 잘 고려되지만, 먼 초반 정보는 고려되기 어려운 것.
예시 ) 문장이 길어져도 이전에 중요하다고 생각하는 정보를 다 가지고 있다가 나중에 써먹어야하는데 5초전에 들은걸 생각 못하면 매우 제한적일것임.
즉 기본적인 RNN구조는 이렇게 생긴거.
x가 있고 x가 어떤 네트워크 통과해서 이전 요약과 합쳐서
Long Short Term Memory ( LSTM )
Long Short Term Memory
3개의 게이트로 이루어져 있습니다.
Forget gate : 버릴 정보를 결정.
포겟 게이트에 들어가는건 현재의 입력(xt)과 이전의 아웃풋(ht-1)이 들어가서 ft라는 숫자를 얻게됩니다.
저기 보이는 노란 δ 이거는 시그모이드 이므로 ft는 0~1사이 값이 나옴
이 나온 ft는 이전에 나온 정보중 어떤거 버릴지 살릴지 판단
이전 히든스테이트((ht-1) 와 현재 입력(xt)을 가지고 걔내들을 weight(가중치)를 곱하고 활성함수 통과시켜서
이전 스테이트에서 넘어온 정보 중에서 버릴거 정하는거임.
Input gate : 셀 상태에 저장할 정보를 결정.
현재 입력이 들어왔는데, 얘를 무조건 올리는게 아니라 이 정보중 어떤 정보를 올릴지 말지 결정하는거임.
이전 히든스테이트와 현재 입력을 갖고 it를 만듬 ( it는 어떤 정보를 올리고 버릴지 판단 )
그리고 추가로 이전 cell state와 현재 입력이 들어와서 다른 학습되는 뉴럴 네트워크를 통해서 tanh -1과 1 사이로 정규화 되어있는 Ct (씨틸다) 를 만듬 .
궁극적으로는 이 씨틸다가 현재 정보와 이전 출력값을 가지고 만들어지는 cell state 예비군인거죠.
이전까지 cell state와 현재 정보를 잘 섞어서 새로운 업데이트 해야겟는데요 그건 업데이트 게이트.
Output gate
인풋게이트에서 나왔던 씨틸다를 가지고 it만큼 곱해서 어느 값을 올릴지 정해서 이 두값을 합해서 새 셀로 업데이트
아웃풋 게이트에서 어떤 값을 내보낼지 한번 더 조작해서 정하는거
## LSTM 요약
Previous cell state, Previous hidden state, Input 가 뉴럴 네트워크에 들어오게 되면 어떤 정보를 먼저 이전 cell state를 얼만큼 지워버릴지 정하고, Previous hidden state와 Input 을 가지고 어떤값을 올릴지 씨틸다를 정하고
그 두개 업데이트된 cell state와 현재 내가 올릴 조합된거와 다시 조합해서 새로운 cell state를 만들고
그 정보를 얼만큼 밖으로 빼낼지를 정해서 최종적인 출력값이 나옵니다.
> Gated Recurrent Unit ( GRU )
두 개의 게이트(재설정 게이트 및 업데이트 게이트)를 통해 더 단순한 아키텍처.
셀 상태는 없고 숨겨진 상태일 뿐입니다.
앞에서 본 LSTM 은 게이트가 3개으나 이건 2개임.
LSTM은 cell state가 하나 흘러가고 그걸 한번 더 조작해서 히든스테이트가 나왔죠?
하지만 GRU에는 이 과정이 없습니다. 히든스테이트가 곧 아웃풋이고 바로 다음에 들어갑니다.
cell state가 없고 히든스테이트가 바로 있게 됨으로써 아웃게이트가 필요없어짐.
파라미터가 적으므로 GRU가 LSTM보다 좋은 성능 낼때가 있음 .
하지만 transfomer가 나오면서 둘 다 잘 쓰이지 않음!
## 이번강의 총 정리 ###
스퀀스모델이 왜 다루기 어려운지 알아보았고
1. 바닐라 RNN
2. LSTM
3. GRU알아보았음.
RNN의 단점은
Shortern dependency는 잘잡지만 롱턴 디펜던시는 잘 잡지 못하는구나!
그래서 롱턴 디펜던시를 잡기 위해서 LSTM이 나왔고 LSTM이 게이트가 3개가 필요해서 파라미터가 많이 필요하니까
어 게이트 하나 없애볼까 해서 파라미터 줄인 게 GRU.
많은 경우 GRU 가 LSTM 보다 성능이 많이 올라가더라.
'공부 정리 ( 강의 ) > 딥러닝 기초 다지기' 카테고리의 다른 글
4.2. Sequential Models - Transformer (0) | 2023.01.07 |
---|---|
3.3. Computer Vision Applications (1) | 2023.01.07 |
3.2. Modern CNN - 1x1 convolution의 중요성 (0) | 2023.01.07 |
3.1. CNN - Convolution은 무엇인가? (0) | 2023.01.07 |
2.3. Regularization - 오버피팅 막기 # 나중필요 (0) | 2023.01.07 |