Демонстрация Q-learning в программе на Java


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



‘Q’ в q-learning означает качество. Качество в этом случае представляет, насколько полезно данное действие в получении некоторой будущей награды. Когда q-learning выполняется, мы создаем то, что называется q-таблицей или матрицей, которая следует форме [state, action]; инициализируем значения нулем. Затем мы обновляем и сохраняем наши q-значения после каждого эпизода. Эта q-таблица становится справочной таблицей для нашего агента, чтобы выбрать лучшее действие на основе q-значения.

Способы взаимодействия

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

Второй способ действовать - действовать случайным образом. Это называется исследованием. Вместо выбора действий на основе максимального будущего вознаграждения мы выбираем действие случайным образом. Случайное действие важно, поскольку оно позволяет агенту исследовать и открывать новые состояния, которые в противном случае не могут быть выбраны в процессе эксплуатации. Вы можете сбалансировать разведку/эксплуатацию с помощью epsilon (ε) и установить значение того, как часто вы хотите исследовать или эксплуатировать.

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

Правила игры

  • Есть агент (синий круг), который пытается найти конец лабиринта. Агент всегда начинает в левом нижнем углу доски. Новая доска создается для каждого запуска.
  • Есть три блока, по которым агент может перемещаться.
    1. Красный блок - это ловушка, заставляющая агента начинать все с начала.
    2. Зеленые блоки являются нейтральными, и агент не получает отклика от входа в это состояние.
    3. Желтый блок - это объективное состояние, конец игры.
Агент получает информацию только тогда, когда он должен перезапустить (т. е. когда он прошел или проиграл).

Параметры агента
  • gamma: коэффициент дисконтирования для будущих наград
  • epsilon: вероятность того, что агент сделает случайный ход
  • alpha: скорость обучения для агента
Эти параметры пользователь задает самостоятельно перед компиляцией проекта. Вы сами можете изменять их посмотреть результат обучения – число игр. При некоторых значениях данных параметров обучение может затянуться.

Структура программы Java Q-Learning

В проекте три файла:
  • Agent.java
  • Game.java
  • Q_learning.java
Каждый метод в исходниках приложения прокомментирован. Проект в формате NetBeans, но может быть открыт/запущен и в Eclipse или IntelliJ IDEA. Для уточнения цены пишите мне. Также я могу за небольшую. плату помочь вам и с другими задачами на Java.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегизаметки, услуги, java, Q-learning, искусственный интеллект




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



Что такое база данных?
Управление движением картинки с клавиатуры на JavaScript
Инициализация классов в Java