'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)