Автор Тема: Входы для нейронной сети  (Прочитано 3763 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн embryo

  • Пользователь
  • Сообщений: 2
    • Просмотр профиля
Входы для нейронной сети
« : 23 Октябрь 2017, 16:37:22 »
Привет.
Подскажите, пожалуйста: где хранится информация обо всём, что отображается на дисплее в текущем фрейме? Игра 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
Но не могу до конца разобраться :?
« Последнее редактирование: 23 Октябрь 2017, 17:54:51 от embryo »

Оффлайн Segaman

  • Пользователь
  • Сообщений: 3240
  • Пол: Мужской
  • Blast Processing!
    • Youtube
    • Просмотр профиля
Входы для нейронной сети
« Ответ #1 : 23 Октябрь 2017, 17:59:15 »
embryo, поучи ром-хакинг и поучи нейронные сети.
такой информации в роме и ОЗУ нет, так что если хочешь, можешь ничего не учить и ничего не искать :lol:

Оффлайн Dyons

  • Пользователь
  • Сообщений: 7137
  • инфернальный колдун
    • Youtube
    • Просмотр профиля
Входы для нейронной сети
« Ответ #2 : 23 Октябрь 2017, 18:19:47 »
embryo, поучи ром-хакинг
на фиг ему не нужен ромхакинг, ему надо получать массив пикселей с окна и кормить нейросетке

Оффлайн Segaman

  • Пользователь
  • Сообщений: 3240
  • Пол: Мужской
  • Blast Processing!
    • Youtube
    • Просмотр профиля
Входы для нейронной сети
« Ответ #3 : 23 Октябрь 2017, 18:31:30 »
Dyons, замучается он так делать. он хочет просто взять и сразу все получить.
будто родился в семье миллионеров и сразу получил на первый др новенькую теслу на вырост :lol:

Оффлайн Skay

  • Пользователь
  • Сообщений: 4115
  • Пол: Мужской
    • Просмотр профиля
Входы для нейронной сети
« Ответ #4 : 23 Октябрь 2017, 18:59:33 »
так тут же все есть 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.

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

Добавлено позже:
а не, в коде нейросеть есть. И кнопки не рандомно, а на основе ее опыта нажимаются.
Данные с экрана - вход сети, клавиша - выход.
Долго же ее так обучать. Вот еслиб это распаралелить...
« Последнее редактирование: 23 Октябрь 2017, 19:13:17 от Skay »

Оффлайн supremacy

  • Пользователь
  • Сообщений: 2255
  • Пол: Мужской
    • Просмотр профиля
Входы для нейронной сети
« Ответ #5 : 23 Октябрь 2017, 19:21:26 »
Но это сложно назвать нейросетью. Просто подбирается перебирается последовательность кнопок для удачного прохождения уровня
А что по-твоему является нейросетью?

Ага, вижу что дополнил пост :)

Оффлайн Skay

  • Пользователь
  • Сообщений: 4115
  • Пол: Мужской
    • Просмотр профиля
Входы для нейронной сети
« Ответ #6 : 23 Октябрь 2017, 19:21:55 »
Всё равно больше на брутфорс похоже. Заявленного NEAT  я не вижу в коде и близко, просто для красивого словца упомянули. И сеть видит только уровень без врагов. Тупо кратчайший путь находит. Т.е. все обучение никак не поможет на другом уровне. мда.

Добавлено позже:
supremacy, НУ посмотрите исходник. Там пара перцептронов а не сеть. Брутфорсом обучается проходить уровень. Изменись все на уровне - и пойдет к чертям. Сеть же должна составлять , очень грубо говоря, "паттерны" поведения в зависимости от препятствий. Собственно в коментах на гиктаймсе об этом и говорят.

Добавлено позже:
почитал про NEAT/ Выводы. видео фарс и пыль в глаза. Если коротко:
Генетический алгоритм выбирает из множества нейросетей, а тут одна нейросеть (ну с поколениями). Когда идет работа генетического алгоритма, то создаётся большущая куча нейросетей и алгоритм уже выбирает более живучую.
« Последнее редактирование: 23 Октябрь 2017, 19:30:18 от Skay »

Оффлайн supremacy

  • Пользователь
  • Сообщений: 2255
  • Пол: Мужской
    • Просмотр профиля
Входы для нейронной сети
« Ответ #7 : 23 Октябрь 2017, 19:32:05 »
Многие думают что нейросети это что-то очень умное, но на самом деле это довольно тупая штука, и вся основная работа - это подготовка входных данных.

Сеть можно применять для разных целей и разными способами и тут всё зависит от способности человека построить адекватную модель мира, подготовить входные данные.
Модель этого чувака не рассчитана на изменение условий, но от этого нейросеть не перестаёт быть настоящей :)
« Последнее редактирование: 23 Октябрь 2017, 19:46:09 от supremacy »

Оффлайн Skay

  • Пользователь
  • Сообщений: 4115
  • Пол: Мужской
    • Просмотр профиля
Входы для нейронной сети
« Ответ #8 : 23 Октябрь 2017, 19:35:53 »
Многие думают что нейросети это что-то очень умное, но на самом деле это довольно тупая штука, и вся основная работа - это подготовка входных данных.
да вкурсе я :) но тут не дотягивает до сети. Пара перцептронов для вычислений кратчайшего пути, точнее идлеального порядка нажатия клавишь.
Ну и всё же, подразумевается, что обученная сеть сможет потом работать на аналогичных вещах. Данная же, только под конкретный уровень, при переходже на новый уровень - просто упрется в стену и всё. И все время обучения впустую.

Оффлайн MC68k

  • Пользователь
  • Сообщений: 118
    • Просмотр профиля
Входы для нейронной сети
« Ответ #9 : 24 Октябрь 2017, 10:19:56 »
Подскажите, пожалуйста: где хранится информация обо всём, что отображается на дисплее в текущем фрейме?
В видеопамяти.
К.О.

Онлайн Maelstrom

  • Пользователь
  • Сообщений: 4425
  • Пол: Мужской
  • Deinonychus Antirrhopus
    • Youtube
    • Просмотр профиля
Входы для нейронной сети
« Ответ #10 : 24 Октябрь 2017, 10:40:57 »
Пара перцептронов для вычислений кратчайшего пути, точнее идлеального порядка нажатия клавишь.
Ну и всё же, подразумевается, что обученная сеть сможет потом работать на аналогичных вещах. Данная же, только под конкретный уровень, при переходже на новый уровень - просто упрется в стену и всё. И все время обучения впустую.
Там где там явное вычисление кратчайшего пути? На вход нейросети идёт данные на экране, в смысле где клетка с препятствием, а где клетка с врагом. Получается как раз не под конкретный уровень, а выдрачивание паттернов в зависимости от получаемого на экране. Критерий успешности - экран вправо скроллится.

Другое дело, что на хитрых местах это лажает. На видео в марио 4 на снесе вон всё застопорилось на моменте с высокой трубой, где надо прыгнуть назад на врага и от него уже дальше. Это уже получилось слишком сложно :)

Оффлайн Skay

  • Пользователь
  • Сообщений: 4115
  • Пол: Мужской
    • Просмотр профиля
Входы для нейронной сети
« Ответ #11 : 24 Октябрь 2017, 13:53:44 »
Maelstrom, "вычисление кратчайшего пути", это я утрированно сказал чему научится сеть на данной карте, и только для нее.
там никак не обрабыватются враги, их вообще не видит. Только ладндшафт.
ТАм чисто очковтирательство, он везде упомняется NEAT, которого нету от слова совсем.
Блин, где бы время на всё найти, можно былоб свою реализацию попробовать запилить, интересно. эх:(

Онлайн Maelstrom

  • Пользователь
  • Сообщений: 4425
  • Пол: Мужской
  • Deinonychus Antirrhopus
    • Youtube
    • Просмотр профиля
Входы для нейронной сети
« Ответ #12 : 24 Октябрь 2017, 15:24:45 »
Maelstrom, "вычисление кратчайшего пути", это я утрированно сказал чему научится сеть на данной карте, и только для нее.
там никак не обрабыватются враги, их вообще не видит. Только ладндшафт.
ТАм чисто очковтирательство, он везде упомняется NEAT, которого нету от слова совсем.
Блин, где бы время на всё найти, можно былоб свою реализацию попробовать запилить, интересно. эх:(
Как это враги не обрабатываются? Он их перепрыгивает. Даже вон на черепаху в низком коридоре напрыгивать научился.

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

Оффлайн Skay

  • Пользователь
  • Сообщений: 4115
  • Пол: Мужской
    • Просмотр профиля
Входы для нейронной сети
« Ответ #13 : 24 Октябрь 2017, 16:13:28 »
а NEAT же это вроде мутационная система, когда в нейросеть случайные изменения вносятся и запускается игра.
NEAT  это генетический алгоритм, там не случайные мутации, а из кучи (огромной) нейронных сетей,  собираются как раз новые.
Как это враги не обрабатываются? Он их перепрыгивает. Даже вон на черепаху в низком коридоре напрыгивать научился.
да посомтри, даже на "предпросмотре"  видно, (тот квадратик вверху слева - это как нейросеть видит мир, и эта даже не целеком экран, а малая область вокруг Марио, дальше ее подсвечивают), только стены да трубы, изменения нажатий происходят не из за встречи врага, а из за того что перестал двигаться в лево - и тут вот случайная мутация в виде нажатия какой то кнопки (вроде бы нейросеть нажимает не совсем случайно, но не из за врагов). Еслиб он видел врагов, то научившись перепрыгивать одного - перепрыгивал бы и остальных, а не шел бы так напрямик.

Онлайн Maelstrom

  • Пользователь
  • Сообщений: 4425
  • Пол: Мужской
  • Deinonychus Antirrhopus
    • Youtube
    • Просмотр профиля
Входы для нейронной сети
« Ответ #14 : 24 Октябрь 2017, 16:54:04 »


да посомтри, даже на "предпросмотре"  видно, (тот квадратик вверху слева - это как нейросеть видит мир, и эта даже не целеком экран, а малая область вокруг Марио, дальше ее подсвечивают), только стены да трубы, изменения нажатий происходят не из за встречи врага, а из за того что перестал двигаться в лево - и тут вот случайная мутация в виде нажатия какой то кнопки (вроде бы нейросеть нажимает не совсем случайно, но не из за врагов). Еслиб он видел врагов, то научившись перепрыгивать одного - перепрыгивал бы и остальных, а не шел бы так напрямик.
Я туда и смотрю, там враги чёрными точками показываются как раз. В следующий раз прыжка может не получится, потому что прога её не знает точно надо всегда прыгать при враге, а картина мира в купе с препятсвиями получается другая и нейросеть не находит соответствий.

NEAT  это генетический алгоритм, там не случайные мутации, а из кучи (огромной) нейронных сетей,  собираются как раз новые.
Тогда ясно, я думал там всё куда проще.

Оффлайн Skay

  • Пользователь
  • Сообщений: 4115
  • Пол: Мужской
    • Просмотр профиля
Входы для нейронной сети
« Ответ #15 : 24 Октябрь 2017, 17:33:33 »
Maelstrom, тут преимущества нейросети сведены на нет. Обычно архитектура нейросети подразумевает обучение на примерах тут же весь fitness сваливается на плечи алгоритма, причем не особо "умного".
там враги чёрными точками показываются как раз.
как то проглядел.  :lol: В- внимательность.

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2508
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Входы для нейронной сети
« Ответ #16 : 24 Октябрь 2017, 18:07:55 »
просто черный цвет для врага не пойдет. он должен идентифицировать врагов тоже. ведь у врагов различное поведение. нужно предсказание поведения врага в зависимости от его типа. например черепаха - она ж не просто так взяла и умерла. она в домик свернулась, а потом если её толкнуть - может начать долбить влево-вправо снося все на своем пути, то есть и игрока может снести тоже. или рыбки, которые прыгают из воды при пробеге через мост. тоже надо уметь предсказывать откуда такая рыбка выскочет. потом лифты. потом цветочки в трубах. так что дофига делов там :) запись последовательности нажатий кнопок это очень топорно и одноразово. надо именно мозги - чтоб видя карту он сам делал правильные выводы и бегал.

Оффлайн Skay

  • Пользователь
  • Сообщений: 4115
  • Пол: Мужской
    • Просмотр профиля
Входы для нейронной сети
« Ответ #17 : 24 Октябрь 2017, 19:27:25 »
потом цветочки в трубах. так что дофига делов там
это полностью забота НС, конечно лучше ей задать начальные паттерны, показать что можно лазеть, и атаковать. Но тут вообще ничего. Мне вообще кажется
запись последовательности нажатий кнопок это очень топорно и одноразово. надо именно мозги - чтоб видя карту он сам делал правильные выводы и бегал.
тут немного сложнее чем запись последовательностей)).

Оффлайн embryo

  • Пользователь
  • Сообщений: 2
    • Просмотр профиля
Входы для нейронной сети
« Ответ #18 : 30 Октябрь 2017, 17:41:21 »
Всем спасибо, нашёл ответ в IRC чате любителей NES.
Мне посоветовали обратиться к LUA-программированию. FCEUX содержит в себе много уже написанных скриптов на LUA. Воспользовался SMB-Mouse.lua Одной из его функций является показ адреса ячейки и её содержимого при наведении указателем мыши на конкретную плитку.
Работа скрипта:
Из RAM-карты можно узнать ячейки, ответственные за движение и расположение противников, а также самого Марио. Ссылка:
https://datacrystal.romhacking.net/wiki/Super_Mario_Bros.:RAM_map

Оффлайн Segaman

  • Пользователь
  • Сообщений: 3240
  • Пол: Мужской
  • Blast Processing!
    • Youtube
    • Просмотр профиля
Входы для нейронной сети
« Ответ #19 : 30 Октябрь 2017, 19:43:39 »
embryo, создай нам топ-марио-тасера за всю историю бывшего усатого водопроводчика  :lol: