Мне понятно, как вычислить растерянность для RNN, поскольку RNN - это модель с состоянием.
В целом, учитывая очень длинный документ, я считаю, что нам необходимо: 1. разбить документ на последовательностькусков, и мы вычисляем кросс-энтропийную потерю для каждого из кусков, прежде чем взять среднее значение для всех кусков и взять экспоненциальный.
Поскольку RNN являются моделью с состоянием, мы можем использовать то, что мы имеем из последнего RNNскрытое состояние относительно предыдущего чанка для инициализации скрытого состояния для RNN, который обрабатывает следующий чанк. Поэтому я думаю, что RNN вычисляет «правильное» растерянность для длинного документа.
Между тем, Transformer не является моделью с состоянием. По этой причине, я думаю, не существует таких вещей, как «перенос» скрытого состояния из предыдущего куска. По этой причине я думаю, что Трансформеры на самом деле не рассчитывают растерянность для длинного документа. Он вычисляет что-то другое.
Так почему же все еще справедливо сравнивать две модели в отношении растерянности для длинных документов? Кроме того, если я создаю RNN без сохранения состояния (например, как в Keras, я могу установить stateful = False), будет ли недоумение, вычисляемое моделью без сохранения состояния без «передачи» скрытого состояния, правильным решением, которое нам нужно? Сравнимо ли это с состоянием RNN?