Это правда, что ограничение вашего распространения градиента до 30 временных шагов не позволит ему изучить все возможное в вашем наборе данных. Однако от вашего набора данных сильно зависит, помешает ли это тому, чтобы он узнал важные сведения о функциях вашей модели!
Ограничение градиента во время обучения больше похоже на ограничение окна, в котором ваша модель может с высокой степенью достоверности ассимилировать входные функции и скрытое состояние. Поскольку во время тестирования вы применяете свою модель ко всей последовательности ввода, она все равно сможет включать информацию обо всех функциях ввода в скрытое состояние. Возможно, он не знает точно, как сохранить эту информацию, пока он не сделает свой окончательный прогноз для предложения, но могут быть некоторые (предположительно более слабые) связи, которые он все же сможет установить.
Сначала подумайте над надуманным примером. Предположим, ваша сеть сгенерирует 1, если где-то на входе 1, и 0 в противном случае. Допустим, вы тренируете сеть на последовательности длиной 20 и ограничиваете затем градиент до 10 шагов. Если обучающий набор данных никогда не содержит 1 в последних 10 шагах ввода, то в сети возникнут проблемы с тестовыми входами любой конфигурации. Однако, если в обучающем наборе есть несколько примеров, например [1 0 0 ... 0 0 0], а другие, например, [0 0 0 ... 1 0 0], то сеть сможет определить «присутствие 1 "функция в любом месте на входе.
Вернемся к анализу настроений. Скажем, во время обучения ваша модель встречает длинное отрицательное предложение типа «Я ненавижу это, потому что ... вокруг и вокруг», например, с 50 словами в многоточии. Ограничивая распространение градиента 30 временными шагами, модель не будет связывать «Я ненавижу это, потому что» с выходной меткой, поэтому она не поймет «Я», «Ненависть» или «это» из этого тренинга. пример, Но он поднимет слова, которые находятся в пределах 30 временных шагов от конца предложения. Если ваш обучающий набор содержит другие примеры, которые содержат те же слова, возможно, наряду с «ненавистью», тогда у него есть шанс обнаружить связь между «ненавистью» и ярлыком отрицательного настроения. Также, если у вас есть короткие примеры тренировок, скажите: «Мы ненавидим это, потому что это ужасно!» тогда ваша модель сможет соединить функции «ненависть» и «это» с целевой меткой. Если вам достаточно этих обучающих примеров, то модель должна быть способна эффективно изучить связь.
Во время теста, скажем, вы представляете модель с другим длинным предложением типа «Я ненавижу это, потому что ... на геккона!» Ввод модели начнется с «Я ненавижу это», который в некоторой форме будет переведен в скрытое состояние модели. Это скрытое состояние используется, чтобы влиять на будущие скрытые состояния модели, поэтому даже если до конца предложения может быть 50 слов, скрытое состояние из этих начальных слов имеет теоретический шанс повлиять на вывод, даже если оно никогда не было натренированный на образцах, которые содержали такое большое расстояние между «я ненавижу это» и концом предложения.