Допустим, я пытаюсь обучить языковую модель RNN в PyTorch. Предположим, я перебираю пакеты последовательностей слов и каждый тензор обучающего пакета имеет следующую форму:
data.shape = [batch_size, sequence_length, vocab_dim]
Мой вопрос: в чем разница между использованием только последнего слова в каждой последовательности в качестве целевой метки:
X = data[:,:-1]
y = data[:,-1]
и обучение, чтобы минимизировать потери, используя предсказание softmax последнего слова,
vs установка цели, чтобы вся последовательность была сдвинута вправо:
X = data[:,:-1]
y = data[:,1:]
и обучение, чтобы минимизировать сумму потерь каждого предсказанного слова в сдвинутой последовательности?
Какой здесь правильный подход? Мне кажется, я видел оба примера в Интернете. Связано ли это с развертыванием цикла и BPTT?