Обучение с подкреплением в реальных задачах — Максим Кретов |
||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2017-11-09 00:34 Специалист по машинному обучению Максим Кретов об изобретении искусственного интеллекта, типах задач и характеристиках человеческого познавательного процесса ПостНаука продолжает рассказывать о современных технологиях в проекте «Банк знаний», подготовленном совместно с Корпоративным университетом Сбербанка.В последние десять лет наблюдается повышение интереса к машинному обучению, анализу данных как в фундаментальной науке, так и в прикладных исследованиях в этой области. Это связано с тем, что, по моему мнению, во-первых, стали доступны большие объемы вычислительных мощностей. Во-вторых, это повлекло за собой большое увеличение в объеме доступных данных. И это, в свою очередь, повлекло создание новых алгоритмов, которые сейчас очень бурно развиваются. Я буду рассказывать про довольно специфическую область машинного обучения, которая называется обучение с подкреплением. Вначале хотел бы коротко рассказать про постановку задачи: что такое машинное обучение и с какими типами задач работает эта область науки? Есть общепринятое, хотя и немного условное разделение задач, с которыми работает машинное обучение. Первый тип задач — это обучение с учителем, когда у нас есть какой-то большой объем данных. Например, есть картинки, и эти картинки размечены. То есть сказано, что на картинке 1 изображен автобус, на картинке 2 — автомобиль, на картинке 3 — опять автобус и так далее. У нас есть один или два миллиона картинок, и мы хотим создать алгоритм, который сможет нам по любой картинке, которую не видел ранее, сказать, что на ней изображено. Это задача обучения с учителем, потому что у нас есть отметки для всех примеров в обучающей выборке, то есть для всех картинок указано, что на них изображено. Эта задача очень рельефно показывает, в чем особенности и в чем преимущество машинного обучения по сравнению с какими-то традиционными, более простыми подходами. Например, если бы мы хотели определять, что изображено на картинке, то есть выбирать между любыми двумя классами — не только между классами «автомобиль» и «автобус», а например, «кот» и «собака», — то нам бы пришлось переписывать нашу программу целиком заново. Если мы изначально сделали какую-то большую сложную программу, которая умеет отличать автобус от автомобиля, потому что она умеет выделять оттуда какие-то конкретные признаки из данных изображений, то при переключении на другую задачу с другими классами нам пришлось бы целиком программировать все с самого начала, выделять какие-то признаки для новых классов: есть кот, у него есть шерсть; вот собака, она больше по размеру и так далее. То есть нам пришлось бы решать задачу с самого начала. Машинное обучение позволяет эту сложную работу по выделению признаков переложить на плечи компьютера. У нас есть один более-менее универсальный алгоритм, которому мы можем давать различные наборы данных, ставить различные задачи, и он сам будет решать задачу выделения ключевых признаков и классификации картинок в данном случае или других объектов по категориям, которые нам необходимы. В этом принципиальное преимущество машинного обучения. То есть машина учится извлекать знания из тех данных, которые мы ей предоставили. И от человека требуется только задать какую-то изначальную структуру этого алгоритма. Это первый тип задач — обучение с учителем. Второй тип задач, особенно важный сейчас, — это обучение без учителя. Вообще существует уже довольно много размеченных данных, где указано, к какому классу принадлежит изображение либо, скажем, звуки, которым даны текстовые аннотации. Но в то же время гораздо больше данных, где нет такой разметки. То есть картинки без всяких аннотаций, просто какие-то звуки, какие-то тексты, никак не классифицированные. Этих данных гораздо больше, чем размеченных, обработанных данных. И это как раз те данные, с которыми работает постановка задач обучения без учителя. По-другому ее можно назвать «выделение знаний». То есть у нас есть какой-то большой массив информации, и мы хотим либо разбить эти объекты на какие-то классы — мы заранее даже можем не знать какие, — либо придумать для этих объектов более компактное описание. Что я имею в виду? Например, у нас есть, скажем, информация о миллионе особей какого-то вида, который характеризуется какими-то биологическими параметрами: рост, вес и еще какие-то величины. И мы знаем, что все эти особи относятся к разным видам, будучи принадлежащими к одному биологическому классу. Скажем, белый медведь, бурый медведь, медведь гризли и так далее. Мы можем, даже заранее не зная, какое количество видов изначально присутствует в этой большой выборке, попытаться выделить эту структуру и найти, сколько на самом деле там таких кластеров может быть, и после этого уже характеризовать любую особь более компактным образом. То есть не говорить, что есть медведь ростом 2 метра, весом 180 килограмм, а просто определять: вот это бурый медведь, это белый медведь, это еще какой-то тип медведей и так далее. То есть мы выделяем структуры из данных и придумываем для них компактные описания. Это задача обучения без учителя. И как раз то, про что я буду сейчас рассказывать, — это совсем другой тип задач в обучении с подкреплением. Задачи обучения с учителем и обучения без учителя довольно понятные, но они далеко отстоят от тех задач, с которыми мы сталкиваемся в реальной жизни.Рассмотрим гоночный трек, на котором нет никаких других машин, и наша задача — управлять машиной так, чтобы проехать, допустим, десять кругов за минимальное время. Машина подчиняется обычным физическим законам. Нам нужно проехать за минимальное время, и чем меньше время, за которое мы проехали этот трек, тем больше наша награда. То есть агент должен научиться максимально эффективно управлять машиной. Отметим, что данная задача подразумевает в себе большую свободу выбора, и нельзя сказать, что сложится какая-то критическая ситуация, если мы опоздаем на одну тысячную секунды, — результат не изменится. Поэтому мы можем чуть-чуть менять время, за которое проезжаем этот трек, но при этом должны выполнять какие-то очень строгие ограничения. Например, мы не должны заезжать за трассу или сломать машину. В данном случае это приводит к тому, что у нас очень много способов достичь нашей цели, изначально поставленной. У нас множество способов проехать этот трек. И все эти способы достигнуть цели будут в принципе для нас приемлемы. В данном случае оказался очень плодотворным подход, когда мы пытаемся понять, как же человек действует в этой ситуации, и дальше попробуем перенести эти приемы в математический формализм. И это проводит нас к новым алгоритмам, которые успешно справляются с этими задачами. Сейчас я хочу остановиться на трех идеях, которые позволяют создавать новые алгоритмы. Первая — это память. Представим себе, что наш агент помещен за руль управления. Он находится в водительском кресле и должен управлять оттуда. И представим, что у него сломалась приборная панель. То есть он не видит, какая скорость на спидометре. Для человека это бы не создало никаких особенных проблем, потому что человек и так очень легко может оценить, с какой скоростью движется автомобиль. Он помнит, где он был секунду назад, где он сейчас, и может из этого очень легко установить примерную скорость с точностью до 20 километров в час. То есть, если спидометр сломается, для человека это не будет проблемой. Если мы агенту (нашему алгоритму) будем подавать на вход только статическую картинку с водительского кресла, то в данном случае он не сможет эффективно управлять машиной, потому что не сможет извлечь информацию о том, с какой же скоростью двигался автомобиль. Чтобы примерно сосчитать, какая же скорость была у автомобиля, эффективно поворачивать и так далее, нужно хотя бы несколько последних кадров подавать агенту, чтобы он мог составить какую-то свою оценку скорости. Это как раз и есть память. Мы изначально агенту говорим, что он не должен ориентироваться на какой-то один статический кадр, но при этом должен запоминать несколько последних кадров и обрабатывать уже их в совокупности. Это как раз приводит нас к таким подходам в машинном обучении, как рекуррентные сети, или сети с памятью. Это такие сети, в которых мы можем использовать информацию из прошлого для того, чтобы сейчас принимать какие-то решения и совершать действия. Второй важный момент — это внимание. Например, нам нужно проехать не десять кругов, а сто по гоночному треку. И хотя бы один раз нам необходимо заправиться. Как можно это перевести в плоскость работы с агентом? В данном случае можно предложить такой двухшаговый алгоритм работы: сначала агент получает всю статическую картинку целиком, а дальше на основании этого выбирает, на какой области картинки ему сфокусироваться. То есть, если мы сейчас опять поместим агента в водительское кресло, он должен фокусироваться по большей части на том, что происходит за лобовым стеклом, то есть на каком-то участке картинки. Но время от времени должен обращать внимание на то, что же происходит с индикатором горючего. И как раз, когда топливо подходит к какой-то красной зоне, необходимо остановиться и пополнить запас горючего. Это так называемое внимание, которое тоже легко переносится на математические термины, когда мы говорим, что наш агент будет работать в таком двухшаговом режиме. Сначала в целом оценивать ситуацию, а потом уже принимать конкретное решение. Третье понятие, которое можно позаимствовать из того образа, как человек подходит к решению задач, — это любопытство. Рассмотрим еще одну простую задачу. Например, у нас есть лабиринт, в котором агент помещен в центр лабиринта, и агент должен найти из него выход. И пускай он получает свою награду, только когда он выходит из лабиринта, то есть полностью завершает задачу. Вначале, когда агент не знает еще ничего про лабиринт, то есть у него нет никакой картины, ничего подобного, он двигается случайно: пробует все возможные действия и часто может возвращаться на одно и то же место несколько раз. Он даже не исследует полностью ту среду, в которой он находится. Это не то, как действовал бы человек в данной ситуации, потому что человек бы постарался, во-первых, не возвращаться на одно и то же место несколько раз подряд: это ничем не помогает в решении задачи. Он бы постарался как-то исследовать этот лабиринт, может быть, составить карту и после этого уже попытаться найти выход.Как это можно перевести в такой более строгий формализм? Давайте просто введем внутреннее понятие агента о внутренней награде. Пусть агент получает какую-то свою внутреннюю награду или внутреннее поощрение за то, что он исследует новые области, то есть те области, в которых он уже не был. Мы вводим такое искусственное понятие, как поощрение агента за исследование новых неизвестных областей. Когда мы говорим про лабиринт, это будет означать, что агент, если у него есть выбор пойти направо и пойти налево, но при этом налево он уже ходил в этот ход, то он не будет получать такого поощрения, если пойдет налево. Он пойдет направо и попытается исследовать, что же в этом лабиринте было направо. Это избавляет нас от ситуаций, когда агент мечется в каком-то одном небольшом участке лабиринта и не пытается исследовать какие-то новые выходы. Итого три этих понятия — память, внимание, любопытство — находят очень простые, понятные аналогии между тем, как человек подходит к подобным простым задачам, и тем, как их можно перенести в такой более математический формализм машинного обучения. И на мой взгляд, одна из самых интересных задач сейчас в машинном обучении — это дизайн таких сред для агентов, в которых можно было бы выделять еще более фундаментальные характеристики человеческого познавательного процесса, помимо внимания и памяти, причем так, чтобы мы могли глобальную задачу — изобретение искусственного интеллекта — разбить на мелкие составляющие и есть этого большого слона по частям, решать эту задачу последовательно. Источник: postnauka.ru Комментарии: |
|