머신러닝 스터디/텍스트마이닝

RNN 단점 보완! GRU/LSTM

hozy연 2023. 4. 22. 19:46

참고: 메타코드M https://www.youtube.com/watch?v=rbk9XFaoCEE&lis 

 

RNN의 단점

- Exploding gradient / Vanishing gradient가 발생된다

- W_xx를 계속해서 곱해주니까

 

RNN: Exploding Gradient

- 학습 도중 loss가 inf 뜰 경우 학습이 더 이상 진행 불가능

- 해결책? Gradient clipping : gradient를 구획 안에 가둬 놓는 것

Gradient clipping

 

RNN: Vanishing Gradient

- 학습 종료됨..과연 이것이 vanishing문제인가? 아니면 학습이 잘 끝난 것인가?

- 해결책? 초기화를 간결하게 해주는 방법이 존재하지만..다른 네트워크 구조를 쓰는것이 좋을 것이다

따라서 수도꼭지처럼 열고 닫고 할 수 있는 Gate RNNs: LSTM/ GRU 제안됨

 

LSTM (Long short-term memory)

- Gradient flow를 제어할 수 있는 밸브 역할을 한다고 생각하면 쉽다

- State space의 입력, 상태, 출력 구조는 동일 BUT, Gate 구조의 추가, 4개의 MLP구조

 

step1~2. 새로운 입력과 이전 상태를 참조

- 이 정보를 얼마의 비율로 사용할 것인가? (Input gate)

- 또는 얼마나 잊어버릴 것인가? (forget gate)

+ 어떤 정보를 활용할 것인가도 결정

 

step3. step1, step2를 적절히 섞는다.

- 얼마나 잊어버릴지, 얼마나 활용할지 

 

step4. 일련의 정보들을 모두 종합해서 다음 상태를 결정

- input+ forget gate => cell gate

- input+forget+cell gate => output gate

즉, 4개의 MLP구조가 있다.

 

GRU (Simplification of LSTM)

- 방금까지 본 LSTM은 너무 복잡해

- GRU는 LSTM의 간소화 버전

- Cell state가 없음 (LSTM은 cell state를 초기화 시켜주지만 gru는 초기화 안시켜줘도 된다)

 

어떤 것이 성능이 좋을까?

확언할 수 없음. 실험해봐야함

하지만 RNN보다는 확실하게 성능이 좋음

 

[요약] 

- RNN vs. LSTM vs. GRU

 

- 더 나아가 RNN에는..

- Seq2seq

- 양방향 BiLSTM

- CNN은 공간정보 공유 RNN은 시간정보를 공유, 그런데 시간을 공간으로 볼 수 있지 않을까? 1DCNN