저녁 운동도 부셨으니, 순환 신경망을 공부해보쟈
순환 신경망의 활용 - 시계열 데이터에 많이 사용됨
- 언어 번역
- 신호 처리
- 주가 예측
- 음성 인식
일반적인 인공신경망
- input 하나가 모델로 들어오게 되면, 모델이 예측 값을 하나 산출
- 각각의 input 마다 output을 산출
순환 신경망
- input x1이 들어가면 output y1을 산출하는데, 모델에 정보 h1를 저장함
- 두 번째 input x2가 들어가면 모델에 저장한 정보 h1과 같이 계산을 해서 output y2를 산출함
RNN(Recurrent Neural Network)
- one to many - x가 들어가서 여러 개의 output을 만드는 것
- 예를 들어, 작곡 프로그램의 경우 장르가 들어오면 여러 개의 음정을 뽑아냄
- many to one - 여러개의 데이터를 가지고 하나의 ouput을 산출함
- 예를 들어, 주가 예측을 하는 경우, 12/1, 12/2, 12/3, 12/4 일의 데이터가 들어갔을 때
- 12/1의 데이터와 h1(정보)을 이용해서 h2를 만들고
- 12/2의 데이터와 h2를 이용해서 h3를 만드는 형식으로 감
- h1, h2, h3, h4와 같은 hidden layer를 sequence라고 부르며, sequence의 길이를 자유롭게 조절할 수 있음
- 주가 예측할 때, 10일 치를 볼지, 100일 치를 볼지 조절하는 것이 sequence 길이 조정이라고 보면 됨
- many to mant - 여러 개의 input과 여러 개의 output을 만듦
- [i][don't][like][pizza] -> one hot encoding으로 변경하여 넣어줌
Vanilla RNN
- 일반적으로 h0 은 영 벡터(0,0,0,...,0,0)로 정의함
- h => 이전에 있던 hidden state 정보와 현재의 정보를 받아서 현재의 상태를 저장
- o => linear한 인공신경망
- y => 인공신경망에 softmax를 씌워서 output 산출
- h함수는 위 이미지처럼 동작함
- 이전 state인 h(t-1)을 받아서 x(t)와 만나서 연산이 된 것이 a(t)
- a(t)가 activate function인 Tanh를 거쳐서 h(t)를 만듦
- many to many이면 x(t)를 받으면 y^(y_hat)을 만들고
- 그게 아니면 h(t)를 다음으로 넘겨주면 됨
RNN의 손실 함수
- Cross-Entropy : classification 문제에서 많이 사용됨
- MSE : Regression 문제에서 많이 사용됨
- Loss가 가장 작게 나오는 가중치를 구해주면 됨
- 가중치 : W, U, V, c
내용에 문제가 있으면 댓글로 알려주세요!
출처 : 인프런 - 실전 인공지능으로 이어지는 딥러닝 개념 잡기(딥러닝 호형)
'딥러닝 공부' 카테고리의 다른 글
오토인코더(Autoencoder) (1) | 2021.09.28 |
---|---|
장단기 메모리와 게이트 순환 유닛(LSTM and GRU) (0) | 2021.09.28 |
인공 신경망의 최적화 - 기울기 사라짐, 손실함수와 최적화 (0) | 2021.09.23 |
인공 신경망의 최적화 - 확률적 경사 하강법과 최적화 기법 (0) | 2021.09.23 |
인공 신경망의 최적화 - 경사 하강법(Gradient Descent) (0) | 2021.09.23 |