Co to są modele językowe?

Ukończone

Generowanie aplikacji sztucznej inteligencji jest obsługiwane przez modele językowe, które są wyspecjalizowanym typem modelu uczenia maszynowego, którego można użyć do wykonywania zadań przetwarzania języka naturalnego (NLP), w tym:

  • Określanie tonacji lub klasyfikowanie tekstu w języku naturalnym.
  • Tekst podsumowania.
  • Porównywanie wielu źródeł tekstu pod kątem podobieństwa semantycznego.
  • Generowanie nowego języka naturalnego.

Chociaż zasady matematyczne związane z tymi modelami językowymi mogą być złożone, podstawowa wiedza na temat architektury używanej do ich implementacji może pomóc w uzyskaniu koncepcyjnego zrozumienia sposobu ich działania.

Modele przekształcania

Modele uczenia maszynowego do przetwarzania języka naturalnego ewoluowały od wielu lat. Dzisiejsze najnowocześniejsze duże modele językowe są oparte na architekturze przekształcania , która opiera się na i rozszerza niektóre techniki, które okazały się skuteczne w modelowaniu słownictwa do obsługi zadań NLP - a w szczególności w generowaniu języka. Modele przekształcania są trenowane przy użyciu dużych ilości tekstu, umożliwiając im reprezentowanie semantycznych relacji między wyrazami i używanie tych relacji w celu określenia prawdopodobnych sekwencji tekstu, które mają sens. Modele przekształcania z wystarczająco dużym słownictwem są w stanie wygenerować odpowiedzi językowe, które są trudne do odróżnienia od odpowiedzi człowieka.

Architektura modelu przekształcania składa się z dwóch składników lub bloków:

  • Blok kodera , który tworzy semantyczne reprezentacje słownictwa szkoleniowego.
  • Blok dekodera, który generuje nowe sekwencje języka.

Diagram architektury modelu przekształcania z blokami kodera i dekodera.

  1. Model jest trenowany przy użyciu dużej ilości tekstu w języku naturalnym, często pochodzącego z Internetu lub innych publicznych źródeł tekstu.
  2. Sekwencje tekstu są podzielone na tokeny (na przykład poszczególne wyrazy), a blok kodera przetwarza te sekwencje tokenów przy użyciu techniki wywoływanej w celu określenia relacji między tokenami (na przykład tokeny wpływające na obecność innych tokenów w sekwencji, różne tokeny, które są często używane w tym samym kontekście itd.).
  3. Dane wyjściowe z kodera to kolekcja wektorów (tablic liczbowych wielowartościowych), w których każdy element wektora reprezentuje atrybut semantyczny tokenów. Te wektory są określane jako osadzanie.
  4. Blok dekodera działa w nowej sekwencji tokenów tekstowych i używa osadzonych wygenerowanych przez koder w celu wygenerowania odpowiednich danych wyjściowych języka naturalnego.
  5. Na przykład, biorąc pod uwagę sekwencję wejściową, taką jak "Kiedy mój pies był", model może użyć techniki uwagi do analizowania tokenów wejściowych i atrybutów semantycznych zakodowanych w osadzaniu w celu przewidywania odpowiedniego ukończenia zdania, takiego jak "szczeniak".

W praktyce konkretne implementacje architektury różnią się — na przykład model Reprezentacje kodera dwukierunkowego z Transformers () opracowany przez firmę Google w celu obsługi aparatu wyszukiwania używa tylko bloku kodera, podczas gdy model Generator pretrained Transformer (GPT) opracowany przez platformę OpenAI używa tylko bloku dekodera.

Chociaż pełne wyjaśnienie każdego aspektu modeli przekształcania wykracza poza zakres tego modułu, wyjaśnienie niektórych kluczowych elementów transformatora może pomóc ci zrozumieć, jak obsługują generacyjne sztuczną inteligencję.

Tokenizacja

Pierwszym krokiem trenowania modelu przekształcania jest rozłożenie tekstu treningowego na tokeny — innymi słowy, zidentyfikowanie każdej unikatowej wartości tekstowej. Ze względu na prostotę można traktować każde odrębne słowo w tekście treningowym jako token (choć w rzeczywistości tokeny mogą być generowane dla wyrazów częściowych lub kombinacji wyrazów i znaków interpunkcyjnych).

Rozważmy na przykład następujące zdanie:

I heard a dog bark loudly at a cat

Aby tokenizować ten tekst, można zidentyfikować poszczególne odrębne wyrazy i przypisać do nich identyfikatory tokenów. Na przykład:

- I (1)
- heard (2)
- a (3)
- dog (4)
- bark (5)
- loudly (6)
- at (7)
- *("a" is already tokenized as 3)*
- cat (8)

Zdanie może być teraz reprezentowane za pomocą tokenów: {1 2 3 4 5 6 7 3 8}. Podobnie zdanie "Słyszałem kota" może być reprezentowane jako {1 2 3 8}.

Podczas dalszego trenowania modelu każdy nowy token w tekście trenowania jest dodawany do słownictwa z odpowiednimi identyfikatorami tokenów:

  • meow (9)
  • deskorolka (10)
  • i tak dalej...

Przy wystarczająco dużym zestawie tekstu szkoleniowego można skompilować słownictwo wielu tysięcy tokenów.

Osadzanie

Chociaż może być wygodne reprezentowanie tokenów jako prostych identyfikatorów - zasadniczo tworząc indeks dla wszystkich słów w słownictwie, nie mówią nam nic o znaczeniu słów ani relacji między nimi. Aby utworzyć słownictwo, które hermetyzuje semantyczne relacje między tokenami, definiujemy kontekstowe wektory, znane jako osadzanie, dla nich. Wektory są wielowartościowymi reprezentacjami liczbowymi informacji, na przykład [10, 3, 1], w których każdy element liczbowy reprezentuje określony atrybut informacji. W przypadku tokenów językowych każdy element wektora tokenu reprezentuje jakiś semantyczny atrybut tokenu. Określone kategorie elementów wektorów w modelu językowym są określane podczas trenowania na podstawie tego, jak często słowa są używane razem lub w podobnych kontekstach.

Wektory reprezentują linie w przestrzeni wielowymiarowej, opisując kierunek i odległość wzdłuż wielu osi (możesz zaimponować przyjaciołom matematyczny, nazywając te amplitudy i wielkość). Warto traktować elementy w wektorze osadzania dla tokenu jako reprezentujące kroki wzdłuż ścieżki w przestrzeni wielowymiarowej. Na przykład wektor z trzema elementami reprezentuje ścieżkę w 3-wymiarowej przestrzeni, w której wartości elementu wskazują jednostki przesunął się do przodu/do tyłu, w lewo/w prawo i w górę/w dół. Ogólnie rzecz biorąc, wektor opisuje kierunek i odległość ścieżki od źródła do końca.

Elementy tokenów w miejscu osadzania reprezentują jakiś semantyczny atrybut tokenu, dzięki czemu podobne tokeny powinny spowodować wektory o podobnej orientacji — innymi słowy wskazują w tym samym kierunku. Technika nazywana podobieństwem cosinus jest używana do określenia, czy dwa wektory mają podobne kierunki (niezależnie od odległości), a zatem reprezentują semantycznie połączone wyrazy. W prostym przykładzie załóżmy, że osadzanie dla naszych tokenów składa się z wektorów z trzema elementami, na przykład:

  • 4 ("pies"): [10,3,2]
  • 8 ("cat"): [10,3,1]
  • 9 ("szczeniak"): [5,2,1]
  • 10 ("skateboard"): [-3,3,2]

Możemy wykreślić te wektory w przestrzeni trójwymiarowej w następujący sposób:

Diagram wektorów tokenu wykreślonych w trójwymiarowej przestrzeni.

Wektory osadzania dla "psa" i "szczeniaka" opisują ścieżkę wzdłuż prawie identycznego kierunku, który jest również dość podobny do kierunku "kot". Wektor osadzania dla "deskorolki" opisuje jednak podróż w zupełnie innym kierunku.

Uwaga

W poprzednim przykładzie przedstawiono prosty przykładowy model, w którym każde osadzanie ma tylko trzy wymiary. Rzeczywiste modele językowe mają o wiele więcej wymiarów.

Istnieje wiele sposobów obliczania odpowiednich osadzeń dla danego zestawu tokenów, w tym algorytmów modelowania języka, takich jak Word2Vec lub blok kodera w modelu przekształcania.

Uwaga

Bloki kodera i dekodera w modelu przekształcania zawierają wiele warstw, które tworzą sieć neuronową dla modelu. Nie musimy przechodzić do szczegółów wszystkich tych warstw, ale warto rozważyć jeden z typów warstw używanych w obu blokach: warstwach uwagi . Uwaga jest techniką używaną do badania sekwencji tokenów tekstowych i próby oszacowania siły relacji między nimi. W szczególności samodzielna uwaga obejmuje rozważenie, w jaki sposób inne tokeny wokół jednego konkretnego tokenu wpływają na znaczenie tego tokenu.

W bloku kodera każdy token jest dokładnie analizowany w kontekście, a odpowiednie kodowanie jest określane pod kątem osadzania wektorów. Wartości wektorów są oparte na relacji między tokenem a innymi tokenami, za pomocą których często się pojawia. To kontekstowe podejście oznacza, że to samo słowo może mieć wiele osadzania w zależności od kontekstu, w którym jest używany - na przykład "kora drzewa" oznacza coś innego niż "Słyszałem korę psa".

W bloku dekodera warstwy uwagi są używane do przewidywania następnego tokenu w sekwencji. Dla każdego wygenerowanego tokenu model ma warstwę uwagi, która uwzględnia sekwencję tokenów do tego momentu. Model uwzględnia, który z tokenów jest najbardziej wpływowy, biorąc pod uwagę, jaki powinien być następny token. Na przykład, biorąc pod uwagę sekwencję "Słyszałem psa", warstwa uwagi może przypisać większą wagę do tokenów "heard" i "dog" podczas rozważania następnego słowa w sekwencji:

Słyszałem psa [kora]

Pamiętaj, że warstwa uwagi współpracuje z reprezentacjami wektorów liczbowych tokenów, a nie z rzeczywistym tekstem. W dekoderze proces rozpoczyna się od sekwencji osadzania tokenów reprezentujących tekst do ukończenia. Pierwszą rzeczą, która się dzieje, jest to, że kolejna warstwa kodowania pozycyjnego dodaje wartość do każdego osadzania, aby wskazać jego położenie w sekwencji:

  • [1,5,6,2] (I)
  • [2,9,3,1] (wysłuchane)
  • [3,1,1,2] (a)
  • [4,10,3,2] (pies)

Podczas trenowania celem jest przewidywanie wektora końcowego tokenu w sekwencji na podstawie powyższych tokenów. Warstwa uwagi przypisuje wagę liczbową do każdego tokenu w sekwencji do tej pory. Używa tej wartości do wykonywania obliczeń na wektorach ważonych, które generują ocenę uwagi, która może służyć do obliczenia możliwego wektora dla następnego tokenu. W praktyce technika nazywana uwagę wielogłówkową używa różnych elementów osadzania do obliczania wielu wyników uwagi. Następnie sieć neuronowa jest używana do oceny wszystkich możliwych tokenów w celu określenia najbardziej prawdopodobnego tokenu, z którym ma być kontynuowana sekwencja. Proces jest kontynuowany iteracyjnie dla każdego tokenu w sekwencji, a sekwencja wyjściowa do tej pory jest używana regresji jako dane wejściowe dla następnej iteracji — zasadniczo kompilowanie danych wyjściowych po jednym tokenie naraz.

Poniższa animacja przedstawia uproszczoną reprezentację tego, jak to działa — w rzeczywistości obliczenia wykonywane przez warstwę uwagi są bardziej złożone; ale zasady można uprościć, jak pokazano:

Animacja przedstawiająca warstwę uwagi przypisując wagi do tokenów i przewidując następną.

  1. Sekwencja osadzania tokenów jest wprowadzana do warstwy uwagi. Każdy token jest reprezentowany jako wektor wartości liczbowych.
  2. Celem dekodera jest przewidywanie następnego tokenu w sekwencji, który będzie również wektorem wyrównanym do osadzania w słownictwie modelu.
  3. Warstwa uwagi ocenia sekwencję do tej pory i przypisuje wagi do każdego tokenu, aby reprezentować ich względny wpływ na następny token.
  4. Wagi można użyć do obliczenia nowego wektora dla następnego tokenu z wynikiem uwagi. Uwaga wielogłowa używa różnych elementów w osadzaniu do obliczania wielu tokenów alternatywnych.
  5. W pełni połączona sieć neuronowa używa wyników w wektorach obliczeniowych do przewidywania najbardziej prawdopodobnego tokenu z całego słownictwa.
  6. Przewidywane dane wyjściowe są dołączane do sekwencji do tej pory, która jest używana jako dane wejściowe dla następnej iteracji.

Podczas trenowania znana jest rzeczywista sekwencja tokenów — po prostu maskujemy te, które pojawią się później w sekwencji niż aktualnie rozważana pozycja tokenu. Podobnie jak w przypadku każdej sieci neuronowej przewidywana wartość wektora tokenu jest porównywana z rzeczywistą wartością następnego wektora w sekwencji, a utrata jest obliczana. Wagi są następnie przyrostowo dostosowywane, aby zmniejszyć utratę i poprawić model. W przypadku użycia do wnioskowania (przewidywanie nowej sekwencji tokenów) wytrenowana warstwa uwagi stosuje wagi, które przewidują najbardziej prawdopodobny token w słownictwie modelu, które jest semantycznie wyrównane do sekwencji do tej pory.

Oznacza to, że model przekształcania, taki jak GPT-4 (model za ChatGPT i Bing) jest przeznaczony do wprowadzania tekstu (nazywanego monitem) i generowania poprawnych składniowo danych wyjściowych (nazywanych uzupełnianiem). W efekcie "magia" modelu polega na tym, że ma możliwość ciągowania spójnego zdania razem. Ta zdolność nie oznacza żadnej "wiedzy" ani "inteligencji" ze strony modelu; tylko duże słownictwo i możliwość generowania znaczących sekwencji słów. To, co sprawia, że duży model językowy, taki jak GPT-4, jest jednak sama ilość danych, z którymi zostały wytrenowane (publiczne i licencjonowane dane z Internetu) i złożoność sieci. Dzięki temu model może wygenerować uzupełnienia oparte na relacjach między wyrazami w słownictwie, na którym został wytrenowany model; często generuje dane wyjściowe, które są nie do odróżnienia od ludzkiej odpowiedzi na ten sam monit.