Как бы вы ни относились к видеоиграм, если вы предпочитаете “понятную и ограниченную” среду “реальному миру”, вам стоит подумать о создании программ ИИ для видеоигр компании Atari
, разработанных в 1970-х и 1980-х годах. Именно этим решили заняться специалисты DeepMind. В зависимости от того, сколько вам лет и какие у вас интересы, вы, возможно, помните некоторые классические игры: Asteroids, Space Invaders, Pong, Ms. Pac-Man. Знакомые названия? Простая графика и управление с помощью джойстика делали эти игры достаточно простыми, чтобы их могли освоить дети, но достаточно сложными, чтобы взрослые тоже не теряли к ним интерес.Рассмотрим однопользовательскую игру Breakout
, показанную на рис. 27. В ней игрок с помощью джойстика передвигает “ракетку” (белый прямоугольник в правом нижнем углу) из стороны в сторону. “Мяч” (белый кружок) отскакивает от ракетки и ударяется о разноцветные прямоугольные “кирпичи”. Мяч также отскакивает от серых “стен” по бокам. Когда мяч попадает по одному из кирпичей (узорчатые прямоугольники), кирпич исчезает, игрок получает очки, а мяч отскакивает назад. Кирпичи с верхних рядов приносят больше очков, чем с нижних. Когда мяч ударяется о “землю” (нижнюю часть экрана), игрок теряет одну из пяти “жизней”, но если у него еще остались “жизни”, то в игру вводится новый мяч. Цель игрока – набрать максимум очков за пять жизней.Любопытно, что игра Breakout
появилась, когда Atari попробовала создать однопользовательскую версию успешной игры Pong. Разработку и внедрение Breakout в 1975 году поручили двадцатиоднолетнему сотруднику по имени Стив Джобс. Да, тому самому Стиву Джобсу, который впоследствии стал одним из основателей Apple. Поскольку Джобсу не хватало навыков, он привлек к работе над Breakout своего друга Стива Возняка, которому тогда было двадцать пять (и который впоследствии стал вторым основателем Apple). Возняк и Джобс спроектировали Breakout за четыре ночи, садясь за работу вечером, когда у Возняка кончался рабочий день в компании Hewlett-Packard. Вскоре Breakout, как и Pong, завоевала огромную популярность у геймеров.Если вы тоскуете по былым временам, но у вас не сохранилось старой игровой приставки Atari
2600, в интернете есть множество сайтов, где все еще можно сыграть в Breakout и другие игры. В 2013 году группа канадских исследователей ИИ выпустила программную платформу Arcade Learning Environment (“Среда обучения аркадным играм”), которая облегчила тестирование систем машинного обучения на 49 таких играх[185]. Именно эту платформу специалисты DeepMind использовали в своей работе по обучению с подкреплением.Глубокое Q-обучение
Специалисты DeepMind
совместили обучение с подкреплением – в частности, Q-обучение – с глубокими нейронными сетями, чтобы создать систему, которая сумеет научиться играть в видеоигры Atari. Они назвали свой подход глубоким Q-обучением. Я объясню принцип работы глубокого Q-обучения на примере Breakout, но в DeepMind использовали один и тот же метод для всех игр Atari, с которыми велась работа. Впереди нас ждет немало технических подробностей, так что готовьтесь (или переходите к следующему разделу).Вспомните, как мы использовали Q-обучение для тренировки собаки-робота Рози. В ходе эпизода Q-обучения на каждой итерации обучающийся агент (Рози) делает следующее: определяет свое текущее состояние, сверяет это состояние с матрицей Q, выбирает действие на основе ценностей из матрицы, выполняет это действие, возможно, получает сигнал подкрепления и – обучаясь – обновляет ценности в своей матрице Q.
Глубокое Q-обучение DeepMind
работает по тому же принципу, но место матрицы Q занимает сверточная нейронная сеть. По примеру DeepMind я назову ее глубокой Q-сетью (DQN). Показанная на рис. 28 DQN напоминает ту, что использовалась DeepMind для обучения игре Breakout (но при этом проще нее). Входным сигналом для DQN служит состояние системы в конкретный момент времени, которое здесь определяется текущим “кадром” – положением пикселей на текущем снимке экрана – и тремя предыдущими кадрами (положением пикселей на трех предыдущих шагах). Такое определение состояния обеспечивает систему небольшим объемом памяти, что оказывается здесь полезным. На выходе сеть выдает расчетную ценность каждого возможного действия во входном состоянии. Возможные действия таковы: передвинуть ракетку Влево, передвинуть ракетку Вправо или выполнить NOP (“холостую команду”, то есть не передвигать ракетку). Сама сверточная нейронная сеть практически не отличается от той, которую я описала в главе 4. Вместо ценностей в матрице Q, как в примере с Рози, в глубоком Q-обучении система узнает веса в этой сети.Рис. 28. Схема глубокой Q-сети (DQN) для Breakout