Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / ...

...

Advanced: Тема повышенной сложности или важная.
Страницы: 1 2 3 4 Следующая »
3daУдалёнwww17 ноя. 201712:11#0
.

Правка: 30 мая 2018 12:29

CapSopenerПостоялецwww17 ноя. 201713:19#1
Читай про Reinforcement Learning.
Как правило, на вход агенту подают текущее наблюдаемое состояние среды. В игре угадай число это будет известный допустимый диапазон.
Почему именно эта задача выбрана для эксперимента, мне не понятно. Очевидное оптимальное решение - бинарный поиск (если нет информации о распределении вероятностей загадываемых значений). Ну научится агент этой стратегии, что в этом интересного? Взял бы хотя бы какую-нибудь игру типа Arkanoid или Lunar Lander.
gudleifrПостоялецwww17 ноя. 201715:42#2
3da
Будем рассуждать логически. Состояние игры описывается двумя числами - верхней и нижней границами допустимого отрезка (честно ли будет заменить эти два числа на одно - длину отрезка?). Ход игрока - любое число на этом отрезке. Берем нужное число коробков (n*n, или если сжульничали - n). В каждый кладем нужное число бусин (<n). В ходе партии тащим и запоминаем бусины. Если выиграли, добавляем в коробки по одноименной бусине. Повторяем, пока число бусин со значением "половина отрезка" не превысит разумные пределы.

Аналогично распространяем на нейроны: "изображение некой длины" (возбуждение входных нейронов от сих до сих) должно распознаться как "ее половина".

Правка: 17 ноя. 2017 15:46

gudleifrПостоялецwww17 ноя. 201716:11#3
3da
> Я с этим не согласен.
Хорошо. Значит, n*n коробков.

3da
> Так можно считать что у игрока есть память чтобы запоминать границы.
Память в данном случае - имя текущего коробка.

SuslikМодераторwww17 ноя. 201716:20#4
3da
задачи, которые гораздо проще решить алгоритмически (в данном случае — бинарным поиском), нет никакого смысла решать машинным обучением. даже в целях обучения (программиста, не программы) смысла нет, потому что есть гораздо более подходящие задачи, сравнимые по сложности.

Правка: 17 ноя. 2017 16:20

gudleifrПостоялецwww17 ноя. 201716:26#5
3da
> Состояние игры - это загаданное число.
Состояние игры не может быть только числом.
Либо, как предложил я, состояние соответствует текущему отрезку.
Либо в состояние входят все предыдущие ходы и ответы.
gudleifrПостоялецwww17 ноя. 201716:35#6
3da
> Можно ли при этом считать введённые ранее числа состоянием игры?
Вы учите систему играть в игру. Т.е. как-то должны ее научить запоминать. Т.е. она должна различать состояния, порожденные предыдущими ходами.
gudleifrПостоялецwww17 ноя. 201717:09#7
3da
> Подходящий термин?
Нет, это именно состояние игры.

Попробуем реализовать "память игрока" на нейронах. Ход игрока - возбуждается одна из n входных линий и линия ответа (в классической версии игры: вопрос - "меньше x?", ответ - "да/нет"). Соединить k (допустимое число ходов) таких блоков параллельно не имеет смысла, т.к. такая "память" не будет иметь влияния на игру. Классический вариант - один блок, соединенный с "полем нейронов" линиями задержки (от 0 до k тактов). Но такое решение является "знанием алгоритма" - наше "поле нейронов" имеет нечестно определенную (и обученную) заранее составляющую из "линий задержки".
Так что, структура нашего "игрока", все равно, структурно(!) отражает различение состояний игры.

Виктор ЦарегородцевПостоялецwww17 ноя. 201718:06#8
3da

Если всё-таки хочется маш.обуч - то я бы никаких нейросеток в этой задаче не брал.
А взял бы непараметрическую статистику (на парзеновских оценках плотности вероятности), и аппроксимировал бы плотность распределения ранее загаданных чисел. И при угадывании числа предлагал бы такое число (на отрезке 0-99 или на более коротком, если уже предыдущими вопросами сократили интервал), справа и слева от которого находится по 50% вероятности (на этом отрезке).

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

F320Постоялецwww17 ноя. 201720:45#9
Я правильно понял, что есть некоторое число Х, у меня оно будет сколь угодно большим, и ИИ нужно его угадать? Ок, берём число 1. Далее в цикле Пока наше число не станет больше загаданного удваиваем его. После того как верхняя граница найдена, ищем число делением отрезка пополам, надеюсь не нужно объяснять что это
CapSopenerПостоялецwww17 ноя. 201722:05#10
F320
Хороший ИИ через несколько игр должен раскусить твою тактику и начать угадывать начиная с большого числа.
F320Постоялецwww17 ноя. 201722:22#11
CapSopener
Я ничего не понимаю. Этот самый Я -- он какую функцию несёт? Я загадываю число, а ИИ его угадывает? А метрика какая? ИИ должен угадать за наименьшее число шагов? При любой стратегии ИИ это число шагов зависит от того какое число я загадал. Любые статистические конструкции идут в топку--я не генератор случайных чисел. Значит, остаётся минимакс. Т.е. минимум по стратегии максимума по загаданному числу. Так?
kiparУчастникwww18 ноя. 20170:15#12
F320
> Я правильно понял
Не, неправильно. Задача в том чтобы сделать ИИ который сам догадается до описанной тобой тактики, без подсказок.
tacПостоялецwww18 ноя. 20177:17#13
3da
> Так это уже доп. информация. Получается я должен писать алгоритм который будет
> вычислять известный допустимый диапазон на основе введённых чисел? Я хотел бы
> чтобы агент сам обучился этому.
3da
> Решил начать с простого... И упёрся в недостаток опыта и теоретических знаний
не хило ты так уперся, начни с простого /обычно на такие задачи наталкиваются после пары лет работы с сетями, разводят руками и идут спать/ .. научи нейросетку понятию больше, возьми диапазон от 0 до 100 , и загадывай одно число .. на вход подавай два числа, одно которое загадал и другое которое хочешь узнать больше ли оно .. на выходе сетка должна сказать да /больше/, нет /меньше/

а потом почитаешь у Минского /персептроны книга называется/, что такого рода предикаты нейросетками не решаются, от слова вообще, он убедительно доказал, что параллельные вычисления тут малоэффективны, а нейросетка, это не более чем просто паралелльное вычисление. Это все равно, что пытаться распараллелить суммирование. Минский ошибается лишь в одном, он пытался доказать, что перцептрон Розенблатта не найдет решения/. Ну справедливо, это конечно для общего случая, а для 100 нужно просто иметь 100 элементов в среднем слое /можно конечно пошаманить и сократить, но не более, чем на 2/3 /, с полной выборкой обучения, т.е. все варианты входов- выходов, после чего обучаем

обобщать же сетки, на неполной выборке не будут, можешь проверить потом, дать не полную выборку обучения, а половину, а потом проверь сколько правильных ответов она даст на незнакомых данных, процент угадывания будет где то 50/50 т.е. будет просто гадать .. правда это еще будет зависеть от того как ты представишь данные, если в двоичном коде , 14 бит /по 7 на каждое число/ то будет примерно как я описал, можно поиграть с представлением вида сколько чисел, столько и входов, тогда вероятность угадывания повысится. И да будет зависитеть от того какую часть выборки ты не дашь для обучения, один крайний вариант, все цифры от 50 недашь, второй крайний вариант дашь каждую вторую, т.е. 1, 3, 5 не дашь .. ут сможешь чет такое понаблюдать чуть повысится % правильно угаданных, где то с 50 до 70-80

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

Правка: 18 ноя. 2017 8:10

tacПостоялецwww18 ноя. 20177:46#14
Виктор Царегородцев
твое мнение я бы послушал, на счет написанного мной выше ... но кажется и ты, как минимум подсознательно понял это, и не советуешь использовать нейросети .. твою причину в студию, если она не совпадает с описанной мной выше

Правка: 18 ноя. 2017 7:46

Страницы: 1 2 3 4 Следующая »

/ Форум / Программирование игр / Игровая логика и ИИ

Тема закрыта.

2001—2018 © GameDev.ru — Разработка игр