Как выбрать этикетку / мишень для моделей RNN?

При обучении персонажа RNN, если у нас есть вход X = (x_1, x_2, ..., x_t), мы разбиваем его на две части: X_train = (x_1, x_2, ..., x_ (t-1)) , y_train = (x_2, x_3, ..., x_t).

Зачем нам это делать? Почему бы не установить y_train = (x_ (t + 1)), т.е. следующий символ, который мы хотим предсказать?

Я пытаюсь предсказать другие данные временных рядов с помощью RNN, и меня действительно смущает, как выбрать метку / цель для модели.


person Marvis Lu    schedule 30.10.2017    source источник


Ответы (1)


Мы разделяем данные таким образом, потому что мы хотим обучить нашу модель предсказывать следующий символ в последовательности, учитывая предыдущие символы и состояние модели. Другими словами, учитывая последовательность x, состоящую из T входов, мы обучаем языковую модель RNN h для оценки следующего распределения: p (x t | x ‹t , з).

Если мы рассмотрим последовательность символов stack, определенную как:

s, t, a, c, k

Нам также нужны два специальных «символа» для обозначения начала и конца слова. Давайте использовать $ для обозначения начала и ^ для обозначения конца слова. Следовательно, вся последовательность теперь $, s, t, a, c, k, ^.

Входная последовательность x train:

$, s, t, a, c, k

Эта последовательность содержит t = 6 входов временных шагов для RNN: x 1, x 2, x 3, x 4 , x 5, x 6

Целевая последовательность y train - это просто входная последовательность, сдвинутая на один временной шаг вправо, то есть y t = x t-1.

s, t, a, c, k, ^

person Desmond Elliott    schedule 30.10.2017