저녁 운동도 부셨으니, 순환 신경망을 공부해보쟈

 

순환 신경망의 활용 - 시계열 데이터에 많이 사용됨

  1. 언어 번역
  2. 신호 처리
  3. 주가 예측
  4. 음성 인식

 

일반적인 인공신경망

  • input 하나가 모델로 들어오게 되면, 모델이 예측 값을 하나 산출
  • 각각의 input 마다 output을 산출

 

순환 신경망

  • input x1이 들어가면 output y1을 산출하는데, 모델에 정보 h1를 저장함
  • 두 번째 input  x2가 들어가면 모델에 저장한 정보 h1과 같이 계산을 해서 output y2를 산출함

 

RNN(Recurrent Neural Network)

  1. one to many - x가 들어가서 여러 개의 output을 만드는 것
    • 예를 들어, 작곡 프로그램의 경우 장르가 들어오면 여러 개의 음정을 뽑아냄
  2. 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 길이 조정이라고 보면 됨
  3. 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

 

 

 

 

내용에 문제가 있으면 댓글로 알려주세요!

 

출처 : 인프런 - 실전 인공지능으로 이어지는 딥러닝 개념 잡기(딥러닝 호형)

+ Recent posts