1. RNN
- 기존 인공신경망으로 다룬 데이터는 어느 한 순간의 데이터
- RNN은 시퀀스 데이터를 학습하기 위해 고안된 모델
- 시퀀스 데이터는 순서, 흐름, 시간 개념이 포함됨
- 주가 예측, 날씨 예측, 음성 인식, 문장 번역 등
2. Simple RNN
1) 재귀 뉴런
-
일반적인 뉴런이 아닌 재귀 뉴런을 사용
- 이전 입력값에 대한 출력값을 현재 입력값에 대한 출력값에 더해서 현재 출력값을 도출

2) 재귀 층
- 여러 뉴런으로 구성된 층 단계에서는 해당 층의 모든 이전 출력값을 더해서 현재 각 노드의 출력값에 각각 더함

<aside>
💡 동작 예를 계산하라는 문제가 나올 시!
Y = X * U + (이전 출력값, 초기는 0) * V + B
</aside>
3) 재귀 층 펼치기
- 입력이 여러개 일때 첫번째 입력값 처리 후, 두번째 입력값을 넣을 때 출력에 첫번째 입력값의 결과를 더하고, 세번째 입력값 넣을때 출력에 두번째 입력값의 결과를 더하고... 반복

- 순방향 계산은 이런 방식 / 역방향 계산은 역전파 학습 알고리즘에 따라 손실 함수를 최소화하는 방향으로
- 재귀 층이 한개가 아닌 여러 층일때는 층별로 진행

4) tflearn Simple RNN
- simple_rnn 함수를 이용해 신경망을 구성
tflearn.layers.recurrent.simple_rnn(incoming, n_units, activation='sigmold', ...)
# incoming : 입력 텐서
# n_units : 재귀 뉴런의 개수
# return_seq : 중간 결과의 반환 여부, True / False
# dynamic : 재귀 뉴런 실행방법, True : dynamic / False : static