Еще в начале 2018 года была опубликована статья Глубокое обучение с подкреплением пока не работает («Обучение с подкреплением пока не работает»).
Основная претензия заключалась в том, что современные алгоритмы обучения с подкреплением требуют для решения задачи примерно столько же времени, сколько обычный случайный поиск.
Изменилось ли что-нибудь с тех пор? Нет. Обучение с подкреплением считается одним из трех основных путей создания сильного ИИ.
Но проблемы, стоящие перед этой областью машинного обучения, и способы, которыми ученые пытаются бороться с этими проблемами, позволяют предположить, что в самом подходе могут быть фундаментальные проблемы.
Подождите, что означает один из трех? Какие еще два?
Принимая во внимание успехи нейронных сетей в последние годы и анализ того, как они работают с когнитивными способностями высокого уровня, ранее считавшимися свойственными только человеку и высшим животным, сегодня в научном сообществе бытует мнение, что существует три основных подхода к можно выделить создание сильного ИИ: на основе нейронных сетей, который можно считать более или менее реалистичным:1. Обработка текста
В мире накопилось огромное количество книг и текстов в Интернете, включая учебники и справочники.Текст удобен и быстр для обработки на компьютере.
Теоретически этого массива текстов должно быть достаточно для тренировки сильного разговорного ИИ.
Подразумевается, что эти текстовые массивы отражают полную структуру мира (как минимум, она описана в учебниках и справочниках).
Но это совершенно не факт. Тексты как вид подачи информации сильно оторваны от реального трехмерного мира и течения времени, в котором мы живем.
Хорошими примерами ИИ, обученного работе с текстовыми массивами, являются чат-боты и автоматические переводчики.
Так как для перевода текста необходимо понять смысл фразы и пересказать ее новыми словами (на другом языке).
Существует распространенное заблуждение, что правила грамматики и синтаксиса, включая описание всех возможных исключений, полностью описывают конкретный язык.
Это не верно.
Язык — всего лишь вспомогательный инструмент в жизни; он легко меняется и приспосабливается к новым ситуациям.
Проблема обработки текста (либо экспертными системами, либо нейронными сетями) заключается в том, что не существует свод правил, какие фразы следует использовать в каких ситуациях.
Обратите внимание – не сами правила построения фраз (что делают грамматика и синтаксис), а именно какие фразы в каких жизненных ситуациях.
В одной и той же ситуации люди произносят фразы на разных языках, никак не связанные друг с другом по строению языка.
Сравните фразы с крайним удивлением: «О Боже!» и «о, черт возьми!» Ну а как можно провести между ними соответствие, зная языковую модель? Ни за что.
Это произошло исторически случайно.
Вам необходимо знать ситуацию и то, на каком конкретном языке в ней обычно говорят. Именно поэтому автоматические переводчики до сих пор так несовершенны.
Неизвестно, можно ли выделить эти знания исключительно из массива текстов.
Но если автоматические переводчики начнут переводить идеально, не допуская глупых и нелепых ошибок, то это станет доказательством того, что создание сильного ИИ, основанного только на тексте, возможно.
2. Распознавание изображений
Посмотрите на это изображениеГлядя на это фото, мы понимаем, что стрельба произошла ночью.
Судя по флагам, ветер дует справа налево.
И судя по правостороннему движению, в Англии или Австралии такого не происходит. Никакая эта информация не указывается явно в пикселях изображения; это внешнее знание.
На фото показаны только знаки, по которым мы можем использовать знания, полученные из других источников.
Знаете ли вы что-то еще, глядя на эту картинку? Вот о чем мы говорим.
И найди наконец себе девушку Поэтому считается, что если научить нейросеть распознавать объекты на картинке, она выработает внутреннее представление о том, как устроен реальный мир.
И это представление, полученное из фотографий, наверняка будет соответствовать нашему реальному и нынешнему миру.
В отличие от массивов текстов, где это не гарантируется.
Ценность нейронных сетей, обученных на массиве фотографий ImageNet (а теперь OpenImages V4 , КОКО , КИТТИ , БДД100К и другие) вовсе не в факте узнавания кота на фотографии.
И в том, что хранится в предпоследнем слое.
Именно там находится набор высокоуровневых функций, описывающих наш мир.
Вектора из 1024 чисел достаточно, чтобы получить из него описание 1000 различных категорий объектов с точностью 80% (и в 95% случаев правильный ответ будет в 5 ближайших вариантах).
Просто подумай об этом.
Именно поэтому эти возможности предпоследнего слоя так успешно используются в совершенно разных задачах компьютерного зрения.
Через трансферное обучение и тонкую настройку.
Из этого вектора из 1024 чисел можно получить, например, карту глубины с картинки
(пример из работа , где используется практически неизмененная предварительно обученная сеть Densenet-169) Или определить позу человека.
Есть много приложений.
В результате распознавание изображений потенциально может быть использовано для создания сильного ИИ, поскольку оно действительно отражает модель нашего реального мира.
От фотографии до видео один шаг, а видео – это наша жизнь, поскольку около 99% информации мы получаем визуально.
Но по фотографии совершенно непонятно, как заставить нейросеть думать и делать выводы.
Ее можно научить отвечать на такие вопросы, как «сколько карандашей на столеЭ» (этот класс задач называется «Визуальный ответ на вопрос», пример такого набора данных: https://visualqa.org ).
Или дайте текстовое описание того, что происходит на фотографии.
Это класс проблем Подпись к изображению .
Но разве это интеллект? Разработав этот подход, нейросети в ближайшем будущем смогут отвечать по видео на вопросы типа «На проводах сидели два воробья, один из них улетел, сколько воробьев осталосьЭ» Это настоящая математика, в несколько более сложных случаях, недоступная животным и на уровне школьного образования человека.
Особенно, если кроме воробьев рядом будут сидеть синички, но их не нужно учитывать, поскольку речь шла только о воробьях.
Да, это обязательно будет интеллект.
3. Обучение с подкреплением
Идея очень проста: вознаграждайте действия, которые ведут к вознаграждению, и избегайте действий, которые ведут к неудаче.Это универсальный способ обучения и, очевидно, он определенно может привести к созданию сильного ИИ.
Вот почему в последние годы такой большой интерес к обучению с подкреплением.
Перемешать, но не взбалтывать Конечно, лучше всего создать сильный ИИ, объединив все три подхода.
С помощью изображений и обучения с подкреплением вы можете получить ИИ на уровне животных.
А добавив к картинкам текстовые названия предметов (шутка, конечно, заставляя ИИ смотреть видео, где люди взаимодействуют и разговаривают, как при обучении малыша), и дополнительно тренироваться на текстовом массиве для получения знаний (аналог в нашу школу и университет), теоретически вы можете получить ИИ человеческого уровня.
Умеет говорить.
Обучение с подкреплением имеет одно большое преимущество.
В симуляторе можно создать упрощенную модель мира.
Так, для человеческой фигурки достаточно всего 17 степеней свободы вместо 700 у живого человека (приблизительное количество мышц).
Поэтому в симуляторе можно решить задачу в очень малом измерении.
Забегая вперед, современные алгоритмы обучения с подкреплением не способны произвольно управлять моделью человека даже с 17 степенями свободы.
То есть они не могут решить задачу оптимизации, где на входе 44 числа, а на выходе — 17. Это можно сделать только в очень простых случаях, с тонкой ручной настройкой начальных условий и гиперпараметров.
И даже в этом случае, например, чтобы научить гуманоидную модель с 17 степенями свободы бегать, начиная с положения стоя (что гораздо проще), нужно несколько дней вычислений на мощном графическом процессоре.
А чуть более сложные случаи, например, обучение вставанию из произвольной позы, можно вообще никогда не выучить.
Это провал.
Кроме того, все алгоритмы Reinforcement Learning работают с удручающе маленькими нейронными сетями, но не справляются с обучением больших.
Большие сверточные сети используются только для уменьшения размера изображения до нескольких признаков, которые подаются на вход алгоритмов обучения с подкреплением.
Тот же бегущий гуманоид управляется сетью Feed Forward с двумя или тремя слоями по 128 нейронов.
Серьезно? И на основе этого мы пытаемся построить сильный ИИ? Чтобы попытаться понять, почему это происходит и что не так с обучением с подкреплением, мы должны сначала ознакомиться с основными архитектурами современного обучения с подкреплением.
Физическая структура мозга и нервной системы приспособлена эволюцией к определенному виду животного и условиям его жизни.
Таким образом, у мух в процессе эволюции выработалась такая нервная система и такая работа нейромедиаторов в ганглиях (аналог мозга у насекомых), чтобы быстро уворачиваться от мухобойки.
Ну да ладно, не от мухобойки, а от птиц, которые их ловили уже 400 миллионов лет (шучу, сами птицы появились 150 миллионов лет назад, а не от лягушек 360 миллионов лет назад).
А носорогу такой нервной системы и мозга достаточно, чтобы медленно развернуться в сторону цели и начать бежать.
А там, как говорится, у носорога плохое зрение, но это уже не его проблема.
Но помимо эволюции, для каждого индивидуума, начиная с рождения и на протяжении всей жизни, работает обычный механизм обучения с подкреплением.
В случае млекопитающих и насекомые тоже , эту работу выполняет дофаминовая система.
Ее работа полна тайн и нюансов, но все сводится к тому, что в случае получения вознаграждения дофаминовая система посредством механизмов памяти каким-то образом усиливает связи между нейронами, которые были активны непосредственно перед этим.
Так формируется ассоциативная память.
Который в силу своей ассоциативности затем используется при принятии решений.
Проще говоря, если текущая ситуация (текущие активные нейроны в этой ситуации) активирует нейроны памяти удовольствия согласно ассоциативной памяти, то индивид выбирает действия, которые он совершил в аналогичной ситуации и которые он запомнил.
«Выбирает действия» — плохое описание.
Нет выбора.
Просто активированные нейроны памяти удовольствия, закрепленные дофаминовой системой в конкретной ситуации, автоматически активируют мотонейроны, которые приводят к сокращению мышц.
Это если необходимы немедленные действия.
Обучение с искусственным подкреплением, как область знаний, должно решить обе эти проблемы:
1. Выбираем архитектуру нейросети (что за нас уже сделала эволюция)
Хорошей новостью является то, что высшие когнитивные функции, выполняемые в неокортексе млекопитающих (и в полосатом теле врановых ), выполняются примерно однородной структуры.Судя по всему, для этого не требуется какой-то строго определенной «архитектуры».
Разнообразие участков мозга, вероятно, обусловлено чисто историческими причинами.
Когда в ходе эволюции новые части мозга вырастали поверх основных, оставшихся от самых первых животных.
Работает по принципу - не трогай.
С другой стороны, у разных людей одни и те же части мозга реагируют на одни и те же ситуации.
Это можно объяснить как ассоциативностью (особенности и «бабушкины нейроны» естественным образом сформировались в этих местах в процессе обучения), так и физиологией.
Что сигнальные пути, закодированные в генах, ведут именно к этим областям.
Здесь нет единого мнения, но вы можете прочитать, например, эту недавнюю статью: «Биологический и искусственный интеллект» .
2. Научитесь обучать нейронные сети, используя принципы обучения с подкреплением.
По сути, это то, что делает современное обучение с подкреплением.
И какие успехи? Не хорошо.
Наивный подход Казалось бы, обучение нейросети с подкреплением очень просто: мы совершаем случайные действия, и если получаем вознаграждение, то считаем совершенные действия «эталонными».
Мы размещаем их на выходе нейронной сети как стандартные метки и обучаем нейронную сеть методом обратного распространения ошибки, чтобы она выдавала точно такой же результат. Ну и самое обычное обучение нейросети.
А если действия приводят к сбою, то мы либо игнорируем этот случай, либо подавляем эти действия (задаем в качестве стандартного вывода какие-то другие, например, любое другое случайное действие).
В целом эта идея повторяет дофаминовую систему.
Но если попытаться обучить таким образом любую нейронную сеть, какой бы сложной она ни была по архитектуре, рекуррентной, сверточной или обычной прямой связи, то… Ничего не получится! Почему? Неизвестный.
Считается, что полезный сигнал настолько мал, что теряется на фоне шума.
Поэтому сеть не обучается с использованием стандартного метода обратного распространения ошибки.
Награда случается очень редко, может быть, раз в сотни или даже тысячи шагов.
И даже LSTM запоминает максимум 100-500 точек истории, и то только в очень простых задачах.
А на более сложных, если точек истории 10-20, то это хорошо.
Но корень проблемы лежит именно в очень редких наградах (по крайней мере, в заданиях, имеющих практическую ценность).
На данный момент мы не знаем, как обучать нейронные сети, которые запоминали бы единичные случаи.
С чем мозг справляется блестяще.
Вы можете запомнить то, что произошло всего один раз, на всю оставшуюся жизнь.
И, кстати, большая часть обучения и работы интеллекта основана именно на таких случаях.
Это что-то вроде ужасного классового дисбаланса в области распознавания изображений.
Способов с этим справиться просто нет. Лучшее, что нам пока удалось придумать, — это просто подавать на вход сети вместе с новыми ситуациями успешные ситуации из прошлого, хранящиеся в специальном искусственном буфере.
То есть постоянно обучать не только новым делам, но и успешным старым.
Естественно, такой буфер не может увеличиваться бесконечно, и непонятно, что именно в нем должно храниться.
Они также пытаются как-то временно зафиксировать пути внутри нейронной сети, которые были активны во время успешного события, чтобы последующее обучение не перезаписало их.
Достаточно близкая аналогия с тем, что происходит в мозгу, на мой взгляд, хотя особых успехов в этом направлении пока не достигнуто.
Поскольку новые обученные задачи в своем расчете также используют результаты выхода нейронов из замороженных путей, в конечном итоге сигнал только по этим замороженным путям мешает новым, и старые задачи перестают работать.
Есть еще один интересный подход: обучать сеть новым примерам/задачам только в направлении, ортогональном предыдущим задачам ( https://arxiv.org/abs/1810.01256 ).
Это не отменяет предыдущий опыт, но серьезно ограничивает пропускную способность сети.
В метаобучении разрабатывается отдельный класс алгоритмов, предназначенных для борьбы с этой проблемой (и одновременно дающих надежду на достижение сильного ИИ).
Это попытки обучить нейросеть сразу нескольким задачам.
Не в смысле распознавания разных картинок в одной задаче, а скорее в разных задачах в разных областях (каждая со своим распределением и ландшафтом решений).
Допустим, распознавать картинки и одновременно кататься на велосипеде.
Успех пока тоже не очень хороший, так как обычно все сводится к тому, чтобы заранее подготовить нейросети с общими универсальными весами, а затем быстро, всего за несколько шагов градиентного спуска, адаптировать их под конкретную задачу.
Примерами алгоритмов метаобучения являются MAML и Рептилия .
В общем, только эта проблема (неспособность учиться на единичных успешных примерах) ставит крест на современном обучении с подкреплением.
Вся мощь нейронных сетей по-прежнему бессильна перед этим печальным фактом.
Тот факт, что самый простой и очевидный метод не работает, заставил исследователей вернуться к классическому табличному обучению с подкреплением.
Которая как наука появилась еще в седой древности, когда нейронных сетей еще не было в проекте.
Но теперь вместо того, чтобы вручную считать значения в таблицах и формулах, давайте в качестве целевых функций использовать такой мощный аппроксиматор, как нейронные сети! В этом вся суть современного обучения с подкреплением.
И его главное отличие от обычного обучения нейросетей.
Q-обучение и DQN Обучение с подкреплением (еще до появления нейронных сетей) зародилось как довольно простая и оригинальная идея: давайте снова проделаем случайные действия, а затем для каждой ячейки таблицы и каждого направления движения будем вычислять по специальной формуле (называемой формулой Беллмана).
уравнение, это слово вы встретите почти в каждой работе по обучению с подкреплением), насколько хороша эта ячейка и выбранное направление.
Чем выше это число, тем больше вероятность, что этот путь приведет к победе.
В какой бы ячейке вы ни оказались, двигайтесь по нарастающему зеленому цвету! (в сторону максимального числа по сторонам текущей ячейки).
Это число получило название Q (от слова качество — качество выбора, очевидно), а метод — Q-learning. Заменив формулу расчета этого числа на нейросеть, а точнее обучив нейросеть по этой формуле (плюс еще пару трюков, относящихся чисто к математике обучения нейросетей), Deepmind получил метод ДКН .
Это та игра, которая обыграла множество игр Atari в 2015 году и положила начало революции в глубоком обучении с подкреплением.
К сожалению, этот метод по своей архитектуре работает только с дискретными дискретными действиями.
В DQN на вход нейросети подается текущее состояние (текущая ситуация), а на выходе нейросеть предсказывает число Q. А поскольку на выходе сети перечислены сразу все возможные действия (каждое со своим прогнозируемым Q ), оказывается, что нейронная сеть в DQN реализует классическую функцию Q(s,a) из Q-обучения.
Возвращает Q для состояния и действия (отсюда и обозначение Q(s,a) как функция от s и a).
Мы просто ищем с обычным argmax в массиве среди выходов сети ячейку с максимальным номером Q и делаем действие, соответствующее индексу этой ячейки.
Более того, всегда можно выбрать действие с максимальным Q, тогда такая политика будет называться детерминированной.
Либо можно выбрать действие случайное из имеющихся, но пропорционально их Q-значениям (т.е.
действия с высоким Q будут выбираться чаще, чем с низким).
Такая политика называется стохастической.
Преимущество стохастического выбора в том, что поиск и исследование мира (Исследование) осуществляется автоматически, поскольку каждый раз выбираются разные действия, порой не кажутся самыми оптимальными, но которые могут привести к большому вознаграждению в будущем.
А потом мы научимся и увеличим вероятность этих действий, чтобы теперь они чаще выбирались по их вероятности.
Но что, если вариантов бесконечное множество? Если это не 5 кнопок на джойстике Atari, а непрерывный момент управления двигателем робота? Конечно, момент в диапазоне -1.1 можно разделить на поддиапазоны по 0,1, и в каждый момент времени вы можете выбрать один из этих поддиапазонов, подобно нажатию джойстика в Atari. Но искомое число не всегда можно дискретизировать на интервалы.
Представьте, что вы едете на велосипеде по горной вершине.
А повернуть руль можно только на 10 градусов влево или вправо.
В какой-то момент вершина может стать настолько узкой, что поворот на 10 градусов в обе стороны приведет к падению.
Это фундаментальная проблема дискретных действий.
А DQN не работает с большими размерами и просто не работает на роботе даже с 17 степенями свободы.
Все хорошо, но есть, как говорится, небольшой нюанс.
В дальнейшем на основе DQN было разработано множество оригинальных, а иногда и гениальных алгоритмов, позволявших, в том числе, работать с непрерывными действиями (за счет хитростей и введения дополнительных нейронных сетей): DDQN, DuDQN, BDQN, CDQN, NAF. , Радуга.
Возможно, сюда также можно отнести Прямое предсказание будущего (DFP) , что связано с архитектурой сети DQN и дискретными действиями.
Вместо того, чтобы предсказывать число Q для всех действий, DFP напрямую предсказывает, сколько здоровья или боеприпасов будет на следующем этапе, если вы выберете это действие.
Более того, один шаг вперед и несколько шагов дальше.
Нам остается пройтись по всем выходам сети и найти максимальное значение интересующего нас параметра и выбрать действие, соответствующее этому элементу массива, в зависимости от текущих приоритетов.
Например, если мы получили травму, мы можем поискать среди сетевых выходов действие, приводящее к максимальному увеличению здоровья.
Но что еще более важно, с тех пор были разработаны новые архитектуры специально для обучения с подкреплением.
Градиент политики Давайте подадим на вход сети текущее состояние и сразу спрогнозируем действия на выходе (либо сами действия, либо распределение вероятностей для них в стохастической политике).
Мы просто действуем, используя действия, предсказанные нейронной сетью.
А потом посмотрим, какую награду R они получили за этот эпизод. Эта награда может быть как выше начальной (при победе в игре), так и ниже (при проигрыше).
Вы также можете сравнить вознаграждение с каким-то средним вознаграждением.
Это выше среднего или ниже.
Собственно, динамику полученного вознаграждения R в результате действий, предложенных нейронной сетью, можно использовать для расчета градиента по специальной формуле.
И примените этот градиент к весам нейронной сети! А затем используйте обычное обратное распространение ошибки.
Просто вместо «эталонных» действий на выходе сети в виде меток (мы не знаем, какими они должны быть) мы используем изменение вознаграждения для расчета градиента.
По этому градиенту сеть научится предсказывать действия, которые приводят к увеличению вознаграждения R. Это классический политический градиент. Но у него есть недостаток: он ждет окончания эпизода для расчета совокупного вознаграждения R, прежде чем изменять веса сети в соответствии с его изменением.
А одним из преимуществ является гибкая система поощрений и наказаний, которая не только работает в обе стороны, но и зависит от размера вознаграждения.
Более крупная награда обеспечивает большее вознаграждение за действия, которые к ней привели.
Актер-критик, ДДПГ Теперь представьте, что у нас есть две сети — одна предсказывает, какие действия следует предпринять, а вторая оценивает, насколько эти действия хороши.
То есть для этих действий он выдает Q-число, как в алгоритме DQN. Состояние подается на вход первой сети и предсказывает действие(я).
Вторая сеть также получает на вход состояние, а также действия, предсказанные первой сетью, и на выходе выдает число Q как функцию от них обоих: Q(s,a).
На самом деле, это число Q(s,a), выданное второй сетью (называемой критиком), также можно использовать для расчета градиента, с помощью которого обновляются веса первой сети (называемого актером), как мы это сделали выше с награда R Ну а вторая сеть обновляется обычным способом, по факту прохождения эпизода.
Этот метод называется актер-критик.
Его преимущество по сравнению с классическим Policy Gradient заключается в том, что веса сети можно обновлять на каждом этапе, не дожидаясь окончания эпизода.
Что ускоряет обучение.
По существу, это сеть DDPG. Поскольку он напрямую предсказывает действия, он отлично работает с непрерывными действиями.
DDPG является прямым конкурентом DQN с его дискретными действиями.
Преимущество актера-критика (A3C/A2C) Следующим шагом было использовать для обучения первой сети не просто предсказание критиком числа Q(s,a) — насколько хороши действия, предсказанные актором, как это было в случае с DDPG. И насколько лучше или хуже оказались эти предсказанные действия, чем мы ожидали.
Это очень близко к тому, что происходит в биологическом мозге.
Из экспериментов известно, что максимальное выделение дофамина происходит не во время самого удовольствия, а во время ожидания что скоро нам это понравится.
Однако если ожидания не оправдываются, то наступают ужасные последствия, большие, чем в обычном случае (в организме существует особая система наказаний, противоположная системе вознаграждений).
Для этого для расчета градиентов стали использовать не число Q(s,a), а так называемое Преимущество: A(s,a) = Q(s,a) - V(s).
Число A(s,a) показывает не абсолютное качество Q(s,a) выбранных действий, а относительное преимущество - насколько лучше станет текущая ситуация V(s) после предпринятых действий.
Если A(s,a) > 0, то градиент изменит веса нейронной сети, поощряя действия, предсказанные сетью.
Если А(ы,а) < 0, then the gradient will change the weights so that the predicted actions will be suppressed, because they turned out to be bad. В этой формуле V(s) показывает, насколько хорошо текущее состояние само по себе, без привязки к действиям (следовательно, зависит только от s, без а).
Если мы стоим на расстоянии одного шага от вершины вереска, это очень хорошая ситуация с большим V(s).
А если мы уже сбились с пути и падаем, то это совсем плохое состояние, с низкими V(s).
К счастью, при таком подходе Q(s,a) можно заменить вознаграждением r, которое мы получаем после выполнения действия, и тогда формула преимущества для расчета градиентов будет A = r - V(s).
В этом случае достаточно спрогнозировать только V(s) (и награду мы увидим по факту того, что происходит в реальности), и две сети – актера и критика – можно объединить в одну! Который получает на вход состояние, а на выходе делится на две головки: одна прогнозирует действия, а другая прогнозирует V(s).
Эта комбинация помогает лучше повторно использовать веса, поскольку обе сети должны получать состояние в качестве входных данных.
Однако вы можете использовать две отдельные сети.
Учет и прогнозирование сетью качества текущей ситуации V(s) в любом случае помогает ускорить обучение.
Так как при плохом В(ах), где ничего нельзя исправить никакими действиями (летим головой вперед от вереска), дальше искать решение не приходится.
Это используется в дуэльной Q-сети (DuDQN), где Q(s,a) внутри сети специально разлагается на Q(s,a) = V(s) + A(a), а затем снова собирается.
Критик асинхронного преимущества субъекта (A3C) просто означает, что существует сервер, который собирает результаты от многих субъектов.
И обновление весов, как только будет собрана партия нужного размера.
Поэтому асинхронный, который не ждет каждого актера.
Это как бы разбавляет примеры, убирая из них ненужную корреляцию, что улучшает обучение.
С другой стороны, потом появился A2C — синхронная версия A3C, в которой сервер ждет окончания эпизодов для всех актеров и только после этого обновляет веса (следовательно, синхронно).
A2C также показывает хорошие результаты, поэтому используются обе версии, в зависимости от вкуса разработчика.
ТРПО, ППО, САК Собственно, на этом прогресс и заканчивается.
Несмотря на красивое и логичное на вид описание, все это работает не очень хорошо.
Даже самые лучшие алгоритмы Reinforcement Learning требуют десятков миллионов примеров, по эффективности сравнимы со случайным поиском, и самое печальное, что они не позволяют создать с их помощью сильный ИИ — они работают только на крайне малых измерениях, исчисляемых в единицах.
Даже не десятки.
Дальнейшее усовершенствование - ТРПО и ППО, ныне современные, являются разновидностью Актера-Критика.
PPO в настоящее время обучается большинством агентов в мире RL. Например, их учили OpenAI пять для игры в Доту 2. Вы будете смеяться, но всё, что придумали в методах TRPO и PPO, — это ограничить изменение нейросети при каждом обновлении, чтобы веса не менялись кардинально.
Дело в том, что в A3C/A2C происходят внезапные изменения, которые портят предыдущий опыт. Если убедиться, что новая политика не слишком отличается от предыдущей, то таких выбросов можно избежать.
Что-то вроде обрезки градиента в рекуррентных сетях для защиты от взрыва градиентов, только с использованием другого математического аппарата.
Сам факт того, что нам приходится так грубо обрезать и ухудшать обучение (большие градиенты там появились не просто так, они нужны для того примера, который их вызвал), и что это имеет положительный эффект, говорит о том, что мы свернули куда-то в сторону неправильное направление.
В последнее время алгоритм Soft-Actor-Critic (SAC) становится все более популярным.
Он не сильно отличается от PPO, только добавлена цель обучения для увеличения энтропии в политике.
Сделайте поведение агента более случайным.
Нет не так.
Чтобы агент мог действовать в более случайных ситуациях.
Это автоматически повышает надежность полиса, поскольку агент готов к любым случайным ситуациям.
Кроме того, SAC требует немного меньше примеров для обучения, чем PPO, и менее чувствителен к настройке гиперпараметров, что также является плюсом.
Однако даже с помощью SAC, чтобы обучить гуманоида с 17 степенями свободы бегать, начиная с положения стоя, нужно около 20 миллионов кадров и примерно день вычислений на одном GPU. Более сложные начальные условия, скажем, обучение гуманоида вставать из произвольной позы, возможно, вообще не удастся выучить.
Таким образом, общая рекомендация в современном обучении с подкреплением — использовать SAC, PPO, DDPG, DQN (в этом порядке по убыванию).
на основе модели Есть еще один интересный подход, косвенно связанный с обучением с подкреплением.
Это необходимо для построения модели окружающей среды.
Теги: #Машинное обучение #искусственный интеллект #нейронные сети #обучение с подкреплением #обучение с подкреплением
-
Скачивайте Не Торопясь
19 Oct, 24 -
Как Выбирать С Умом
19 Oct, 24 -
Биткойн 10 Лет Назад
19 Oct, 24 -
Установка Рабочего Стола Linux На Android
19 Oct, 24 -
Обновление Веб-Стандартов Для Vs2010 Sp1
19 Oct, 24 -
Идея, Подброшенная Фишерами
19 Oct, 24 -
Z-Music.ru - Обновленный Поиск Музыки
19 Oct, 24