Введение в Q-Learning: обучение с подкреплением
Эта статья является второй частью моей серии «Глубокое обучение с подкреплением». Полная серия будет доступна как на Medium, так и в видео на моем канале YouTube.
В первой части серии мы узнали основы обучения с подкреплением.
Q-обучение — это основанный на ценностях алгоритм обучения в обучении с подкреплением. В этой статье мы узнаем о Q-Learning и его деталях:
- Что такое Q-обучение?
- Математика, стоящая за Q-Learning
- Реализация с использованием Python
Q-Learning — упрощенный обзор
Скажем, что робот должен пересечь лабиринт и дойти до конечной точки. Есть шахты, и робот может перемещать только одну плитку за раз. Если робот наступает на мину, робот мертв.Робот должен добраться до конечной точки как можно быстрее.
Система подсчета очков/вознаграждений выглядит следующим образом:
- Робот теряет 1 очко на каждом шаге. Это делается для того, чтобы робот выбрал кратчайший путь и как можно быстрее достиг цели.
- Если робот наступит на мину, потеря очков составит 100 и игра окончена.
- Если робот получает силу ⚡️, он получает 1 очко.
- Если робот достигает конечной цели, робот получает 100 очков.
Теперь очевидный вопрос: Как научить робота достигать конечной цели по кратчайшему пути, не наступая на мину?
Итак, как нам это решить?
Знакомство с Q-таблицей
Q-Table — это просто причудливое название для простой справочной таблицы, в которой мы рассчитываем максимальные ожидаемые будущие вознаграждения за действия в каждом состоянии. По сути, эта таблица поможет нам определить наилучшие действия в каждом состоянии.
На каждой некраевой плитке будет четыре числа действий. Когда робот находится в определенном состоянии, он может двигаться вверх или вниз, вправо или влево.
Итак, давайте смоделируем эту среду в нашей Q-таблице.
В Q-таблице столбцы — это действия, а строки — состояния.
Каждая оценка Q-таблицы будет максимальной ожидаемой будущей наградой, которую получит робот, если он выполнит это действие в этом состоянии. Это итеративный процесс, так как нам нужно улучшать Q-Table на каждой итерации.
Но вопросы такие:
- Как мы рассчитываем значения Q-таблицы?
- Доступны или предопределены значения?
Чтобы узнать каждое значение Q-таблицы, мы используем Алгоритм Q-обучения.
Математика: алгоритм Q-Learning
Q-функция
Q-функция использует уравнение Беллмана и принимает два входа: состояние (с) и действие (а).
Используя приведенную выше функцию, мы получаем значения Вопрос для ячеек таблицы.
Когда мы начинаем, все значения в Q-таблице равны нулю.
Существует итеративный процесс обновления значений. Когда мы начинаем исследовать окружающую среду, Q-функция дает нам все лучшие и лучшие приближения, постоянно обновляя Q-значения в таблице.
Теперь давайте разберемся, как происходит обновление.
Представляем процесс алгоритма Q-обучения
Каждая из цветных коробок — это один шаг. Давайте подробно разберем каждый из этих шагов.
Шаг 1: инициализируйте Q-таблицу
Сначала мы построим 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, чтобы увидеть больше видео об искусственном интеллекте: АДЛ .
Наконец… давайте резюмируем
- Q-Learning — это основанный на ценности алгоритм обучения с подкреплением, который используется для поиска оптимальной политики выбора действий с использованием Q-функции.
- Наша цель — максимизировать функцию ценности Q.
- Таблица Q помогает нам найти наилучшее действие для каждого состояния.
- Он помогает максимизировать ожидаемую награду, выбирая лучшее из всех возможных действий.
- Q(состояние, действие) возвращает ожидаемую будущую награду за это действие в этом состоянии.
- Эту функцию можно оценить с помощью Q-Learning, который итеративно обновляет Q(s,a) с помощью Уравнение Беллмана.
- Сначала мы изучаем среду и обновляем Q-Table. Когда Q-Table будет готова, агент начнет использовать среду и начнет предпринимать более эффективные действия.
В следующий раз мы будем работать над примером глубокого Q-обучения..
А пока наслаждайтесь ИИ?.
Важный: Как уже говорилось ранее, эта статья является второй частью моей серии «Глубокое обучение с подкреплением». Полная серия будет доступна как в статьях на Medium, так и в видео на моем канале YouTube.
Если вам понравилась моя статья, пожалуйста, нажмите ? то помочь мне оставаться мотивированным, чтобы писать статьи. Пожалуйста, следуйте за мной на Мэдиум и другие социальные сети:
Если у вас есть какие-либо вопросы, пожалуйста, дайте мне знать в комментарии ниже или на Твиттер.
Подпишитесь на мой канал YouTube, чтобы увидеть больше технических видео.