Эта статья - вторая часть моей серии Глубокое обучение с подкреплением. Вся серия будет доступна как на Medium, так и в видеороликах на моем YouTube-канале.
В первой части цикла мы изучили основы обучения с подкреплением.
Q-Learning - это алгоритм обучения, основанный на ценностях, в обучении с подкреплением. В этой статье мы узнаем о Q-Learning и его деталях:
- Что такое Q-Learning?
- Математика, лежащая в основе Q-Learning
- Реализация с использованием Python
Q-Learning - упрощенный обзор
Допустим, робот должен пересечь лабиринт и достичь конечной точки. Есть мины, и робот может перемещать только одну плитку за раз. Если робот наступает на мину, робот мертв. Робот должен достичь конечной точки в кратчайшие сроки.
Система начисления очков / вознаграждения приведена ниже:
- Робот теряет 1 балл на каждом шаге. Это делается для того, чтобы робот выбирал кратчайший путь и как можно быстрее достиг цели.
- Если робот наступает на мину, потеря очков составляет 100 и игра заканчивается.
- Если робот получает мощность ⚡️, он получает 1 очко.
- Если робот достигает конечной цели, робот получает 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, чтобы увидеть больше технических видео.