Dwie sekwencje, jedna модель
Tłumaczenie maszynowe, sumarykowanie i transkrypcja mowy mają wspólną nieprzyjemną cechę: wejście i wyjście są obu zmiennych długości i rzadko pasują do siebie jedno do jednego. Pięcio słowna fraza angielska może stać się siedmioczętnym tłumaczeniem francuskim, a słowa mogą być uporządkowane całkowicie inaczej. Klasyyczne sieci neuronowe oczekują na wejścia i wyjścia o ustalonej wielkości, dlatego nie mogą obsługiwać tego bezpośrednio. Architektura seq2seq, wprowadzona przez Sutskevera, Vinyala i Le w 2014 roku oraz samodzielnie przez Cho i in., rozwiązuje ten problem, dzieląc zadanie na dwa sieci neuronowe rekurencyjne: encoder, który czyta całą źródłową sekwencję i kompresuje ją do wektora o ustalonej wielkości, oraz decoder, który bierze ten wektor i generuje docelową sekwencję token po tokenie. Ze względu na to, że dwie części są trenowane wspólnie od początku do końca, sieć uczy się własnej reprezentacji wewnętrznego znaczenia bez konieczności ręcznego projektowania zasad tłumaczenia ani tablic aligment.
Szyfrator: czytanie i kompresja
Szyfrator jest zwykle RNN, LSTM lub GRU przetwarzającym zdanie źródłowe słowo po słowie, aktualizując swoje stan ukryty na każdym kroku tak, aby reprezentował wszystko, co widział dotychczas. Po tym, jak ostatnie słowo zostanie zjedzone, stan ukryty szyfratora traktowany jest jako podsumowanie całego zdania, często nazywane wektorem kontekstu. Ten pojedynczy wektor, zwykle tylko kilka setek liczb, powinien zawierać w sobie znaczenie, strukturę i każdą detalię potrzebną do odtworzenia zdania w innym języku. Jest to wiele, na co można polegać na jednym ustalonej wielkości wektorze, a właśnie tam najwcześniejsze seq2seq modele zaczęły napotykać trudności. Gdy zdanie źródłowe staje się dłuższe, szyfrator musi wprowadzać coraz więcej informacji do kontenera, który nigdy nie rosnie, więc wcześniejsze słowa tarczą się lub rozcieńczają przed czasem, podobnie jak próbując podsumować całe novelę w jednym tweetie, niezależnie od długości noveli.
Dekoder: generowanie jednego tokenu za razem
Dekoder jest samodzielnie RNN, który jest inicjalizowany stanem ukrytym końcowym encjera i generuje celowy zdanie token po token. W każdym kroku przyjmuje jako wejście swój własny poprzedni stan ukryty oraz wygenerowaną poprzednio frazę, tworzy rozkład prawdopodobieństwa nad słownikiem celowym i wybiera najbardziej prawdopodobne nastepne słowo, lub losuje z rozkładu podczas bardziej eksploracyjnej generacji. Wybrane słowo jest następnie ponownie wprowadzone jako wejście dla kolejnego kroku, dlatego dekoder buduje sekwencję wyjściową autoregresywnie, token po tokenie, aż do momentu, gdy wygeneruje token końcowy zdania. W trakcie treningu ten proces jest prowadzony przez zmuszanie na nauczanie, gdzie prawdziwe poprzednie słowo celowe jest wprowadzone zamiast przewidywania modelu, co stabilizuje uczenie; podczas czasu inferencji dekoder musi polegać na własnych przewidywaniach, dlatego wcześniejsze błędy mogą czasem spowodować zamieszany tekst.
Uwaga: zatrzymaj się przed przyciskaniem, zacznij patrzeć w tył
Fixed-size kontekstowy wektor był słabością architektury seq2seq, a Bahdanau, Cho i Bengio w swoim roku 2014 papierze naprawili to pomysłem nazywanym teraz uwagą. Zamiast zmuszać dekodera do opierań się jedynie na jednym skompresowanym podsumowaniu, uwaga zachowuje każdy ukryty stan, jeden dla każdego źródłowego słowa, i pozwala dekoderaowi konsultować wszystkie z nich na każdym kroku dekodowania. Na każdym kroku dekoder oblicza wynik aligamentacji między swoim bieżącym stanem a każdym ukrytym stanem encodera, pomiarając, jak bardzo ważne jest to źródłowe słowo w tej chwili. Te oceny są przeprowadzane przez softmax, aby stać się wagami uwagi sumującymi się do jednego, a ukryte stany encodera są połączone w sumę ważoną, nazywaną kontekstem, przy użyciu tych wag. Efektywnie dekoder dostaje możliwość odwrotnej komunikacji i pyta: 'Jakie źródłowe słowa mają najważniejsze znaczenie dla słowa, które chce wygenerować?' zamiast zaufać jednemu wektora, że pamięta wszystko poprawnie. To dokładnie dlaczego wizualizacje wag uwagi, rysowane jako mapa ciepła, często śledzą linię przypominającą diagonalną dla języków o podobnym porządku słów, lub wyraźnie zginącą się dla języków, które zmieniają położenie fraz, takich jak przymiotniki przesuwające się przed lub za rzeczownik.
Z uwagi do Transformer
Uwaga była pierwotnie dodawana jako pomocnicza funkcja do RNN, ale badacze szybko zauważyli coś bardziej rewolucyjnego: sam mechanizm powtarzania, cykliczny pętlik sekwencyjny przetwarzający słowa jeden za drugim, nie był czymś, co sprawiało, że uwaga była przydatna. Ważne było zdolność relacjonowania dowolnego położenia w sekwencji do dowolnego innego położenia bezpośrednio. W 2017 roku Vaswani i inni przekształczyli to obserwacje na jego logiczny konsekwencje w pracy Attention Is All You Need, całkowicie zrezygnując z powtarzania i budując model Transformer tylko ze warstw uwagi i sieci biegunowych. Usunięcie zależności kroku po kroku oznaczało, że każda pozycja w sekwencji mogła być przetwarzana równolegle podczas treningu zamiast jedno token po drugim, co było ogromnym zwycięstwem dla szybkości na współczesnych GPU i TPUs. Każde duże model języka od BERT do GPT oraz najnowszych przedgrodniowych modeli, opiera się bezpośrednio na tym odkryciu, czyniąc prosty mechanizm uwagi encodera-decoder z maszynowego tłumaczenia jednym z najbardziej konsekwencjonalnych pomysłów w historii uczenia głębokiego.
Często zadawane pytania
Dlaczego prosta model seq2seq nie może po prostu używać większego wektora kontekstowego?
Zwiększenie wielkości wektora kontekstowego przesunie brzeg obciążenia, ale nie usuwa go i jednocześnie sprawi, że model będzie cięższy i wolniejszy do treningu. Głębsza problematyka leży w strukturze: niezależnie od wielkości, pojedynczy stały wektor musi reprezentować cały zdanie, niezależnie od jego długości, więc trzydzielne zdanie i trzydzieliowe zdanie są zmuszone do wpisania się w kontenery tej samej wielkości. Zwracanie uwagi całkowicie uniknie problemu, zachowując jeden stan ukryty dla każdego słowa źródłowego zamiast łączenia ich w pojedynczy, więc ilość dostępnej informacji naturalnie skaluje się z długością wejścia.
Czym są dokładnie wagi uwagi i jak są nauczone?
Wagi uwagi to zestaw liczb, jeden dla każdego słowa źródłowego, które sumują się do jedynki i wskazują, ile każdego słowa źródłowego powinno wpływać na obecny krok wygenerowania przez dekoder. Przysuwają się one z małej nauczonej funkcji oceny, często składającej się tylko z kilku warstw neuronowych, która porównuje aktualny stan ukryty dekodera do każdego stanu ukrytego encodera i produkuje nieprzeliczoną liczbę kompatybilności, która następnie jest normalizowana za pomocą softmax. Ponieważ ta funkcja oceny to tylko kolejna grupa wag wewnątrz sieci, jest nauczona automatycznie poprzez ten sam proces backpropagacji, jak reszta modelu, bez osobnego nadzoru, który powiedziałby jej, które słowa powinny być przypisane do których.
Czy zwracanie uwagi pozwala dekoderaowi zobaczyć całe zdanie naraz, w przeciwieństwie do prostej RNN?
Tak, w tym sensie, że zwracanie uwagi daje dekoderowi bezpośredni dostęp do każdego stanu ukrytego encodera na każdym kroku generowania, a nie tylko do tego, co przetrwało kompresję do jednego końcowego wektora. Jest to duży odstęp od prostej modelu seq2seq, który otrzymuje zawsze tylko ostatni stan ukryty encodera. Warto jednak zauważyć, że w klasycznym zwracaniu uwagi opartym na RNN encodery sami nadal czytają zdanie źródłowe sekwencyjnie, więc ich indywidualne stany ukryte już zawierają pewną obciążenie od lewej do prawej; to naprawdę jest zwracanie uwagi w Transformerze, które całkowicie usuwa czytanie sekwencyjne.
Czy projekt encodera-dekodera z zwracaniem uwagi nadal jest używany dzisiaj, czy został on całkowicie zastąpiony?
Specyficzna kombinacja RNN plus zwracanie uwagi jest w większości zastąpiona w systemach stanu artystycznego, zastępując ją modeli encodera-dekodera lub dekodera tylko opartych na Transformerze, które używają zwracania uwagi zamiast powtórzenia. Ale konceptualna wzorca, encodera, który tworzy reprezentację wejścia i dekodera, który zwraca uwagę do niego podczas generowania wyjścia, nadal dokładnie jak są struktury systemów tłumaczeń współczesnych, modeli opisujących obraz i systemy przetwarzania mowy na tekst. Rozumienie wersji RNN plus zwracanie uwagi pozostaje jednym z najwyraźniejszych sposobów na poznawanie, dlaczego zwracanie uwagi działa, przed dodatkową skomplikowaną złożonością wielokrotnego zwracania uwagi i kodowania pozycyjnego w pełnym Transformerze.
Co exactly oznacza mapa ciepła zwracania uwagi w symulacji?
Każda linia mapy ciepła odpowiada jednemu słowu, które dekoder obecnie generuje, a każda kolumna odpowiada jednemu słowu w zdaniu źródłowym; jasność komórki pokazuje, jak silnie dekoder zwraca uwagę do tego słowa źródłowego podczas generowania tego słowa docelowego. Jaskrawe, prawie przekątne wzory zwykle wskazują, że języki te mają podobną kolejność słów, podczas gdy jaskrawe komórki skaczące poza przekątną odkrywają model przenoszenie słów, na przykład przenoszenie przymiotnika z położenia po tym samym słowie do przed nim, co dokładnie jest rodzajem zachowania, które pojedynczy stały wektor kontekstowy ma trudności w zaprezentowaniu wiarygodnie.
Wypróbuj na żywo
Wszystko powyżej działa bezpośrednio w Twojej przeglądarce — otwórz Sequence-to-Sequence Translation with Attention i zmieniaj parametry podczas działania. Nic nie jest instalowane ani przesyłane na serwer, cały model działa w jednej karcie.
▶ Otwórz symulację Sequence-to-Sequence Translation with Attention