Как научиться просчитывать шаги вперед


Искусство стратегического мышления: как просчитать ходы соперника


Ирина Балманжи

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

У этих ситуаций есть общая черта: вы находитесь не в вакууме. Вас окружают люди, которые активно принимают решения, связанные с вашими. Как просчитывать «ходы» соперника научным методом и принимать оптимальные решения, рассказывают авторы книги «Теория игр».

Что это за теория?

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

Английский писатель-юморист венгерского происхождения Джордж Микеш сказал однажды: «Многие обитатели континента считают, что жизнь — это игра; англичане считают, что крикет — это игра». Правы и те, и другие.

Все игры требуют разных навыков. Базовые навыки, такие как умение попадать мячом в корзину в баскетболе, знание прецедентов в юриспруденции или способность сохранять невозмутимый вид в покере, — одна категория навыков; способность мыслить стратегически — другая.

Важный урок

Бернард Шоу писал: «Не поступай с другими так, как ты хотел бы, чтобы поступали с тобой. У вас могут быть разные вкусы». Это очень ценный урок для тех, кто учится мыслить стратегически. Принимайте во внимание цели и стратегии других игроков. Вы должны приложить максимум усилий, чтобы понять позицию и взаимосвязи между другими участниками игры, в том числе позицию тех игроков, которые предпочитают молчать.

Бернард Шоу, — источник.

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

Стратегия имитации

Парусная регата дает возможность проанализировать интересный обратный вариант стратегии следования за лидером. Как правило, лидирующий парусник копирует стратегию корабля, идущего вслед за ним. Когда отстающий парусник меняет курс, лидер делает то же самое. Лидер копирует действия отстающего, даже если его стратегия явно неэффективна. Почему? Потому что в парусном спорте важна только победа.

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

Меньше — лучше

Возможно, вы считаете, что всегда полезно иметь больше вариантов. Но если мыслить стратегически, сокращение числа возможных вариантов может принести больше пользы. Томас Шеллинг пишет в своей книге о том, как афинский полководец Ксенофонт сражался, встав спиной к глубокому ущелью. Он специально выбирал такую позицию, чтобы у его солдат не было возможности отступать. В той битве у них одеревенели спины, но они победили.

По другой версии корабли Кортеса были сожжены, — источник.

Точно так же Кортес потопил свои корабли после прибытия в Мексику. Ацтеки могли отступить в глубь своей территории, а у солдат Кортеса не было никакой возможности для бегства или отступления. Сделав поражение еще более пагубным, чем оно было бы само по себе, Кортес повысил свои шансы на победу — и победил.

Иногда хорошая стратегия — не иметь стратегии

В комедии «Принцесса-невеста» есть интересная сцена — сражение на смекалку между героем (Уэстли) и злодеем (Виццини). Уэстли предлагает Виццини сыграть в игру: Уэстли отравит вино в одном из бокалов. Затем Виццини должен выбрать один из бокалов и выпить вино из него, а Уэстли выпьет из другого.

Виццини убежден в том, что может выиграть, воспользовавшись логическими рассуждениями:

— Все, что мне нужно сделать, — это угадать, опираясь на то, что я знаю о тебе. Умный человек положит яд в свой бокал, потому что он знает, что только дурак выберет тот бокал, который предназначен для него. А я не дурак и не могу выбрать бокал, стоящий перед тобой. Но ты, наверное, знал, что я не полный дурак…

Этому циклу логических рассуждений нет конца, потому что каждый из аргументов содержит внутреннее противоречие.

Похожий эпизод встречается в сериале BBC «Шерлок», — источник

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

Верить или нет?

Почему мы не можем рассчитывать на то, что другие люди будут всегда говорить нам только правду и ничего, кроме правды? Ответ очевиден: потому что это противоречит их интересам.

Британский ученый и писатель Чарльз Сноу приписывает математику Годфри Харди следующую стратегически важную мысль: «Если архиепископ Кентерберийский говорит, что верит в Бога, он делает это в силу своих обязанностей; если же он скажет, что не верит в Бога, можно быть уверенным, что он говорит искренне».

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

Когда лесоруб принимает решение о том, как рубить лес, он не ждет от него сопротивления: его среда нейтральна. Но когда генерал пытается разбить армию врага, он обязан предвидеть любое сопротивление, способное помешать его планам.

Цели других людей часто вступают в противоречие с вашими, но могут и совпадать с ними. Начните думать как стратег — и добро пожаловать в игру.

По материалам книги «Теория игр».

Умение просчитывать / Хабр

Существует разговорный глагол «просчитывать», что означает — моделировать в голове различные варианты развития события и последствия. Сегодня хочется поговорить об умении просчитывать ходы, и почему это является важнейшим умением в жизни.

Для начала небольшое введение. Не задумывались, почему многие великие люди любят шахматы? Почему Сергей Галицкий (миллиардер, с нуля построил сеть «Магнит»), говоря о важных для начинающих бизнесмена вещах, сказал в первую очередь о логике (кстати, в шахматах Сергей хорошо поднаторел в свое время). Почему о той же логики говорит известный блоггер Фриц Морген. А выдающий бизнесмен Дмитрий Потапенко, рассказывая о том, как ему удалось построить свои сети магазинов и ресторах, при моделировании бизнес-процессов предлагает пользоваться блок-схемами алгоритмов из восьмого класса?

Потому что они умеют раскладывать задачи в голове на несколько итераций, несколько шагов.

Данное умение, вкупе с рядом других, играет неоценимую роль в моей жизни.
Суть его в том, что вы сразу в голове, когда обдумываете задачу, сразу стараетесь разложить ее на несколько итераций (от двух и более). Очень часто помогает принцип «а можно ли не делать», когда первая итерация специально выбирается максимально простой, состоящей лишь из необходимого, для того, чтобы ее как можно быстрее пройти и получить реальную живую информацию для дальнейших стадий.

Типовой пример. Существует проблема в разработке программ — можно одновременно удовлетворить любые два из трех следующих качеств: быстро, дешево, качественно.

Как правило, если все делать быстро, то получается такой продукт, который потом нельзя развивать и масштабировать — нужно все переписывать сначала. А если делать качественно — то продукт делается так долго, что к моменту сдачи не отвечает бизнес-условиям.

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

Также стоит отметить проблему изменений, которая похоронила так называемые waterfall подходы управления разработкой программных продуктов и породила agile методологии, основанные на итерациях. Суть в том, что программу нельзя сделать хорошей, не попробовав на реальных данных. А попробовать можно только после завершения разработки. Некий парадокс, поэтому часто уже по ходу дела заказчики, переосмысляя проект, стараются внести изменения до завершения проекта. Что, как правило, невозможно в силу мощного плана на большой срок (waterfall, например, RUP), под который заточены все бизнес-процессы разработки. Как ответ родились Agile методологии, которые состоят из бесконечного цикла итераций, когда на определенный срок (например, месяц) фиксируется бюджет и выбирается то, что должно быть сделано за этот срок, а по истечении срока изучается ситуация и составляется план на новую итерацию. По сути дела, это поэтапная разработка, с пересмотром всего на каждом этапе.

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

Как правило, решение любой проблемы состоит, если сильно упростить, из «теории» и «практики». Как выглядит обычное решение проблемы человеком, который терпит неудачу? Человек строит очень мощную «теорию» в своей голове. Однако, пытаясь глубоко погрузиться в проблему, он в самом процессе мышления допускает ошибки. Проще говоря, его процесс мышления в голове содержит ошибки и неверные предпосылки, которые и приведут к неудаче. Неполный список можно найти в Википедии.

Можно сказать, часто человек обладает знаниями и фактами, но не обладает достаточной мудростью.

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

Разберем первое заблуждение. Как это ни прискорбно, любое движение по какому-либо направлению начинается только тогда, когда известно, куда двигаться.

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

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

Даже в простой жизни. Возьмем человека, который мечтает выучить английский язык. Он пытается сразу взяться за чтение книг или фильмов, осознает, сколько ему нужно трудиться, и бросает задачу. Задача кажется неразрешимой и большой.

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

Правда, требует еще немного магии :) Нужно просто знать, что человеку для успешного начала дела нужен легкий вход. Что для эффективной работы каждый день нужна либо очень сильная мотивация (что редкость), либо выработанная привычка (можно выработать у себя любую привычку). Что для выработки привычки достаточно месяца. Что для эффективного запоминания лучше всего записывать и соединять слова с каким-либо визуальным образом, заставляя работать не одно полушарие мозга, а оба сразу. И так далее — все эти знания приобретаются при наличии той вещи, которая называется энтузиазм, а я в сотрудниках называю «горящие глаза». Как-нибудь будет пост и про это, и про роль труда в жизни человека…

Зная это, делаются первые простые шаги, которая не требует больших усилий. Выписывать и выучивать в дороге каждый день 10 слов. Слушать в дороге в фоновом режиме аудиозаписи на английском, как-то связанные с интересными или приносящими наслаждение вещами — будь то анекдоты, аудиокниги sci-fi или трансляция радио BBC. Смотреть раз в неделю на выходные любимый фильм на английском без субтитров (все диалоги в фильме должны быть известны, хотя бы по смыслу).

В итоге человек наводит фокус на английский (см. пост о фокусировке), вырабатывает у себя привычку и дальше обучение идет по накатанной. И за год осваивает язык.

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

В общем, итерации рулят.

Понимание темпов обучения и того, как они повышают эффективность глубокого обучения | Автор: Хафидз Зулкифли

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

Подводя итог тому, как построение модели выполняется в fast.ai (программе, не путать с fast.ai), ниже приведены несколько шагов [8], которые мы обычно выполняем:

1. Включите увеличение данных и предварительное вычисление = True

2. Используйте lr_find () , чтобы найти максимальное скорость обучения, при которой потери все еще явно улучшаются

3. Обучить последний слой из предварительно вычисленных активаций для 1-2 эпох

4. Обучить последний слой с увеличением данных (т.е. предварительное вычисление = False) для 2–3 эпох с cycle_len = 1

5. Разморозить все слои

6.Установите более ранние слои в 3-10 раз меньшую скорость обучения, чем следующий более высокий уровень

7. Используйте lr_find () снова

8. Обучите всю сеть с cycle_mult = 2 до переобучения

Из приведенных выше шагов мы замечаем, что шаги 2, 5 и 7 относятся к скорости обучения. В предыдущей части этого поста мы в основном рассмотрели пункт 2 упомянутых шагов - где мы коснулись того, как получить наилучшую скорость обучения до обучения модели.

В следующем разделе мы рассмотрели, как с помощью SGDR мы можем сократить время обучения и повысить точность, время от времени перезагружая скорость обучения, чтобы избежать областей, где градиент близок к нулю.

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

Что такое дифференциальное обучение?

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

Одна из причин, почему я просто люблю Twitter - прямой ответ от самого человека.

Во время написания этого поста Джереми опубликовал статью с Себастьяном Рудером [9], в которой более подробно рассматривается эта тема. Итак, я думаю, что у дифференциальной скорости обучения теперь новое имя - различительная точная настройка . :)

Чтобы проиллюстрировать концепцию немного яснее, мы можем обратиться к диаграмме ниже, где предварительно обученная модель разделена на 3 группы, где каждая группа будет настроена с увеличивающимся значением скорости обучения.

Пример CNN с разной скоростью обучения. Изображение предоставлено [3]

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

Напротив, в более поздних слоях, таких как те, что обозначены зеленым выше, где мы получаем подробные особенности данных, такие как глазные яблоки, рот или нос; нам не обязательно нужно их хранить.

Как это соотносится с другими методами точной настройки?

В [9] утверждается, что точная настройка всей модели будет слишком дорогостоящей, так как некоторые могут иметь более 100 слоев. Таким образом, люди обычно настраивают модель по одному слою за раз.

Однако это вводит требование последовательности, затрудняя параллелизм, и требует нескольких проходов через набор данных, что приводит к переобучению небольших наборов данных.

Также было продемонстрировано, что методы, представленные в [9], могут улучшить как точность, так и уменьшить количество ошибок в различных задачах классификации НЛП (ниже)

Результаты взяты из [9].

Руководство по Q-Learning для начинающих. Безмодельное обучение с подкреплением | by Chathurangi Shyalika

ОПРЕДЕЛЕНИЕ ОТРАЖЕНИЯ

Обучение с подкреплением без моделей

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

Как люди, мы тоже испытали то же самое. Помните, в начальной школе учителя награждали нас звездами за то, что мы как следует выполняли школьные задания. : D

Это именно то, что происходит в Reinforcement Learning (RL) .

Обучение с подкреплением - одна из самых красивых ветвей искусственного интеллекта

Целью RL является , чтобы максимизировать вознаграждение агента за счет выполнения ряда действий в ответ на динамическую среду .

В обучении с подкреплением есть 4 основных компонента; агент, среда, награда и действие.

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

  1. Наблюдение за окружающей средой
  2. Решение, как действовать, используя некую стратегию
  3. Действуя соответственно
  4. Получение вознаграждения или наказания
  5. Изучение опыта и совершенствование нашего стратегия
  6. Итерировать до тех пор, пока не будет найдена оптимальная стратегия.
Источник: ссылка

Существует 2 основных типа алгоритмов RL.Это на основе модели и без модели .

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

Q -learning - это алгоритм обучения с подкреплением без модели .

Q-Learning - это алгоритм обучения на основе значений . Алгоритмы на основе значений обновляют функцию стоимости на основе уравнения (в частности, уравнения Беллмана). В то время как другой тип, , основанный на политике, оценивает функцию ценности с помощью жадной политики, полученной в результате последнего улучшения политики.

Q-Learning - это ученик вне политики . Это означает, что он узнает ценность оптимальной политики независимо от действий агента.С другой стороны, изучающий политику узнает ценность политики, выполняемой агентом, включая шаги исследования, и он найдет политику, которая является оптимальной, принимая во внимание исследование, присущее политике. ,

Что это за «Q»?

«Q» в Q-Learning означает качество. Качество здесь показывает, насколько полезно данное действие для получения некоторой будущей награды.

Определение Q-Learning

  • Q * (s, a) - ожидаемое значение (совокупное дисконтированное вознаграждение) выполнения в состоянии s и последующего следования оптимальной политике.
  • Q-Learning использует Temporal Differences (TD) для оценки значения Q * (s, a). Разница во времени - это агент, обучающийся в окружающей среде через эпизоды без предварительного знания окружающей среды.
  • Агент поддерживает таблицу Q [S, A] , где S - это набор состояний и A - набор действий .
  • Q [s, a] представляет текущую оценку Q * (s, a).

Q-Learning Простой пример

В этом разделе Q-обучение было объяснено вместе с демонстрацией.

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

Агент и его среда

Введение в Q-Table

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

Q-функция

Q-функция использует уравнение Беллмана и принимает два входа: состояние (я) и действие (а).

Уравнение Беллмана. Источник: ссылка

Процесс алгоритма Q-обучения

Алгоритм Q-обучения

Шаг 1: Инициализация Q-таблицы

Сначала необходимо построить Q-таблицу. Есть n столбцов, где n = количество действий.Всего m строк, где m = количество состояний.

В нашем примере n = «Влево», «Вправо», «Вверх» и «Вниз» и m = «Начало», «Ожидание», «Правильный путь», «Неправильный путь» и «Конец». Сначала давайте инициализируем значения в 0.

Начальная Q-таблица

Шаг 2: Выберите действие

Шаг 3: Выполните действие

Комбинация шагов 2 и 3 выполняется в течение неопределенного времени. , Эти шаги выполняются до тех пор, пока не будет остановлено обучение по времени или пока не остановится цикл обучения, как определено в коде.

Сначала действие (а) в состоянии (ах) выбирается на основе Q-таблицы. Обратите внимание, что, как упоминалось ранее, когда эпизод изначально начинается, каждое Q-значение должно быть 0.

Затем обновите Q-значения, чтобы они были в начале и двигались вправо, используя уравнение Беллмана, которое указано выше.

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

В процессе исследования агент постепенно становится более уверенным в оценке Q-значений.

В нашем примере с агентом, когда начинается обучение агента, агент полностью не знает о среде. Итак, допустим, он совершает случайное действие в «правильном» направлении.

Действие: Агент следует «вправо»

Теперь мы можем обновить значения Q для того, чтобы быть в начале и двигаться вправо, используя уравнение Беллмана.

Обновленная Q-таблица

Шаги 4: Измерение вознаграждения

Теперь мы предприняли действие и наблюдали результат и награду.

Шаги 5: Вычислить

Нам нужно обновить функцию Q (s, a).

Этот процесс повторяется снова и снова, пока обучение не будет остановлено. Таким образом Q-таблица обновляется, а функция ценности Q максимизируется.Здесь Q (состояние, действие) возвращает ожидаемое будущее вознаграждение за это действие в этом состоянии.

Уравнение Беллмана Объяснение для эпизодов

В этом примере я ввел следующую схему вознаграждения.

Награда при приближении к цели на шаг = +1

Награда при столкновении с препятствием = -1

Награда при простое = 0

.

Qrash Course: обучение с подкреплением 101 и сети Deep Q за 10 минут | Шакед Зихлински

Теперь вспомните, что некоторые состояния являются конечными состояниями. Когда агент достигает единицы, никакие действия или переход между состояниями невозможны. Итак, если будущее состояние s ' является конечным состоянием, у нас останется:

Q Правило обновления обучения для конечного состояния s'

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

Чтобы решить эту проблему, мы используем ε-жадный подход : для некоторых 0 <ε <1 , мы выбираем жадное действие (используя нашу таблицу) с вероятностью p = 1-ε , или случайное действие с вероятностью p = ε. Таким образом, мы даем возможность агенту изучить новых возможностей.

Этот алгоритм известен как Q Learning (или Q-Table ). Поздравляем! вы только что изучили свой самый первый алгоритм обучения с подкреплением!

Вы могли спросить себя, как масштабируется Q Learning - и если нет, давайте вместе спросим: что происходит, когда количество состояний и действий становится очень большим? На самом деле это не так уж и редко - даже простая игра, такая как Tic Tac Toe, имеет сотни различных состояний (попробуйте вычислить это), и не забывайте, что мы умножаем это число на 9, что является количеством возможных действий.Так как же решить действительно сложных проблем?

Войдите в глубокое обучение! Мы объединяем Q Learning и Deep Learning, что дает Deep Q Networks . Идея проста: мы заменим таблицу Q Learning нейронной сетью, которая пытается приблизительно определить Q-значения. Его обычно называют аппроксимирующей функцией или аппроксимирующей функцией и обозначают как Q (s, a; θ ), где θ представляет обучаемые веса сети.

Теперь имеет смысл использовать только уравнение Беллмана в качестве функции стоимости - но что именно мы будем минимизировать? Давайте посмотрим на это еще раз:

Знак «=» отмечает присвоение , но есть ли какое-либо условие, которое также удовлетворяет равенству ? Что ж, да - когда Q Value достигло сходящегося и окончательного значения. И это , ровно наша цель - чтобы мы могли минимизировать разницу между левой и правой сторонами - и, альт! Наша функция стоимости:

Функция стоимости DQN

Вам это знакомо? Вероятно - это функция среднеквадратичной ошибки, где текущее значение Q - это прогноз ( y ), а немедленное и будущее вознаграждение - это цель ( y '):

Функция среднеквадратичной ошибки

Вот почему Q (s ', a; θ ) обычно обозначается как Q-target .

Двигаемся дальше: Обучение. В обучении с подкреплением обучающий набор создается по мере продвижения; мы просим агента попытаться выбрать лучшее действие, используя текущую сеть - и мы записываем состояние , действие , вознаграждение и следующее состояние , в котором оно закончилось. Мы выбираем размер пакета b , и после каждого записи b новых записей мы выбираем b записей случайным образом (!!) из памяти и обучаем сеть.Используемые буферы памяти обычно называются Experience Replay. Существует несколько типов таких запоминающих устройств, наиболее распространенным из которых является циклический буфер памяти. Это гарантирует, что агент продолжает обучение своему новому поведению, а не вещам, которые могут больше не иметь значения.

Вещи становятся реальностью, поэтому давайте поговорим об архитектуре: при имитации таблицы сеть должна получать в качестве входных данных состояние и действие и должна выдавать значение Q:

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

Здесь мы предоставляем сети только состояние s в качестве входных данных и получаем значения Q для всех возможных действий сразу. Намного лучше.

И что вы знаете - это почти все. Еще раз поздравляю! Вы только что узнали, как создать сеть Deep Q!

Прежде чем мы закончим, вот кое-что еще: несколько абзацев назад мы сравнили функцию стоимости Deep Q Network со среднеквадратичной ошибкой.Но MSE сравнивает предсказания y с истинными метками y ’- , и истинные метки постоянны на протяжении всей процедуры обучения. Очевидно, что в Deep Q Networks дело обстоит иначе: как y , так и y ’ прогнозируются самой сетью и, следовательно, могут изменяться на каждой итерации. Влияние очевидно.

Представляем: сеть Double Deep Q, в которой во время обучения используются полупостоянные метки. Как? У нас есть две копии Q Network, но обновляется только одна - другая остается.Однако время от времени мы заменяем постоянную сеть копией обученной сети Q, поэтому мы и называем ее «полупостоянной». Итак:

DDQN функция стоимости

Здесь ϑ представляет полустационарные веса, поэтому Q (s ’, a; ϑ) означает значение Q, предсказанное полустационарной сетью. Вот и все, вы поняли.

Я лично считаю, что лучший способ понять новые концепции - это попытаться реализовать их самостоятельно. Чтобы попробовать Q Learning и Deep Q Networks, я придумал простую игру: доску с 4 слотами, которые должен заполнить агент.Когда Агент выбирает пустой слот, он получает награду +1, и слот заполняется. Если он выбирает свободный слот, он получает награду -1. Игра заканчивается, когда вся доска заполнена.

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

Удачи, и уже в третий раз - Поздравляю!

Готовы попробовать себя в обучении с подкреплением? Вот еще один пост в блоге с некоторыми практическими советами.

.

Смотрите также