Глубинное обучение и обучение с подкреплением — Евгений Бурнаев

МЕНЮ


Новости ИИ
Поиск

ТЕМЫ


Big data
Беспилотные автомобили
БПЛА
генетические алгоритмы
Головной мозг
городские сумасшедшие
дополнительная реальность
ИИ проекты
интернет вещей
искусственный интеллект
ИТ-гиганты
квантовые компьютеры
кибербезопасность
Кластеризация
Машинное обучение
Методы научного исследования
наука и образование
нейронные процессоры
нейронные сети
Нейронные сети: искусственные
Нейронные сети: реализация
облачные вычисления
Поведение животных
Поисковые алгоритмы. Ранжирование
Психология
Работа памяти
Разработка ПО
распознавание образов
Распознавание речи
робототехника
Семинары
суперкомпьютеры
Теория эволюции
техническое зрение
Трансгуманизм
Угроза искусственного интеллекта
Чат-боты

АРХИВ


Апрель 2017
Март 2017
Февраль 2017
Январь 2017
Декабрь 2016
Ноябрь 2016
Октябрь 2016
Сентябрь 2016
Август 2016
Июль 2016
Июнь 2016
Май 2016
Апрель 2016
Март 2016
Февраль 2016
Январь 2016
0000

RSS


RSS новости
свиной грипп

Новостная лента форума ailab.ru

Пять лет назад компания DeepMind, офис которой был в Лондоне, выпустила статью, в которой описала, как делать обучение с подкреплением с применением глубинного обучения. Может быть, вы помните, в 1990-х были приставки Dendy, в них можно было играть в такие незамысловатые игры вроде Breakout. Конкретно в этой игре необходимо было управлять пластинкой, которая отбивала мячик, он разрушал некоторое количество кубиков, расположенных наверху экрана. Компания DeepMind построила алгоритм, который умел играть в игры Atari зачастую даже лучше, чем человек. И самое главное, этот алгоритм принимал на вход просто изображение с экрана компьютера.

Один и тот же алгоритм — не было никакой подстройки под конкретную игру — мог обучиться на данных любой из тестируемых игр. Через какое-то время его удавалось обучить так, чтобы он играл не хуже человека. С тех пор этот результат стали называть первым шагом к построению общего искусственного интеллекта. Дело в том, что все приложения, алгоритмы, которые до этого играли в те или иные компьютерные игры или шахматы, были очень сильно ограничены правилами соответствующих игр, в частности правилами шахмат. То есть алгоритмы затачивались исключительно под правила той или иной игры. Алгоритм, который был разработан компанией DeepMind, был самым общим, и не удивительно, что вскоре эту компанию купил Google.

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

Что же такое обучение с подкреплением? Рассмотрим игру Breakout. В ней игрок управляет пластинкой, и у него есть три возможных действия: сдвинуть пластинку влево, сдвинуть пластинку вправо, либо стартануть с этой пластинки шарик. Шарик отскакивает, разрушает блоки наверху экрана, отскакивает от стенок, и дальше необходимо пластинкой его снова подбить, чтобы он полетел вверх. Мы хотим построить алгоритм, который бы автоматически управлял этой пластинкой. Кажется, что данную задачу разумно рассматривать как задачу классификации. Для каждой игровой ситуации мы можем сказать, в какую сторону правильнее всего было бы сдвинуть пластинку. Однако в силу того, что в этой задаче число вариантов и число состояний просто огромно, положение пластинки может быть очень разным, шарик может находиться в разных положениях, то очевидно, что необходима очень большая обучающая выборка.

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

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

Далее, допустим, в ходе игры была разработана и апробирована та или иная стратегия. Возникает вопрос: а нужно ли пытаться найти другую, более эффективную стратегию и как это сделать автоматически? В игре Breakout мы всегда можем поставить пластинку в левый дальний угол, и с ненулевой вероятностью мячик периодически на нее будет попадать, потом отскакивать, рушить какие-то кирпичики, и какое-то небольшое число очков мы за это будем получать. Нужно ли пытаться построить более сложную стратегию и как это сделать адаптивно?

Для того чтобы ответить на поставленный вопрос, необходимо формализовать описание задачи обучения с подкреплением. Одним из наиболее естественных подходов к формализации является использование такого понятия, как марковский процесс принятия решений. Речь идет о том, что у нас есть некая среда (в примере с игрой это сама игра), в ней действует агент — что-то, что управляет этой пластинкой, ее движением. У агента есть несколько действий: сдвинуть пластинку влево или сдвинуть пластинку вправо. Как только агент совершил действие, среда приходит в новое состояние в зависимости от того, какое состояние было перед этим и какое действие совершил агент. При этом этот переход случайный, то есть мы из какого-то состояния, совершив какое-то действие, можем переходить в разные состояния.

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

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

Хорошей стратегией для агента является выбрать такую стратегию, которая в будущем приведет к максимальному накопленному выигрышу. Для того чтобы такую штуку реализовать, используют так называемую Q-функцию, которая оценивает ценность действия, если оно будет совершено при условии некоторого конкретного состояния среды. Эта ценность учитывает всевозможные будущие исходы в игре. С одной стороны, кажется, что эти функции построить нельзя, однако оказывается, что если мы используем марковскую модель, то есть марковский процесс принятия решений, то Q-функция будет удовлетворять уравнению Беллмана. Уравнение Беллмана выражает очень простую мысль: ценность конкретного действия при условии какого-то конкретного состояния равна мгновенной премии плюс ценность следующего действия. Используя уравнение Беллмана, можно построить итеративный процесс аппроксимации Q-функции. Как только мы Q-функцию аппроксимировали, мы можем на ее основе построить эффективную стратегию управления агентом. Действительно, просто мы будем для каждого текущего состояния выбирать такое действие, которое максимизирует Q-функцию.

В нашем распоряжении имеется огромное пространство состояний, однако это пространство состояний очень сильно разрежено. Здесь вступает в игру глубинное обучение. Как оказалось, нейросетки, содержащие большое число слоев, так называемые глубинные нейросетки, позволяют хорошо моделировать разреженные пространства состояний. Используется, к слову, сверточная нейросеть, внутри слоев которой вычисляются свертки изображений с некоторыми специальными фильтрами. Если нейросетка применяется к этому пространству состояний, задаваемому четырьмя подряд идущими кадрами, то по этим изображениям считают определенные признаки, а потом на этих признаках фактически решается задача регрессии. На вход поступают признаки, а на выход ? значения Q-функции, которую мы и хотим аппроксимировать. Решив эту задачу регрессии, мы с помощью нейросетки получаем эффективное представление Q-функции ? такое, что фактически входным для нейросетки является состояние и действие, а выходом в нейросетке является прогноз значений Q-функции. Мы для заданного состояния выбираем такое действие, чтобы значение Q-функции на данном шаге было максимальным среди всевозможных действий.

Оказывается, этот подход вполне универсален и хорошо работает. Но некоторое количество трюков, для того чтобы эту нейросетку обучить, все равно приходится применять. Один из трюков можно хорошо описать житейской пословицей: «Повторение — мать ученья». Речь идет о том, что во время обучения нейросетке не только подсовываются новые пары состояний, действий и соответствующего им значения Q-функции, а также периодически предъявляются пары, то есть прецеденты этих значений состояний, действий и значений Q-функций, которые уже были до этого в истории. Оказалось, что такого типа инженерный трюк позволяет с существенно лучшей точностью ускорить обучение. Другой инженерный трюк, который здесь очень существенный, ? это так называемое исследование пространства состояний, то есть когда периодически происходит случайное действие в попытках найти более эффективную стратегию. В случае игры Breakout это случайное движение пластинки, которое не следует из текущего значения Q-функции. Есть и другие хитрости, но главное остается неизменным: это действительно очень интересное приложение и большой шаг на пути к созданию приложений искусственного интеллекта.


Источник: vk.com