Погрузитесь глубже в Reinforcement Learning с Q-Learning

1656641311 pogruzites glubzhe v reinforcement learning s q learning

Томас Симонини

1*sYFG8AhKTVnmv_VLRK0c0A

Эта статья является частью курса глубокого подкрепления из Tensorflow?️. Проверьте приложение здесь.

Сегодня мы узнаем о Q-Learning. Q-Learning – это алгоритм Reinforcement Learning на основе ценностей.

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

В этой статье вы узнаете:

  • Что такое Q-Learning
  • Как это реализовать с помощью Numpy

Большая картина: рыцарь и принцесса

1*h7B4EVx3B-sv5OvHH8nrNw

Предположим, вы рыцарь и вам нужно спасти принцессу, попавшую в ловушку в замке, изображенном на карте выше.

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

  • ты терять -1 на каждом шагу (потеря очков на каждом шагу помогает нашему агенту быть скорым).
  • Если вы прикоснетесь к врагу, вы теряете -100 очков, и эпизод заканчивается.
  • Если вы выиграете в замке, вы получите 100 очков.

Возникает вопрос: как создать агента, который сможет это сделать?

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

1*imHK8jFkt6udrUwm8RvOhA
Та самая карта, но цветная, чтобы показать, какие плитки безопасно посещать.

Тогда мы можем сказать нашему агенту брать только зеленые плитки.

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

Знакомство с Q-таблицей

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

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

Каждое состояние (плитка) допускает четыре возможных действия. Они двигаются влево, вправо, вверх или вниз.

1*kwu9TImqAWZCiooj3pLyCA
0 – это невозможные движения (если вы находитесь в верхнем левом углу, вы не можете двигаться влево или вверх!)

С точки зрения вычислений мы можем превратить эту сетку в таблицу.

Это называется a Q-таблица («Q» означает «качество» действия). В столбцах будут четыре действия (влево, вправо, вверх, вниз). Строки будут штатами. Значение каждой ячейки будет максимальным ожидаемым будущим вознаграждением за данное состояние и действие.

1*fBjmzVXBYdx2-QOXZhnzFQ

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

Почему мы говорим «с данным полисом?» Это потому что мы не вводим политику. Мы просто улучшаем нашу Q-таблицу, чтобы всегда выбирать наилучшее действие.

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

Да! Мы решили проблему замка! Но подождите… Как вычислить значение каждого элемента таблицы Q?

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

Алгоритм Q-обучения: изучение функции значения действия

Функция значения действия (или Q-функция) принимает два входа: состояние и действие. Он возвращает ожидаемое будущее вознаграждение за это действие в этом состоянии.

1*6IqzImIFK1oEiVWmlu1Esw

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

1*yklmxNRdXleiDbv6aSZUIg

Но прежде чем мы исследуем среду, Q-таблица дает то же самое произвольное фиксированное значение (в основном 0). Как мы исследуем окружающую среду, Q-таблица даст нам все лучшее и лучшее приближение путем итеративного обновления Q(s,a) с помощью уравнения Беллмана (см. ниже!).

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

1*QeoQEqWYYPs1P8yUwyaJVQ
0*voKUaGu68-cDuncy
Псевдокод алгоритма обучения Q

Шаг 1: Инициализация значений Q
Строим Q-таблицу, с м cols (m= количество действий), и п строк (n = количество сословий). Мы инициализируем значение 0.

1*ut7-8VVa-TWC40_YAeqZ7Q

Шаг 2: на всю жизнь (или до прекращения обучения)
Шаги 3–5 будут повторяться, пока мы не достигнем максимального количества эпизодов (указанного пользователем) или пока мы не остановим обучение вручную.

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

Но… какое действие мы можем выполнить в начале, если каждое значение Q равно нулю?

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

Идея заключается в том, что в начале, мы используем стратегию epsilon greedy:

  • Мы указываем скорость исследования «epsilon», которую мы установили на 1 в начале. Это количество шагов, которые мы сделаем случайным образом. В начале этот показатель должен быть самым высоким, потому что мы ничего не знаем о значении в Q-таблице. Это значит, что нам нужно многое исследовать, произвольно выбирая наши действия.
  • Генерируем случайное число. Если это число > epsilоn, тогда мы произведем «эксплуатацию» (это означает, что мы используем то, что уже знаем, чтобы выбрать лучшее действие на каждом шагу). В противном случае мы проведем разведку.
  • Идея состоит в том, что мы должны иметь большой эпсилон в начале обучения Q-функции. Затем постепенно убавляйте его, поскольку агент становится более уверенным в оценке значений Q.
1*9StLEbor62FUDSoRwxyJrg

Шаги 4–5: Оцените!
Действуйте а и наблюдайте за состоянием результата s’ и вознаграждение р. Теперь обновите функцию Q(s,a).

Мы действуем а который мы выбрали на шаге 3, а затем выполнение этого действия возвращает нам новое состояние s’ и вознаграждение р (как мы видели в процессе обучения с подкреплением первой статьи).

Затем, чтобы обновить Q(s,a), мы используем уравнение Беллмана:

1*jmcVWHHbzCxDc-irBy9JTw

Идея состоит в том, чтобы обновить наше Q(состояние, действие) следующим образом:

New Q value =    Current Q value +    lr * [Reward + discount_rate * (highest Q value between possible actions from the new state s’ ) — Current Q value ]

Возьмем пример:

1*-3MsnOxnipUICgRUWVz9Ng
  • Один сыр = +1
  • Два сыра = +2
  • Большая куча сыра = +10 (конец эпизода)
  • Если вы съедите крысиный яд = -10 (конец эпизода)

Шаг 1: Мы запускаем нашу Q-таблицу

1*UYB4uCHcwfa2SYlik9HNaQ
Инициализированная Q-таблица

Шаг 2. Выберите действие
С начальной позиции можно выбрать между движением вправо или вниз. Поскольку мы имеем большую скорость эпсилона (поскольку мы еще ничего не знаем об окружающей среде), мы выбираем случайным образом. Например… движение вправо.

1*IyjuM__mnP-as7m5KTdUyA
1*VY6VFj3RnBMi9sPshouF8A
Двигаемся наугад (например, справа)

Мы обнаружили кусочек сыра (+1) и теперь можем обновить Q-значение того, что мы были в начале и двигались правильно. Мы делаем это с помощью уравнения Беллмана.

Шаги 4–5: обновите Q-функцию

1*jmcVWHHbzCxDc-irBy9JTw
1*wzI7Y0s26kw3fQTZx8HZ8A
  • Сначала мы вычисляем изменение значения Q ΔQ (начало, справа)
  • Затем мы добавляем начальное значение Q к ΔQ (начало, справа), умноженное на скорость обучения.

Подумайте о скорости обучения как о том, сколь быстро сеть отказывается от прежней ценности ради новой. Если скорость обучения равна 1, то новая оценка будет новым значением Q.

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

хорошо! Мы только что обновили наше первое значение Q. Теперь нам нужно делать это снова и снова, пока обучение не прекратится.

Внедрить алгоритм Q-обучения

Мы создали видео, где мы внедряем агента Q-обучения, обучающегося играть в Taxi-v2 с помощью Numpy.

Теперь, когда мы знаем, как это работает, мы шаг за шагом введем алгоритм Q-обучения. Каждая часть кода объясняется непосредственно в блокноте Jupyter ниже.

Вы можете получить доступ к нему в репозитории курса Deep Reinforcement Learning.

Или вы можете получить доступ непосредственно к Google Colaboratory:

Q* Обучение с Frozen Lake
colab.research.google.com

Итог…

  • Q-обучение – это алгоритм обучения подкреплению на основе ценностей, который используется для поиска оптимальной политики выбора действия с помощью функции aq.
  • Он оценивает, какое действие нужно выполнить, на основе функции действия-значения, определяющей ценность пребывания в определенном состоянии и выполнения определенного действия в этом состоянии.
  • Цель: максимизировать функцию ценности Q (ожидаемое будущее вознаграждение за состояние и действие).
  • Таблица Q помогает нам найти лучшее действие для каждого состояния.
  • Чтобы максимизировать ожидаемое вознаграждение, выбрав наилучшее из всех возможных действий.
  • Q происходит от качества определенного действия в определенном состоянии.
  • Функция Q(состояние, действие) → возвращает ожидаемое вознаграждение за это действие в этом состоянии.
  • Эту функцию можно оценить с помощью Q-обучения, которое итеративно обновляет Q(s,a) с помощью уравнения Беллмана
  • Прежде чем исследовать среду: таблица Q дает то же самое произвольное фиксированное значение → но когда мы исследуем среду → Q дает нам все лучшее и лучшее приближение.

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

Попробуйте добавить эпохи, изменить скорость обучения и использовать более сложную среду (например, Замороженное озеро с плитками 8×8). Веселитесь!

В следующий раз мы будем работать над Deep Q-learning, одним из самых больших прорывов в Deep Reinforcement Learning в 2015 году. И мы научим агента, играющего в Doom и убивающего врагов!

1*Q4XjhLC0IAOznnk5613PsQ
Гибель!

Если вам понравилась моя статья, пожалуйста, нажмите кнопку ? ниже столько раз, сколько вам понравилась статья поэтому другие люди увидят это здесь на Medium. И не забудь следовать за мной!

Если у вас есть какие-либо мнения, комментарии, вопросы, не стесняйтесь оставлять комментарии ниже или отправлять мне электронное письмо: hello@simoninithomas.com или твиты @ThomasSimonini.

1*_yN1FzvEFDmlObiYsstIzg
1*mD-f5VN1SWYvhrZAbvSu_w
1*PqiptT-Cdi8uwosxuFn2DQ

Продолжайте учиться, оставайтесь замечательными!

Курс глубокого подкрепления с Tensorflow?️

? учебный план

? Видео версия

Часть 1: Введение в учебу с подкреплением

Часть 2: более глубокое погружение в обучение с подкреплением с помощью Q-Learning

Часть 3: Введение в Deep Q-Learning: давайте поиграем в Doom

Часть 3+: Улучшение в глубоком обучении Q: двойной DQN на дуэли, повторение приоритетного опыта и фиксированные Q-цели

Часть 4: Введение в градиенты политики с Doom и Cartpole

Часть 5: Введение в методы Advantage Actor Critic: давайте поиграем в Ежа Соника!

Часть 6: Проксимальная оптимизация политики (PPO) из Sonic the Hedgehog 2 и 3

Часть 7: Обучение на основе любопытства стало легким Часть I

Добавить комментарий

Ваш адрес email не будет опубликован.