Код креативности. Как искусственный интеллект учится писать, рисовать и думать - стр. 20
Одна из моих любимых игр на Atari называлась Breakout. Параллельно верхней кромке экрана шла стена из разноцветных кирпичиков, а игрок управлял расположенной внизу ракеткой, которую можно было двигать влево или вправо при помощи джойстика. Шарик отскакивал от ракетки и летел в сторону кирпичиков. Каждый раз, когда он попадал в какой-нибудь кирпичик, кирпичик исчезал. Целью игры было убрать с экрана все кирпичики. За попадание в один из желтых кирпичиков, из которых состояла нижняя часть стены, начислялось одно очко. Красные кирпичики в верхней части приносили по семь очков. По мере исчезновения кирпичиков ракетка становилась все меньше, а шарик летал все быстрее, что делало игру труднее.
Особенное удовольствие мы испытали однажды, когда придумали хитрый способ взломать эту игру. Нужно было пробить сквозь кирпичики на краю экрана туннель; тогда, если шарик пролетал сквозь него и оказывался сверху от стены, он начинал скакать, отражаясь от верхней кромки экрана и верхних, «дорогих», кирпичиков и постепенно уничтожая стену. Игрок мог расслабиться и просто смотреть за этим процессом, пока шарик в конце концов не прилетал сквозь стену обратно вниз. Нужно было только держать ракетку наготове, чтобы снова отбить шарик вверх. Очень приятная была стратегия!
Хассабис и другие члены группы, которую он собирал в это время, также много играли в молодости в компьютерные игры. Возможно, их родителям было приятно узнать, что время и силы, потраченные на эти игры, не были растрачены впустую. Игра Breakout оказалась идеальным полигоном для проверки способности коллектива DeepMind запрограммировать компьютер на обучение играм. Написать программу для каждой отдельной игры было бы работой сравнительно несложной. Но Хассабис и его коллеги ставили перед собой гораздо более трудную задачу.
Они хотели написать программу, которая получала бы на входе состояние пикселей экрана и текущий счет и играла так, чтобы максимизировать счет. Правила игры программе не сообщаются: она должна случайным образом экспериментировать, двигая в разные стороны ракетку в Breakout или по-всякому стреляя из лазерной пушки по снижающимся кораблям пришельцев в Space Invaders. Каждый раз, когда программа делает ход, она может оценить, привел ли он к увеличению счета или не произвел никакого эффекта.
Эта программа реализует возникшую еще в 1990-е годы концепцию обучения с подкреплением, которая предполагает корректировку вероятности определенных действий в зависимости от воздействия на функцию вознаграждения или счет. Например, в игре Breakout можно принять только одно-единственное решение – сдвинуть ракетку, расположенную внизу экрана, влево или вправо. Изначально выбор делается с вероятностью 50: 50. Но если случайное перемещение ракетки приводит к попаданию по шарику, то через короткое время после этого счет увеличивается. Тогда программа производит пере-калибровку вероятности смещения влево или вправо с учетом этой новой информации. Это увеличивает вероятность смещения в том же направлении, в котором движется шарик. Новшеством было совмещение такого обучения с нейронными сетями, которые должны были оценивать состояние пикселей и решать, какие именно элементы коррелируют с ростом счета.