RNN, LSTM에 대해 알아보자 |
참고 -
https://pythonkim.tistory.com/57
index
RNN
RNN이란?
RNN task 종류
RNN의 작동 원리
RNN의 사용 예시
RNN의 단점
LSTM
RNN의 한계
LSTM의 해결 매커니즘
LSTM의 구조
LSTM의 변형 모델들
RNN
RNN이란?
Recurrent Neural Network
RNN은 sequence data를 처리하는 모델이다.
음성 인식, 자연어 처리 등은 딱 현재 단어만을 안다고 처리할 수 없으며, 앞뒤 문맥을 함께 고려해야 한다.
해당 세션에서 같이 다루었던 LSTM 또한 기본적으로 RNN에 속한다.
이전까지 배운 신경망은 Feed Forward Neural Network라고 한다.
Hidden layer에서 output layer방향으로만 향하기 때문이다.
RNN은 결과값을 output방향으로 보내면서, 다시 Hidden layer의 다음 계산으로도 보내는 특징을 가지고 있다.
RNN task 종류
one to many
: image captioning - one(image vector), many(sequence of words)
many to one
: sentiment classification - many(sequence of words), one(sentiment)
many to many
: machine translation - many(sequence of words), many(단어 순차 데이터) - sequence to sequence
many to many
: noun classification - many(sequence of words), many(classifier of each word)
RNN의 작동 원리
h_t를 만들 때, h_t-1의 정보도 만영해서 만든다.
h
y
loss function
RNN의 사용 예시
language model
RNN의 단점
long-term dependency
: 데이터가 너무 길면, 뒤로 갈 수록 앞쪽 데이터 입력을 까먹는다.
backward pass에서 gradient를 계산할 때 점점 작아진다. 이 현상을 'gradient vanishing'이라고 하고
이를 해결한 모델이 LSTM이다.