Обучение методом временных разностей может показаться не слишком эффективным, поскольку обратная связь состоит лишь в том, получаете вы вознаграждение или нет. Однако некоторые варианты применения такого обучения показали, что в сочетании с другими алгоритмами оно может быть весьма мощным инструментом. Джерри Тезауро работал со мной над обучением нейросети игре в нарды. Эта игра очень популярна на Ближнем Востоке, и некоторые даже зарабатывают на жизнь игрой с высокими ставками. Это соревнование между двумя игроками — кто раньше снимет с доски свои шашки. Скорость перемещения шашек определяется броском игральной кости, ходы делаются по очереди. В отличие от детерминированных игр вроде шахмат, в нардах неопределенность результата при броске игральной кости значительно затрудняет предсказание результата каждого хода. Стратегия игры в нарды в программе Джерри определялась на основе функции ценности, которая рассчитывала вероятность выиграть матч на основе всех возможных позиций на доске, каждой из которых группа мастеров этой игры присваивала оценку. Программа анализировала все возможные ходы в конкретной позиции и выбирала ход с наивысшей оценкой.
В нашем подходе для обучения нейросети оценке игровых позиций и выбору ходов использовалось экспертное знание. Недостаток этого подхода состоит в необходимости собрать и хранить множество экспертных оценок; кроме того, программа по определению не могла играть лучше экспертов. Когда Джерри перешел в исследовательский центр IBM имени Томаса Уотсона, он переключился с метода контролируемого обучения на метод временных разностей и заставил программу играть саму с собой. Проблема игры с собой заключается в том, что единственный обучающий сигнал — это выигрыш или проигрыш всей партии, а информация о влиянии на победу или поражение каждого из множества ходов отсутствует.
В начале обучения игре в нарды ходы вычислительной машины были случайными, но в итоге одна из сторон выигрывала. Сначала система вознаграждения обучала программу «выигрывать», то есть снимать все шашки с доски к концу игры. Когда программа освоила завершение игры, функция ценности для выигрыша начала обучать функцию ценности для середины игры, где приходилось принимать сложные решения о взаимодействии с шашками противника. Наконец, после ста тысяч партий, функция ценности научилась разыгрывать дебют, в котором шашки занимают оборону, чтобы помешать продвижению шашек противника. Процесс обучения шел с конца игры, где вознаграждение очевидно, к началу, с использованием неявного вознаграждения, рассчитанного функцией ценности. Таким образом, обратная последовательность функции ценности позволяет слабому обучающему сигналу (такому, как в дофаминовой системе вознаграждения) обучать машину последовательности решений, ведущих к достижению отдаленной цели.
Программа Тезауро, получившая название TD-Gammon, была представлена миру в 1992 году и удивила меня и многих других[470]. Функция ценности использовала несколько сотен смоделированных нейронов — по нынешним меркам это относительно небольшая нейросеть. После ста тысяч партий программа начала выигрывать у Джерри, и он позвонил Биллу Роберти, мастеру игры в нарды из Нью-Йорка, и тот приехал в исследовательский центр IBM, чтобы сыграть с компьютером. Роберти выиграл большинство партий, но был удивлен, проиграв несколько напряженных поединков. Он заявил, что это лучшая программа для игры в нарды из всех, с которыми он имел дело. Некоторые ходы компьютера были необычными, каких он не видел раньше; при тщательном анализе выяснилось, что эта стратегия лучше той, к которой обычно прибегают люди. Роберти вернулся, когда программа сыграла сама с собой миллион партий, и был поражен ничейным исходом серии поединков с TD-Gammon. Возможно, вам покажется, что миллион — это много, но программа ознакомилась лишь с ничтожно малой долей возможных позиций на доске. TD-Gammon приходилось сводить к общим правилам каждую новую позицию почти после каждого хода.