Doladění a RLHF: jak se z doplňovače textu stane asistent
Základní model, který na otázku odpoví další otázkou, doladění na ukázkách (SFT), učení z lidských preferencí, DPO napsané od nuly na malém transformeru, síla β a přeoptimalizace, a proč doladění mění chování, ne znalosti.
Série Základy AI Díl 73 z 83
- Mapa umělé inteligence: co je co a jak to do sebe zapadá
- Stručná historie umělé inteligence: od Turinga po jazykové modely
- Data, model, trénink, inference: základní pojmy na jednom příkladu
- Jak číst matematický zápis: symboly, indexy, sumy a kvantifikátory
- Množiny a relace: stavebnice, ze které se skládají definice v AI
- Funkce a zobrazení: proč je každý model v AI funkce
- Logika a důkazy: pravidla, podle kterých se v AI uvažuje
- Grafy a stromy: struktura, na které stojí hledání i neuronové sítě
- Lineární algebra pro strojové učení: vektory, matice a proč AI hlavně násobí
- Derivace, gradient a řetízkové pravidlo: jak model zjistí, kterým směrem se učit
- Gradientní sestup: jak se model učí
- Co je pravděpodobnost: od hodu kostkou ke Kolmogorovovým axiomům
- Podmíněná pravděpodobnost a Bayesova věta: jak změnit odhad, když se dozvíte něco nového
- Náhodná veličina a distribuční funkce: jedna funkce, která o rozdělení řekne všechno
- Funkce hustoty a pravděpodobnostní funkce: proč má spojitá veličina v bodě pravděpodobnost nula
- Střední hodnota, rozptyl a kovariance: kde rozdělení leží, jak je široké a co s čím souvisí
- Přehled pravděpodobnostních rozdělení: Bernoulli, binomické, Poisson, rovnoměrné, normální a exponenciální
- Zákon velkých čísel a centrální limitní věta: proč se průměry chovají tak předvídatelně
- Statistika a odhady parametrů: maximální věrohodnost, MAP a intervaly spolehlivosti
- Teorie informace: entropie, křížová entropie a KL divergence — odkud se berou ztrátové funkce
- Prohledávání stavového prostoru: BFS, DFS, UCS a A* s animacemi
- Hry a protivník: minimax, alfa-beta ořezávání a Monte Carlo tree search
- Splňování omezujících podmínek: backtracking, propagace omezení a AC-3 na sudoku a mapě krajů
- Logika a znalostní systémy: dopředné a zpětné řetězení, rezoluce a expertní systémy
- Plánování: STRIPS, svět kostek, heuristiky z relaxace a plánování v AI agentech
- Lokální hledání a simulované žíhání: obchodní cestující přes krajská města
- Genetické algoritmy: populace, křížení, mutace a výběr na batohu na výlet
- Evoluční strategie a genetické programování: od pravidla jedné pětiny po Keplerův zákon
- Optimalizace mravenčí kolonií: jak feromonová stopa najde krátkou cestu
- Optimalizace hejnem částic: setrvačnost, vlastní zkušenost a zkušenost hejna
- Neuroevoluce: evoluce vah i tvaru neuronových sítí a algoritmus NEAT
- Fuzzy množiny a funkce příslušnosti: jak zapsat „trochu teplo“
- Fuzzy logika a pravděpodobnost: proč „trochu teplo“ neznamená „pravděpodobně teplo“
- Fuzzy logika: t-normy, implikace a pravidla KDYŽ–PAK
- Fuzzy řízení: Mamdani a Sugeno od ventilátoru po kyvadlo na vozíku
- Fuzzy shlukování: algoritmus fuzzy c-means a body mezi shluky
- Neuro-fuzzy systémy (ANFIS): fuzzy pravidla, která se učí z dat
- Markovovy řetězce: přechodová matice, stacionární rozdělení a PageRank
- Skryté Markovovy modely: Viterbiho algoritmus a nepoctivé kasino
- Bayesovské sítě: proč je tráva mokrá a co z toho plyne pro postřikovač
- Kalmanův filtr: jak z nepřesných měření odhadnout, kde auto je a jak rychle jede
- Druhy strojového učení: s učitelem, bez učitele, s částečným učitelem a další
- Přeučení a regularizace: proč model, který zná data nazpaměť, selže
- Vyhodnocení modelu: křížová validace, F1 a křivka ROC
- Shlukování a snížení dimenze: k-means, PCA a t-SNE
- Klasifikace a regrese: dvě úlohy učení s učitelem
- Lineární regrese: nejmenší čtverce geometricky i maticově
- Polynomiální a nelineární regrese: jak přímku ohnout
- Logistická regrese: sigmoida, šance a křížová entropie
- Vícetřídní klasifikace a softmax: od dvou tříd k mnoha
- Naivní Bayesův klasifikátor: spamový filtr, který funguje lépe, než by měl
- Ztrátové funkce: co přesně model minimalizuje
- Rozhodovací stromy a k nejbližších sousedů: modely bez vzorců
- Ansámbly: náhodný les a gradient boosting
- SVM a jádrový trik: nejširší hranice a jak ji ohnout
- Signál a vzorkování: proč platí Nyquistův teorém
- Fourierova transformace: rozklad signálu na frekvence
- Filtry a konvoluce: vyhlazení, hrany a odstranění šumu
- Zvuk a řeč: spektrogram, melová škála a MFCC
- Obraz jako signál: pixely, barvy, konvoluce a hrany
- Perceptron a umělý neuron: nejjednodušší neuronová síť a co neumí
- Neuronová síť od nuly: zpětné šíření chyby krok za krokem
- Aktivace, inicializace a normalizace: drobnosti, na kterých hluboká síť stojí
- Konvoluční sítě: jak síť poznává obrázky
- Rekurentní sítě: paměť pro posloupnosti a mizející gradient
- LSTM a GRU: brány, které rozhodují, co si síť zapamatuje
- Autoenkodéry: síť, která se učí data stlačit a zase rozbalit
- Embeddingy a word2vec: jak se slovo stane vektorem
- Mechanismus pozornosti: jak se model naučí, kam se dívat
- Transformery a velké jazykové modely: architektura krok za krokem
- Tokenizace: jak se text rozseká na kousky pro model
- Předtrénování a škálování: proč větší model a víc dat funguje
- Doladění a RLHF: jak se z doplňovače textu stane asistent
- Prompty, kontext a RAG: jak modelu dát správné informace
- Variační autoenkodéry (VAE): nové obrázky ze spojitého latentního prostoru
- Generativní adversariální sítě (GAN): padělatel proti detektivovi
- Difúzní modely: jak se z čistého šumu stane obrázek
- Markovovy rozhodovací procesy: stavy, akce, odměny a Bellmanovy rovnice
- Q-learning a DQN: učení hodnoty akcí od tabulky po neuronovou síť
- Policy gradient a PPO: učení přímo strategie
- Jak funguje AI agent: jazykový model ve smyčce s nástroji
- Programování s AI agenty: zadání, testy a kontrola
- Vyhodnocení a bezpečnost AI systémů: jak měřit a jak hlídat
Celá osnova série 83 z 83 témat hotovo
- Proč model po předtrénování ještě není asistent.
- Co dělá SFT a co učení z preferencí (RLHF, DPO).
- Proč se model nesmí vzdálit od výchozího a co doladění nedokáže.
Co se hodí znát předem: Předtrénování a škálování: proč větší model a víc dat funguje, Transformery a velké jazykové modely: architektura krok za krokem
Model po předtrénování umí jednu věc: pokračovat v textu tak, jak by text nejspíš pokračoval na internetu. To ještě není asistent. Zeptejte se ho na otázku a on klidně přidá další otázku, protože na webu jsou plné stránky seznamů otázek bez odpovědí. Z doplňovače textu se asistent stane až dvěma dalšími fázemi: doladěním na ukázkách a učením z lidských preferencí. Obě si tu vyzkoušíme na stejném malém transformeru jako v předchozích dílech.
Navazuje na díly Předtrénování a škálování a Transformery a velké jazykové modely.
1. Základní model neodpovídá, pokračuje
Náš „web“: 102 344 znaků vět o osmi městech. Fakta („praha je v zemi česko“, „v zemi polsko je město varšava“), seznamy otázek bez odpovědí („kde je praha? kde je řím? kde je madrid?“) a jen málokdy otázka s odpovědí. Na tom se transformer s d = 32 předtrénuje — přesně jako velký model, jen na mnohem menším textu.
Pak se ho zeptáme: „kde je praha?“ a necháme ho dopsat pokračování. Na každé město losujeme 40 odpovědí s teplotou 1 a třídíme je: správná země, „nevím“, špatná země, další otázka, nebo nesmysl.
Definice — jazykový model jako rozdělení odpovědí a losování
Nechť Σ je konečná množina znaků (tokenů), |Σ| = K, a Σ* množina všech konečných řetězců nad Σ. Jazykový model s parametry θ je zobrazení, které každému textu x ∈ Σ* přiřadí rozdělení pravděpodobnosti πθ(· | x) na Σ, tj. πθ(v | x) ≥ 0 pro všechna v ∈ Σ a ∑v ∈ Σ πθ(v | x) = 1. V řeči posilovaného učení je to stochastická strategie: stav je dosavadní text, akce další znak.
Pro odpověď y = y1…ym ∈ Σm, m ≥ 1, označme y<t = y1…yt−1 (pro t = 1 prázdný řetězec) a definujme pravděpodobnost celé odpovědi jako součin
πθ(y | x) = ∏t=1m πθ(yt | x, y<t), tedy ln πθ(y | x) = ∑t=1m ln πθ(yt | x, y<t).
Nechť model po textu vrátí logity z = (z1, …, zK) ∈ ℝK (jeden výstup na každý znak) a τ > 0. Losování s teplotou τ vybere k-tý znak s pravděpodobností
pk = exp(zk/τ)/∑j=1K exp(zj/τ), k = 1, …, K.
Při τ = 1 je to přesně rozdělení modelu πθ (softmax logitů) — vidíme, co model „opravdu“ říká, i s jeho nejistotou. Odpověď na dotaz x losujeme takto:
- y := prázdný řetězec;
- vylosuj znak v ∈ Σ s pravděpodobnostmi pk výše (logity modelu po textu xy) a připoj ho: y := yv;
- je-li v ∈ {„.“, „?“} nebo má y 16 znaků, skonči a vrať y; jinak pokračuj krokem 2.
Podíl druhu odpovědi je počet takových odpovědí/počet měst · 40, na šesti ladených městech tedy se jmenovatelem 240: třeba 178/240 = 74,2 %.
| otázka | základní model | po SFT | po DPO |
|---|---|---|---|
| kde je praha? | kde je praha je · kde je londýn? · kde je varšava? | česko. · česko. · česko. | česko. · česko. · česko. |
| kde je paříž? | kde je madrid? · kde je praha. · kde je řava? | nevím. · francie. · německo. | frakousko. · francie. · nevím. |
| kde je madrid? | kde je madrid j · kde je vídeň? · kde je řím? | nevím. · anglie. · nevím. | španělsko. · španělsko. · španělsko. |
| kde je varšava? | kde je madrid. · kde je madrid? · kde je praha? | polsko. · šanělsko. · francie. | polsko. · zemi itálie. · polsko. |
Základní model na ladených městech v 74 % případů odpoví další otázkou a správnou zemi řekne jen v 3 %. Neznamená to, že by nevěděl, kde Praha leží. Jen se naučil, že po otázce na webu obvykle přijde další otázka. Ostatně u velkých základních modelů se dřív obcházelo právě tohle: prompt se psal jako začátek dokumentu („Otázka: … Odpověď:“), aby model pochopil, co se od něj čeká.
2. Doladění na ukázkách (SFT)
Definice — doladění s učitelem (SFT)
Nechť
- πθ0 je předtrénovaný (základní) jazykový model s parametry θ0, viz díl Předtrénování;
- 𝒟SFT = {(x(i), y(i)) : i = 1, …, M} je konečná množina ukázek: x(i) ∈ Σ* je pokyn nebo otázka a y(i) ∈ Σ* vzorová odpověď, kterou napsal člověk;
- pro ukázku (x, y) je w = w1…wT = xy spojení otázky a odpovědi a mt ∈ {0, 1} maska: mt = 1, právě když token wt patří k odpovědi y.
Pro dávku B ⊆ 𝒟SFT je ztráta SFT
LSFT(θ) = −1/|B| ∑(x, y) ∈ B ∑t=1T mt · ln πθ(wt | w<t) = −1/|B| ∑(x, y) ∈ B ln πθ(y | x).
Doladění s učitelem (supervised fine-tuning, SFT) je minimalizace LSFT gradientním sestupem po náhodných dávkách, se startem v θ = θ0.
Slovy: předtrénovaný model se dál učí stejnou křížovou entropií dalšího tokenu, ale na malé sadě pečlivě připravených ukázek dialogu, a ztráta se počítá pouze na tokenech odpovědi. Učí se kratší dobu a s menším krokem, aby model nezapomněl, co umí z předtrénování.
Nový zaměstnanec, který přečetl celou knihovnu, ale nikdy nepracoval na přepážce. Ukážete mu pár stovek vzorových rozhovorů se zákazníky — a on pochopí, že na otázku se odpovídá, ne že se přidá další otázka.
LSFT(θ) = −1/|B| ∑(x, y) ∈ B ∑t mt · ln πθ( yt | x, y<t )
- x, y<t
- otázka a začátek vzorové odpovědi, který už „padl“. Model vidí vždy správný začátek, ne svůj vlastní — učí se rychle, ale nikdy nevidí, jak se zotavit z vlastní chyby
- yt
- další token vzorové odpovědi od člověka — model se učí napodobit přesně tu, i kdyby byla špatně
- mt
- maska: 1 na tokenech odpovědi, 0 na tokenech otázky. Otázku napíše uživatel, model ji psát nemá; bez masky by se ve velké části ztráty dál učil psát otázky — přesně to, co chceme odnaučit
- ln πθ
- logaritmus pravděpodobnosti od laděného modelu — stejná křížová entropie jako v předtrénování, žádná nová úloha, jen jiná data
- −1/|B| ∑
- průměr přes dávku B ukázek (u nás 8) se znaménkem minus: minimalizovat ztrátu = zvyšovat pravděpodobnost vzorových odpovědí
Ukázky: 400 dvojic otázka → odpověď pro šest „ladených“ měst. Jako u skutečných anotátorů nejsou dokonalé: 60 % odpovědí je správně, 25 % zní „nevím“ a 15 % uvádí špatnou zemi (lidé se pletou). Dvě města (varšava, londýn) v ukázkách nejsou vůbec — na nich zkoušíme, co se model naučil obecně. Doladění trvá 400 kroků, desetinu předtrénování.
Po SFT model už nikdy neodpoví otázkou. Na ladených městech napodobuje své učitele téměř přesně: 58 % správně, 25 % „nevím“, 15 % špatně. SFT naučí formu i s chybami — model se nestane lepším než ukázky, ze kterých se učí.
Zajímavější jsou nová města. Formát odpovědi model přenesl, znalost ne: správně jen 13 %, a v 39 % sebevědomě uvede špatnou zemi. Náš malý model sice z předtrénování „ví“, že varšava je v zemi polsko, ale neumí tu znalost použít v jiném tvaru věty. Velké modely to umějí mnohem lépe. Mechanismus je ale stejný jako u jejich halucinací: doladění naučí, že na otázku přijde odpověď, a když model odpověď nezná, stejně nějakou napíše.
3. Učení z lidských preferencí
Definice — RLHF
Nechť πref je jazykový model po SFT (zmrazený), β > 0 a
𝒟 = {(xi, yi+, yi−) : i = 1, …, M}
data preferencí: xi ∈ Σ* je dotaz, yi+, yi− ∈ Σ* jsou dvě odpovědi modelu na něj a člověk vybral yi+ jako lepší (píšeme yi+ ≻ yi−). Označme σ(u) = 1/1 + e−u logistickou funkci. RLHF (reinforcement learning from human feedback) je postup o dvou krocích:
- Model odměny. Funkce rφ : Σ* × Σ* → ℝ s parametry φ (obvykle jazykový model s jedním číselným výstupem) se naučí minimalizací LR(φ) = −1/M ∑i=1M ln σ(rφ(xi, yi+) − rφ(xi, yi−)). To je metoda maximální věrohodnosti pro Bradleyho–Terryho model P(y+ ≻ y− | x) = σ(r(x, y+) − r(x, y−)).
- Posilované učení. Strategie πθ (start v parametrech πref) se metodou gradientu strategie, nejčastěji PPO (díl Policy gradient a PPO), učí maximalizovat J(θ) = Ex, y ∼ πθ(· | x)[ rφ(x, y) ] − β · Ex[ KL(πθ(· | x) ‖ πref(· | x)) ], kde x probíhá dotazy z dat a KL je Kullbackova–Leiblerova divergence (definice níže). Epizoda má jediný krok: akce je celá odpověď y a odměna na jejím konci je rφ(x, y) − β ln πθ(y | x)/πref(y | x); z ní PPO počítá výhody Â.
Slovy: lidé dostanou dvě odpovědi modelu na stejný dotaz a vyberou lepší. Z tisíců takových porovnání se naučí model odměny, který odpovědím přiřadí skóre, a jazykový model se pak učí psát odpovědi s vysokým skóre — s trestem β · KL za vzdálení od modelu po SFT.
Napsat vzorovou odpověď je těžké, poznat lepší ze dvou je snadné. Ochutnávač nemusí umět vařit, aby řekl, která polévka je lepší. Z jeho verdiktů se pak kuchař učí — ale s pojistkou: nesmí vařit úplně jinak než dřív, jinak by mohl najít recept, který ochutnávače oblbne.
P(y⁺ ≻ y⁻) = σ( r(x, y⁺) − r(x, y⁻) ), σ(u) = 1/1 + e−u
- r(x, y⁺)
- skóre odpovědi, kterou člověk vybral jako lepší, na dotaz x
- r(x, y⁻)
- skóre horší odpovědi. Ve vzorci je jen rozdíl skóre: lidé nedávají body na stupnici, jen porovnávají, a z porovnání jde zjistit jen to, o kolik je jedna lepší než druhá. Přičíst ke všem skóre konstantu nic nemění
- σ
- logistická funkce převede libovolný rozdíl na pravděpodobnost mezi 0 a 1: rozdíl 0 dá 50 % (nevíme), velký kladný rozdíl skoro jistotu. Lidé se navíc neshodují ani sami se sebou — σ připouští, že i horší odpověď občas vyhraje
Příklad — dvě odpovědi a jejich skóre
r(x, „česko.“) = 1,2, r(x, „nevím.“) = 0,2: P(česko ≻ nevím) = σ(1,2 − 0,2) = 1/1 + e−1 = 1/1,368 = 0,731
ztráta modelu odměny na této dvojici: −ln 0,731 = 0,313
kdyby skóre byla 101,2 a 100,2: σ(1) = 0,731 — totéž
(Barvy podle vzorce výše.)
Definice — Kullbackova–Leiblerova divergence
Nechť Y je konečná nebo spočetná množina (u nás odpovědí) a π, πref : Y → [0, 1] jsou rozdělení pravděpodobnosti na Y (∑y ∈ Y π(y) = ∑y ∈ Y πref(y) = 1). Předpokládejme, že πref(y) > 0 pro každé y s π(y) > 0. Kullbackova–Leiblerova divergence π od πref je
KL(π ‖ πref) = ∑y ∈ Y, π(y) > 0 π(y) · ln π(y)/πref(y) = Ey ∼ π[ ln π(y) − ln πref(y) ].
(Sčítance s π(y) = 0 se vynechávají, podle konvence 0 · ln 0 = 0. Existuje-li y s π(y) > 0 a πref(y) = 0, klade se KL(π ‖ πref) = +∞.)
Platí KL(π ‖ πref) ≥ 0 a KL(π ‖ πref) = 0, právě když π = πref (Gibbsova nerovnost). Slovy: KL měří, o kolik je v průměru přes odpovědi modelu π logaritmus jeho pravděpodobnosti vyšší než u πref. Není symetrická: průměruje se přes odpovědi, které dává π, takže trestá hlavně to, když π dá velkou pravděpodobnost odpovědi, kterou πref skoro nikdy neříká.
πref = (0,6; 0,25; 0,15) pro správně / „nevím“ / špatně (mix anotátorů), π = (0,9; 0,05; 0,05):
KL(π ‖ πref) = 0,9 · ln 0,9/0,6 + 0,05 · ln 0,05/0,25 + 0,05 · ln 0,05/0,15 =0,365 − 0,080 − 0,055 = 0,230 natu
obráceně KL(πref ‖ π) = 0,324 — jiné číslo
maxθ Ex, y ∼ πθ[ r(x, y) ] − β · KL( πθ ‖ πref )
- E[r]
- průměrná odměna odpovědí, které model πθ skutečně píše (losované z něj samého) — to chceme zvýšit. Odpovědi se musí generovat za běhu, proto je potřeba posilované učení (PPO), ne obyčejný gradient na pevných datech
- KL(πθ ‖ πref)
- jak daleko se model vzdálil od modelu po SFT. Model odměny je spolehlivý jen na odpovědích podobných těm, které lidé hodnotili; daleko od nich jeho skóre nic neznamená a model by v něm našel díry
- β
- kurz mezi odměnou a vzdáleností: kolik odměny musí změna chování přinést, aby se vyplatila. Malé β = honba za odměnou, velké β = skoro žádná změna
Tuhle cestu popsal tým OpenAI v roce 2022 u modelu InstructGPT. Lidé dávali přednost odpovědím doladěného modelu s 1,3 miliardy parametrů před odpověďmi stokrát většího GPT-3 bez doladění. Stejný postup stál o rok později za ChatGPT.
Naše preference: 600 dvojic odpovědí na otázky o ladených městech. Pravidlo je správně ≻ „nevím“ ≻ špatně — přiznat nevědomost je lepší než sebevědomá chyba. Na samotnou odpověď nikdo nemusí nic psát, stačí vybrat lepší ze dvou.
4. DPO: preference bez modelu odměny
Definice — Direct Preference Optimization
Nechť πref je zmrazený jazykový model po SFT, β > 0, 𝒟 = {(xi, yi+, yi−) : i = 1, …, M} data preferencí jako v definici RLHF a σ logistická funkce. Pro strategii πθ a trojici (x, y+, y−) označme
sθ(x, y+, y−) = β · ( ln πθ(y+ | x)/πref(y+ | x) − ln πθ(y− | x)/πref(y− | x) ).
DPO (Direct Preference Optimization; Rafael Rafailov a kol., 2023) je minimalizace ztráty
LDPO(θ) = −1/M ∑i=1M ln σ( sθ(xi, yi+, yi−) )
gradientním sestupem po náhodných dávkách, se startem v πθ = πref.
Slovy: DPO řeší stejnou úlohu jako RLHF s trestem KL, ale bez modelu odměny a bez posilovaného učení. Podle věty níže optimální model π* splňuje r(x, y) = β ln π*(y | x)/πref(y | x) + (člen nezávislý na y), takže výraz sθ hraje roli rozdílu odměn v Bradleyho–Terryho modelu a stačí rovnou maximalizovat věrohodnost preferencí.
Místo ochutnávače, který dává body, dostane kuchař rovnou dvojice „tahle polévka byla lepší než tamta“. Lepší odpověď si má o kousek zpravděpodobnit, horší o kousek odpravděpodobnit — vždy oproti tomu, jak to měl na začátku. Kolik se smí od začátku vzdálit, říká β.
Věta — optimum úlohy s trestem KL
Nechť x je pevný dotaz, Y konečná neprázdná množina odpovědí, πref rozdělení pravděpodobnosti na Y s πref(y) > 0 pro všechna y ∈ Y, r : Y → ℝ odměna a β > 0. Pro každé rozdělení π na Y položme
J(π) = ∑y ∈ Y π(y) r(y) − β · KL(π ‖ πref)
a definujme
π*(y) = πref(y) · exp(r(y)/β)/Z, Z = ∑y ∈ Y πref(y) · exp(r(y)/β).
Pak π* je rozdělení na Y a pro každé rozdělení π ≠ π* na Y platí J(π) < J(π*). Maximum J přes všechna rozdělení na Y se tedy nabývá právě v π*.
Důkaz. Z > 0, π*(y) > 0 a ∑y π*(y) = Z/Z = 1, takže π* je rozdělení. Z definice π* je πref(y) · exp(r(y)/β) = Z π*(y) a r(y) = β ln exp(r(y)/β). Sčítáme-li přes y s π(y) > 0, dostaneme
J(π) = −β ∑ π(y) ln π(y)/πref(y) · exp(r(y)/β) = −β ∑ π(y) ln π(y)/Z π*(y) = −β · KL(π ‖ π*) + β ln Z.
Druhý člen na π nezávisí a podle Gibbsovy nerovnosti je KL(π ‖ π*) ≥ 0 s rovností, právě když π = π*. ∎
Zlogaritmováním definice π* a úpravou: r(y) = β ln π*(y)/πref(y) + β ln Z. Dosadíme do Bradleyho–Terryho modelu — v rozdílu r(y⁺) − r(y⁻) se β ln Z odečte, protože nezávisí na odpovědi. Odměna je tak vyjádřená jen modelem samým a model odměny už není potřeba. To je celé odvození DPO.
LDPO = −ln σ( β · [ ln πθ(y⁺ | x)/πref(y⁺ | x) − ln πθ(y⁻ | x)/πref(y⁻ | x) ] )
- ln πθ(y⁺ | x)/πref(y⁺ | x)
- o kolik si laděný model zvýšil pravděpodobnost lepší odpovědi proti modelu po SFT (πref, zmrazený). Měří se změna, ne pravděpodobnost samotná — dlouhá odpověď má malou pravděpodobnost, i když je dobrá, a poměr to vyruší
- ln πθ(y⁻ | x)/πref(y⁻ | x)
- totéž pro horší odpověď; odečítá se, takže ztrátu sníží i to, když model horší odpověď odpravděpodobní
- β
- z věty výše: odměna je β-násobek logaritmu poměru. Malé β znamená, že k velkému rozdílu „odměn“ je potřeba velká změna modelu — a ztráta ji vyžaduje
- −ln σ
- ztráta Bradleyho–Terryho modelu: −ln P(y⁺ ≻ y⁻). Když už model dvojici řadí správně s rezervou, σ je blízko 1, ztráta i gradient skoro nula — dvojice, které model zvládá, ho přestanou tlačit dál
Příklad — jedna dvojice při β = 2
Model si po pár krocích zvýšil ln-pravděpodobnost lepší odpovědi „česko.“ o 0,3 a horší „polsko.“ snížil o 0,2 (vůči πref):
s = β · (0,3 − (−0,2)) = 2 · 0,5 = 1,0
L = −ln σ(1,0) = ln(1 + e−1,0) = ln 1,368 = 0,313 (na začátku ln 2 = 0,693)
váha gradientu β · σ(−s) = 2 · 0,269 = 0,538 (na začátku 1,0)
(Barvy podle vzorce LDPO výše.) Gradient ztráty je −β σ(−s) · [∇ ln πθ(y⁺ | x) − ∇ ln πθ(y⁻ | x)]: krok zvyšuje ln πθ lepší odpovědi a snižuje horší, a to tím méně, čím lépe už je dvojice seřazená. Po tomhle pokroku je tah na dvojici asi poloviční.
def dpo(ref, preference, beta=2, kroku=300, davka=8, eta=1e-4):
pi = kopie(ref) # začínáme z modelu po SFT, ref je zmrazený
for _ in range(kroku):
g = 0
for (x, lepsi, horsi) in nahodne(preference, davka):
dl = log_p(pi, x, lepsi) - log_p(ref, x, lepsi) # ln π(y⁺)/π_ref(y⁺)
dh = log_p(pi, x, horsi) - log_p(ref, x, horsi) # ln π(y⁻)/π_ref(y⁻)
s = beta * (dl - dh)
w = beta * sigma(-s) # = beta / (1 + e^s)
g += -w * (grad log_p(pi, x, lepsi) - grad log_p(pi, x, horsi)) / davka
pi = adam_krok(pi, g, eta)
return pi
# log_p(model, x, y) = Σ ln π(y_t | x, y_<t) jen přes znaky odpovědi (maska jako u SFT)
DPO s β = 2, 300 kroků po 8 dvojicích. Na ladených městech vzroste podíl správných odpovědí z 58 % na 90 %, špatných zemí ubude z 15 % na 0,4 % a „nevím“ z 25 % na 5 %. Model je teď lepší než jeho učitelé v SFT, protože porovnávat odpovědi dokázali spolehlivěji, než je psát.
Na nových městech je výsledek smíšený. Špatných zemí ubylo z 39 % na 9 % — preference „nevím je lepší než chyba“ se přenesla i tam, kde žádné preference nebyly. Správných odpovědí ale nepřibylo (10 %) a místo chyb se objevily nesmysly (36 %). Doladění ani preference modelu nedodají znalost, kterou si neodnesl z předtrénování.
5. Jak daleko od výchozího modelu
Definice — přeoptimalizace odměny (reward hacking)
Nechť r*(x, y) je skutečná kvalita odpovědi y na dotaz x (to, co lidé doopravdy chtějí; přímo ji změřit neumíme) a rφ(x, y) její náhrada, podle které se optimalizuje — model odměny, u DPO odměna skrytá v datech preferencí. Nechť θ0, θ1, θ2, … jsou parametry strategie πθ v průběhu optimalizace a
Rφ(k) = Ex, y ∼ πθk[ rφ(x, y) ], R*(k) = Ex, y ∼ πθk[ r*(x, y) ].
Říkáme, že mezi kroky k0 < k1 dochází k přeoptimalizaci odměny, právě když
- Rφ(k1) > Rφ(k0) (podle náhradní odměny se model zlepšil) a zároveň
- R*(k1) < R*(k0) (ve skutečnosti se zhoršil).
Slovy: model najde odpovědi, které podle odměny (nebo podle preferencí) vycházejí dobře, ale ve skutečnosti dobré nejsou. Model odměny i dvojice preferencí pokrývají jen to, co lidé viděli; mimo tuto oblast nic nebrání tomu, aby se model vydal kamkoli. Trest KL(πθ ‖ πref) ho drží blízko modelu, o kterém víme, že rozumně mluví.
Když učitel jen škrtá chyby a nikdy neřekne, co je správně, žák se brzy naučí psát cokoli, co nevypadá jako škrtnutá chyba. Nejbezpečnější je pak psát nesmysly, které učitel ještě neviděl.
π*(y) = πref(y) · exp(r(y)/β)/Z
- πref(y)
- výchozí model po SFT. Násobí se jím, takže odpověď, kterou výchozí model nikdy neřekne (πref = 0), nedostane ani v optimu nic — ať by za ni byla odměna jakákoli
- r(y)
- odměna (u DPO skrytá v datech preferencí): o kolik je odpověď lepší. V exponentu proto, že každá jednotka odměny násobí pravděpodobnost stejným faktorem exp(1/β)
- β
- dělí odměnu: malé β dělá z malých rozdílů v odměně obrovské rozdíly v pravděpodobnosti (téměř vždy nejlepší odpověď), velké β je stlačí k nule a π* ≈ πref
- Z
- normalizace, aby součet pravděpodobností byl 1. Pro DPO je důležité, že na odpovědi nezávisí
Příklad — optimum pro tři odpovědi a tři β
πref = mix anotátorů (0,6; 0,25; 0,15) pro správně / „nevím“ / špatně, odměny r = (1; 0; −1) — pořadí z našich preferencí, čísla zvolená pro ukázku. Pro β = 2:
váhy: 0,6 · exp(1/2) = 0,989, 0,25 · exp(0/2) = 0,250, 0,15 · exp(−1/2) = 0,091; Z = 0,989 + 0,250 + 0,091 = 1,330
π* = (0,989/1,330; 0,250/1,330; 0,091/1,330) = (0,744; 0,188; 0,068)
(Barvy podle vzorce pro π* výše.)
| β | správně | „nevím“ | špatně | průměrná odměna | KL(π* ‖ πref) |
|---|---|---|---|---|---|
| πref | 60,0 % | 25,0 % | 15,0 % | 0,450 | 0 |
| 0,2 | 99,7 % | 0,3 % | 0,0 % | 0,997 | 0,494 |
| 2 | 74,4 % | 18,8 % | 6,8 % | 0,675 | 0,052 |
| 10 | 63,2 % | 23,8 % | 12,9 % | 0,503 | 0,003 |
Teorie říká totéž co náš pokus: čím menší β, tím dál od výchozího modelu (větší KL) a tím víc odměny. Nesmysly by ale v optimu nepřibývaly: π* je πref přenásobené odměnou, a model po SFT říkal nesmysl jen ve 2 % případů — kdyby za něj byla odměna nízká jako za chybu, ještě by ho ubylo. U skutečného DPO přibyl proto, že se učí jen z konečně mnoha dvojic a odměna nesmyslu v nich nikde není: ztráta tlačí dolů horší odpovědi, ale kam se uvolněná pravděpodobnost přesune, neurčuje. Model, který se vzdálí daleko (malé β), pak skončí jinde, než teorie slibuje.
| β | správně | „nevím“ | špatná země | nesmysl | KL od SFT |
|---|---|---|---|---|---|
| 0,2 | 54 % | 0 % | 0 % | 46 % | 3,83 |
| 0,5 | 65 % | 2 % | 0 % | 34 % | 2,00 |
| 1 | 83 % | 3 % | 0 % | 13 % | 0,67 |
| 2 | 90 % | 5 % | 0 % | 5 % | 0,34 |
| 5 | 84 % | 10 % | 4 % | 3 % | 0,07 |
| 10 | 71 % | 19 % | 8 % | 2 % | 0,00 |
Definice — odhad KL ze vzorku (sloupec „KL od SFT“)
Všech možných odpovědí je příliš mnoho na to, abychom KL sečetli přesně. Použijeme druhý tvar z definice KL, průměr přes odpovědi losované z πθ. Nechť x1, …, xn ∈ Σ* jsou dotazy, n ≥ 1, a pro každé i = 1, …, n je yi ∼ πθ(· | xi) nezávisle vylosovaná odpověď. Odhad KL ze vzorku je číslo
KL̂ = 1/n ∑i=1n [ ln πθ(yi | xi) − ln πref(yi | xi) ].
Jeho střední hodnota je 1/n ∑i=1n KL(πθ(· | xi) ‖ πref(· | xi)), tedy průměrná KL přes dané dotazy.
u nás n = 240 (6 měst × 40 odpovědí), ln π(y) jako součet přes znaky odpovědi. Odhad je nestranný, ale jednotlivé členy mohou být záporné, a když jsou si modely velmi blízko, může vyjít záporný i průměr: u β = 10 vyšlo −0,031, v tabulce zaokrouhleno na nulu (skutečná KL zápornou být nemůže).
Při malém β = 0,2 se model od výchozího vzdálí nejvíc (KL, v natech na odpověď, 3,8 natu) a 46 % odpovědí jsou nesmysly: „šavía“, „šsko“, „šavía“, „uskocie“. DPO hlavně stlačuje pravděpodobnost horších odpovědí a uvolněná pravděpodobnost může utéct kamkoli — v datech preferencí žádný nesmysl nebyl, takže ho nikdo nepenalizoval. Při velkém β = 10 se model od SFT skoro nehne a zůstanou mu i chyby učitelů (8 % špatně). Nejlépe vychází střed. Volba β je u skutečných modelů stejně citlivá a ladí se pokusy.
6. Co doladění umí a co ne
- Mění chování, ne znalosti. Formát odpovědí, tón, ochotu odmítnout nebezpečný požadavek a přiznat nejistotu. Fakta, která model z předtrénování nemá, mu nedodá — u nás nová města.
- Podlézavost. Lidé hodnotitelé mají rádi, když jim model dá za pravdu a když odpovídá sebejistě a dlouze. Model odměny se to naučí a jazykový model pak přitakává i tam, kde by měl oponovat.
- Přeoptimalizace. Čím déle se proti modelu odměny optimalizuje, tím víc model hledá jeho slabiny. Skutečná kvalita nejdřív roste a pak klesá, i když odměna dál stoupá.
- Lidé jsou drazí. Proto se část preferencí generuje jiným modelem podle sepsaných zásad (RLAIF, u Anthropicu „ústavní AI“). U úloh se snadno ověřitelným výsledkem — matematika, programy, které projdou testy — se místo preferencí odměňuje přímo správnost; tak se učí modely, které před odpovědí „přemýšlejí“.
7. Shrnutí
- Základní model jen pokračuje v textu; u nás na otázku v 74 % případů odpoví další otázkou.
- SFT na ukázkách naučí formu odpovědi, ale i chyby učitelů (58 % správně) a na neznámých otázkách vede k sebevědomým chybám (39 %).
- RLHF: lidé vybírají lepší ze dvou odpovědí, model odměny a posilované učení s trestem KL. DPO dělá totéž přímo z dvojic.
- DPO s β = 2 zvedlo správné odpovědi na 90 % — víc, než uměli učitelé.
- β řídí, jak daleko se model smí vzdálit: malé β vede k nesmyslům, velké nechá chyby být.
- Doladění mění chování, ne znalosti.
Chcete si to osahat? Požádejte AI agenta, ať stáhne malý otevřený základní model i jeho verzi „instruct“ a položí oběma stejné otázky. Rozdíl mezi doplňovačem textu a asistentem uvidíte hned.
Máte na to jiný názor? Napište na support@coden-app.com.