Přeskočit na obsah
coden

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.

13 minut Matěj Žalmánek 2026-10-16

Série Základy AI Díl 73 z 83
  1. Mapa umělé inteligence: co je co a jak to do sebe zapadá
  2. Stručná historie umělé inteligence: od Turinga po jazykové modely
  3. Data, model, trénink, inference: základní pojmy na jednom příkladu
  4. Jak číst matematický zápis: symboly, indexy, sumy a kvantifikátory
  5. Množiny a relace: stavebnice, ze které se skládají definice v AI
  6. Funkce a zobrazení: proč je každý model v AI funkce
  7. Logika a důkazy: pravidla, podle kterých se v AI uvažuje
  8. Grafy a stromy: struktura, na které stojí hledání i neuronové sítě
  9. Lineární algebra pro strojové učení: vektory, matice a proč AI hlavně násobí
  10. Derivace, gradient a řetízkové pravidlo: jak model zjistí, kterým směrem se učit
  11. Gradientní sestup: jak se model učí
  12. Co je pravděpodobnost: od hodu kostkou ke Kolmogorovovým axiomům
  13. Podmíněná pravděpodobnost a Bayesova věta: jak změnit odhad, když se dozvíte něco nového
  14. Náhodná veličina a distribuční funkce: jedna funkce, která o rozdělení řekne všechno
  15. Funkce hustoty a pravděpodobnostní funkce: proč má spojitá veličina v bodě pravděpodobnost nula
  16. Střední hodnota, rozptyl a kovariance: kde rozdělení leží, jak je široké a co s čím souvisí
  17. Přehled pravděpodobnostních rozdělení: Bernoulli, binomické, Poisson, rovnoměrné, normální a exponenciální
  18. Zákon velkých čísel a centrální limitní věta: proč se průměry chovají tak předvídatelně
  19. Statistika a odhady parametrů: maximální věrohodnost, MAP a intervaly spolehlivosti
  20. Teorie informace: entropie, křížová entropie a KL divergence — odkud se berou ztrátové funkce
  21. Prohledávání stavového prostoru: BFS, DFS, UCS a A* s animacemi
  22. Hry a protivník: minimax, alfa-beta ořezávání a Monte Carlo tree search
  23. Splňování omezujících podmínek: backtracking, propagace omezení a AC-3 na sudoku a mapě krajů
  24. Logika a znalostní systémy: dopředné a zpětné řetězení, rezoluce a expertní systémy
  25. Plánování: STRIPS, svět kostek, heuristiky z relaxace a plánování v AI agentech
  26. Lokální hledání a simulované žíhání: obchodní cestující přes krajská města
  27. Genetické algoritmy: populace, křížení, mutace a výběr na batohu na výlet
  28. Evoluční strategie a genetické programování: od pravidla jedné pětiny po Keplerův zákon
  29. Optimalizace mravenčí kolonií: jak feromonová stopa najde krátkou cestu
  30. Optimalizace hejnem částic: setrvačnost, vlastní zkušenost a zkušenost hejna
  31. Neuroevoluce: evoluce vah i tvaru neuronových sítí a algoritmus NEAT
  32. Fuzzy množiny a funkce příslušnosti: jak zapsat „trochu teplo“
  33. Fuzzy logika a pravděpodobnost: proč „trochu teplo“ neznamená „pravděpodobně teplo“
  34. Fuzzy logika: t-normy, implikace a pravidla KDYŽ–PAK
  35. Fuzzy řízení: Mamdani a Sugeno od ventilátoru po kyvadlo na vozíku
  36. Fuzzy shlukování: algoritmus fuzzy c-means a body mezi shluky
  37. Neuro-fuzzy systémy (ANFIS): fuzzy pravidla, která se učí z dat
  38. Markovovy řetězce: přechodová matice, stacionární rozdělení a PageRank
  39. Skryté Markovovy modely: Viterbiho algoritmus a nepoctivé kasino
  40. Bayesovské sítě: proč je tráva mokrá a co z toho plyne pro postřikovač
  41. Kalmanův filtr: jak z nepřesných měření odhadnout, kde auto je a jak rychle jede
  42. Druhy strojového učení: s učitelem, bez učitele, s částečným učitelem a další
  43. Přeučení a regularizace: proč model, který zná data nazpaměť, selže
  44. Vyhodnocení modelu: křížová validace, F1 a křivka ROC
  45. Shlukování a snížení dimenze: k-means, PCA a t-SNE
  46. Klasifikace a regrese: dvě úlohy učení s učitelem
  47. Lineární regrese: nejmenší čtverce geometricky i maticově
  48. Polynomiální a nelineární regrese: jak přímku ohnout
  49. Logistická regrese: sigmoida, šance a křížová entropie
  50. Vícetřídní klasifikace a softmax: od dvou tříd k mnoha
  51. Naivní Bayesův klasifikátor: spamový filtr, který funguje lépe, než by měl
  52. Ztrátové funkce: co přesně model minimalizuje
  53. Rozhodovací stromy a k nejbližších sousedů: modely bez vzorců
  54. Ansámbly: náhodný les a gradient boosting
  55. SVM a jádrový trik: nejširší hranice a jak ji ohnout
  56. Signál a vzorkování: proč platí Nyquistův teorém
  57. Fourierova transformace: rozklad signálu na frekvence
  58. Filtry a konvoluce: vyhlazení, hrany a odstranění šumu
  59. Zvuk a řeč: spektrogram, melová škála a MFCC
  60. Obraz jako signál: pixely, barvy, konvoluce a hrany
  61. Perceptron a umělý neuron: nejjednodušší neuronová síť a co neumí
  62. Neuronová síť od nuly: zpětné šíření chyby krok za krokem
  63. Aktivace, inicializace a normalizace: drobnosti, na kterých hluboká síť stojí
  64. Konvoluční sítě: jak síť poznává obrázky
  65. Rekurentní sítě: paměť pro posloupnosti a mizející gradient
  66. LSTM a GRU: brány, které rozhodují, co si síť zapamatuje
  67. Autoenkodéry: síť, která se učí data stlačit a zase rozbalit
  68. Embeddingy a word2vec: jak se slovo stane vektorem
  69. Mechanismus pozornosti: jak se model naučí, kam se dívat
  70. Transformery a velké jazykové modely: architektura krok za krokem
  71. Tokenizace: jak se text rozseká na kousky pro model
  72. Předtrénování a škálování: proč větší model a víc dat funguje
  73. Doladění a RLHF: jak se z doplňovače textu stane asistent
  74. Prompty, kontext a RAG: jak modelu dát správné informace
  75. Variační autoenkodéry (VAE): nové obrázky ze spojitého latentního prostoru
  76. Generativní adversariální sítě (GAN): padělatel proti detektivovi
  77. Difúzní modely: jak se z čistého šumu stane obrázek
  78. Markovovy rozhodovací procesy: stavy, akce, odměny a Bellmanovy rovnice
  79. Q-learning a DQN: učení hodnoty akcí od tabulky po neuronovou síť
  80. Policy gradient a PPO: učení přímo strategie
  81. Jak funguje AI agent: jazykový model ve smyčce s nástroji
  82. Programování s AI agenty: zadání, testy a kontrola
  83. Vyhodnocení a bezpečnost AI systémů: jak měřit a jak hlídat

Celá osnova série 83 z 83 témat hotovo

Co si odnesete
  • 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:

  1. y := prázdný řetězec;
  2. vylosuj znak v ∈ Σ s pravděpodobnostmi pk výše (logity modelu po textu xy) a připoj ho: y := yv;
  3. 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ázkazákladní modelpo SFTpo 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ť

  1. πθ0 je předtrénovaný (základní) jazykový model s parametry θ0, viz díl Předtrénování;
  2. 𝒟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;
  3. 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í.

Laicky řečeno

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í
Proti předtrénování se liší jen dvě věci: data (ukázky otázka → odpověď) a maska mt.

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í.

šest ladených měst základní 10 %74 %14 % po SFT 58 %25 %15 % po DPO (β = 2) 90 % dvě města mimo ladění základní 10 %64 %19 % po SFT 13 %39 %39 %10 % po DPO (β = 2) 10 %45 %9 %36 % podíl odpovědí (%) fáze učení (pořadí)
Druhy odpovědí po každé fázi učení správně„nevím“špatná zemědalší otázkanesmysl

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:

  1. 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−)).
  2. 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.

Laicky řečeno

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
Model odměny se učí minimalizovat −ln σ(r⁺ − r⁻) přes všechny dvojice — logistická regrese na rozdílu skóre.
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í.

Laicky řečeno

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
Průměruje se přes dávku dvojic z dat preferencí. Na začátku je πθ = πref, oba poměry jsou nulové a ztráta je ln 2 = 0,693 na každé dvojici.
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ž

  1. Rφ(k1) > Rφ(k0) (podle náhradní odměny se model zlepšil) a zároveň
  2. 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í.

Laicky řečeno

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ěnaKL(π* ‖ πref)
πref60,0 %25,0 %15,0 %0,4500
0,299,7 %0,3 %0,0 %0,9970,494
274,4 %18,8 %6,8 %0,6750,052
1063,2 %23,8 %12,9 %0,5030,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.

0 %25 %50 %75 %100 % 0,20,512510 síla β (bez jednotky, log. měřítko) podíl odpovědí (%)
DPO s různou silou β, šest ladených měst správně nesmysl správně po SFT
βsprávně„nevím“špatná zeměnesmyslKL od SFT
0,254 %0 %0 %46 %3,83
0,565 %2 %0 %34 %2,00
183 %3 %0 %13 %0,67
290 %5 %0 %5 %0,34
584 %10 %4 %3 %0,07
1071 %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.

Agent na vašem počítači, ovládaný z telefonu