[Udemy] RNN (1)
https://hanium.udemy.com/course/keras-deep-learning/learn/lecture/9343372#reviews
RNN vs DNN
- DNN
- input이 2개가 있다면 각 input이 서로 feedforward 계산을 통해 y output 타겟값과 비교가 되어 error function과 optimizer를 거쳐 업데이트 & 트레이닝
- 각 input이 서로 들어갔다 나오고 업데이트 하는 방식
- RNN (Recurrent Neuran Network)
- input이 2개 들어갈 때 첫번째 input이 들어가고, 두번째 input이 들어갈 때 첫번째 input에서 activation 결과를 같이 받아서 feedforward를 진행
- 첫번째 input이 두번째 input에 영향을 미침
- 지속적으로 입력에 따라 다음 input에 영향을 주는 형태!
RNN
- 각각의 케이스를 DNN에서 본다면 입력과 output이 각각 매칭
- 각 케이스가 같은 training을 하는 것
- DNN에서는 입력 순서가 관계없음
- 입력과 출력의 순서만 매칭되면 됨
- RNN에서는 정반대의 결과
- 첫번째 케이스와 두번째 케이스를 전혀 다르게 받아들임
- input과 output이 주어졌지만, 1이 2에, 2가 3에 영향을 미침
- Case1에서 1이 1만 학습하는 것이 아니라, 모든 출력에 맞추도록 학습 -> 입력의 순서가 중요함!
ex
- 단어의 알파벳 순서 학습
- 5개의 입력 -> 각각 다음 알파벳 학습
- E는 N이 앞에 있을 때 U가 되는 것
- U는 N과 E가 앞에 있을 때 R이 되는 것
- 입력이 다음 입력에 영향을 미침
- DNN이라면 앞에 문자에 관계없이 그냥 입력과 출력만 신경씀
- 문장 단어의 순서
- 각각의 단어를 순서대로 학습
- 앞에 단어가 왔을 때 다음 단어 예측
- 다양하게 활용 가능
- 대표적으로 입력 데이터가 순서적으로 연관이 있을 때 사용하는 경우가 많음
- 시간적으로 연관이 있을 수도 있고,
- 꼭 시간적이 아니더라도 단어나 문장처럼 순차적으로 연관이 있는 경우
RNN 학습 방법
- 층 전체가 하나의 레이어
- 레이어에는 다양한 레이어를 사용할 수 있음
- 레이어는 내부적으로는 다양한 구현이 되어 있음
- 입력이 들어왔을 때 (고정된 값) output도 고정된 값
- RNN 내부에는 weight와 bias 존재
- Y4에서 error값이 있을 때 입력을 바꿀 수 없기 때문에 내부적으로 H3가 업데이트 될 수 있도록 하기 위해서
- H3 전의 RNN의 weight와 bias 업데이트
- 그것을 위해 H2 업데이트 .. H1 업데이트 ..
- H들이 모두 업데이트 되어서 최종적으로 Y4에 반영될 수 있도록 연계적으로 training (weight와 bias 변경)
Multi Feature Time Series Classification RNN
- Multi classification을 RNN에서
- ex) 날씨
- 시간에 따라 변화
- 온도, 풍향 등 다양한 수치 정보가 있음 - 시간에 따라 정보 축적
- y: 강수 확률, 맑을 확률 등
- 현재 정보만 가져와서 추측하기 보다는 축적된 정보로 예측하는 것이 더 정확
- ex) 사람의 행동, 센서를 통해 축적된 데이터 (교통량, 신호) 등 -> 현재 상태에 대한 classification
- 여러 정보들(feature)이 시간 단위로 발생 - 시간 단위로 묶어 RNN 이용
Multi Feature Tiem Series Regression RNN
- Regression: 연속적인 값에 대해 예측
- ex) 가게 매출, 손님 수 예측, 주식 등