Q-обучение, чтобы изучить траление поведения - PullRequest
1 голос
/ 09 октября 2019

Я пытаюсь использовать Q-learning для изучения поведения тральщиков на неброской версии умных подметальных машин Мэтта Бакленда, оригинал доступен здесь http://www.ai -junkie.com / ann / evolved / nnt1.html , для назначения. Назначение ограничивает нас 50 итерациями по 2000 ходов в сетке, которая эффективно составляет 40x40, с сбросом мин и агентом, порождаемым в случайном месте на каждой итерации.

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

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

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

Существуют ли более подходящие подходы, которыеяможет взять с этим, или, возможно, более практичные настройки моего собственного подхода, который я могу попробовать?

Более точное объяснение правил:

  • Края карты обвиваются, так что движутсяот правого края карты бот появится на левом краю и т. д.
  • Бот-уборщик может перемещаться вверх, влево или вправо от любой плитки карты.
  • Когда ботсталкивается с миной, мина считается подметенной и затем удаленной.
  • Цель состоит в том, чтобы бот научился подметать все мины на карте из любой начальной позиции.

1 Ответ

1 голос
/ 10 октября 2019

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

Определение состояния

Абсолютные позиции редко полезны в случайной среде, особенно если средабесконечен, как в вашем примере (так как бот может проехать за границы и возродиться на другой стороне). Это означает, что размер среды не нужен для работы агента (нам на самом деле он понадобится для симуляции бесконечного пространства, tho).

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

  1. Положение агента.
  2. Положение ближайшей шахты.

Это все, что нам нужно. Теперь я сказал, что абсолютные позиции плохие. Это потому, что это делает таблицу Q (вы называете это Q матрицей) статичной и очень хрупкой по случайности. Итак, давайте попробуем полностью исключить абозульские позиции из функции вознаграждения и заменить их относительными позициями. К счастью, в вашем случае это очень просто: вместо абсолютных позиций мы используем относительную позицию между ближайшей шахтой и агентом.

Теперь мы больше не имеем дело с координатами, а с векторами. Рассчитаем вектор между нашими точками: v = pos_mine - pos_agent. Этот вектор дает нам две очень важные части информации:

  1. направление, в котором находится ближайшая шахта, и
  2. расстояние до ближайшей шахты.

И это все, что нам нужно, чтобы наш агент работал. Следовательно, состояние агента может быть определено как

State: Direction x Distance

, из которых расстояние является значением с плавающей запятой и направлением либо с плавающей запятой, которая описывает угол, либо нормализованный вектор.

Определение функции вознаграждения

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

  1. Если агент подметает мину (расстояние == 0), верните огромное вознаграждение (например, 100).
  2. Если агент движется к шахте (расстояние уменьшается), верните нейтральную (или небольшую) награду (например, 0).
  3. Если агент удаляется от шахты (расстояние увеличивается), отрицательная ретуаннаграда (напр. -1).

Теоретически, поскольку мы наказываем отход от шахты, нам здесь даже не нужно правило 1.

Заключение

Осталось только определить хорошую скорость обучения и скидку, чтобы ваш агент работал хорошо после 50 итераций. Но, учитывая простоту окружающей среды, это не должно иметь большого значения. Эксперимент.

...