AI 공부/딥러닝
딥러닝 (RNN,LSTM,GRU)
AI Sonny
2022. 10. 3. 10:49
728x90
순차적 데이터(sequential data)
- 순서를 가진 데이터
- 음성, 동영상, 주식가격 (순서가 중요하다.)
순환신경망(Recurrent Neural Networks)
- 이전 단계의 처리 결과가 다음 단계에 입력이 되는 형태의 신경망
- 순서가 있는 데이터를 flatten하면 순서의 의미가 사라지게 된다. 그래서 순환신경망을 사용한다.
- 순서의 의미도 학습하자
Vanilla RNN
Vanilla RNN 문제점
- 사라지는 경사 (경사소실)
- 장기 의존 관계를 잘 학습할 수 없음
- 이전 단계에 입력이 다음 단계에 의미가 없을 수 있다.
- 동일한 가중치와 tanh로 인해 역전파 시 경사가 소실된다. (ReLu 사용불가 경사가 폭발)
LSTM(Long Short Term Memory)
- 순환신경망의 사라지는 경사 문제를 해결
- 입력길이가 길어져도 최초의 입력 의미를 전달한다.
- 활성화 함수를 통과 안한다.
- input_size : 피처 개수
- hidden_size : 은닉상태의 출력개수
- batch_first : 입력 데이터가 batch가 먼저일 경우 True, 입력길이가 먼저일 경우 False
GRU(Gated Recurrent Unit)
- LSTM 을 간소화
- 은닉상태만을 사용
- Cell State와 Hidden State를 통합한다.
- 속도가 더 빠르다.
- bidirectional: 양방향 여부, 기본값은 False
- 입력이 첫번째 레이어와 두번째 레이어에 들어가고, 역방향으로도 진행된다.
- 결과값이 정방향, 역방향으로 2개가 나온다.
728x90