Примечание. В этой статье предполагается, что вы уже знаете основы нейронных сетей и Q-обучения.

Около шести месяцев назад я понял, что мне нужно выбрать тему для моей дипломной работы. Поскольку в моей основной учебной программе ИИ было не так много, я решил провести исследование в этой области, чтобы получить некоторые знания. Теперь мне нужно было решить, над какой подтемой ИИ я хочу работать, и мне быстро стало ясно, какой именно.

Меня всегда восхищали нейронные сети и их способность научиться аппроксимировать любую функцию. Я всегда думал, что это совершенно замечательная особенность, поскольку многие (если не все) проблемы могут быть смоделированы как функция (то есть что-то, что принимает некоторый ввод, выполняет некоторую обработку и производит некоторый вывод). Мне кажется, что, хотя мы еще далеки от этого, нейронные сети могут сыграть очень важную роль на пути к конечной цели - достижению общего ИИ.

С другой стороны, в последние годы небольшая компания DeepMind, ныне принадлежащая Google, продемонстрировала большие успехи в обучении с подкреплением, и в частности в том, что она называет глубоким обучением с подкреплением (т. Е. Сочетанием нейронных сетей с обучение с подкреплением). В случае Q-обучения принцип, лежащий в основе этого, заключается в том, что, поскольку нейронные сети являются очень хорошими аппроксиматорами функций, почему бы не использовать их для аппроксимации Q-функции? Глубокое обучение с Q-обучением - очень крутая концепция, поскольку другие методы, которые использовались ранее для аппроксимации Q-функции, быстро стали невозможными, когда представление состояния выросло в размерности. Использование описанной техники позволило DeepMind создать алгоритм, способный играть во многие игры Atari лучше, чем профессиональные игроки-люди, без явного кодирования логики и правил каждой игры [1]. Другими словами, алгоритм сам узнал, что лучше всего делать, просто глядя на пиксели игры, счет и давая возможность выбирать действие (т. Е. Манипулировать элементами управления игрой), как это сделал бы любой игрок-человек. быть способным к.

Но более того, обучение с подкреплением - еще одна увлекательная сторона машинного обучения, поскольку оно напоминает то, как мы, люди, учимся. Все, что мы делаем в жизни, приносит нам взамен положительную или отрицательную награду. Хорошая работа принесет нам одобрение коллег, начальника, деньги или даже улыбку тех, кому эта работа принесла пользу. Эти вещи кажутся хорошими, наш мозг выделяет дофамин, поэтому мы хотим повторить это снова, и это положительная награда. Но попасть в автокатастрофу - это нехорошо, поэтому в следующий раз мы постараемся быть более осторожными, поскольку не хотим, чтобы это повторилось снова. Мы хотим получить максимальное вознаграждение, мы учимся, и делаем это путем подкрепления. С опытом мы научимся что-то делать, точно так же, как это делают алгоритмы обучения с подкреплением.

Тем не менее, с помощью как глубокого обучения, так и обучения с подкреплением мы можем моделировать огромное количество проблем, с которыми мы, люди, сталкиваемся каждый день, и именно это делает их очень интересными. Это то же самое, что и энергосистемы, например, автономные автомобили. Могут ли они быть ответом на достижение общего ИИ? Только время покажет, но они, безусловно, приводят нас к интересным вещам.

Теперь о проекте…

По результатам, опубликованным DeepMind в одной из своих статей, один из графиков выглядел так:

На приведенном выше графике показано, как алгоритм DeepMind работает с «лучшими методами обучения с подкреплением в литературе». Однако интересной частью является линия посередине, которая показывает, как алгоритм работает по сравнению с профессиональными игроками-людьми. Производительность алгоритмов была нормализована по отношению к производительности игроков-людей (уровень 100%). Как видите, производительность алгоритма в таких играх, как Ms. PacMan, была очень низкой. Они конкретно не упоминают причину этого, но, похоже, это связано с относительно долгосрочным планированием, которое требует игра, в сочетании с тем фактом, что Q-обучение, как оно обычно реализуется, как известно, имеет такие временные ограничения. .

После прочтения публикации у меня возникли некоторые вопросы, связанные с подходом DeepMind, в частности с тем фактом, что они использовали сами пиксели игры в качестве представления состояния. Это примечательно, поскольку это та же информация, которую наш мозг получает в качестве входных данных, и она также очень хороша в том смысле, что она очень хорошо обобщается для других игр. Однако у меня было сомнение в том, что произойдет, если мы предоставим агенту больше «рассчитанной» информации, то есть представление состояния, состоящее из информации, отличной от пикселей. Какое влияние оказало государственное представительство на процесс обучения и результат? Тогда я решил поработать с игрой (PacMan), написать агент глубокого Q-обучения на Python и искать ответы.

Чтобы прояснить, я не претендовал на улучшение производительности, которую DeepMind достиг в играх ниже человеческого уровня. Я пытаюсь показать, как возникли вопросы, которые превратились в мою дипломную работу, и именно эта линия «человеческого уровня» вызвала у меня эти вопросы.

Теперь выяснение того, каковы последствия изменения представления состояния, было основной целью исследования вначале, однако в ходе процесса возник еще один вопрос, который, как мне казалось, стоило исследовать, а именно: как (или если) и то, и другое, варьируя топология нейронной сети и наличие сохраненного файла воспроизведения опыта перед началом обучения повлияли на процесс обучения и результат работы алгоритма.

Чтобы немного расширить вторую часть, воспроизведение опыта - это один из приемов, который, как было обнаружено, является одним из наиболее важных оптимизаций, которые позволят нейронной сети обучаться за разумное время (или даже сходиться). Это связано с тем, что этот метод нарушает концепцию непрерывности между любыми двумя переходами, давая сети возможность также более эффективно укрепить свои знания о предыдущем опыте. Я хотел знать, учитывая, что воспроизведение опыта полезно, может ли быть полезным иметь заранее заполненную (постоянную) память воспроизведения опыта с самого начала? Может ли это помочь алгоритму достичь сходимости быстрее, чем заполнять память воспроизведения каждый раз с нуля?

Здесь я хотел бы рассказать вам многое из того, что написано в отчете [2], поэтому я рекомендую вам прочитать статью, если вы сочтете исследование интересным. Вкратце, я обнаружил, что все три аспекта значительно влияют на процесс обучения. Во-первых, я мог видеть, что представление состояния должно быть как можно более простым (но полным), поскольку более простые представления состояния значительно легче тренировать. Во-вторых, я обнаружил, что наличие предварительно рассчитанной, большой, постоянной памяти воспроизведения может значительно улучшить скорость обучения, но следует принять некоторые меры предосторожности, чтобы не повлиять на то, что узнает агент (например, когда прошлый опыт значительно превышает количество новых). . Наконец, я также мог видеть, что изменение топологии нейронной сети действительно оказывает важное влияние на результат обучения. Гипотеза, которую я смог извлечь, заключается в том, что для обучения более крупных сетей требуется значительно больше времени, и они не могут обучаться вовремя, поэтому следует выбрать подходящую топологию (то есть такую, которая достаточно сложна, чтобы иметь возможность аппроксимировать Q-функцию для конкретного случая). проблема, но не более сложная).

Опыт

Я получил массу удовольствия от этого проекта, но, более того, я многому научился. Исходя из своего опыта, я считаю, что обучение с подкреплением может быть очень мощным, особенно в сочетании с нейронными сетями. Однако именно эта комбинация может сделать процесс немного разочаровывающим, если вы ожидаете, что ваша модель научится в течение пары часов, а затем будет побеждать в каждой игре, в которой вы играете против нее. Реальность такова, что нейронные сети, хотя и очень мощные, могут потребовать очень тонкой настройки, чтобы действительно чему-то научиться. Но более того, вы должны быть очень осторожны, например, с выбранными вами параметрами, топологией и функциями активации, поскольку некоторые из этих аспектов могут представлять разницу между нейронной сетью, которая очень хорошо выполняет свою работу в разумных пределах. время и нейронная сеть, которая ничего не узнает. Таким образом, получение хорошей модели может потребовать множества оптимизаций и самоотверженности, однако, когда вы достигнете такой модели, результаты могут быть очень неожиданными (как показали нам такие группы, как DeepMind).

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

Подводя итог, вы многому научитесь, проводя различные эксперименты. Тем не менее, если вы планируете погрузиться в глубокое обучение с подкреплением (каламбуры, изначально не предназначенные), я бы порекомендовал сначала хорошо разбираться в нейронных сетях, немного терпения, и хорошая машина / графический процессор также могут быть очень полезны в зависимости от проблемы.

Наконец, почему именно PacMan?

Поскольку это игра, которая мне очень нравится, то есть кому не нравится?

Ссылки

[1] В. Мних и др., «Контроль на уровне человека посредством глубокого обучения с подкреплением, Nature, т. 518, нет. 7540, стр. 529–533, февраль 2015 г. »

[2] Д. Монтойя, «Изучение того, как различные представления и конфигурации состояний влияют на процесс обучения и результаты алгоритмов глубокого Q-обучения, Universidad de los Andes, 2016. »

Интересные ссылки