В случайно сгенерированном мире Minecraft найдём алмазы с помощью ИИ. Как обученный с подкреплением агент проявит себя в одной из самых сложных задач игры? Подробностями делимся к старту написали целую энциклопедию на 8000 страниц.
Обсуждаемое не ограничивается только Minecraft; подход можно применять в таких же сложных средах. Строго говоря, мы реализуем два разных метода, которые станут основой нашего интеллектуального агента.
Но, прежде чем обучать агента, необходимо понять, как взаимодействовать со средой. Начнём со скриптового бота и познакомимся с синтаксисом. Работать мы будем с MineRL — потрясающей библиотекой для создания приложений искусственного интеллекта в Minecraft.
КАК ДОБЫВАТЬ МНОГО АЛМАЗОВ В МАЙНКРАФТ БЕДРОК 1.19!?
Мы стоим перед деревом. Как вы видите, разрешение довольно низкое. В низком разрешении используется меньше пикселей, что ускоряет работу. К счастью для нас, нейронным сетям не нужно разрешение 4К, чтобы понять происходящее.
Мы хотим взаимодействовать с игрой. Что может делать наш агент? Вот Список действий
Первый шаг при поиске алмазов — добыть древесину для изготовления верстака и деревянной кирки.
Давайте постараемся подойти к дереву поближе. То есть нам нужно удерживать кнопку Forward меньше секунды. В MineRL обрабатывается по 20 действий в секунду: нам не нужна целая секунда, поэтому давайте повторим действие Forward 5 раз и подождём ещё 40 тактов:
# Define the sequence of actions script = [‘forward’] * 5 + [»] * 40 env = gym.make(‘MineRLObtainDiamond-v0’) env = Recorder(env, ‘./video’, fps=60) env.seed(21) obs = env.reset() for action in script: # Get the action space (dict of possible actions) action_space = env.action_space.noop() # Activate the selected action in the script action_space[action] = 1 # Update the environment with the new action space obs, reward, done, _ = env.step(action_space) env.release() env.play()
Отлично, а сейчас срубим дерево. В общей сложности от нас требуется 4 действия:
- Forward — встать перед деревом;
- Attack — срубить дерево;
- Camera — посмотреть вверх или вниз;
- Jump — получить готовый кусок древесины.
Агент успешно срубил целое дерево. Неплохо для начала, но от ИИ хотелось бы побольше самостоятельности…
II. Глубокое обучение
Наш бот хорошо работает в фиксированной среде. Но что случится, если мы поменяем затравку или её начальную точку? Всё прописано в скрипте, так что агент, скорее всего, попытается срубить несуществующее дерево.
Такой подход слишком статичен для наших целей: нам нужно что-то, что могло бы адаптироваться к новым средам. И вместо заданных в скрипте команд нам нужен искусственный интеллект, который бы знал, как рубить деревья. Конечно же, подходящей основой для обучения такого агента служит обучение с подкреплением. Если точнее, то подходящим вариантом будет глубокое обучение с подкреплением, поскольку мы обрабатываем изображения, из которых выбираются правильные действия.
Существует два способа реализации глубокого обучения с подкреплением:
- Истинное глубокое обучение с подкреплением: агент обучается с нуля, взаимодействуя со средой. Он поощряется каждый раз, когда срубает дерево.
- Имитационное обучение: агент учится, как рубить деревья, исходя из набора данных. Здесь данные — это последовательность действий по рубке деревьев, выполняемая человеком.
Оба подхода дают один и то же результат, но они не одинаковы. Авторы статью в блоге.
Step 4000 | Training loss = 0.878 Step 8000 | Training loss = 0.826 Step 12000 | Training loss = 0.805 Step 16000 | Training loss = 0.773 Step 20000 | Training loss = 0.789 Step 24000 | Training loss = 0.816 Step 28000 | Training loss = 0.769 Step 32000 | Training loss = 0.777 Step 36000 | Training loss = 0.738 Step 40000 | Training loss = 0.751 Step 44000 | Training loss = 0.764 Step 48000 | Training loss = 0.732 Step 52000 | Training loss = 0.748 Step 56000 | Training loss = 0.765 Step 60000 | Training loss = 0.735 Step 64000 | Training loss = 0.716 Step 68000 | Training loss = 0.710 Step 72000 | Training loss = 0.693 Step 76000 | Training loss = 0.695
Модель обучена. Теперь мы можем создать экземпляр объекта среды и посмотреть, как поведёт себя модель. Если обучение прошло успешно, модель должна безостановочно рубить все деревья в зоне видимости.
В этот раз мы воспользуемся обёрткой ActionShaping. Она нужна для сопоставления массива чисел, созданного с помощью dataset_action_batch_to_actions, с дискретными действиями из MineRL.
Нашей модели нужно наблюдение от первого лица в корректном формате, а на выходе она выводит логиты. С помощью функции softmax эти логиты можно перевести в распределение вероятностей в наборе из 7 действий. Далее случайным образом выбираем действие по его вероятности. Выбранное действие реализуется в MineRL через env.step(action).
Этот процесс можно повторять сколько угодно раз. Повторим его 1 000 раз и посмотрим, что получится:
model = CNN((3, 64, 64), 7).cuda() model.load_state_dict(torch.load(‘model.pth’)) env = gym.make(‘MineRLObtainDiamond-v0’) env1 = Recorder(env, ‘./video’, fps=60) env = ActionShaping(env1) action_list = np.arange(env.action_space.n) obs = env.reset() for step in tqdm(range(1000)): # Get input in the correct format obs = torch.from_numpy(obs[‘pov’].transpose(2, 0, 1)[None].astype(np.float32) / 255).cuda() # Turn logits into probabilities probabilities = torch.softmax(model(obs), dim=1)[0].detach().cpu().numpy() # Sample action according to the probabilities action = np.random.choice(action_list, p=probabilities) obs, reward, _, _ = env.step(action) env1.release() env1.play()
Наш агент довольно хаотичный, но в этой новой, незнакомой среде у него всё-таки получается рубить деревья. А теперь… как же найти алмазы?
III. Скрипт + имитационное обучение
Простой, но действенный подход — комбинировать скриптовые действия с действиями искусственного интеллекта. Учим всему скучному и записываем знания в скрипт.
В этой парадигме нам нужна свёрточная сеть, которая позволит получить большой объём древесины (3 000 шагов). Затем в скрипте прописывается последовательность действий для изготовления досок, палок, верстака, деревянной кирки и приступаем к добыче камня (он должен быть у нас под ногами). Этот камень можно использовать для изготовления каменной кирки, которой можно добывать железную руду.
Вот здесь всё и начинает усложняться: железная руда встречается довольно редко, поэтому для поиска её залежей придётся на какое-то время запустить игру. Далее нужно создать печь и расплавить руду, чтобы получить железную кирку. И, наконец, придётся спуститься ещё глубже и суметь получить алмаз, не упав в лаву.
Видно, что в первые 3 000 шагов агент рубит деревья как сумасшедший, а затем срабатывает скрипт, и выполняется задача. Возможно, это не так очевидно, но команда print(obs.inventory) показывает каменную кирку. Обратите внимание, что это избранный пример; большинство запусков завершаются не так успешно.
Существует несколько причин, почему агент терпит неудачу: он может попасть во враждебную среду (вода, лава и т. д.), в область без леса или даже упасть и погибнуть. Если вы поэкспериментируете с разными затравками, то сможете лучше понять всю сложность проблемы и, надеюсь, получите идеи по созданию ещё более «талантливых» агентов.
Заключение
Надеюсь, вам понравилось это небольшое руководство по обучению с подкреплением в Minecraft. Это не просто популярная игра, но и интересная среда для проверки агентов ИИ, обученных с подкреплением. Здесь, как и в подписывайтесь на меня в Twitter. А мы поможем прокачать ваши навыки или с самого начала освоить профессию, актуальную в любое время:
Источник: se7en.ws
Advanced Finders [1.19.4] [1.18.2] [1.16.5] [1.12.2]
Advanced Finders добавит три удобных поисковых инструмента, которые будут помогать вам отыскивать драгоценные камни, металлы и минералы. Они будут показывать направление к ближайшим от игрока рудам, показывать подземные руды (стрелками вверх/вниз), сигнализировать о крупном месторождении руд.
Скриншоты
Видео
Рецепты
Как установить Advanced Finders
- Скачай и установи Minecraft Forge
- Скачай архив
- Распакуй его в .minecraftmods
- Готово
Источник: minecraft-inside.ru
Мод Finder Compass 1.19/1.18.2 (Алмазный компас)
Finder Compass — полезный мод на Майнкрафт 1.19/1.18.2 . Многие игроки хотят инструмент, с помощью которого станет легче находить алмазы, мы вас не разочаруем. Существует мод Finder Compass — это такой своеобразный компас, который покажет вам направления к алмазам.
Что интересного?
С этим дополнением, Вы не заблудитесь и при этом ваш инвентарь станет полон алмазами и другими полезными ресурсами. Заменяет этот компас простой из Майнкрафт. Вкратце будем честны и назовём этот мод на много алмазов.
Видео обзор
Как установить мод
Скачать Мод Finder Compass 1.19/1.18.2 (Алмазный компас)
Для 1.19 finder-compass-mod-forge-1_19.jar [ 53.37 Kb 112 24 июня 2022]
Для 1.18.2 finder-compass-mod-1_18_2.jar [ 53.37 Kb 96 09 апреля 2022]
Для 1.18.1 fullbrightnesstoggle_1_18_1-1_4.jar [ 5.81 Kb 190 10 января 2022]
Для 1.17.1 findercompass-1_17_1_1.jar [ 53.08 Kb 505 11 августа 2021]
Для 1.16.5 — 1.16.2 findercompass-1_16_2_1.jar [ 50.61 Kb 1526 31 августа 2020]
Для 1.16.1 findercompass-1_16_1_1.jar [ 49.52 Kb 573 27 июня 2020]
Для 1.15.2 findercompass-1_15_1_1.jar [ 48.99 Kb 304 27 июня 2020]
Для 1.15.1 findercompass_1_15_1_1.jar [ 48.99 Kb 235 21 декабря 2019]
Для 1.14.4 finder-compass-mod-1_14_4.jar [ 48.24 Kb 576 26 августа 2019]
Для 1.14.3 finder-compass-mod-1_14_3.jar [ 44.99 Kb 216 08 июля 2019]
Для 1.13.2 finder-compass-mod-1_13_2.jar [ 47.58 Kb 96 08 июля 2019]
Для 1.12.2 finder-compass-mod-1_12_2.jar [ 67.66 Kb 732 08 июля 2019]
Для 1.12.1 FinderCompass_1.12.1.jar [ 67.66 Kb 67 24 августа 2017]
Для 1.12 FinderCompass_1.12.jar [ 67.66 Kb 70 24 августа 2017]
Для 1.11.2 FinderCompass_1.11.2.jar [ 67.19 Kb 68 24 августа 2017]
Для 1.11 FinderCompass_1.11.jar [ 67.17 Kb 55 24 августа 2017]
Для 1.10.2 FinderCompass_1.10.2.jar [ 66.91 Kb 52 24 августа 2017]
Для 1.9.4 FinderCompass_1.9.4.jar [ 66.88 Kb 38 24 августа 2017]
Для 1.9 FinderCompass_1.9.jar [ 66.87 Kb 36 24 августа 2017]
Для 1.8.8 FinderCompass_1.8.8.jar [ 66.16 Kb 39 24 августа 2017]
Для 1.8 FinderCompass_1.8.jar [ 66.7 Kb 60 24 августа 2017]
Для 1.7.10 FinderCompass_1.7.10.jar [ 62.45 Kb 164 24 августа 2017]
Источник: minecraft20.ru