Перейти к содержанию

Модуль 13. TD-обучение и дофамин

Чему вы научитесь в этом модуле

  • Объяснять, чем обучение без модели среды отличается от value iteration из модуля 12.
  • Записывать ошибку предсказания награды \(\delta\) и интерпретировать её как «получил минус ожидал».
  • Понимать, что такое бутстрэп: обучение оценки на основе другой оценки, а не на основе фактического итога.
  • Показывать на числах, как ценность распространяется назад от награды, а всплеск ошибки переезжает на сигнал-предвестник.
  • Рассказывать, почему разряды дофаминовых нейронов в опытах Шульца совпали с сигналом \(\delta\), и что именно здесь предсказало что.

Время: около двух недель. Пререквизиты: модуль 12. Ноутбук: открыть в Colab · notebooks/13-td-learning-and-dopamine.ipynb

Зачем нужен этот модуль

В модуле 12 ценность вычислялась при известной модели среды: переходы и награды были даны заранее, и value iteration прогонялся по ним. В реальной задаче модели среды нет. Агент не знает, куда ведёт действие и какую награду за него дадут, — он узнаёт это только в процессе действия.

Значит, ценность необходимо обучать по опыту, по одному переходу за раз. Метод, который это делает, — обучение временными разностями (temporal-difference learning, TD), и в его основе лежит одна-единственная величина: разница между тем, что агент ожидал, и тем, что фактически получил. Эта же самая величина, как выяснилось в 1997 году, оказалась сигналом дофаминовых нейронов. Этот модуль о том, как алгоритм и мозг здесь совпали, и почему это совпадение неслучайно.

Ошибка предсказания награды

Агент находится в состоянии \(s\) и ожидает ценность \(V(s)\). Он совершает шаг, получает награду \(r\) и оказывается в новом состоянии \(s'\), ценность которого \(V(s')\). Теперь у него есть уточнённая оценка того же самого: \(r + \gamma V(s')\). Разница между уточнённой оценкой и прежней — это ошибка предсказания награды (reward prediction error):

\[\delta = \underbrace{r + \gamma V(s')}_{\text{получил}} - \underbrace{V(s)}_{\text{ожидал}}\]
r + γ·V(s′) что получил V(s) что ожидал δ = ошибка предсказания награды

Знак \(\delta\) читается напрямую. Положительная ошибка — получилось лучше, чем ожидалось, значит, состояние было недооценено и его ценность нужно поднять. Отрицательная — получилось хуже ожидаемого, состояние переоценено, ценность нужно снизить. Ноль — всё произошло ровно так, как ожидалось, менять нечего.

Отсюда следует правило обучения. Оценка ценности сдвигается в направлении ошибки на маленький шаг \(\alpha\):

\[V(s) \leftarrow V(s) + \alpha\,\delta\]

Та же самая конструкция, что и градиентный спуск в модуле 4: шаг в направлении уменьшения ошибки. Только ошибка здесь — это не разница с известным правильным ответом, а разница с собственной уточнённой оценкой.

Бутстрэп

Вот что в TD-обучении является одновременно самым странным и самым важным. В правиле обновления \(V(s)\) обучается по \(V(s')\) — по другой оценке, которая сама по себе тоже неточна. Оценка подтягивается к оценке, а не к фактическому итогу. Это называется бутстрэп (bootstrap), и на первый взгляд выглядит как жульничество: каким образом можно чему-то научиться на основании того, чего ты сам ещё не знаешь?

Работает это потому, что награда \(r\) на каждом шаге — настоящая, она приходит из среды. Крупица истины подмешивается на каждом переходе, и через множество переходов оценки постепенно насыщаются этой истиной и сходятся к правильным значениям. Альтернатива — дождаться конца эпизода и обучать ценность по полной фактической отдаче (метод Монте-Карло) — честнее в том смысле, что не использует промежуточные оценки, но зато ждёт до самого конца и потому шумнее и медленнее. TD-обучение корректирует оценки на каждом шаге, расплачиваясь за это тем, что корректирует их по догадке.

Ценность и дофамин вручную

Проведём эксперимент. Проба устроена следующим образом: в определённый момент зажигается сигнал (лампа), а через несколько шагов поступает награда. Ничего, кроме этого, агент заранее не знает. Запускаем TD-обучение и наблюдаем два ряда: как нарастает ценность \(V\) по шагам и где вспыхивает ошибка \(\delta\) — тот самый дофаминовый сигнал.

Нажимайте «Проба». На первых пробах ценность всюду нулевая, и всплеск \(\delta\) стоит на награде: она пришла неожиданно. С каждой последующей пробой ценность нарастает назад — от награды к сигналу, — а всплеск ошибки ползёт вместе с ней. Когда обучение достигло насыщения, картина переворачивается: всплеск стоит на сигнале, а на награде — тишина. Награда больше не является сюрпризом, потому что её предсказал сигнал. Нажмите «Без награды» на обученной модели — там, где ожидалась награда, \(\delta\) проваливается ниже нуля.

Эти три картины — не изобретение алгоритма. Это ровно то, что было записано с электродов в реальном эксперименте.

Три случая Шульца

В 1997 году Вольфрам Шульц с коллегами записывали активность дофаминовых нейронов обезьяны, пока она обучалась тому, что определённый сигнал предсказывает порцию сока. Было получено три характерных паттерна, и все три точно соответствуют знаку \(\delta\).

награда неожиданная награда всплеск на награде сигнал награда предсказанная награда всплеск переехал на сигнал сигнал а провал на месте несостоявшейся награды — это отрицательная δ награду не дали провал

Неожиданная награда — дофамин вспыхивает в момент получения награды: \(\delta = r - 0 > 0\). Предсказанная награда — вспыхивает на сигнале, молчит на награде: сигнал поднял ценность (всплеск), а награда пришла ровно в соответствии с ожиданием (\(\delta = 0\)). Награда не пришла — на её месте дофаминовая активность падает ниже фонового уровня: \(\delta = 0 - V < 0\).

Здесь алгоритм предсказал нейробиологию. Обычно математика описывает то, что уже обнаружено в природе. В данном случае произошло наоборот: TD-обучение было выведено в теории RL, а через несколько лет его сигнал \(\delta\) был узнан в разрядах дофаминовых нейронов. Это продолжение линии из модуля 12: закон эффекта Торндайка был психологией, уравнение Беллмана — математикой, а ошибка предсказания награды оказалась ещё и нейрохимией. Одна модель в трёх науках.

Куда это ведёт дальше

TD-обучение учит ценность. Но агенту нужна политика — конкретные решения о том, что делать. Есть два пути, и оба встретятся в модуле 14.

Через ценность. Выучить ценность действий \(Q(s,a)\) тем же TD-методом и в каждом состоянии выбирать действие с наибольшим значением \(Q\). Это Q-обучение, и его правило обновления — та же ошибка \(\delta\), только с максимумом по следующему действию.

Через градиент. Напрямую настраивать параметры политики в направлении увеличения отдачи. Здесь понадобится градиент из модуля 4, а ошибка \(\delta\) из этого модуля станет сигналом, который подсказывает политике, какое действие оказалось лучше ожидаемого.

Практическая часть

Часть 1. Работа с ноутбуком

Откройте notebooks/13-td-learning-and-dopamine.ipynb. Только numpy и matplotlib, вычисления мгновенны.

Что содержится внутри:

  1. TD(0) на цепочке состояний с наградой в конце. Ценность распространяется назад — та же картина, что в интерактивной фигуре.
  2. Сдвиг сигнала \(\delta\): тепловая карта ошибки по пробам. Всплеск смещается с награды на сигнал.
  3. Три случая Шульца на числах: неожиданная, предсказанная и пропущенная награда. Знак \(\delta\) в каждом из трёх случаев.
  4. TD против Монте-Карло: кто сходится быстрее и кто вносит больше шума на одной и той же задаче. Бутстрэп против ожидания конца эпизода.
  5. Сверка с точным решением: оценка ценности по TD сравнивается с точной ценностью из модуля 12, вычисленной по модели среды.

Часть 2. Собственная проба

  1. Задайте свой момент сигнала и награды и прогоните обучение. За сколько проб всплеск переезжает на сигнал?
  2. Сделайте награду случайной (иногда она есть, иногда нет). Что происходит с \(\delta\) и с ценностью?
  3. Уберите награду навсегда после завершения обучения. Проследите, как ценность затухает и \(\delta\) возвращается к нулю. Это угасание (extinction) из поведенческой психологии — и снова один и тот же термин из двух наук.

Задание

  1. Выведите ошибку \(\delta\) из уравнения Беллмана модуля 12. Покажите, что в среднем \(\delta\) равна нулю, когда ценность верна.
  2. Реализуйте TD(0) на цепочке состояний и постройте, как ценность каждого состояния сходится к \(\gamma^{k}\), где \(k\) — число шагов до награды.
  3. Постройте тепловую карту \(\delta\) по пробам и состояниям и определите, на какой именно пробе всплеск окончательно переезжает на сигнал.
  4. Сравните TD и Монте-Карло по числу проб до сходимости и по разбросу. Сформулируйте вывод в формате модуля 1: величина эффекта, условия, базовая линия.
  5. Смоделируйте ситуацию «награду не дали» и покажите отрицательную \(\delta\). Свяжите её словами с провалом дофаминовой активности у Шульца.

Проверка усвоения

  1. Чем TD-обучение отличается от value iteration модуля 12 по объёму знаний, доступных агенту?
  2. Прочитайте \(\delta\) словами, не называя букв. Что означает её знак?
  3. Что такое бутстрэп и почему обучение оценки на основе оценки всё-таки сходится?
  4. Почему на первых пробах всплеск \(\delta\) стоит на награде, а после обучения — на сигнале?
  5. Что происходит с \(\delta\), когда предсказанную награду не выдают, и что этому соответствует в экспериментах Шульца?
  6. Чем TD и Монте-Карло расплачиваются друг перед другом: за что TD быстрее и что является его ценой?
  7. Что здесь предсказало что — математика нейробиологию или наоборот?

Что дальше

В модуле 14 появляется способ обучать саму политику: policy gradient, актор-критик, PPO. Ошибка \(\delta\) из этого модуля станет там сигналом критика, а градиент из модуля 4 — двигателем актора. И там же — почему в RL воспроизводимость особенно плоха, и каким образом бутстрэп по случайным зёрнам из модуля 1 отделяет настоящее улучшение от удачного зерна.

Ошибка предсказания награды — это «получил минус ожидал». Она обучает ценность по одному переходу и она же вспыхивает в дофаминовых нейронах. Один сигнал — в алгоритме и в мозге.


Принцип

Дофамин кодирует не награду, а неожиданность награды. Предсказанное удовольствие молчит; удивление — вот что движет обучением, и в машине, и в голове.