Учень без учителя

Навчання з підкріпленням: як агент вчиться діяти, коли ніхто не каже йому правильну відповідь — а лише зрідка повідомляє, наскільки все вийшло.

Дитина вчиться ходити без жодного розміченого датасету. Ніхто не показує їй правильний кут згину коліна і не виправляє помилку в кожному суглобі. Є лише результат: або крок вдався, або ти на підлозі. З цього мізерного сигналу — і з тисяч спроб — вибудовується вміння, якого не запрограмуєш явно.

Саме цю схему копіює навчання з підкріпленням (reinforcement learning). Тут немає таблиці «вхід → правильна відповідь». Є агент, який діє, і середовище, яке у відповідь видає число: винагороду. Завдання агента — навчитись діяти так, щоб сума цих чисел за весь час була якнайбільшою. Виглядає скромно, але саме так навчились грати в го краще за людей, керувати охолодженням дата-центрів і, зрештою, робити мовні моделі ввічливими.

ІдеяНавчання з наслідків

Ключова відмінність від решти машинного навчання — у природі зворотного звʼязку. Класифікатор під час навчання бачить правильну мітку: «на цьому фото кіт». Агент бачить лише оцінку того, що він зробив: «за цей крок ти отримав +3». Він не знає, чи існувала дія, яка дала б +10, і ніколи не дізнається, поки не спробує.

Друга відмінність — час. У класифікації кожен приклад незалежний. В RL дія змінює світ: агент опиняється в новому стані, з якого доступні інші дії й інші винагороди. Ланцюжок таких переходів від початку до кінця називають епізодом. Партія в шахи, поїздка робота від дверей до дверей, сесія користувача — усе це епізоди.

СловникПʼять слів, з яких складається задача

Будь-яку задачу RL описують одним і тим самим набором понять. Якщо ти можеш заповнити цю таблицю для своєї задачі — ти вже її сформулював.

поняттящо цеприклад: робот шукає банани
агенттой, хто ухвалює рішення й вчитьсясам робот
середовищеусе інше; воно змінюється й видає винагородукімната з деревами
стан sопис ситуації, у якій агент заразкоордината робота
дія aщо агент може зробити зі стану sкрок ліворуч або праворуч
винагорода rчисло, яким середовище оцінює перехідкількість знайдених бананів

Цикл виглядає так: агент бачить стан s, обирає дію a, середовище повертає винагороду r і новий стан s'. Далі все повторюється. Мета — не максимізувати r на кожному кроці окремо, а максимізувати суму винагород за весь епізод. Це не те саме, і саме в цьому вся складність.

Увесь звʼязок агента зі світом — дві стрілки

Агент нічого не знає про середовище, крім того, що приходить назад по нижній стрілці. Розгорнутий у часі цей цикл і є епізодом.

Чому це важливо: дія не просто оцінюється — вона міняє те, що агент побачить далі. У класифікації наступний приклад не залежить від того, що модель відповіла на попередній; тут залежить усе. Саме через цю петлю помилка на третьому кроці може коштувати винагороди на тридцятому.
Формально. Такий цикл називають марковським процесом ухвалення рішень (MDP). Слово «марковський» означає одну важливу умову: стан містить усе, що потрібно для рішення, і минуле вже не додає інформації. Якщо це не так — стан описаний погано, і його треба доповнити.

ПорівнянняЧому це не навчання з учителем

Три відмінності, які повністю змінюють інструментарій.

Оцінювальний зворотний звʼязок замість інструктивного

Учитель у класичній задачі каже: «правильна відповідь — кіт». Це інструктивний сигнал: він не залежить від того, що ти відповів, і одразу вказує на істину. Середовище в RL каже: «за твою дію отримуєш 3». Це оцінювальний сигнал: він залежить від обраної дії й нічого не каже про альтернативи. Дізнатись, чи була краща дія, можна лише одним способом — спробувати її. Звідси й уся проблема дослідження, до якої ми дійдемо за два розділи.

Учитель називає істину, середовище — лише оцінку

Ліворуч: відповідь учителя не залежить від того, що ти сказав. Праворуч: середовище оцінює саме твій вибір і мовчить про решту.

Одна різниця — і половина теми: праворуч два знаки питання нікуди не подінуться самі. Щоб їх прибрати, треба пожертвувати кроком і спробувати те, що зараз не здається найкращим. Звідси й уся дилема дослідження, і жаль, і ε — усе це наслідки цієї картинки.

Відкладена винагорода

Хід у шахах, який приводить до перемоги через сорок ходів, у момент виконання не дає жодних очок. Винагорода приходить пізніше — іноді набагато пізніше. Тому агент має оцінювати дії не за миттєвою вигодою, а за тим, до чого вони врешті приведуть.

Задача призначення заслуги

Партія закінчилась перемогою: +1. Ходів було сорок. Який із них був хороший? Це задача призначення заслуги (credit assignment): як розподілити одну підсумкову оцінку між усіма діями, що до неї призвели. Уся техніка, яку ми розберемо далі — цінності, дисконтування, часові різниці — це, по суті, різні способи розвʼязати саме цю задачу.

Найпростіший випадокБагаторукий бандит

Приберемо стани й час, лишимо тільки вибір. Перед роботом три дерева. Кожне дає випадкову кількість бананів зі своїм середнім, якого робот не знає. Один крок — одне дерево. Скільки бананів набереш за T кроків?

Задачу називають багаторуким бандитом: «однорукий бандит» — це гральний автомат із важелем, а тут важелів кілька. Робот веде для кожної дії оцінку Q(a) — середню винагороду з усіх разів, коли він цю дію обирав:

Qt(a) = (сума винагород за дію a) / (скільки разів обрано a)

Оновлювати це середнє зручно по одному спостереженню, не зберігаючи історію:

Q(a) ← Q(a) + 1/n · [ r − Q(a) ]

Розберемо запис по символах. Стрілка ← означає «замінити на»: ліворуч від неї нове значення оцінки, праворуч — обчислення зі старого. r — винагорода, яку щойно дало дерево a. n — котрий це за рахунком раз, коли агент обрав саме цю дію: перший вибір дає n = 1, другий n = 2 і так далі. Лічильник у кожної дії свій, і зростає він лише тоді, коли дію обрано.

Перевіримо руками, що з цього справді виходить середнє. Нехай дерево дало по черзі 4, 2 і 6 бананів, а оцінка починається з нуля:

n = 1 · r = 4
Q = 0 + 1/1 · (4 − 0) = 4

Середнє з одного числа: 4. Збігається.

n = 2 · r = 2
Q = 4 + 1/2 · (2 − 4) = 4 − 1 = 3

Середнє з 4 і 2: (4 + 2) / 2 = 3. Знову збігається.

n = 3 · r = 6
Q = 3 + 1/3 · (6 − 3) = 3 + 1 = 4

Середнє з 4, 2 і 6: (4 + 2 + 6) / 3 = 4. Формула ніде не збрехала — і при цьому жодного разу не знадобилось памʼятати самі числа, лише поточну оцінку й лічильник.

Придивись до форми запису — вона тут не випадкова, і саме її ми зустрінемо ще двічі. У квадратних дужках стоїть різниця між тим, що сталось, і тим, чого ми чекали. Оцінка зсувається в бік несподіванки, і крок зсуву тим менший, чим більше даних уже зібрано.

Багаторукий бандит

Ліворуч — як оцінки Q збігаються до справжніх середніх. Праворуч — накопичена винагорода проти оракула й проти випадкового вибору.

оптимальних дій—
середня винагорода—
зібрано—
втрачено (жаль)—
Спробуй крайнощі: постав ε = 0 — робот назавжди застрягне на першому ж дереві, яке дало щось позитивне, і його оцінки для решти дерев так і лишаться нульовими. Постав ε = 1 — оцінки збіжаться ідеально точно, бо кожне дерево пробується однаково часто, але зібрано буде рівно стільки ж, скільки при випадковому виборі. І окремо повчальне: ε = 0.05 при 400 кроках дає лише 1.0 % оптимальних дій — розвідки замало, щоб відрізнити 4.5 від 6, і робот сидить не на тому дереві.

ДилемаДослідження проти використання

Ось конфлікт, який не має ідеального розвʼязку. Використання (exploitation) — обрати дію, яка за поточними оцінками найкраща. Дослідження (exploration) — обрати іншу, щоб уточнити її оцінку. Кожен крок належить чомусь одному: не можна одночасно збирати врожай і перевіряти сусіднє поле.

Чому чиста жадібність замикається на собі

Простежмо крок за кроком, що робить робот, який завжди бере дію з найбільшою оцінкою. Спочатку в таблиці нулі: Q(A) = Q(B) = Q(C) = 0. Нічия — робот бере, скажімо, дерево A і отримує 3 банани. Тепер Q(A) = 3, а Q(B) і Q(C) досі 0. На другому кроці найбільша оцінка знову в A — і знову обирається A. І на третьому. І на сотому.

Ключ ось у чому: оновлюється лише оцінка тієї дії, яку обрали. Середовище нічого не каже про решту (це той самий оцінювальний сигнал із розділу 03). Тож оцінки B і C приречені лишитись нулями назавжди — не тому, що дерева порожні, а тому, що їх ніхто не тряс.

Пастка не в тому, що A погане. Пастка в тому, що висновок «A найкраще» спирається рівно на ті дані, які сам і породив. Жадібний агент плутає «не пробував» із «нічого не дає», бо для нуля в таблиці ці два випадки виглядають однаково. Перший успіх стає останнім рішенням.

Найпростіша й найпоширеніша стратегія — ε-жадібна (epsilon-greedy). З імовірністю ε обираємо випадкову дію, з імовірністю 1−ε — найкращу за поточними оцінками. Три режими варто памʼятати напамʼять:

εповедінканаслідок
0чиста жадібністьзастрягає на першій дії, що дала щось хороше; альтернативи не перевіряються ніколи
0.05 — 0.2розумний балансзнаходить найкращу дію й потім здебільшого її і використовує; менші значення надійніші за нуль, але повільніші
1чиста випадковістьоцінки найточніші, зате поведінка ніяк ними не користується

Що саме додає ε

Випадковість тут не прикраса й не «різноманіття заради різноманіття». Вона дає конкретну гарантію: кожен крок із імовірністю ε віддається жеребу, і жереб не дивиться в таблицю. Отже кожне з трьох дерев отримує в середньому ε/3 спроби на крок — незалежно від того, що робот зараз вважає найкращим. За T кроків це приблизно εT/3 спроб на кожну дію, і що більше спроб, то ближча оцінка до справжнього середнього. Помилкова оцінка більше не вічна: рано чи пізно її виправлять.

Порахуємо на нашому бандиті. При ε = 0.1 і 400 кроках на кожне дерево припадає близько 0.1 · 400 / 3 ≈ 13 випадкових спроб — уже достатньо, щоб побачити різницю між середніми 3, 6 і 4.5. При ε = 0 таких спроб рівно нуль, скільки б кроків не минуло. Різниця між «нуль» і «хоч скільки-небудь» тут важливіша за саму величину ε.

Гарантія — це не швидкість. Постав в інтерактиві 1 ε = 0.05 і 400 кроків: робот зачепився за дерево із середнім 4.5 і взяв справді найкраще лише в 1.0 % кроків, а жаль виріс до 639 бананів. Розтягни повзунок кроків до 2000 — частка правильних виборів піднімається до 61.4 %: помилку таки виправлено, просто повільно. Причина видна з арифметики вище: при ε = 0.05 і 400 кроках на кожне дерево припадає близько 0.05 · 400 / 3 ≈ 7 випадкових спроб, а семи спроб замало, щоб надійно відрізнити середнє 4.5 від середнього 6. Мале ε означає «рано чи пізно», а не «швидко».

Гарантія має ціну, і ціна теж рахується просто. Ті ε кроків витрачаються навмання завжди — і тоді, коли робот ще нічого не знає, і тоді, коли він давно все зʼясував. Дві третини з них припадуть на гірші дерева. Тому стала ε ніколи не дає ідеальної поведінки: агент назавжди лишається трохи дурнішим за власну таблицю. Звідси й типовий прийом — спадна ε: починають із великої (0.3—0.5), поки все невідоме, і поступово знижують до майже нуля, коли оцінки вже усталились.

Жаль — чим міряють ціну незнання

Щоб порівнювати стратегії, потрібна одна шкала. Нею служить жаль (regret) — різниця між тим, скільки зібрав би той, хто від початку знав найкраще дерево, і тим, скільки зібрав наш агент:

жаль = T · μнайкраще − (сума винагород агента)

Тут T — скільки всього зроблено кроків, а μ (мю) — середня винагорода дерева; μнайкраще — середнє найщедрішого з них. Перший доданок і є оракул: недосяжна межа, яку дав би провидець, що жодного разу не помилився. Жаль ідеального агента — нуль; у всіх інших він додатний і тільки зростає.

Підставимо числа з нашого бандита: дерева мають середні 3, 6 і 4.5, кроків 400, отже оракул збирає 6 · 400 = 2400 бананів. Далі — три режими, і всі три можна побачити на табло «втрачено (жаль)» в інтерактиві 1:

режимзібраножальчому так
ε = 01 1921 208застряг на першому дереві із середнім 3; половина можливого втрачена
ε = 0.12 264136швидко знайшов дерево з середнім 6 і майже весь час брав саме його
ε = 11 728672оцінки найточніші, але кожен крок — жереб, тож зібрано як у випадкового

Обидві крайнощі програють середині в кілька разів, і причини в них протилежні: одна не знає, друга знає й не користується. Саме тому «дослідження проти використання» — це компроміс, а не задача з правильною відповіддю.

Є й розумніша альтернатива, яка взагалі не потребує випадковості — оптимістична ініціалізація. Замість нулів початкові оцінки ставлять завідомо завищеними. Тоді будь-яка спроба розчаровує (реальна винагорода менша за очікувану), оцінка падає, і жадібний агент сам переходить до наступної дії — поки не перебере всі. Дослідження виникає само собою, без жодного випадкового вибору.

Три стратегії дослідження

Вісім дій із різними середніми винагородами. Показано частку кроків, на яких обрано справді найкращу. Усереднено по 150 незалежних запусках; швидкість навчання стала, α = 0.1.

ε-жадібна—
жадібна—
оптимістична (наприкінці)—
Що читати: жадібна крива застигає рано: щойно одна дія починає здаватися найкращою, решта перестає перевірятись — і виправити помилкову оцінку вже нема кому. Оптимістична витрачає перші кроки на розчарування у всіх діях підряд, зате потім іде вище за ε-жадібну, бо більше не платить ε кроків за випадковість. Спробуй Q₀ = 0 — оптимізм зникає, і третя крива лягає точно на жадібну.

ПоведінкаПолітика

Політика (policy, позначають π) — це правило, за яким агент обирає дію в кожному стані. Формально — відображення зі станів у дії:

π(s) → a     або     π(a | s) — імовірність обрати a у стані s

Політика — це і є те, чого ми вчимо. Усе решта (оцінки, цінності, моделі середовища) — допоміжні конструкції, потрібні лише щоб покращити політику. Коли навчання завершене, у продакшен їде саме вона.

ЦінністьФункція цінності V і Q-функція

Щоб покращувати політику, треба вміти оцінювати, наскільки хороша ситуація. Для цього є дві споріднені функції.

Цінність стану V(s) — скільки сумарної винагороди агент очікує отримати, якщо зараз він у стані s і далі діє за політикою π:

Vπ(s) = E [ r1 + γr2 + γ2r3 + … | s0 = s ]
Що означає E. Літера E — це математичне сподівання (expectation), тобто середнє по всіх можливих продовженнях, зважене на їхню ймовірність. Вона потрібна тому, що майбутнє не одне: середовище випадкове, та й сама політика може кидати жереб. Читається запис так: «візьми всі варіанти того, що станеться далі, порахуй для кожного суму винагород і усередни». Вертикальна риска | читається «за умови, що»: | s0 = s означає «усереднюємо лише ті продовження, які починаються зі стану s». А на маленькому прикладі це просто: якщо з рівною ймовірністю на нас чекає +10 або 0, то E = 0.5 · 10 + 0.5 · 0 = 5.

Цінність дії Q(s, a) — те саме, але з уточненням: спершу робимо конкретну дію a, а вже потім діємо за політикою:

Qπ(s, a) = E [ r + γ Vπ(s') | s, a ]

Різниця здається дрібною, але вона вирішальна для практики. Якщо ти знаєш лише V, то щоб обрати дію, треба вміти передбачити, куди вона тебе приведе — тобто мати модель середовища. Якщо ти знаєш Q, обирати нічого не треба передбачати: просто бери дію з найбільшим Q(s, a). Саме тому переважна більшість практичних алгоритмів вчить Q, а не V.

π(s) = arg maxa Q(s, a)   ← жадібна політика з Q

Запис arg max читається «той аргумент, на якому досягається максимум». Звичайний max повертає саме число — найбільше значення; а arg max повертає дію, на якій це число досягнуто. Якщо Q(s, ліворуч) = 2.7, а Q(s, праворуч) = 8.1, то max дорівнює 8.1, а arg max — «праворуч». Політиці потрібне саме друге: їй треба знати, що робити, а не скільки це коштує.

ГоризонтДисконтування: чому майбутнє знецінюють

У формулах вище стоїть множник γ (гамма) — коефіцієнт дисконтування, число від 0 до 1. Винагорода, отримана через k кроків, входить у суму з вагою γ^k. Навіщо це потрібно — три причини.

Звідки береться 1/(1−γ)

Питання поставимо так: скільки кроків майбутнього агент насправді враховує? Щоб відповісти, візьмемо найпростіший можливий світ — у ньому кожен крок дає рівно 1 банан, вічно. Тоді дисконтована сума виглядає так:

S = 1 + γ + γ2 + γ3 + …

Доданків нескінченно багато, але порахувати суму можна в два рядки — і для цього не треба нічого, крім множення й віднімання. Помножимо весь ряд на γ:

крок 1 · множимо ряд на γ
γS = γ + γ2 + γ3 + …

Це той самий ряд, тільки без першого доданка — усе інше збіглося.

крок 2 · віднімаємо одне від одного
S − γS = 1

Усі доданки, крім одиниці, стоять і зліва, і справа, тож взаємно знищуються. Лишається сама одиниця.

крок 3 · виражаємо S
S · (1 − γ) = 1   ⟹   S = 1/(1−γ)

Ось і вся формула.

Тепер прочитаємо результат. У світі без дисконтування кожен із k кроків важив би по одиниці, і сума за k кроків дорівнювала б k. З дисконтуванням уся нескінченність важить стільки ж, скільки 1/(1−γ) недисконтованих кроків. Тобто 1/(1−γ) — це кількість кроків, які «вміщаються» під вагами γk; далі неї внесок уже мізерний. Звідси й слово «горизонт».

γгоризонт 1/(1−γ)вага винагороди через 9 кроків, γ9
0.52 кроки0.0020 — практично нуль
0.910 кроків0.39 — усе ще помітно
0.99100 кроків0.91 — майже без знецінення

Горизонт — це ширина вікна, крізь яке агент бачить майбутнє

Стовпчик — вага γk, з якою винагорода через k кроків входить у суму. Пунктир — позначка 1/(1−γ).

Що видно з відстані: при γ = 0.5 після другого стовпчика вже нема на що дивитись — агент бачить буквально наступний крок. При γ = 0.9 вікно завширшки з десяток кроків. При γ = 0.99 стовпчики майже не спадають, і позначка горизонту навіть не вміщається в кадр — такий агент планує далі, ніж триває більшість епізодів.

Перевіримо на числах, що це не абстракція. Порівняймо два шляхи: три банани через один крок і десять бананів через девʼять. При γ = 0.5 далека нагорода коштує 10 · 0.59 ≈ 0.02 банана проти 3 · 0.5 = 1.5 — далеке дерево не варте й уваги. При γ = 0.9 та сама нагорода коштує 10 · 0.99 ≈ 3.87 проти 3 · 0.9 = 2.7 — і вибір перевертається. Горизонт 10 кроків просто дотягнувся туди, куди горизонт у 2 кроки не дістає.

Наслідок для поведінки прямий. Маленька γ робить агента короткозорим: він хапає найближчу винагороду, навіть якщо трохи далі лежить набагато більша. Велика γ робить його далекоглядним — але й повільнішим у навчанні, бо сигнал доводиться протягувати крізь довший ланцюжок кроків.

Як γ керує далекоглядністю

Світ-лінія: ліворуч маленьке дерево (+3), праворуч велике (+10). Стовпчики — цінність станів, стрілки — оптимальна політика.

горизонт 1/(1−γ)—
ідуть ліворуч—
Що відбувається: при великій γ навіть із сусідньої з маленьким деревом клітинки вигідно пройти всю лінію до великого. Знижуй γ — і клітинки біля лівого краю одна за одною «здаються»: для них десять бананів через девʼять кроків коштують уже менше, ніж три банани через один.

МеханізмПохибка часової різниці

Тепер головна ідея всієї теми. Агент зробив один крок: був у s, зробив a, отримав r, опинився в s'. Що з цього можна вивчити?

У нас є дві оцінки однієї й тієї самої величини. Перша — стара, та, що вже записана в таблиці: Q(s, a). Друга — щойно отримана з реальності: винагорода r плюс дисконтована оцінка найкращого продовження зі стану s'. Друга оцінка спирається на один справжній крок, тож вона трохи ближча до істини. Різницю між ними називають похибкою часової різниці:

δ = r + γ · maxa' Q(s', a') − Q(s, a)
крок 1 · що ми думали

Стара оцінка цінності дії — просто число з таблиці:

старе = Q(s, a)
крок 2 · що показала реальність

Отримали r і опинились у s'. Найкраще, на що там можна розраховувати, — max Q(s', a'), знецінене на один крок:

ціль = r + γ · maxa' Q(s', a')
крок 3 · зсуваємо оцінку до цілі

Не стрибаємо на ціль повністю — робимо частковий крок розміром α, бо і сама ціль поки що приблизна:

Q(s, a) ← Q(s, a) + α · δ

α (альфа) — швидкість навчання, число від 0 до 1: яку частку похибки ми беремо до уваги за один раз. При α = 0.3 і δ = 4 оцінка підростає на 1.2, а не на 4. У бандиті на цьому місці стояло 1/n, тобто крок, що сам згасає з досвідом; тут частіше беруть сталу α, бо світ може змінюватись, і назавжди застигла оцінка нікому не потрібна.

Це і є Q-навчання. Зверни увагу на дві речі. По-перше, форма оновлення дослівно та сама, що й у бандита: «оцінка плюс крок помножити на несподіванку». По-друге, оцінка одного стану підтягується до оцінки сусіднього — і завдяки цьому інформація про винагороду поступово розтікається по всій таблиці назад від цілі. Саме так розвʼязується задача призначення заслуги: ніхто нічого не розподіляє явно, знання просто просочується на крок назад щоразу, коли агент проходить цим шляхом.

І третя річ, яку варто помітити відразу, бо вона поверне нам борг у розділі 11. У цілі стоїть max — найкраще, що можна зробити зі стану s'. Не те, що агент зробить насправді (він може й жереб кинути), а те, що було б найкраще за таблицею. Тому таблиця вчиться цінностям найкращої поведінки, а не тієї, якою агент зараз користується. Це не дрібниця запису: саме звідси візьметься дивна на вигляд ситуація, коли таблиця правильна, а агент поводиться погано.

Один крок Q-навчання

Числова вісь: де стоїть стара оцінка, де ціль, і куди зсунеться Q після оновлення.

ціль—
δ похибка—
нове Q(s,a)—
Внизу — що буде, якщо повторити той самий крок багато разів поспіль: оцінка експоненційно наближається до цілі, і швидкість цього наближення задає рівно α. При α = 1 оцінка стрибає на ціль одразу — і разом із нею стрибає весь шум, який у цій цілі є.

ПрактикаQ-навчання у світі-лінії

Складемо все докупи. Робот стоїть на лінії з одинадцяти клітинок. На лівому краю маленьке дерево (+3), на правому — велике (+10). Обидва завершують епізод. Стартує робот щоразу у випадковій клітинці — це важливо, інакше жадібний агент просто ніколи б не побачив половину світу.

Таблиця Q спочатку заповнена нулями, тому перша ж дія, яка принесла щось позитивне, стає для агента найкращою назавжди — якщо тільки ε не змусить його спробувати інше. Покрути ε і кількість епізодів:

Табличне Q-навчання

Для кожного стану — пара стовпчиків Q(s, ліворуч) і Q(s, праворуч). Стрілка — поточна політика. Знизу — винагорода за епізод.

доходять до +10—
станів «праворуч»—
середня винагорода за останні 50 епізодів—
Обовʼязково спробуй ε = 0: нічию в таблиці ми розбиваємо на користь лівої дії, тож перша ж винагорода +3 закріплює звичку йти ліворуч — і робот більше ніколи від неї не відхиляється. Далі підіймай ε: при 0.05 перевертаються перші кілька станів, при 0.2 — усі девʼять. Малому ε потрібно більше епізодів: постав 0.1 і посунь другий повзунок до кінця. Але при ε близько 1 середня винагорода знову падає, хоча таблиця Q при цьому найточніша: агент знає, куди йти, і не йде.

Два виміриСітка з кактусом

Лінія — це навчальна іграшка. Мінімальний світ, у якому вже видно щось схоже на планування, — сітка. Робот ходить у чотирьох напрямках, десь лежать банани (+10), десь ростуть кактуси (−10 і кінець епізоду), а кожен крок коштує невеликої плати. Ця плата — важлива деталь: без неї агенту байдуже, чи йти до мети десять кроків, чи сто.

Нічого нового в алгоритмі немає: та сама таблиця Q, те саме оновлення через δ. Змінилась лише кількість станів і дій. Але результат уже читається як поведінка: стрілки складаються в маршрут, який обходить кактуси.

Q-навчання в сітці

Колір клітинки — цінність V(s) = max Q(s,·). Стрілка — вивчена політика. Старт щоразу випадковий.

дійшли до мети—
вкололись—
збіг з оптимальною політикою—
Порівняння з еталоном: оптимальну політику для цієї сітки можна порахувати точно (динамічним програмуванням, бо середовище нам відоме). Останнє число показує, у якій частці клітинок вивчена стрілка збігається з еталонною. Саме так у навчальних задачах перевіряють, чи алгоритм справді збігся. Зверни увагу на парадокс: більше ε — точніша таблиця, але гірша поведінка, бо кожен випадковий крок поруч із кактусом може виявитись останнім.

Правильна таблиця й погана поведінка — це не суперечність

Порухай ε в інтерактиві вище й подивись на два числа одночасно. При ε = 0.05 з 24 клітинок правильно вивчено 19, а кактусом закінчуються 7.5 % епізодів. При ε = 0.6 правильних клітинок уже 20, а кактусом закінчуються 58.8 % епізодів. При ε = 0.9 — 22 правильні клітинки і 81.8 % уколів. Таблиця стає кращою, поведінка — катастрофічною. Виглядає як помилка в коді, а це прямий наслідок того max із розділу 09.

Річ у тім, що політик тут насправді дві, і плутають їх постійно.

Q-навчання оновлює таблицю через max, тобто завжди міряє цільову політику — незалежно від того, наскільки навмання агент ходив. Такий алгоритм звуть навчанням поза політикою (off-policy): вчимо одну політику, а даних набираємо іншою. Через це велике ε для таблиці корисне (більше різних станів відвідано — більше клітинок устигло навчитись), а для поведінки згубне (кожен випадковий крок біля кактуса може виявитись останнім).

Практичний висновок із цього простий і важливий: ε — ручка навчання, а не властивість агента. Поки агент вчиться, ε тримають високою — платити за розвідку доводиться саме тут. Коли таблиця готова, ε ставлять у нуль і користуються чистим arg max. Плутанина між цими двома режимами — типова причина розчарування: людина міряє «якість агента» під час навчання й дивується, чому та сама модель у роботі поводиться інакше.

Коли ціна помилки справжня. У сітці кактус коштує −10 і перезапуск епізоду. У живій системі — зіпсовану деталь, аварію або втраченого клієнта. Саме тому дослідження майже ніколи не влаштовують на бойовому обладнанні: спершу симулятор, де ε може бути хоч 0.9, і лише потім перенесення готової політики.

ЗастосуванняДе це працює насправді

сферащо є станом і дієюу чому виграш
ігрипозиція на дошці; хідго, шахи, StarCraft — рівень, недосяжний для правил, написаних людиною
робототехнікапоказники сенсорів; момент на приводахходьба, захват предметів, польот — рухи, які важко задати аналітично
реклама й рекомендаціїпрофіль користувача; який банер показатикласичний бандит: дослідження нових варіантів проти показу вивіреного
керування ресурсамизавантаження системи; розподіл потужностейохолодження дата-центрів, трафік, енергомережі
мовні моделідіалог; наступний токенRLHF — донавчання під людські вподобання

Останній рядок вартий окремого слова, бо саме через нього RL сьогодні торкається всіх. RLHF (навчання з підкріпленням на людському зворотному звʼязку) — це спосіб зробити мовну модель корисною. Проблема в тому, що «корисна відповідь» — не мітка, яку можна поставити в датасет: правильних відповідей багато, і різняться вони тонко. Тому роблять інакше: людям показують пари відповідей і питають, яка краща. На цих порівняннях вчать окрему модель винагороди, а вже вона видає число, яке мовна модель максимізує звичайними методами RL. Мітки замінили на переваги — і задача стала розвʼязною.

МежіЩо йде не так

RL виглядає універсально, і саме тому варто одразу знати, чому його не застосовують скрізь.

І все ж ідея, заради якої це варто знати, значно більша за конкретні алгоритми. Навчання з підкріпленням — це формалізація того, як узагалі можна вчитись без учителя, маючи лише наслідки власних дій. Три конструкції з цієї лекції — цінність як спосіб оцінювати ситуацію, дисконтування як спосіб зважувати майбутнє і похибка часової різниці як спосіб вчитись на несподіванках — зустрінуться тобі скрізь, від класичних алгоритмів до сучасних мовних моделей.