더북(TheBook)

① 티처포스(teacher_force)는 seq2seq(인코더-디코더) 모델에서 많이 사용되는 기법입니다. 티처포스는 다음 그림과 같이 번역(예측)하려는 목표 단어(ground truth라고도 함)를 디코더의 다음 입력으로 넣어 주는 기법입니다.

▲ 그림 10-19 티처포스

티처포스를 사용하면 학습 초기에 안정적인 훈련이 가능하며, 기울기를 계산할 때 빠른 수렴이 가능한 장점이 있지만 네트워크가 불안정해질 수 있는 단점이 있습니다.

모델 훈련을 위한 함수를 정의합니다. 여기에서는 모델의 오차를 계산하는 부분만 정의합니다.

코드 10-32 모델의 오차 계산 함수 정의

teacher_forcing_ratio = 0.5

def Model(model, input_tensor, target_tensor, model_optimizer,  criterion):
    model_optimizer.zero_grad()
    input_length = input_tensor.size(0)
    loss = 0
    epoch_loss = 0
    output = model(input_tensor, target_tensor)
    num_iter = output.size(0)

    for ot in range(num_iter):
        loss += criterion(output[ot], target_tensor[ot]) ------ 모델의 예측 결과와 정답(예상 결과)을 이용하여 오차를 계산
    loss.backward()
    model_optimizer.step()
    epoch_loss = loss.item() / num_iter
    return epoch_loss
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.