Обучение с подкреплением в реальных задачах — Максим Кретов

МЕНЮ


Искусственный интеллект. Новости
Поиск

ТЕМЫ


Внедрение ИИНовости ИИРобототехника, БПЛАТрансгуманизмЛингвистика, обработка текстаБиология, теория эволюцииВиртулаьная и дополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информации

RSS


RSS новости

Авторизация



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

Специалист по машинному обучению Максим Кретов об изобретении искусственного интеллекта, типах задач и характеристиках человеческого познавательного процесса

ПостНаука продолжает рассказывать о современных технологиях в проекте «Банк знаний», подготовленном совместно с Корпоративным университетом Сбербанка.

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

Есть общепринятое, хотя и немного условное разделение задач, с которыми работает машинное обучение. Первый тип задач — это обучение с учителем, когда у нас есть какой-то большой объем данных. Например, есть картинки, и эти картинки размечены. То есть сказано, что на картинке 1 изображен автобус, на картинке 2 — автомобиль, на картинке 3 — опять автобус и так далее. У нас есть один или два миллиона картинок, и мы хотим создать алгоритм, который сможет нам по любой картинке, которую не видел ранее, сказать, что на ней изображено. Это задача обучения с учителем, потому что у нас есть отметки для всех примеров в обучающей выборке, то есть для всех картинок указано, что на них изображено.

Эта задача очень рельефно показывает, в чем особенности и в чем преимущество машинного обучения по сравнению с какими-то традиционными, более простыми подходами. Например, если бы мы хотели определять, что изображено на картинке, то есть выбирать между любыми двумя классами — не только между классами «автомобиль» и «автобус», а например, «кот» и «собака», — то нам бы пришлось переписывать нашу программу целиком заново. Если мы изначально сделали какую-то большую сложную программу, которая умеет отличать автобус от автомобиля, потому что она умеет выделять оттуда какие-то конкретные признаки из данных изображений, то при переключении на другую задачу с другими классами нам пришлось бы целиком программировать все с самого начала, выделять какие-то признаки для новых классов: есть кот, у него есть шерсть; вот собака, она больше по размеру и так далее. То есть нам пришлось бы решать задачу с самого начала.

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

Второй тип задач, особенно важный сейчас, — это обучение без учителя. Вообще существует уже довольно много размеченных данных, где указано, к какому классу принадлежит изображение либо, скажем, звуки, которым даны текстовые аннотации. Но в то же время гораздо больше данных, где нет такой разметки. То есть картинки без всяких аннотаций, просто какие-то звуки, какие-то тексты, никак не классифицированные. Этих данных гораздо больше, чем размеченных, обработанных данных. И это как раз те данные, с которыми работает постановка задач обучения без учителя. По-другому ее можно назвать «выделение знаний». То есть у нас есть какой-то большой массив информации, и мы хотим либо разбить эти объекты на какие-то классы — мы заранее даже можем не знать какие, — либо придумать для этих объектов более компактное описание.

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

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

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

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

Первая — это память. Представим себе, что наш агент помещен за руль управления. Он находится в водительском кресле и должен управлять оттуда. И представим, что у него сломалась приборная панель. То есть он не видит, какая скорость на спидометре. Для человека это бы не создало никаких особенных проблем, потому что человек и так очень легко может оценить, с какой скоростью движется автомобиль. Он помнит, где он был секунду назад, где он сейчас, и может из этого очень легко установить примерную скорость с точностью до 20 километров в час. То есть, если спидометр сломается, для человека это не будет проблемой. Если мы агенту (нашему алгоритму) будем подавать на вход только статическую картинку с водительского кресла, то в данном случае он не сможет эффективно управлять машиной, потому что не сможет извлечь информацию о том, с какой же скоростью двигался автомобиль. Чтобы примерно сосчитать, какая же скорость была у автомобиля, эффективно поворачивать и так далее, нужно хотя бы несколько последних кадров подавать агенту, чтобы он мог составить какую-то свою оценку скорости. Это как раз и есть память. Мы изначально агенту говорим, что он не должен ориентироваться на какой-то один статический кадр, но при этом должен запоминать несколько последних кадров и обрабатывать уже их в совокупности.

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

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

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

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

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


Источник: postnauka.ru