Velké jazykové modely (LLM)

Dokončeno

Poznámka:

Další podrobnosti najdete na kartě Text a obrázky .

Základem generativní umělé inteligence jsou velké jazykové modely (LLM) a jejich kompaktnější vztahy, malé jazykové modely (SLM) – zapouzdřují lingvistické a sémantické vztahy mezi slovy a frázemi ve slovníku. Tento model může tyto relace použít k odůvodnění zadávání přirozeného jazyka a generování smysluplných a relevantních odpovědí.

V zásadě jsou LLM natrénované tak, aby vygenerovaly doplnění na základě podnětů. Představte si je jako supervýkonné příklady funkce prediktivního textu na mnoha mobilních telefonech. Výzva spustí sekvenci předpovědí textu, která vede k sémanticky správnému dokončení. Trikem je, že model rozumí vztahům mezi slovy a dokáže identifikovat, která slova v posloupnosti dosud pravděpodobně ovlivní další; a použijte ji k predikci nejpravděpodobnějšího pokračování sekvence.

Představte si například následující větu:

Slyšel jsem, jak pes hlasitě štěkal na kočku

Předpokládejme, že jste slyšel jen pár prvních slov: "Slyšel jsem psa...". Víte, že některá z těchto slov jsou užitečnější vodítka k tomu, co další slovo může být než jiné. Víte, že "slyšel" a "pes" jsou silné indikátory toho, co bude následovat, a to vám pomůže zmenšit množství možností. Víte, že existuje dobrá šance, že věta bude pokračovat jako " Slyšel jsem psíkůru".

Další slovo můžete odhadnout, protože:

  • Máte velkou slovní zásobu slov, ze kterých můžete vybírat.
  • Naučili jste se běžné jazykové struktury, takže víte, jak slova vzájemně souvisí ve smysluplných větách.
  • Víte o sémantických konceptech spojených se slovy - víte, že něco, co jste slyšeli , musí být zvuk nějakého druhu a víte, že existují určité zvuky, které jsou vyrobeny psem.

Jak tedy model vytrénujeme tak, aby měl stejné schopnosti?

Tokenizace

Prvním krokem je poskytnout modelu rozsáhlou slovní zásobu slov a frází; a skutečně tím myslíme rozsáhlou. Nejnovější generace LLM má slovníky, které se skládají ze stovek tisíc tokenů na základě velkých objemů trénovacích dat z internetu a dalších zdrojů.

Počkej minutu. Tokeny?

I když se snažíme o jazyce uvažovat z hlediska slov, LLM si rozloží slovní zásobu do tokenů. Tokeny zahrnují slova, ale také dílčí slova (například "un" v "neuvěřitelné" a "nepravděpodobné"), interpunkci a další běžně používané sekvence znaků. Prvním krokem při trénování velkého jazykového modelu je proto rozdělit trénovací text do jeho jedinečných tokenů a přiřadit každému z nich jedinečný celočíselný identifikátor, například takto:

  • Já (1)
  • slyšel (2)
  • a (3)
  • pes (4)
  • kůra (5)
  • hlasitě (6)
  • v (7)
  • a (3) již přiřazeno
  • kočka (8)

a tak dále.

Při přidávání dalších trénovacích dat se do slovníku a přiřazených identifikátorů přidají další tokeny; Takže můžete skončit s tokeny pro slova jako štěňátko, skateboard, auto a další.

Poznámka:

V tomto jednoduchém příkladu jsme tokenizovali ukázkový text na základě slov. Ve skutečnosti by tam byly také dílčí slova, interpunkce a další tokeny.

Transformace tokenů pomocí transformátoru

Když teď máme sadu tokenů s jedinečnými ID, musíme najít způsob, jak je vzájemně propojit. K tomu přiřadíme každý token vektoru (pole více číselných hodnot, například [1, 23, 45]). Každý vektor má více číselných prvků nebo dimenzí a můžeme je použít ke kódování lingvistických a sémantických atributů tokenu, abychom mohli poskytnout velké množství informací o tom, co token znamená a jak souvisí s jinými tokeny, ve efektivním formátu.

Potřebujeme transformovat počáteční vektorové reprezentace tokenů na nové vektory s lingvistickými a sémantickými vlastnostmi vloženými do nich na základě kontextů, ve kterých se zobrazují v trénovacích datech. Vzhledem k tomu, že nové vektory mají sémantické hodnoty vložené do nich, nazýváme je vkládání.

K provedení této úlohy používáme transformátorový model. Tento typ modelu se skládá ze dvou "bloků":

  • Blok kodéru, který vytváří vnořené reprezentace použitím techniky nazvané attention. Vrstva pozornosti prozkoumá jednotlivé tokeny a určí, jak jsou ovlivněny tokeny kolem nich. Aby byl proces kódování efektivnější, pozornost více hlav se používá k vyhodnocení více prvků tokenu paralelně a přiřazení váhy, které lze použít k výpočtu hodnot nového vektorového prvku. Výsledky vrstvy pozornosti se přenášejí do plně propojené neurální sítě, aby bylo možné najít nejlepší vektorovou reprezentaci vkládání.
  • Dekodérová vrstva, která používá vložené hodnoty vypočítané kodérem k určení dalšího nejpravděpodobnějšího tokenu v posloupnosti zahájené výzvou. Dekodér také využívá mechanismus pozornosti a dopřednou neurální síť k vytváření svých předpovědí.

Diagram architektury Transformeru s kódováním a dekódovacími vrstvami

Poznámka:

Výrazně jsme zjednodušili architekturu a proces transformátoru v popisu a diagramu. Nemějte obavy o konkrétní podrobnosti o tom, jak funguje pozornost – klíčovým bodem je, že pomáhá zachytit lingvistické a sémantické charakteristiky každého tokenu na základě kontextu, ve kterém se používá. Pokud se chcete hlouběji podívat na architekturu transformátoru a na to, jak ji využívá pozornost, můžete si přečíst původní článek „Attention is All You Need“.

Počáteční vektory a poziční kódování

Zpočátku se hodnoty vektoru tokenu přiřazují náhodně, než procházejí transformátorem, aby se vytvořily vektory reprezentací. Vektory tokenů se předávají do transformátoru spolu s pozičním kódováním , které označuje, kde se token zobrazuje v posloupnosti trénovacího textu (musíme to udělat, protože pořadí, ve kterém se tokeny zobrazují v sekvenci, je relevantní pro to, jak spolu souvisí). Například naše tokeny můžou začít vypadat takto:

Žeton ID tokenu Position Vector
I 1 1 [3, 7, 10]
slyšel 2 2 [2, 15, 1]
d 3 3 [9, 11, 1]
pes 4 4 [2, 7, 11]
kůra 5 5 [9, 12, 0]
hlasitě 6 6 [3, 8, 13]
at 7 7 [5, 7, 10]
d 3 8 [9, 11, 1]
cat 8 9 [8, -6, 9 ]
... ... ... ...
štěně 127 45 [7, 7, -2]
auto 128 56 [5, -5, 1 ]
skateboard 129 67 [4, 7, 14]

Poznámka:

S použitím vektorů s pouze třemi prvky jsme věci zjednodušili (což nám pomůže je později vizualizovat ve třech dimenzích). Ve skutečnosti vektory mají tisíce prvků.

Pozornost a vkládání

K určení vektorových reprezentací tokenů, které obsahují vložené kontextové informace, transformátor používá vrstvy pozornosti . Vrstva zpracování zvažuje jednotlivé tokeny postupně v kontextu posloupnosti tokenů, ve které se objevují. Tokeny kolem aktuální hodnoty jsou vážené, aby odrážely jejich vliv a váhy se používají k výpočtu hodnot prvků pro vložený vektor aktuálního tokenu. Například při zvažování tokenu "štěkot" v kontextu "Slyšel jsem psa štěkat", budou tokeny pro "slyšel" a "pes" mít větší váhu než "I" nebo "a", protože jsou silnější indikátory pro "štěkot".

Na začátku model neví, které tokeny ovlivňují ostatní; ale když je vystavený větším objemům textu, může iterativní zjistit, které tokeny se běžně vyskytují společně, a začít hledat vzory, které pomáhají přiřazovat hodnoty prvkům vektoru, které odrážejí lingvistické a sémantické charakteristiky tokenů na základě jejich blízkosti a frekvence použití společně. Proces je efektivnější, protože používá vícehlavou pozornost ke zpracování různých prvků vektorů paralelně.

Výsledkem procesu kódování je sada vkládání; vektory, které obsahují kontextové informace o tom, jak tokeny ve slovníku vzájemně souvisejí. Skutečný transformátor vytváří vnořené reprezentace, které obsahují tisíce prvků, ale abychom věci zjednodušili, v našem příkladu se zaměříme na vektory se třemi prvky. Výsledek procesu kódování pro naši slovní zásobu může vypadat nějak takto:

Žeton ID tokenu Ukotvení
I 1 [2, 0, -1]
slyšel 2 [-2, 2, 4 ]
d 3 [-3, 5, 5 ]
pes 4 [10, 3, 2 ]
kůra 5 [9, 2, 10 ]
hlasitě 6 [-3, 8, 3 ]
at 7 [-5, -1, 1]
cat 8 [10, 3, 1]
štěně 127 [5, 3, 2 ]
auto 128 [-2, -2, 1 ]
skateboard 129 [-3, -2, 2 ]
kůra 203 [2, -2, 3 ]

Pokud jste pozorní, možná jste si všimli, že naše výsledky obsahují dvě embeddingy pro token "bark". Je důležité si uvědomit, že vkládání představuje token v určitém kontextu; a některé tokeny můžou být použity k tomu, aby to znamenalo více věcí. Například kůrapsa se liší od kůrystromu! Tokeny, které se běžně používají v několika kontextech, můžou vytvářet více vložených objektů.

Prvky vložených objektů si můžeme představit jako dimenze v multidimenzionálním vektorovém prostoru. V našem jednoduchém příkladu mají vložené pouze tři prvky, takže je můžeme vizualizovat jako vektory v trojrozměrném prostoru, například takto:

Diagram vložených vektorů pro tokeny ve třech dimenzích

Vzhledem k tomu, že dimenze se počítají na základě toho, jak tokeny vzájemně souvisejí, výsledkem jsou tokeny, které se používají v podobných kontextech (a proto mají podobné významy), vektory s podobnými směry. Například vkládání pro "psa" a "štěňátko" ukazuje více nebo méně stejným směrem, což se příliš neliší od vkládání pro "kočku"; ale velmi odlišné od vkládání pro "skateboard" nebo "auto". Můžeme změřit, jak blízko jsou tokeny navzájem sémanticky, pomocí výpočtu kosínové podobnosti jejich vektorů.

Předpověď dokončení z podnětů

Teď, když máme sadu vložených objektů, které zapouzdřují kontextovou relaci mezi tokeny, můžeme k iterativnímu předpovídání dalšího slova v posloupnosti na základě počáteční výzvy použít blok dekodéru transformátoru.

Opět se pozornost používá k zvážení každého tokenu v kontextu; tentokrát ale kontext, který se má považovat, může obsahovat pouze tokeny , které předchází tokenu, který se snažíme předpovědět. Dekodérový model je trénován pomocí dat, pro které již máme úplnou posloupnost, použitím techniky označované jako maskovaná pozornost; v němž jsou tokeny po aktuálním tokenu ignorovány. Vzhledem k tomu, že už během trénování známe další token, transformátor ho může porovnat s predikovaným tokenem a upravit naučené váhy v pozdějších trénovacích iteracích, aby se snížila chyba v modelu.

Při předpovídání nového dokončení, pro které jsou další tokeny neznámé, vrstvy pozornosti vypočítají možné vektory pro další token a síť pro předávání informačních kanálů slouží k určení nejpravděpodobnějšího kandidáta. Předpovězená hodnota se pak přidá do sekvence a celý proces se opakuje, aby předpověděl další token; a tak dále, dokud dekodér předpovědí, že sekvence skončila.

Například sekvenci "Když můj pes byl ...", model vyhodnotí tokeny v sekvenci, použije pozornost k přiřazování hmotností a predikuje, že další nejpravděpodobnější token je "štěňátko" spíše než "kočka" nebo "skateboard".