На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

Демонстрация 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, Q-learning, искусственный интеллект

Читайте также:




Поля и методы в Java: правила вызова методов
Печать dataGridView из C++/CLI в Visual Studio


© upread.ru 2013-2019
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.