To prawda, że ograniczenie propagacji gradientu do 30 kroków czasowych uniemożliwi nauczenie się wszystkiego, co możliwe w zbiorze danych. Jednak to zależy w dużym stopniu od zestawu danych, czy uniemożliwi to poznanie ważnych rzeczy na temat funkcji w twoim modelu!
Ograniczanie gradientu podczas treningu przypomina bardziej ograniczanie okna, przez które model może z dużą pewnością przyswoić funkcje wprowadzania i stan ukryty. Ponieważ w czasie testowania zastosujesz model do całej sekwencji wprowadzania, nadal będzie on mógł zawierać informacje o wszystkich funkcjach wprowadzania w stanie ukrytym. Może nie wiedzieć dokładnie, jak zachować te informacje, dopóki nie dokona ostatecznej prognozy zdania, ale mogą istnieć pewne (co prawda słabsze) powiązania, które nadal byłby w stanie nawiązać.
Pomyśl najpierw o wymyślonym przykładzie. Załóżmy, że twoja sieć ma wygenerować 1, jeśli gdziekolwiek jest 1 na wejściu, a 0 w przeciwnym razie. Powiedzmy, że trenujesz sieć na sekwencjach o długości 20 i ogranicza następnie gradient do 10 kroków. Jeśli zestaw danych szkoleniowych nigdy nie zawiera 1 w ostatnich 10 krokach danych wejściowych, wówczas sieć będzie miała problem z wejściami testowymi dowolnej konfiguracji. Jeśli jednak zestaw szkoleniowy zawiera kilka przykładów, takich jak [1 0 0 ... 0 0 0], a inne, takie jak [0 0 0 ... 1 0 0], sieć będzie w stanie wykryć „obecność funkcja 1 "w dowolnym miejscu na wejściu.
Wróćmy do analizy nastrojów. Powiedzmy, że podczas treningu Twój model napotyka długie zdanie negatywne, takie jak „Nienawidzę tego, ponieważ ... w kółko” z, powiedzmy, 50 słowami w elipsie. Ograniczając propagację gradientu do 30 kroków czasowych, model nie będzie łączył „Nienawidzę tego, ponieważ” z etykietą wyjściową, więc nie odbierze „I”, „nienawidzę” lub „tego” z tego szkolenia przykład. Ale rozpozna słowa, które znajdują się w odległości 30 kroków od końca zdania. Jeśli Twój zestaw treningowy zawiera inne przykłady, które zawierają te same słowa, być może wraz z „nienawiścią”, to ma szansę na wykrycie związku między „nienawiścią” a etykietą negatywnego sentymentu. Ponadto, jeśli masz krótsze przykłady treningów, powiedz: „Nienawidzimy tego, bo to okropne!” wtedy Twój model będzie mógł połączyć funkcje „nienawiść” i „to” z etykietą docelową. Jeśli masz dość tych przykładów szkolenia, model powinien być w stanie skutecznie nauczyć się połączenia.
W czasie testu powiedzmy, że przedstawiasz modelowi kolejne długie zdanie, takie jak „Nienawidzę tego, ponieważ ... na gekonie!” Dane wejściowe modelu zaczną się od „Nienawidzę tego”, które w pewnej formie zostaną przekazane do stanu ukrytego modelu. Ten stan ukryty służy do wpływania na przyszłe ukryte stany modelu, więc nawet jeśli przed końcem zdania może być 50 słów, stan ukryty tych początkowych słów ma teoretyczną szansę wpłynięcia na wynik, nawet jeśli nigdy nie był trenowałem na próbkach, które zawierały tak dużą odległość między „nienawidzę tego” a końcem zdania.