| Разработка и ромхакинг > Ромхакинг и программирование |
| Входы для нейронной сети |
| (1/1) |
| embryo:
Привет. Подскажите, пожалуйста: где хранится информация обо всём, что отображается на дисплее в текущем фрейме? Игра Super Mario Bros. Это нужно для работы с нейронной сетью и обучению её игре. Как, например, в этом видео: https://www.youtube.com/watch?v=iakFfOmanJU - информация о происходящем на экране упрощается и отображается. На вложенном скриншоте - поле в красном кружке. Искал подобное в hex editor, а также наткнулся на ROM map для игры: https://datacrystal.romhacking.net/wiki/Super_Mario_Bros.:ROM_map#Blocks_Graphics Но не могу до конца разобраться :? |
| Segaman:
embryo, поучи ром-хакинг и поучи нейронные сети. такой информации в роме и ОЗУ нет, так что если хочешь, можешь ничего не учить и ничего не искать :lol: |
| Dyons:
--- Цитата: Segaman от 23 Октябрь 2017, 17:59:15 ---embryo, поучи ром-хакинг --- Конец цитаты --- на фиг ему не нужен ромхакинг, ему надо получать массив пикселей с окна и кормить нейросетке |
| Segaman:
Dyons, замучается он так делать. он хочет просто взять и сразу все получить. будто родился в семье миллионеров и сразу получил на первый др новенькую теслу на вырост :lol: |
| Skay:
так тут же все есть https://geektimes.ru/post/252874/ в т.ч. и исходники. --- Цитата ----- MarI/O by SethBling -- Feel free to use this code, but please do not redistribute it. -- Intended for use with the BizHawk emulator and Super Mario World or Super Mario Bros. ROM. -- For SMW, make sure you have a save state named "DP1.state" at the beginning of a level, -- and put a copy in both the Lua folder and the root directory of BizHawk. --- Конец цитаты --- Добавлено позже: Но это сложно назвать нейросетью. Просто подбирается перебирается последовательность кнопок для удачного прохождения уровня, а не проххождения в целом. Добавлено позже: а не, в коде нейросеть есть. И кнопки не рандомно, а на основе ее опыта нажимаются. Данные с экрана - вход сети, клавиша - выход. Долго же ее так обучать. Вот еслиб это распаралелить... |
| supremacy:
--- Цитата: Skay от 23 Октябрь 2017, 18:59:33 ---Но это сложно назвать нейросетью. Просто подбирается перебирается последовательность кнопок для удачного прохождения уровня --- Конец цитаты --- А что по-твоему является нейросетью? Ага, вижу что дополнил пост :) |
| Skay:
Всё равно больше на брутфорс похоже. Заявленного NEAT я не вижу в коде и близко, просто для красивого словца упомянули. И сеть видит только уровень без врагов. Тупо кратчайший путь находит. Т.е. все обучение никак не поможет на другом уровне. мда. Добавлено позже: supremacy, НУ посмотрите исходник. Там пара перцептронов а не сеть. Брутфорсом обучается проходить уровень. Изменись все на уровне - и пойдет к чертям. Сеть же должна составлять , очень грубо говоря, "паттерны" поведения в зависимости от препятствий. Собственно в коментах на гиктаймсе об этом и говорят. Добавлено позже: почитал про NEAT/ Выводы. видео фарс и пыль в глаза. Если коротко: Генетический алгоритм выбирает из множества нейросетей, а тут одна нейросеть (ну с поколениями). Когда идет работа генетического алгоритма, то создаётся большущая куча нейросетей и алгоритм уже выбирает более живучую. |
| supremacy:
Многие думают что нейросети это что-то очень умное, но на самом деле это довольно тупая штука, и вся основная работа - это подготовка входных данных. Сеть можно применять для разных целей и разными способами и тут всё зависит от способности человека построить адекватную модель мира, подготовить входные данные. Модель этого чувака не рассчитана на изменение условий, но от этого нейросеть не перестаёт быть настоящей :) |
| Skay:
--- Цитата: supremacy от 23 Октябрь 2017, 19:32:05 ---Многие думают что нейросети это что-то очень умное, но на самом деле это довольно тупая штука, и вся основная работа - это подготовка входных данных. --- Конец цитаты --- да вкурсе я :) но тут не дотягивает до сети. Пара перцептронов для вычислений кратчайшего пути, точнее идлеального порядка нажатия клавишь. Ну и всё же, подразумевается, что обученная сеть сможет потом работать на аналогичных вещах. Данная же, только под конкретный уровень, при переходже на новый уровень - просто упрется в стену и всё. И все время обучения впустую. |
| MC68k:
--- Цитата: embryo от 23 Октябрь 2017, 16:37:22 ---Подскажите, пожалуйста: где хранится информация обо всём, что отображается на дисплее в текущем фрейме? --- Конец цитаты --- В видеопамяти. К.О. |
| Maelstrom:
--- Цитата: Skay от 23 Октябрь 2017, 19:35:53 ---Пара перцептронов для вычислений кратчайшего пути, точнее идлеального порядка нажатия клавишь. Ну и всё же, подразумевается, что обученная сеть сможет потом работать на аналогичных вещах. Данная же, только под конкретный уровень, при переходже на новый уровень - просто упрется в стену и всё. И все время обучения впустую. --- Конец цитаты --- Там где там явное вычисление кратчайшего пути? На вход нейросети идёт данные на экране, в смысле где клетка с препятствием, а где клетка с врагом. Получается как раз не под конкретный уровень, а выдрачивание паттернов в зависимости от получаемого на экране. Критерий успешности - экран вправо скроллится. Другое дело, что на хитрых местах это лажает. На видео в марио 4 на снесе вон всё застопорилось на моменте с высокой трубой, где надо прыгнуть назад на врага и от него уже дальше. Это уже получилось слишком сложно :) |
| Skay:
Maelstrom, "вычисление кратчайшего пути", это я утрированно сказал чему научится сеть на данной карте, и только для нее. там никак не обрабыватются враги, их вообще не видит. Только ладндшафт. ТАм чисто очковтирательство, он везде упомняется NEAT, которого нету от слова совсем. Блин, где бы время на всё найти, можно былоб свою реализацию попробовать запилить, интересно. эх:( |
| Maelstrom:
--- Цитата: Skay от 24 Октябрь 2017, 13:53:44 ---Maelstrom, "вычисление кратчайшего пути", это я утрированно сказал чему научится сеть на данной карте, и только для нее. там никак не обрабыватются враги, их вообще не видит. Только ладндшафт. ТАм чисто очковтирательство, он везде упомняется NEAT, которого нету от слова совсем. Блин, где бы время на всё найти, можно былоб свою реализацию попробовать запилить, интересно. эх:( --- Конец цитаты --- Как это враги не обрабатываются? Он их перепрыгивает. Даже вон на черепаху в низком коридоре напрыгивать научился. а NEAT же это вроде мутационная система, когда в нейросеть случайные изменения вносятся и запускается игра. И потом смотрится, кто дальше прошёл, и отбираются такие ветви. Разве тут не это самое, или я с чем-то путаю? |
| Skay:
--- Цитата: Maelstrom от 24 Октябрь 2017, 15:24:45 ---а NEAT же это вроде мутационная система, когда в нейросеть случайные изменения вносятся и запускается игра. --- Конец цитаты --- NEAT это генетический алгоритм, там не случайные мутации, а из кучи (огромной) нейронных сетей, собираются как раз новые. --- Цитата: Maelstrom от 24 Октябрь 2017, 15:24:45 ---Как это враги не обрабатываются? Он их перепрыгивает. Даже вон на черепаху в низком коридоре напрыгивать научился. --- Конец цитаты --- да посомтри, даже на "предпросмотре" видно, (тот квадратик вверху слева - это как нейросеть видит мир, и эта даже не целеком экран, а малая область вокруг Марио, дальше ее подсвечивают), только стены да трубы, изменения нажатий происходят не из за встречи врага, а из за того что перестал двигаться в лево - и тут вот случайная мутация в виде нажатия какой то кнопки (вроде бы нейросеть нажимает не совсем случайно, но не из за врагов). Еслиб он видел врагов, то научившись перепрыгивать одного - перепрыгивал бы и остальных, а не шел бы так напрямик. |
| Maelstrom:
--- Цитата: Skay от 24 Октябрь 2017, 16:13:28 ---да посомтри, даже на "предпросмотре" видно, (тот квадратик вверху слева - это как нейросеть видит мир, и эта даже не целеком экран, а малая область вокруг Марио, дальше ее подсвечивают), только стены да трубы, изменения нажатий происходят не из за встречи врага, а из за того что перестал двигаться в лево - и тут вот случайная мутация в виде нажатия какой то кнопки (вроде бы нейросеть нажимает не совсем случайно, но не из за врагов). Еслиб он видел врагов, то научившись перепрыгивать одного - перепрыгивал бы и остальных, а не шел бы так напрямик. --- Конец цитаты --- Я туда и смотрю, там враги чёрными точками показываются как раз. В следующий раз прыжка может не получится, потому что прога её не знает точно надо всегда прыгать при враге, а картина мира в купе с препятсвиями получается другая и нейросеть не находит соответствий. --- Цитата: Skay от 24 Октябрь 2017, 16:13:28 ---NEAT это генетический алгоритм, там не случайные мутации, а из кучи (огромной) нейронных сетей, собираются как раз новые. --- Конец цитаты --- Тогда ясно, я думал там всё куда проще. |
| Skay:
Maelstrom, тут преимущества нейросети сведены на нет. Обычно архитектура нейросети подразумевает обучение на примерах тут же весь fitness сваливается на плечи алгоритма, причем не особо "умного". --- Цитата: Maelstrom от 24 Октябрь 2017, 16:54:04 ---там враги чёрными точками показываются как раз. --- Конец цитаты --- как то проглядел. :lol: В- внимательность. |
| SeregaZ:
просто черный цвет для врага не пойдет. он должен идентифицировать врагов тоже. ведь у врагов различное поведение. нужно предсказание поведения врага в зависимости от его типа. например черепаха - она ж не просто так взяла и умерла. она в домик свернулась, а потом если её толкнуть - может начать долбить влево-вправо снося все на своем пути, то есть и игрока может снести тоже. или рыбки, которые прыгают из воды при пробеге через мост. тоже надо уметь предсказывать откуда такая рыбка выскочет. потом лифты. потом цветочки в трубах. так что дофига делов там :) запись последовательности нажатий кнопок это очень топорно и одноразово. надо именно мозги - чтоб видя карту он сам делал правильные выводы и бегал. |
| Skay:
--- Цитата: SeregaZ от 24 Октябрь 2017, 18:07:55 ---потом цветочки в трубах. так что дофига делов там --- Конец цитаты --- это полностью забота НС, конечно лучше ей задать начальные паттерны, показать что можно лазеть, и атаковать. Но тут вообще ничего. Мне вообще кажется --- Цитата: SeregaZ от 24 Октябрь 2017, 18:07:55 ---запись последовательности нажатий кнопок это очень топорно и одноразово. надо именно мозги - чтоб видя карту он сам делал правильные выводы и бегал. --- Конец цитаты --- тут немного сложнее чем запись последовательностей)). |
| embryo:
Всем спасибо, нашёл ответ в IRC чате любителей NES. Мне посоветовали обратиться к LUA-программированию. FCEUX содержит в себе много уже написанных скриптов на LUA. Воспользовался SMB-Mouse.lua Одной из его функций является показ адреса ячейки и её содержимого при наведении указателем мыши на конкретную плитку. Работа скрипта: Из RAM-карты можно узнать ячейки, ответственные за движение и расположение противников, а также самого Марио. Ссылка: https://datacrystal.romhacking.net/wiki/Super_Mario_Bros.:RAM_map |
| Segaman:
embryo, создай нам топ-марио-тасера за всю историю бывшего усатого водопроводчика :lol: |
| Навигация |
| Главная страница сообщений |