Что такое обучение с подкреплением на примере игр
Как научить программу играть в шахматы или Pac-Man, ни разу не объяснив ей правила выигрыша? Оказывается, достаточно хвалить за хорошие ходы и ругать за плохие — а дальше она разберётся сама.
Представь, что ты учишь щенка садиться по команде. Ты не объясняешь ему анатомию и не зачитываешь инструкцию — ты просто даёшь вкусняшку, когда он угадал. Через десяток попыток щенок сам понимает, что от него хотят. Ровно так же учится и компьютер, который обыгрывает чемпионов мира в го и шахматы. Этот способ называется обучение с подкреплением, и сейчас ты поймёшь, как он работает.
Метод проб, ошибок и вкусняшек
Большинство программ, которые ты используешь, работают по жёстким правилам: разработчик заранее прописал, что делать в каждой ситуации. Но есть задачи, где правил слишком много, чтобы их перечислить. Сколько разных позиций бывает в игре го? Больше, чем атомов во Вселенной. Заранее расписать ответ на каждую невозможно физически.
Тогда поступают хитрее. Вместо инструкций программе дают цель и отпускают экспериментировать. Она пробует случайные действия, а после каждого получает сигнал: стало лучше или стало хуже. Этот сигнал называют наградой. Программа запоминает, какие действия чаще приводят к награде, и постепенно начинает выбирать именно их. Никто не говорит ей, как правильно — она докапывается сама, методом проб и ошибок.
Обучение с подкреплением — это не "запомни правильный ответ", а "найди такое поведение, за которое тебя чаще хвалят".
Три героя этой истории: агент, среда и награда
Чтобы не запутаться, разработчики разложили всё на три понятия. Их полезно запомнить — они встречаются в любой статье про эту тему.
- Агент — тот, кто учится и принимает решения. В игре это тот самый "мозг", который двигает фигуры или жмёт кнопки.
- Среда — мир, в котором действует агент. Шахматная доска, лабиринт Pac-Man, гоночная трасса — всё это среда. Она отвечает на каждое действие новым состоянием.
- Награда — число, которым среда оценивает поступок агента. Съел точку в Pac-Man — плюс. Врезался в призрака — минус. Выиграл партию — большой плюс в самом конце.
Цикл всегда один и тот же: агент смотрит на состояние среды, совершает действие, получает награду и новое состояние — и так миллионы раз. Из этого нескончаемого потока проб и складывается мастерство.
Почему игры — идеальная тренировка
Может показаться, что играть в игры — несерьёзное занятие для умной программы. На самом деле игры оказались идеальной песочницей, и вот почему.
В игре всегда есть чёткий счёт — готовая награда, которую не надо выдумывать. Есть понятные правила, то есть предсказуемая среда. И главное — компьютер может сыграть не одну партию, а миллионы партий за ночь, не уставая и не отвлекаясь. Человек за всю жизнь сыграет в шахматы, может, несколько тысяч раз. Программа проигрывает это количество за минуты, и каждая партия делает её чуть умнее.
Знаменитая система AlphaGo от компании DeepMind в 2016 году обыграла Ли Седоля — одного из сильнейших игроков планеты в го. А её наследница AlphaZero научилась играть в шахматы, го и сёги вообще без человеческих партий: ей дали только правила и отправили играть саму с собой. Через несколько часов такой игры с самой собой она превзошла лучшие программы, которые люди оттачивали десятилетиями.
Главная ловушка: терпение против жадности
Тут возникает хитрая проблема. Представь, что в незнакомом городе ты нашёл кафе, где вкусно кормят. Ходить всегда только туда — надёжно, но вдруг за углом есть место в десять раз лучше, а ты о нём никогда не узнаешь? Чтобы найти лучшее, иногда надо рискнуть и попробовать новое, пусть даже наткнёшься на невкусный обед.
У агента та же дилемма. Можно использовать уже найденную хорошую стратегию и стабильно получать награду. А можно исследовать — пробовать новые, незнакомые ходы в надежде, что они окажутся ещё лучше. Слишком осторожный агент застрянет на посредственной тактике. Слишком безрассудный будет вечно экспериментировать и никогда не начнёт побеждать. Хороший алгоритм держит баланс: сначала много исследует, а со временем всё чаще полагается на проверенное.
Ещё одна тонкость — отложенная награда. В шахматах ты понимаешь, что ход был гениальным, лишь через двадцать ходов, когда ставишь мат. Как агенту догадаться, что именно тот давний ход привёл к победе, а не последний? Алгоритмы умеют "раздавать" финальную награду назад по цепочке решений, понемногу поощряя каждый шаг, который вёл к успеху. Это одна из самых красивых идей во всей области.
Не только игры
Игры — это тренировочный полигон, но настоящая цель куда шире. Тот же подход "пробуй, получай оценку, улучшайся" применяют в робототехнике: робот учится ходить, падая тысячи раз в симуляции. Его используют, чтобы экономнее охлаждать огромные дата-центры, подбирать ленту рекомендаций и даже настраивать большие языковые модели, чтобы они отвечали полезнее и вежливее.
Суть везде одна. Не нужно знать заранее единственно верный ответ — достаточно уметь отличать хорошее от плохого и дать машине вдоволь попрактиковаться. Так же, как щенок, который через десяток вкусняшек наконец-то садится по команде, программа через миллионы попыток находит поведение, за которое её хвалят. И иногда оказывается, что она нашла стратегию, до которой не додумался ни один человек.