Transformator (model uczenia maszynowego) - Transformer (machine learning model)

Transformator jest głęboka nauka model, który przyjmuje mechanizm uwagi , różnie ważenie znaczenie każdej części danych wejściowych. Wykorzystywany jest przede wszystkim w dziedzinie przetwarzania języka naturalnego (NLP) oraz wizji komputerowej (CV).

Podobnie jak rekurencyjne sieci neuronowe (RNN), transformatory są zaprojektowane do obsługi sekwencyjnych danych wejściowych, takich jak język naturalny, do zadań takich jak tłumaczenie i podsumowywanie tekstu . Jednak w przeciwieństwie do RNN, transformatory niekoniecznie przetwarzają dane w odpowiedniej kolejności. Mechanizm uwagi zapewnia raczej kontekst dla dowolnej pozycji w sekwencji wejściowej. Na przykład, jeśli dane wejściowe są zdaniem języka naturalnego, transformator nie musi przetwarzać początku zdania przed końcem. Raczej identyfikuje kontekst, który nadaje znaczenie każdemu słowu w zdaniu. Ta funkcja pozwala na większą równoległość niż RNN, a tym samym skraca czas szkolenia.

Od czasu debiutu w 2017 r. transformatory są coraz częściej wybieranym modelem w przypadku problemów NLP, zastępując modele RNN, takie jak pamięć długo-krótkoterminowa (LSTM). Dodatkowa równoległość uczenia umożliwia trenowanie na większych zestawach danych, niż było to kiedyś możliwe. Doprowadziło to do opracowania wstępnie wyszkolonych systemów, takich jak BERT (Bidirectional Encoder Representations from Transformers) i GPT (Generative Pre-trained Transformer), które były wytrenowane z użyciem dużych zestawów danych językowych, takich jak Wikipedia Corpus i Common Crawl , i mogą być dobrze- dostrojony do konkretnych zadań.

Tło

Przed transformatorami większość najnowocześniejszych systemów NLP opierała się na bramkowanych RNN, takich jak LSTM i bramkowane jednostki rekurencyjne (GRU), z dodatkowymi mechanizmami uwagi . Transformatory są zbudowane na tych technologiach uwagi bez użycia struktury RNN, co podkreśla fakt, że same mechanizmy uwagi mogą dorównać wydajności RNN z uwagą.

Przetwarzanie sekwencyjne

Bramkowane RNN przetwarzają tokeny sekwencyjnie, zachowując wektor stanu, który zawiera reprezentację danych widocznych po każdym tokenie. Aby przetworzyć th token, model łączy stan reprezentujący zdanie do token z informacją o nowym tokenie, aby utworzyć nowy stan reprezentujący zdanie do token . Teoretycznie informacja z jednego tokena może rozchodzić się dowolnie daleko w sekwencji, jeśli w każdym momencie stan kontynuuje kodowanie informacji kontekstowych o tokenie. W praktyce mechanizm ten jest wadliwy: problem znikającego gradientu pozostawia stan modelu na końcu długiego zdania bez dokładnych, dających się wyodrębnić informacji o poprzedzających tokenach.

Uwaga

Problem ten został rozwiązany przez mechanizmy uwagi. Mechanizmy uwagi pozwalają modelowi czerpać ze stanu w dowolnym poprzednim punkcie sekwencji. Warstwa uwagi może uzyskać dostęp do wszystkich poprzednich stanów i waży je zgodnie z wyuczoną miarą trafności, dostarczając odpowiednich informacji o odległych tokenach.

Wyraźnym przykładem wartości uwagi jest tłumaczenie na język , gdzie kontekst jest niezbędny do przypisania znaczenia słowa w zdaniu. W systemie tłumaczeń z angielskiego na francuski pierwsze słowo francuskiego tekstu wyjściowego najprawdopodobniej w dużej mierze zależy od kilku pierwszych słów wejściowego z angielskiego. Jednak w klasycznym modelu LSTM, aby wytworzyć pierwsze słowo wyjścia francuskiego, model otrzymuje tylko wektor stanu ostatniego słowa angielskiego. Teoretycznie wektor ten może zakodować informację o całym zdaniu angielskim, dając modelowi całą niezbędną wiedzę. W praktyce te informacje są często słabo zachowywane przez LSTM. Aby rozwiązać ten problem, można dodać mechanizm uwagi: dekoder ma dostęp do wektorów stanu każdego angielskiego słowa wejściowego, a nie tylko ostatniego, i może nauczyć się wag uwagi, które dyktują, ile uwagi należy poświęcić każdemu angielskiemu wektorowi stanu wejściowego.

Po dodaniu do RNN mechanizmy uwagi zwiększają wydajność. Rozwój architektury Transformer ujawnił, że mechanizmy uwagi same w sobie są potężne i że sekwencyjne, powtarzalne przetwarzanie danych nie jest konieczne, aby osiągnąć wzrost wydajności RNN z uwagą. Transformatory wykorzystują mechanizm uwagi bez RNN, przetwarzając jednocześnie wszystkie tokeny i obliczając wagi uwagi między nimi w kolejnych warstwach.

Architektura

Podobnie jak wcześniejsze modele, transformator przyjmuje architekturę koder-dekoder. Koder składa się z warstw kodowania, które przetwarzają dane wejściowe iteracyjnie jedna warstwa po drugiej, podczas gdy dekoder składa się z warstw dekodujących, które wykonują to samo na wyjściu kodera.

Funkcją każdej warstwy kodera jest generowanie kodowań zawierających informacje o tym, które części danych wejściowych są ze sobą powiązane. Przekazuje swoje kodowania do następnej warstwy kodera jako dane wejściowe. Każda warstwa dekodera robi coś przeciwnego, biorąc wszystkie kodowania i wykorzystując zawarte w nich informacje kontekstowe do wygenerowania sekwencji wyjściowej. Aby to osiągnąć, każda warstwa kodera i dekodera korzysta z mechanizmu uwagi.

Dla każdego wejścia uwaga waży istotność każdego innego wejścia i wyciąga z nich dane wyjściowe. Każda warstwa dekodera ma dodatkowy mechanizm zwracania uwagi, który pobiera informacje z wyjść poprzednich dekoderów, zanim warstwa dekodera pobierze informacje z kodowań.

Zarówno warstwy kodera, jak i dekodera mają sieć neuronową ze sprzężeniem do przodu do dodatkowego przetwarzania danych wyjściowych i zawierają resztkowe połączenia i etapy normalizacji warstwy.

Skalowana uwaga iloczynowa

Bloki konstrukcyjne transformatora to skalowane jednostki uwagi iloczynu skalarnego. Kiedy zdanie jest przekazywane do modelu transformatora, wagi uwagi są obliczane jednocześnie między każdym tokenem. Jednostka uwagi tworzy osadzania dla każdego tokena w kontekście, które zawierają informacje o samym tokenie wraz z ważoną kombinacją innych odpowiednich tokenów, z których każdy jest ważony według wagi uwagi.

Dla każdej jednostki uwagi model transformatora uczy się trzech macierzy wag; wagi zapytań , wagi kluczy i wagi wartości . Dla każdego tokena osadzenie słowa wejściowego jest mnożone przez każdą z trzech macierzy wag w celu uzyskania wektora zapytania , wektora klucza i wektora wartości . Wagi uwagi są obliczane przy użyciu wektorów zapytań i kluczy: waga uwagi od tokena do tokena to iloczyn skalarny między a . Wagi uwagi są dzielone przez pierwiastek kwadratowy z wymiaru kluczowych wektorów , który stabilizuje gradienty podczas treningu i przechodzą przez softmax, który normalizuje ciężary. Fakt, że i są różne macierze sprawia , że uwaga nie jest symetryczna: jeśli token jest związany z tokenem (tj. jest duży), nie musi to oznaczać, że token będzie związany z tokenem (tj. może być mały). Dane wyjściowe jednostki uwagi dla tokena to ważona suma wektorów wartości wszystkich tokenów, ważona przez , uwagę od tokena do każdego tokena.

Obliczenie uwagi dla wszystkich tokenów można wyrazić jako jedno obliczenie dużej macierzy za pomocą funkcji softmax , która jest przydatna do uczenia ze względu na optymalizacje operacji na macierzy obliczeniowej, które szybko obliczają operacje na macierzach. Macierze , i są określane jako matrycy, gdzie th rzędy są wektory , i odpowiednio.

Wielogłowa uwaga

Jeden zestaw macierzy nazywany jest głowicą uwagi , a każda warstwa w modelu transformatora ma wiele głowic uwagi. Podczas gdy każda głowica uwagi zajmuje się tokenami, które są istotne dla każdego tokena, przy wielu głowicach uwagi model może to zrobić dla różnych definicji „trafności”. Ponadto pole wpływu reprezentujące istotność może stopniowo rozszerzać się w kolejnych warstwach. Wiele głowic uwagi transformatorów koduje relacje istotności, które mają znaczenie dla ludzi. Na przykład, głowy uwagi mogą skupiać się głównie na następnym słowie, podczas gdy inne skupiają się głównie od czasowników na ich bezpośrednie dopełnienia. Obliczenia dla każdej głowy uwagi mogą być wykonywane równolegle, co pozwala na szybkie przetwarzanie. Dane wyjściowe dla warstwy uwagi są łączone, aby przejść do warstw sieci neuronowych ze sprzężeniem do przodu.

Koder

Każdy koder składa się z dwóch głównych elementów: mechanizmu samouważania i sieci neuronowej ze sprzężeniem do przodu. Mechanizm samouważności akceptuje kodowania wejściowe z poprzedniego kodera i waży ich wzajemne powiązanie w celu wygenerowania kodowania wyjściowego. Sieć neuronowa ze sprzężeniem do przodu dalej przetwarza każde kodowanie wyjściowe indywidualnie. Te kodowania wyjściowe są następnie przekazywane do następnego kodera jako jego dane wejściowe, a także do dekoderów.

Pierwszy koder przyjmuje jako dane wejściowe informacje pozycyjne i osadzania sekwencji wejściowej, a nie kodowania. Informacje o położeniu są niezbędne, aby transformator mógł wykorzystać kolejność sekwencji, ponieważ żadna inna część transformatora tego nie wykorzystuje.

Dekoder

Każdy dekoder składa się z trzech głównych elementów: mechanizmu samouważności, mechanizmu uwagi nad kodowaniem oraz sieci neuronowej z przekazywaniem do przodu. Dekoder działa w podobny sposób jak koder, ale wstawiany jest dodatkowy mechanizm uwagi, który zamiast tego pobiera istotne informacje z kodowań generowanych przez kodery.

Podobnie jak pierwszy koder, pierwszy dekoder przyjmuje jako dane wejściowe informacje pozycyjne i osadzania sekwencji wyjściowej, a nie kodowania. Transformator nie może wykorzystywać aktualnego lub przyszłego wyjścia do przewidywania wyjścia, więc sekwencja wyjściowa musi być częściowo zamaskowana, aby zapobiec odwrotnemu przepływowi informacji. Po ostatnim dekoderze następuje końcowa transformacja liniowa i warstwa softmax , aby wytworzyć prawdopodobieństwa wyjściowe w słowniku.

Alternatywy

Uczenie architektur opartych na transformatorach może być kosztowne, zwłaszcza w przypadku długich zdań. Alternatywne architektury obejmują Reformer (który zmniejsza obciążenie obliczeniowe z do ) lub modele takie jak ETC/BigBird (które mogą zredukować je do ), gdzie jest długością sekwencji. Odbywa się to za pomocą mieszania zależnego od lokalizacji i warstw odwracalnych.

Pod koniec 2020 r. wprowadzono benchmark do porównywania architektur transformatorów.

Szkolenie

Transformatory zazwyczaj przechodzą częściowo nadzorowane uczenie obejmujące nienadzorowane szkolenie wstępne, po którym następuje nadzorowane dostrajanie. Wstępne uczenie odbywa się zazwyczaj na większym zbiorze danych niż dostrajanie, ze względu na ograniczoną dostępność oznaczonych danych uczących. Zadania wstępnego treningu i dostrajania zwykle obejmują:

Aplikacje

Transformator odniósł wielki sukces w przetwarzaniu języka naturalnego (NLP), na przykład w zadaniach tłumaczenia maszynowego i przewidywania szeregów czasowych . Wiele wstępnie wytrenowanych modeli, takich jak GPT-2 , GPT-3 , BERT , XLNet i RoBERTa, demonstruje zdolność transformatorów do wykonywania szerokiej gamy takich zadań związanych z NLP i ma potencjał do znalezienia rzeczywistych zastosowań. Mogą to być:

W 2020 roku pokazano, że architekturę transformatora, a dokładniej GPT-2, można dostroić do gry w szachy. Transformatory zostały zastosowane do przetwarzania obrazu z wynikami porównywalnymi z konwolucyjnymi sieciami neuronowymi .

Realizacje

Model transformatora został zaimplementowany w standardowych strukturach uczenia głębokiego, takich jak TensorFlow i PyTorch .

Transformers to biblioteka stworzona przez Hugging Face, która dostarcza architektury oparte na transformatorach i wstępnie wytrenowane modele.

Zobacz też

Bibliografia

Dalsza lektura

– Omówienie efektu warstwy transformatora jako ekwiwalentu aktualizacji Hopfielda, zbliżającej dane wejściowe do jednego ze stałych punktów (reprezentatywnych wzorców) sieci Hopfielda o wartościach ciągłych

Zewnętrzne linki