Jak se učí neuronová síť

Kulička sjíždí po grafu ztrátové funkce podle skutečného vzorce gradientního sestupu. Nastavíte velikost kroku a uvidíte, kdy uvázne, kdy uspěje a kdy uletí z terénu. Cvičení na 5 minut, zdarma a bez registrace.

ZákladníKulička na kopci5 min

Kulička hledá dno kopce podle skutečného vzorce. Nastavíte velikost kroku, ona ukáže, jestli sedí.

Co si procvičíte

  • Uvidíte, co dělá velikost učicího kroku, když model hledá nejlepší řešení
  • Poznáte, jak vypadá uvíznutí v lokálním minimu a proč nejde jen o rychlost
  • Zažijete mizející gradient dřív, než ho potkáte jako odborný pojem

Vyberte si variantu

Co se při trénování vlastně mění

Model se neučí tak, že by se do něj psala nová pravidla. Model má obrovské množství čísel, kterým se říká váhy nebo parametry, u velkých jazykových modelů jich jsou miliardy. Trénování znamená jediné: tahle čísla se opakovaně mírně upravují tak, aby model dělal na trénovacích datech menší chybu než předtím.

Chyba se měří jednou funkcí, které se říká ztrátová funkce. Vysoká hodnota znamená, že model hádá špatně, nízká hodnota znamená, že hádá dobře. Trénování je hledání takové kombinace čísel, při které je tahle hodnota co nejnižší. Přesně tohle znázorňuje kulička ve hře výš: terén je graf ztrátové funkce, poloha kuličky je aktuální nastavení modelu a dno je nejlepší možné nastavení, jaké se v daném terénu dá najít.

U velkého jazykového modelu je terén nepředstavitelně mnohorozměrný, protože každý parametr přidává další rozměr, ve kterém se dá pohybovat. Graf ve hře má jen jeden rozměr, aby se dal vůbec nakreslit a sledovat okem, ale rovnice, která kuličku posouvá, je ta samá, jakou počítač skutečně používá při tréninku modelu. Proto stojí za to sledovat, jak se skutečné kroky chovají, ne jen si přečíst definici: intuice o tom, kdy krok stačí a kdy ne, se nejrychleji získá tak, že se jich pár stovek na vlastní oči vyhodnotí.

Co dělá learning rate

Aby model věděl, kterým směrem svoje čísla upravit, spočítá se gradient, tedy směr, kterým chyba nejrychleji roste. Model pak udělá krok opačným směrem, aby chyba klesla. Learning rate, česky rychlost učení, je jediné číslo, které říká, jak velký tenhle krok bude.

Malý learning rate je bezpečný, ale pomalý. Kulička se pohybuje sotva znatelně a k lepšímu řešení dojde až po obrovském množství kroků, pokud vůbec ve stanoveném čase trénování. Velký learning rate je rychlý, ale nebezpečný. Kulička přeskočí dno a s každým dalším krokem se pohyb zesiluje, protože svah je na druhé straně o to strmější. Výsledkem je trénování, které se nikdy neustálí a jehož chyba osciluje nebo roste. Mezi oběma extrémy leží úzké pásmo hodnot, které pro daný model a data skutečně fungují, a najít ho patří k prvním praktickým rozhodnutím u jakéhokoli trénování.

Co je lokální minimum

Ztrátová funkce reálného modelu nemá jedno hladké údolí, má jich tisíce, různě hluboká. Gradientní sestup vidí jen svoje bezprostřední okolí, ne celou mapu terénu, takže může sklouznout do mělkého důlku a tam zůstat, i když o kousek dál leží mnohem hlubší dno. Tomuhle mělkému důlku se říká lokální minimum: řešení, které je lepší než všechno ve svém okolí, ale není nejlepší možné.

V praxi to znamená, že dva modely natrénované na stejných datech, se stejnou architekturou, ale s trochu jiným nastavením kroku, mohou skončit s viditelně různou kvalitou, protože jeden uvízl v mělčím důlku a druhý ne. Proto se výkon modelu nedá spolehlivě posoudit z jediného tréninkového běhu a proč se seriózní vývoj modelu dělá s několika běhy a měřením na datech, která model při trénování neviděl.

Proč není víc tréninku automaticky líp

Intuitivní odpověď na horší výsledek je natrénovat model déle. Občas to pomůže, ale ne vždy a ne bez hranic. Po určitém bodě model přestává hledat obecné zákonitosti v datech a začíná si pamatovat přímo trénovací příklady, včetně jejich šumu a náhodných chyb. Tomu se říká přetrénování a pozná se jednoduše: model je čím dál lepší na datech, která už viděl, a čím dál horší na datech, která ještě neviděl.

Delší trénování navíc stojí reálné peníze a čas výpočetního výkonu, a od určitého bodu přináší čím dál menší zlepšení za čím dál vyšší cenu. Pro firmu, která si trénování modelu objednává nebo platí za výpočetní čas, je tohle přesně to místo, kde se ptát dodavatele, podle čeho poznal, že delší trénování ještě pomáhalo, a na jakých datech to změřil.

Konkrétní signál, podle kterého se přetrénování pozná, je rozestup mezi dvěma křivkami: chybou na trénovacích datech a chybou na datech, která model při trénování nikdy neviděl. Dokud obě klesají společně, trénování ještě pomáhá. Jakmile trénovací chyba dál klesá, ale ta druhá se začne zvedat, model se přestal učit obecné vzorce a začal si pamatovat konkrétní příklady. Od tohohle bodu dál je každá další hodina tréninku spíš škoda peněz než zlepšení.

Časté dotazy

Co se v modelu vlastně mění, když se říká, že se učí?
Nic se nepřepisuje jako pravidlo. Model má obrovské množství čísel, kterým se říká váhy nebo parametry, u velkých jazykových modelů jich jsou miliardy. Trénování znamená, že se tahle čísla opakovaně mírně upravují tak, aby model dělal na datech menší chybu. Kulička ve hře výš je přesně tohle: aktuální nastavení čísel, terén je graf chyby a dno je nejlepší možné nastavení, jaké se v daném okolí dá najít.
Co je learning rate a proč je to tak citlivé nastavení?
Learning rate je velikost kroku, kterým model při každé úpravě posune svoje čísla směrem k menší chybě. Moc malý krok znamená, že se trénování hýbe jen nepatrně a k dobrému výsledku by potřebovalo mnohem víc času, než kolik ho reálně má. Moc velký krok znamená, že model přeskočí dobré řešení a s každou další úpravou se vzdaluje čím dál rychleji. Správná hodnota leží mezi oběma extrémy a pro každý model a každá data je trochu jiná.
Co přesně je lokální minimum a proč na tom v praxi záleží?
Ztrátová funkce reálného modelu nemá jedno hladké údolí, má jich tisíce, různě hluboká. Gradientní sestup vidí jen svoje bezprostřední okolí, ne celou mapu, takže může sklouznout do mělkého důlku a v něm zůstat, i když kousek dál leží mnohem hlubší dno. Výsledkem je model, který funguje slušně, ale ne tak dobře, jak by mohl. Proto dva běhy trénování se stejnými daty a stejnou architekturou občas skončí s viditelně různou kvalitou.
Znamená delší trénování automaticky lepší model?
Ne. Po určitém bodě model přestává hledat obecné zákonitosti a začíná si pamatovat přímo trénovací příklady, včetně jejich šumu a chyb. Tomu se říká přetrénování a pozná se tak, že model je čím dál lepší na datech, která už viděl, a čím dál horší na datech, která ještě neviděl. Delší trénování navíc stojí reálný výpočetní čas a od určitého bodu přináší čím dál menší zlepšení za čím dál vyšší cenu.
Musí se tímhle zabývat i firma, která si trénování modelu jen objednává u dodavatele?
Ano, aspoň natolik, aby dokázala položit správnou otázku. Když dodavatel tvrdí, že model vylepšil delším trénováním, stojí za to zeptat se, na jakých datech to změřil a jestli šlo o data, která model při trénování neviděl. Bez téhle otázky se dá snadno zaplatit za trénování, které jen zlepšilo zapamatování starých příkladů, ne skutečnou schopnost modelu.

Zdroje