Dlaczego wagi sieci RNN / LSTM są dzielone w czasie?


20

Ostatnio zainteresowałem się LSTM i byłem zaskoczony, gdy dowiedziałem się, że wagi są dzielone w czasie.

  • Wiem, że jeśli dzielisz wagi w czasie, to twoje wejściowe sekwencje czasowe mogą mieć zmienną długość.

  • Dzielone ciężary pozwalają trenować o wiele mniej parametrów.

Z mojego zrozumienia, powód, dla którego warto przejść na LSTM vs. jakąś inną metodę uczenia się, jest taki, że wierzysz, że w twoich danych istnieje jakaś struktura czasowa / sekwencyjna / zależność, której chciałbyś się nauczyć. Jeśli poświęcisz „luksus” o zmiennej długości i zaakceptujesz długi czas obliczeń, czy RNN / LSTM bez wspólnych ciężarów (tj. Za każdym razem, gdy masz różne ciężary) będzie działał znacznie lepiej, czy jest coś, czego mi brakuje?

Odpowiedzi:


17

Przyjęta odpowiedź koncentruje się na praktycznej stronie pytania: wymagałoby to wielu zasobów, jeśli parametry nie byłyby współużytkowane. Jednak decyzja o współużytkowaniu parametrów w sieci RNN została podjęta, gdy jakieś poważne obliczenia stanowiły problem (według wiki według lat 80-tych ), więc uważam, że nie był to główny argument (choć nadal aktualny).

Istnieją tylko teoretyczne powody udostępniania parametrów:

  • Pomaga w stosowaniu modelu do przykładów o różnych długościach. Podczas czytania sekwencji, jeśli model RNN używa różnych parametrów dla każdego kroku podczas treningu, nie uogólnia na niewidzialne sekwencje o różnych długościach.

  • Często sekwencje działają zgodnie z tymi samymi regułami w całej sekwencji. Na przykład w NLP:

                                                     „W poniedziałek padał śnieg”

                                                     „W poniedziałek padał śnieg”

... te dwa zdania oznaczają to samo, chociaż szczegóły znajdują się w różnych częściach sekwencji. Współdzielenie parametrów odzwierciedla fakt, że wykonujemy to samo zadanie na każdym kroku, w wyniku czego nie musimy ponownie uczyć się reguł w każdym punkcie zdania.

LSTM nie różni się pod tym względem, dlatego wykorzystuje również wspólne parametry.


4
Jest to zdecydowanie ważniejszy powód niż przyjęta odpowiedź!
jlh

Uważam, że moja odpowiedź została tutaj źle opisana. Powiedziałem, że więcej zasobów obliczeniowych będzie wymaganych bez podziału masy, ale nie było to głównym celem. W szczególności napisałem również, że model bez wspólnych obciążeń byłby znacznie bardziej elastyczny, a zatem bardziej podatny na nadmierne dopasowanie. Dzielenie się wagami w czasie jest sposobem na przezwyciężenie tego. Jak słusznie wskazano tutaj, strategia ta odpowiada „wcześniejszemu” stosowaniu tych samych zasad w każdym momencie. Tak więc obie odpowiedzi nie są niezgodne.
user20160

12

Perspektywa „dzielonych wag” wynika z myślenia o RNN jako o sieciach feedforward rozwijanych w czasie. Gdyby wagi były różne w każdym momencie, byłaby to tylko sieć zwrotna. Ale przypuszczam, że innym sposobem myślenia o tym byłby RNN, którego wagi są funkcją zmieniającą się w czasie (i która mogłaby pozwolić ci zachować zdolność przetwarzania sekwencji o zmiennej długości).

Jeśli to zrobisz, liczba parametrów będzie rosła liniowo wraz z liczbą kroków czasowych. Byłaby to duża eksplozja parametrów dla sekwencji o znacznej długości. Rzeczywiście sprawiłby, że sieć byłaby silniejsza, gdybyś miał ogromne zasoby obliczeniowe do jej uruchomienia i ogromne dane, aby ją ograniczyć. W przypadku długich sekwencji prawdopodobnie byłby to niewykonalny obliczeniowo, a do tego dojdzie do nadmiernego dopasowania. W rzeczywistości ludzie zwykle idą w przeciwnym kierunku, uruchamiając skróconą propagację wsteczną w czasie, która rozwija sieć tylko przez krótki czas, a nie przez całą sekwencję. Odbywa się to w celu wykonalności obliczeniowej. Co ciekawe, RNN mogą nadal uczyć się struktury czasowej, która wykracza poza długość obcięcia, ponieważ jednostki rekurencyjne mogą przechowywać pamięć z wcześniej.


Jeśli nie dzielisz wag, nadal masz stan komórki, który utrzymuje się w czasie. Rozwijany LSTM z unikalnymi wagami czasowymi wyglądałby jak sieć przesyłowa, w której każda „warstwa” reprezentowałaby przedział czasu, ale każda „warstwa” miałaby informację o stanie komórki przychodzącej. Przypomniałoby to sprzężenie zwrotne, ale z dodaniem stanu komórki.
beeCwright

0

Myślę, że ponieważ RNN z ukrytymi nawrotami (i wagami dzielonymi w czasie) są równoważne z Uniwersalnymi Maszynami Turinga, pozwalanie im mieć różne wagi dla różnych kroków czasowych nie czyni ich mocniejszymi.


Czy mógłbyś wyjaśnić, co rozumiesz przez „potężny”? Odniesienie do maszyn Turinga sugeruje, że to, co masz na myśli, może być zupełnie inne niż to, co ma na myśli statystyki.
whuber

RNN są używane do przetwarzania sekwencji danych. Jeden z ich najczęstszych typów pobiera sekwencję jako dane wejściowe i tworzy kolejną sekwencję jako dane wyjściowe (takie jak systemy tłumaczeń języka). Mówię, że rodzina modeli M1 RNN ma większą moc niż inna rodzina modeli M2 RNN, jeśli w przypadku problemu (takiego jak odwzorowanie zestawu sekwencji wejściowych na zestaw sekwencji wyjściowych) istnieje model M1 w M1, w którym można rozwiązać ten problem ale w M2 nie ma modelu, w którym można rozwiązać ten problem.
Hossein
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.