[모두를 위한 딥러닝2] RNN #2 hihello & charseq

YSL·2021년 8월 23일
0

모두를 위한 딥러닝2

목록 보기
19/23

'hihello' example

: 'hihello'라는 문자열을 예측하는 모델 만들기

one-hot encoding


character들을 컴퓨터 상에 표현하기 위한 가장 쉬운 방법 : character의 index를 표현하는 것
=> index의 숫자의 크기에 따라 categorical한 데이터의 경우, 'one-hot encoding'을 사용함

  • Q. 전체 데이터는 'hihello' 7글자인데 input data (=X_data)가 6개밖에 없는 이유는?
    A. input_data는 다음 글자를 예측할 필요가 없는 마지막 글자인 'o'를 제외한 'h', 'i' , 'h' , 'e' , 'l' , 'l'만 필요함
    반대로 output_data는 가장 첫 문자인 'h'를 제외한 나머지 6글자가 필요함

Cross Entropy Loss

  • categorical한 output을 예측하는 모델에서 주로 많이 쓰임
    일반적으로는 output값들을 softmax 등을 이용해 확률값으로 해석함
  • loss = criterion( 모델의 output , 정답 label ) : 파라미터의 순서가 바뀌면 제대로 모델이 작동하지 않을 수 있음

'hihello' 데이터 준비 과정

charseq 예시

  • charseq : sample에 어떤 문자열이 들어가든 다음 문자 예측하는 모델

  • 실제 training 중,
    • optimizer.zero_grad() 해줘야 for문 돌때마다 새로운 grad값을 구할 수 있음
      => 안해주면, 기존 grad에 축적되면서 잘못된 gradient를 구하게 되어 학습이 정상적으로 이루어지지 않음)
    • _status : 만약 다음 input이 있으면 그 다음 input을 RNN 안에서 계산할 때 쓰이게 될 값 (=hidden state)

0개의 댓글