Эта статья - вторая часть моей серии Глубокое обучение с подкреплением. Вся серия будет доступна как на Medium, так и в видеороликах на моем YouTube-канале.

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

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

  • Что такое Q-Learning?
  • Математика, лежащая в основе Q-Learning
  • Реализация с использованием Python

Q-Learning - упрощенный обзор

Допустим, робот должен пересечь лабиринт и достичь конечной точки. Есть мины, и робот может перемещать только одну плитку за раз. Если робот наступает на мину, робот мертв. Робот должен достичь конечной точки в кратчайшие сроки.

Система начисления очков / вознаграждения приведена ниже:

  1. Робот теряет 1 балл на каждом шаге. Это делается для того, чтобы робот выбирал кратчайший путь и как можно быстрее достиг цели.
  2. Если робот наступает на мину, потеря очков составляет 100 и игра заканчивается.
  3. Если робот получает мощность ⚡️, он получает 1 очко.
  4. Если робот достигает конечной цели, робот получает 100 очков.

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

Итак, как нам решить эту проблему?

Представляем Q-Table

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

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

Итак, давайте смоделируем эту среду в нашей Q-таблице.

В Q-таблице столбцы - это действия, а строки - состояния.

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

Но вот вопросы:

  • Как рассчитать значения Q-таблицы?
  • Значения доступны или предопределены?

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

Математика: алгоритм Q-Learning

Q-функция

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

Используя указанную выше функцию, мы получаем значения Q для ячеек в таблице.

Когда мы начинаем, все значения в Q-таблице нулевые.

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

Теперь давайте разберемся, как происходит обновление.

Знакомство с процессом алгоритма Q-обучения

Каждая из цветных рамок - это один шаг. Давайте подробно разберемся с каждым из этих шагов.

Шаг 1. Инициализируйте Q-Table

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

В нашем примере с роботом у нас есть четыре действия (a = 4) и пять состояний (s = 5). Итак, мы построим таблицу с четырьмя столбцами и пятью строками.

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

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

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

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

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

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

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

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

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

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

Шаги 4 и 5: оцените

Теперь мы выполнили действие и наблюдали результат и награду. Нам нужно обновить функцию Q (s, a).

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

  • мощность = +1
  • моя = -100
  • конец = +100

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

Реализация Q-Learning на Python

Концепция и реализация кода объяснены в моем видео.

Подпишитесь на мой канал на YouTube. Больше видео AI: ADL.

Наконец ... подведем итоги

  • Q-Learning - это алгоритм обучения с подкреплением, основанный на ценностях, который используется для поиска оптимальной политики выбора действий с помощью Q-функции.
  • Наша цель - максимизировать функцию ценности Q.
  • Таблица Q помогает нам найти лучшее действие для каждого состояния.
  • Это помогает максимизировать ожидаемую награду, выбирая лучшее из всех возможных действий.
  • Q (состояние, действие) возвращает ожидаемое будущее вознаграждение за это действие в этом состоянии.
  • Эту функцию можно оценить с помощью Q-Learning, который итеративно обновляет Q (s, a) с помощью уравнения Беллмана.
  • Сначала мы исследуем среду и обновляем Q-Table. Когда Q-таблица будет готова, агент начнет использовать среду и начнет предпринимать более эффективные действия.

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

А пока наслаждайтесь AI 😉.

Важно. Как было сказано ранее, эта статья является второй частью моей серии Глубокое обучение с подкреплением. Вся серия будет доступна как в статьях на Medium, так и в видеороликах на моем YouTube-канале.

Если вам понравилась моя статья, нажмите 👏, чтобы помочь мне сохранить мотивацию к написанию статей. Подпишитесь на меня в Medium и других социальных сетях:

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

Подпишитесь на мой канал на YouTube, чтобы увидеть больше технических видео.