Модель обучения обучения подкреплению - как сложить до 5 - PullRequest
0 голосов
/ 23 сентября 2018

Я экспериментирую с изучением подкрепления на питоне с использованием Keras.Большинство доступных руководств используют библиотеку OpenAI Gym для создания окружения, состояний и наборов действий.

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

Это то, что я думаю, будет интереснонаучить машину делать.

  1. Массив целых чисел от 1 до 4. Я назову эти цели.

target = [[1, 2,3, 4]]

Список дополнительных номеров (случайным образом) от 1 до 4. Я назову эти пули.

bullets = [1, 2, 3, 4]

Когда я стреляю пулей по цели, номер цели будет суммой исходного числа num + номер пули. Я хочу выстрелить пулей (по одной за раз) в одну из целейчтобы сделать Например, учитывая цели [1 2 3 4] и маркер 1, я хочу, чтобы машина предсказывала правильный индекс для стрельбы.

В этом случае этодолжен быть индекс 3, потому что 4 + 1 = 5

curr_state = [[1, 2, 3, 4]]

bullet = 1

action =3 (<- index of curr_state) </p>

next_state = [[1, 2, 3, 5]]

Я выбираю свой мозгдумать о лучшем способе построить это в проект усиления.Я попробовал некоторые, но результат модели не очень хороший (имеется в виду, что, скорее всего, не получится номер 5).

Главным образом потому, что состояние 2D: (1) цели;(2) пуля в то время.Метод, который я использовал до сих пор, заключается в преобразовании состояния следующим образом:

State = 5 - цели - пуля

Мне было интересно, может ли кто-нибудь придумать лучшегоспособ разработать эту модель?Заранее спасибо!

1 Ответ

0 голосов
/ 27 сентября 2018

Хорошо, похоже, никто не помогает вам, поэтому я просто написал для вас файл среды Python, как вы описали.Я также разработал для вас как можно больше стилей OpenAI, вот ссылка на него, она есть в моем репозитории GitHub.Вы можете скопировать код или разветвить его.Я объясню это ниже:

https://github.com/RuiNian7319/Miscellaneous/blob/master/ShootingRange.py

Состояния = [0, 1, 2, ..., 10]

Actions = [-2, -1, 0, 1, 2]

Таким образом, игра начинается со случайного числа от 0 до 10 (вы можете легко изменить это, если хотите), и случайное число является вашей «целью», которую вы описали выше.Учитывая эту цель, ваш агент ИИ может стрелять из оружия, и он стреляет пулями, соответствующими числам выше.Цель состоит в том, чтобы ваша пуля и цель суммировались до 5. Существуют отрицательные значения в случае, если ваш агент ИИ перешагнул 5, или если целью является число выше 5.

Чтобы получить положительное вознаграждение, агентдолжен получить 5. Таким образом, если текущее значение равно 3, а агент стреляет 2, то агент получит вознаграждение 1, так как он получил общее значение 5, и этот эпизод закончится.

Есть 3 способа завершения игры:

1) Агент получает 5

2) Агент не получает 5 из 15 попыток

3) Число выше 10. В этом случае мы говорим, что цель слишком далеко

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

Пример:

Текущее состояние = 2. Агент снимает 2. Новое состояние - 4. И агент начинает с 4 на следующемшаг времени.Это «последовательное принятие решений» создает вспомогательную учебную среду, а не контекстный бандит.

Надеюсь, это имеет смысл, дайте мне знать, если у вас есть какие-либо вопросы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...