아래 내용은 인프런 [처음하는 딥러닝과 파이토치(Pytorch) 부트캠프] 강의를 듣고 공부한 내용입니다.
RNN
- Recurrent Neural Network, 순환 신경망 이라고함
- 입력과 출력을 시퀀스 단위로 처리하는 시퀀스(Sequence) 모델
- 시퀀스(Sequence)란 연관된 연속 데이터를 의미하며, 시계열 데이터 등 순서를 가지는 데이터(그 전의 데이터를 가지고 예측해야하니까 시간축이 중요함) 에 적합한 신경망 모델 ( CNN과 마찬가지로 DNN으로도 시계열 데이터 분석 가능하지만 더 성능이 좋음)
- 번역기의 입력은 단어가 순서를 띄고 나열된 문장 시퀀스이며, 출력도 번역된 단어가 순서를 띄고 나열된 번역 문장 시퀀스임
- 가장 기본적인 시퀀스 모델이며, 최근에는 RNN을 기반으로 개선된 LSTM과 GRU 모델이 많이 사용됨
RNN의 기본 구조
- ANN(layer 하나), DNN(layer 여러개), CNN은 모두 은닉층에서 활성화 함수를 지난 값은 출력층 방향으로만 적용됨
- 이를 Feed Forward Neural Network라고 부름
- 이에 반해, RNN은 은닉층의 노드에서 활성화 함수를 통해 나온 결과값을 출력층 방향 + 은닉층 노드의 다음 계산의 입력으로 보냄 (다시 자기자신의 다음 iteration의 입력으로 들어감)
- 기존 hidden state의 활성화 함수를 통해 나온 결과값을 내보내는 역할을 하는 노드를 메모리 셀이라고 함 (위 그림에서 자기 자신의 다음 iteration의 입력으로 들어가는 노드)
- RNN은 은닉층 메모리 셀에서 나온 값을 다음 은닉층의 메모리 셀에 입력하는 구조
기존 hidden state 값을 사용한다는 의미는, 기존 값을 기억한다는 의미로, 컴퓨터 구조의 메모리를 구성하는 플립플롭의 논리 회로와 유사함
- x 입력을 받아서, h 은닉 상태 (hidden state라고 함)를 통과하여, y 출력을 한다고 하면, 다음과 같은 수식을 기반으로 동작함.
** RNN은 내부적으로 은닉층의 출력 결과물이 그 다음 iteration의 해당 노드의 입력으로 들어갈 수 있는 메모리셀을 가지고 있는 구조
** 메모리셀의 계산은 tanh 비선형 함수를 사용하여 계산됨
tanh 함수란?
hyperbolic tangent function, 하이퍼볼릭 탄젠트
- 쌍곡선 함수라고도 칭함
- 시그모이드 함수와 유사하여, 시그모이드 함수의 대체제로 사용되는 활성화 함수
- 시그모이드는 0 ~ 1 의 값을 가지는데 반해, tanh 함수는 -1 ~ 1의 값을 가짐
- 시그모이드는 데이터의 평균이 0.5이지만, tanh 함수는 데이터의 평균이 0임
- 시그모이드와 비교하여 tanh 함수가 보다 출력 범위가 넓고, 경사면이 큰 범위가 더 크므로, 더 빠르게 수렴하여 학습하는 특징을 가지고 있음
- tanh 함수 수식
- tanh 함수 미분
RNN의 다양한 구조
- RNN은 입력과, 출력 길이를 다르게 설계할 수 있음
- 입력은 빨간박스, 은닉층은 녹색박스, 출력은 파랑박스라고 가정하면, 다음과 같이 다양한 형태의 RNN 구성 가능
- one to one : 가장 단순한 형태 Vanilla RNN이라고 부름 (DNN이 더 잘할수도..)
- one to many : 하나의 이미지 입력에 대해, 이미지의 다양한 특징을 출력하는 (CNN처럼) 이미지 캡셔닝에 적용 가능
- many to one : 메일 전체를 입력받아, 메일이 스팸인지, 스팸이 아닌지를 판단하는 등의 문제에 적용 가능
- many to many : 문장을 입력받아, 문장을 출력하는 챗봇이나 번역기 등의 문제에 적용 가능
'Deep Learning & AI > Time-Series' 카테고리의 다른 글
[Paper Review] Time Series Forecasting (TSF) Using Various Deep Learning Models (2) (0) | 2024.05.13 |
---|---|
[Paper Review] Time Series Forecasting (TSF) Using Various Deep Learning Models (1) (0) | 2024.04.01 |
[시계열 분석] ARIMA(AutoRegressive Integreted Moving Average) - 자기 회귀 누적 이동 평균 모델 (0) | 2024.02.26 |
[시계열 분석] 정상성 (0) | 2024.02.19 |
순서가 있는 데이터를 위한 딥러닝 기본 - RNN BPTT (1) | 2024.02.12 |