참고: 메타코드M https://www.youtube.com/watch?v=rbk9XFaoCEE&lis
RNN의 단점
- Exploding gradient / Vanishing gradient가 발생된다
- W_xx를 계속해서 곱해주니까
RNN: Exploding Gradient
- 학습 도중 loss가 inf 뜰 경우 학습이 더 이상 진행 불가능
- 해결책? Gradient clipping : gradient를 구획 안에 가둬 놓는 것
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
'머신러닝 스터디 > 텍스트마이닝' 카테고리의 다른 글
토픽모델링 (0) | 2023.11.05 |
---|---|
Word Embedding_Word2Vec (0) | 2023.04.28 |
자연어 전처리 과정 (0) | 2023.04.28 |
자연어 처리 유사도 분석 정리 (0) | 2023.04.22 |
RNN 작동원리 (0) | 2023.04.22 |