🧐 RNN (Recurrent Neural Network)
🤫 RNN, 순환 신경망이란?
RNN은 특정시점 데이터를 한번에 수집하는 방법들과 다르게 sequence data(시간의 흐름에 따라 값이 달라지는 데이터)를 사용한다.
또한 지금까지 다룬 신경망은 feed forward 신경망 즉, 한번 출력된 결과를 다시 사용하지 않았지만
RNN의 경우, 출력결과를 다음시점까지 기억했다가 다음 시점에서 사용하는 방법이다.
가장 일반적인 AI딥 러닝을 사용한 시계열 작업에 대한 접근 방식은 순환 신경망(RNN)인데, RNN을 사용하는 이유는 시간에 대한 해결의 일반화에 있다. 시퀀스는 (대부분) 길이가 다르기 때문에 MLP 같은 고전적인 딥러닝 구조는 수정하지 않고는 적용할 수 없고 MLP의 가중치 수는 absolutely huge하다. 따라서 전체 구조에서 가중치가 공유되는 RNN을 일반적으로 사용한다. (in sequential data)
activation function이 tanh일 때, 아래와 같은 과정으로 수식이 진행된다.
다만 은닉층에서 편향 벡터(bias vector)가 있다면 이전처럼 더해주면 된다.
🤫 RNN의 종류
🤫 시간을 통한 Backpropagation
single time step일 때, 아래와 같은 단계로 진행된다.
input이 hidden layer를 거쳐 output에 도착하는데, 이때 실제와 예측의 차이계산을 위해 Loss함수가 계산된다.
전체 Loss가 계산되면 forward propagation이 완료되며 그 다음부터 도함수를 이용해 역전파를 진행한다.
🧐 LSTM (Long Short Term Memory)
🤫 LSTM 의 등장배경: RNN의 Gradient 소실, 폭주 문제
RNN은 은닉층을 거친 결과값을 재사용하기에 그로 인해 gradient 소실 및 폭주 문제가 발생할 수 있다.
📌 Exploding Gradient Problem
- 구간이 기하급수적으로 빠르게 무한대로 이동하고 불안정한 프로세스로 해당값이 NaN이 된다.
📌 Vanishing Gradient Problem
- 구간이 기하급수적으로 빠르게 0이 되어 장기간 학습이 어려워 진다.
- 이에 대한 해결을 위해 다양한 방식의 접근이 시도되었는데, 다음과 같다.
∙ ReLU 활성화 함수 사용
∙ Forget Gate를 이용한 LSTM 구조
∙ weight matrix W를 orthogonal matrix로 초기화, 전체 training에 사용 (orthogonal은 explode되거나 vanish되지 않음)
🤫 LSTM이란?
아래구조처럼 입력 게이트(input gate), 삭제 게이트(forget gate), cell state, hidden unit으로 나눌 수 있다.
🧐 GRU (Gated Recurrent Unit)
🤫 GRU
GRU는 LSTM과 비슷한 원리로 작동하지만 조금 더 간소화된 방식으로 계산이 간편하다는 장점이 있다.
하지만 LSTM보다 학습능력이 다소 낮은면을 보인다.
LSTM과 다르게 GRU는 이전 시점에서 받는 벡터가 h하나이다.
또한 벡터 z가 입력과 삭제게이트를 모두 제어한다.
GRU에는 출력게이트가 없는데, 즉 전체 상태 벡터가 매 시점 출력된다는 뜻이다.
'A.I > Deep Learning' 카테고리의 다른 글
self.DL.(05). Auto-Encoder. &. GAN (Generative Adversarial Networks) (0) | 2023.01.19 |
---|---|
self.DL.(04-1). RNN (순환 신경망)실습_IMDB (0) | 2023.01.19 |
self.DL.(03-1). CNN (합성곱 신경망)실습_MNIST (0) | 2023.01.18 |
self.DL.(03). CNN (Convolution Neural Network) (0) | 2023.01.18 |
self.DL.(02-3). regression (회귀신경망)실습 (0) | 2023.01.18 |