IPB
ЛогинПароль:

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> Теория самообучающейся программы, на примере монополии
сообщение
Сообщение #1


Знаток
****

Группа: Пользователи
Сообщений: 346
Пол: Мужской
Реальное имя: Иван

Репутация: -  7  +


Вот, меня весьма заинтересовала идея Lappa , о написании кокой нибуть вариации монополии, с самообучающимся ИИ. Погуглил я на эту тему, но единственное что нашёл, это описание принципа роботы с крестиками-ноликами и много бредней про то что машины зохавают мир smile.gif
Поэтому и решил создать тему здесь, об самообучении ИИ в общем, и об монополии в частности.
Так вот, как я это представляю:
допустим в игре участтвуэт самообучающийся ИИ, и человек/жёстко заданый ИИ.
Весь процес самообучения происходит следующим образом (поправте или скоординируйте меня если неправ):
Человек/жёстко заданый ИИ делает ход, попадая на определённый участок(правила монополии я думаю всем известны smile.gif ему нужно определить что делать дальше - либо купить его либо пустить на аукцион. Этот выбор он делает исходя их жёстких формул, определяя степень "необходимости" для него этого участка, он учитывает его стоимость, наличие у него участков такогоже цвета, арендную плату, суму денег в наличии а также степень нужности этого участка для противника, а если противнику он некчему, то может сдать этот участок на аукцион(!) чтобы попробывать купить его подешевле. В это время самообучающийся ИИ следит за действиями человека/жёстко заданого ИИ, и у себя в памяти записывает ситуацию и решение опонента(допустим у него в памяти есть ячейка для каждого участка, и в соответствующую ячейку он записывает: суму денег которая была у опонента, кол-во участков, как других так и такогоже цвета, рентабельность участка, и т.д, ну и наконец решение которое принял его опонент) дальше если в игре самообучающийся ИИ попадёт на етот участок, он сравнит ту ситуацию что сейчас у него (суму денег друг участки, рентабельность), и те ситуации что были у его противника, что у него записаны, и выберет то решение которое противник принял в наиболее похожей ситуации (тоесть под ситуацией я подразумеваю економ состояние игрока).
Вот так и будет продолжаться игра, кроме того, самообучающийся ИИ будет записывать каждый раз когда его опонент заложит какой либо участок, или возьмёт зсуду в банке, и в случае возникновения похожей ситуации, будет поступать также, брать похожую зсуду, закладывать примерно равноценный участок.
Ставить дома и отели на своих участках он тоже будет только после того как "научиться " этого у опонента.

Хух, теперь о следуюющем smile.gif
После всего этого у меня возник ряд вопросов:
1) Всётаки монополия - это не крестики нолики, и каждая игра займёт время, такчто обучаться он будет медленно, в связи с этим появляеться необходимость сделать "автоматический режим " в игре, когда она будет играть сама з собой опр кол-во партий, чтобы достигнуть того или иного уровня знаний?
2) А вообще реально ли это зделать?, я имею в виду, не будет ли это всё занимать огромные обьёмы памяти, и не будет ли ИИ думать по 10 мин? ( прошу дать хоть приблизительную оценку, по даному алгоритму, потомучто мне самому очень тяжело об этом судить)
3) Правильно я уразумел алгоритм хотябы в общих чертах?

Очень прошу поправить меня там где неправ unsure.gif
И с удовольствием выслушаю другие идеи по поводу этой же темы, или алгоритма.
И вообще мне кажеться что всё это не очень сложно в реализации, сложности могут возникнуть лишь с интерфейсом, графикой, а в общих чертах алгоритм сравнительно прост, или я не прав?

З.Ы. Lappу +1 за идею (уж очень она мне понравилась smile.gif )

Сообщение отредактировано: RathaR -


--------------------
Считающий себя единственым здравомыслящим человеком сумасшедший? Если да, возможно я псих...
Пусть умолкнет всякий критик!
Я - системный аналитик!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(RathaR @ 1.08.2009 14:30) *
+1 за идею (уж очень она мне понравилась smile.gif )bltz
Идея-то хорошая, хотя и не моя)). Но насчет применения ее (в чистом виде) в Монополии - ох, сумлеваюсь..

Идею лично я почерпнул у Гарднера, Мартина. Какая книжка - не помню (одна из первых); у меня была практически полная коллекция, но все они не со мной сейчас. Там была рассмотрена имено игра Крестики-Нолики, причем в самом примитивном виде, поле 3х3. Книга вышла в конце 60-х, когда никто и не помышлял о широком внедрении компьютеров в массы. Реализовывалась на спичечных коробках, каждый из которых представлял грубо говоря переменную в памяти (типа байт)), как мы сейчас можем сказать. Опуская подробности, скажу, что одним из основных условий реализуемрсти такого автомата является несильное ветвление графа игры. Иначе говоря, если на каждои ходу у игрока выбор из нескольких ходов - годится. А если десятки и сотни (как в шахматах) - увы и ах..(( В Калахе, например, ходов никогда не больше 6. А кроме того, он очень легко масштабируется на меньшее число ячеек, и все становится совсем просто. Еще нужно заметить, что с точки зрения человека эта игра как раз сложная (сложность для человека, я считаю, определяется величиной изменений на доске за один ход). Вот и получаем в итоге крайне благоприятный материал для реализации. Кстати сказать, крестики-нолики 5-в-ряд на большой доске совершенно не удовлетворяют первому условию.

При более тщательном рассмотрении метод, описанный у Гарднера, является ничем иным, как хорошо завулированным полным перебором, и именно это в конечном итоге и определяет требования к памяти. Да, для обучения я организовывал как игру программы самой с собой, так и просто со случайно ходящим противником. Оба способа не без недостатков, быстрее всего обучение проходило при игре человека с программой. При достаточном количестве материала можно считать доказанным, что, например, ходящий первым выигрывает (так было у меня в верии калах-3). Кстати, у меня зародилась идея выложить полностью необученную конфигурацию на вебсайт, и пусть она обучается (при этом можно показывать, например, число сыгранных партий).

Вот. Теперь про Монополию..
Если честно, не думаю, что тут можно использовать эти принципы в чистом виде. Но не исключаю, что все-таки можно что-то отсюда взять и применить. Отличие монополии от калаха в том, что она менее дискретная. В калахе отличие ситуации на единицу (один камень в одной лунке убрать или добавить) влечет за собой кардинальные изменения (ситуация из выигрышной может превратиться в полный проигрыш). А монополия менее чуствительна к подобным изменениям. Иначе говоря, там можно ввести понятие "похожести" (слово из мессаджа автора темы). Но это - крайне туманные соображения.. Когда я говорил об обратной связи, я практически ничего не имел в виду - так, общие слова)). Короче, надо подумать. Заканчиваю писать - сижу в кафе с очень слабым освещением, замаялся исправлять опечатки. Покумекаю - напишу еще.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Знаток
****

Группа: Пользователи
Сообщений: 346
Пол: Мужской
Реальное имя: Иван

Репутация: -  7  +


Цитата
Опуская подробности, скажу, что одним из основных условий реализуемрсти такого автомата является несильное ветвление графа игры. Иначе говоря, если на каждои ходу у игрока выбор из нескольких ходов - годится.

эм...я,не сильно розбираюсь в теории графов, скажу даже больше, вообще в ней не розбираюсь smile.gif , но сравнивая монополию и крестики нолики я исходил из следующих соображений:
у ИИ при совершении хода - выбор из следующих вариантов действий:
1) Купить недвижимость (если нет, здать на аукцион);
2) Поучаствовать в аукционе(неважно хто его обявил, либо участвует, либо нет, если да то активно, или неочень);
3) Заложить недвижимость;
4) Выкупить ранее заложеную недвижимость;
5) Взять ссуду в банке;
6) Погасить ссуду в банке;
Вроде всё перечислил...сделки между игроками отменяються, ну и по поводу тюрьмы правила тоже упрощаються...
Таким образом у ИИ на каждом ходе выбор из 2(что чаще всего - купить/аукцион)-4(что реже - заложить/взять ссуду/купить/аукцион) вариантов.
Правда нужно обдумать одновременное выполнение нескольких условий (заложить+купить, взять ссуду+выкупить заложеное+купить, взять одну ссуду+погасить другую).
Ну а в крестиках ноликах там ведь выбор у ИИ сначала из 9 вариантов, затем из 7, из 5 из 3...
Тоесть это не намного сложней чем крестики нолики, как мне кажеться.

Сообщение отредактировано: RathaR -


--------------------
Считающий себя единственым здравомыслящим человеком сумасшедший? Если да, возможно я псих...
Пусть умолкнет всякий критик!
Я - системный аналитик!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(RathaR @ 2.08.2009 14:29) *
эм...я,не сильно розбираюсь в теории графов, <...> Тоесть это не намного сложней чем крестики нолики, как мне кажеться.
Собственно, теории для понимания ветвления не нужно..)). RathaR, я не ожидал, что простым упоминанием популярной игры вызову у тебя такие бурные чувства)). Мне жутко не хочется тебя разочаровывать, но все-таки как грится, считаю долгом предупредить: игра Монополия ну оооочень слабо годится для реализации той методикой, которую я употребил в Калахе.

Я обещал "покумекать и написать" - вот, выполняю вторую часть обещания. Первую, увы, можно считать невыполненной((. Мои попытки придумать определение для "похожести" ситауций не пошли дальше обычного сравнения финансовых возможностей, а этого мало. Игра наполовину дискретная, наполовину непрерывная. Собственно, как наша жизнь - у почти всех качеств есть непрерывный спектр изменения, но выбор чаще всего дискретный: институт, жена, и даже курицу в магазине ты берешь ЭТУ, а не ТУ, и именно она может оказаться тухлой.. Ни дать ни взять - наглядное воплощение принципа спонтанного нарушения симметрии (это из теории квантовых полей)). Монополия была задумана как максимальное приближение к жизни, и, мне кажется, авторам удалось этого добиться в довольно неплохой степени. Рынок всегда был очень сложным объектом для математического описания. В докомпьютерную эру, возможно, могло бы показаться, что в нем можно все рассчитать - были бы вычислительные мощности. И вот они есть - и что? Все точно так же сложно (последний кризиз тому примером). Более того, компьютеры сами вносят усложнения в рынок (по разным версиям, они сыграли свою роль в подготовке условий для него).

Буду рад продолжить беседу в этой теме, если ты выскажешь какие-то продуктивные соображения - у меня их нет((. А по поводу изначальной темы (проекта) я выскажусь в в изначальном топике)).


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Знаток
****

Группа: Пользователи
Сообщений: 346
Пол: Мужской
Реальное имя: Иван

Репутация: -  7  +


Цитата(Lapp @ 8.08.2009 1:28) *

Я обещал "покумекать и написать" - вот, выполняю вторую часть обещания.

Я приятно удивлён, и ОЧЕНЬ признателен что эта тема не канула в небытие smile.gif

Цитата(Lapp @ 8.08.2009 1:28) *

Буду рад продолжить беседу в этой теме, если ты выскажешь какие-то продуктивные соображения - у меня их нет((. А по поводу изначальной темы (проекта) я выскажусь в в изначальном топике)).


Я очень люблю и уважаю эту настольную игру rolleyes.gif
И буду держаться за эту идею до конца smile.gif , я её собственно писать уже начал, и пока ориентируюсь на обычных компьютерных противников, но насчёт самообучения я тоже так просто не отступлюсь, уж очень интересно посмотреть на практике будет ли работать подобный "механизм".
Ну и по поводу "продуктивных соображений" может быть возможно использовать следующую схему??
пусть это нельзя назвать "самообучением" но всёже, я хочу чтобы ИИ, мог менять свои решения, выходить за пределы первоначально установленых схем, по мере игры, но не случайным образом а хоть более -менее "сознательно".
Поэтому предлагаю следующее
допустим у ИИ есть три состояния, ну или характера игры:
1 - Он скупает всё что попадаеться и пытаеться выкупить нужную ему недвижимость у противника, предлагая более-менее выгодные сделки для обеих сторон.
2 - Он действует нейтрально, на "выжыдание" (только пока незнаю чего unsure.gif ), например когда у него мало денег, но долгов нет.
3 - Он судорожно продаёт и закладывает все что ему меньше всего нужно, это в случае если у него долги.

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

З.Ы.
Наверно не в тему, но интерес вызвала фраза
Цитата
Более того, компьютеры сами вносят усложнения в рынок (по разным версиям, они сыграли свою роль в подготовке условий для него).

А это как? smile.gif
Просто я думаю что компьютеры рацыональны, а "усложнения" может вносить только человек со своей жадностью, злобой (ну это грубовато конечно) но помойму усложнения - дела рук людей неготовых к власти (в чом бы то нибыло) но которые к ней стремятся, тоесть - дилетантов.


--------------------
Считающий себя единственым здравомыслящим человеком сумасшедший? Если да, возможно я псих...
Пусть умолкнет всякий критик!
Я - системный аналитик!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






> признателен что эта тема не канула в небытие smile.gif
Ничто не зря, и ничто не вечно

> Я очень люблю и уважаю эту настольную игру
А я как раз нет. Допускаю, что это может влиять на мое отношение и к идее программы, но все же я стараюсь быть объективным)). Упомянул я ее просто потому, что не знаю других игр на тему рынка.

> И буду держаться за эту идею до конца smile.gif
Флаг тебе в руки)).

> допустим у ИИ есть три состояния, ну или характера игры:
> 1 - Он скупает всё что попадаеться и пытаеться выкупить ...
> 2 - Он действует нейтрально, на "выжыдание" ...
> 3 - Он судорожно продаёт и закладывает все ...

В этих состояниях я вижу только то, что ты играть умеешь и понимаешь ситуацию. Границы этих "состояний" невозможно четко определить. Извини, но в программировании все должно быть именно ЧЕТКО. Потому что в конечном итоге решение принимает железка по четко заданным правилам (твой код). Конечно, можно ввести и случайный элемент, но его следует использовать только при выборе из РАВНЫХ (в принятой системе сравнений) возможностей. А сама система сравнения возможностей все-таки должна быть ЧЕТКО ОПРЕДЕЛЕННОЙ. Представь себе, что ты комбинируешь некий параметр P (наподобие того же Доу Джонса), по которому принимаешь это решение:

if P1 <= P then реализуется режим 1
if P2 <= P < P1 then реализуется режим 2
if P <= P3 then реализуется режим 3

Тебе не кажется странным, что если Р=P1, то мы все скупаем, а если P изменился всего на один пункт - все, стратегия резко меняется на выжидание? Напрашивается вывод: увеличить количество состояний, сгладив по возможности переходы между ними. Но тогда возникает вопрос: до какой степени сглаживать? Вопрос совершенно не праздеый, когда речь идет о программировании, повторяю: все должно быть четко определено. И тогда мы приходим к идее непрерывной зависимости, то есть к тому, от чего ты пытался уйти smile.gif. В этом нет ничего плохого, просто природа этой задачи такова, что та самая технология неприменима - вот и все. Хочешь решать ее - придумай нечто другое, более подходящее.


> по ходу игры будут в определённый файл делаться записи,
> по ходам, на первый ход у человека было столькото недвижимости
> (по кол-ву) и столькото денег, на второй столькото и столькото ,
> и постоянно вычисляеться среднее арифметическое,
Что ж, это можно условно принять за исходную идею. Но заметь, что ты тут производишь НЕСКОЛЬКО сравнений. И тебе нужно ввести некоторое соотношение порядка в МНОГОМЕРНОМ пространстве. Иначе говоря, если сравнить две точки (x,y) на плоскости, то что больше: точка (3,7) или точка (2,9)? Если сравнивать только по расстоянию до точки (0,0), то будет ли это соответствовать цели?

> Жажду выслушать критику по поводу этих мыслей smile.gif
Типа вот.. smile.gif

Отвечаю на P.S.
Почему это не по теме? Как раз ОЧЕНЬ даже ПО теме, ибо напрямую касается реализации алгоритма принятия решений.
Соображение такое. В последнее время основная часть сделок на ьирже производится не людьми, а программами. Я не знаю точной статистики, но кажется их число больше половины (по количеству, по финансам может и нет). Эти программы в основном рассчитаны на анализ сиюминтной (идаже сиюсекндной скорее) ситуации и ориентированы на сиюминтную прибыль. Программы как правило не пытаются учесть долгосрочного изменения ситуации на рынке, это им просто не под силу. И вот ТАКУЮ с позволения сказать "стратегию" ты называешь "рациональной"? blink.gif Я полагаю, что ситуация в настоящее время доходит до того, что влияют задержки сетевой передачи пакетов. Иначе говоря, если случатся неполадки у крупного Интернет-провайдера, это может повлиять на исход торгов. Я согласен, людской злобе тут места не остается, но вступают в игру другие параметры. И неясно, что лучше..
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Предыдущий пост мой. Странно, вроде я входил...


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Знаток
****

Группа: Пользователи
Сообщений: 346
Пол: Мужской
Реальное имя: Иван

Репутация: -  7  +


Цитата
Что ж, это можно условно принять за исходную идею. Но заметь, что ты тут производишь НЕСКОЛЬКО сравнений. И тебе нужно ввести некоторое соотношение порядка в МНОГОМЕРНОМ пространстве. Иначе говоря, если сравнить две точки (x,y) на плоскости, то что больше: точка (3,7) или точка (2,9)? Если сравнивать только по расстоянию до точки (0,0), то будет ли это соответствовать цели?


Я так понял что речь идёт о приоритетах при сравнении...
По этому поводу меня сразу возникла асоциация с тем как я решал подобную проблему когда писал покер на костях, тогда я определял так называемую "силу" комбинации, или её приоритетт, незнаю как сказать точнее, (например стрит - 4 ед, каре - 5 ед, пара - 2, тройка - 3 и тд. ) а затем к выпавшей комбинации прибавлял само значение костей * 0,1 для того чтобы определить победителя при равных комбинациях(например 3,3,3=3+3*0,1=3,3 и это меньше чем скажем 4,4,4=3+0,4*0,1=3,4).
В монополии я росчитывал поступать по аналогии, высший приоритет имеет например кол-во денег, а затем уже кол-во участков.
Если чесно то сейчас у меня только очень туманные соображения по этому поводу, но почемуто во мне живёт уверенность в том что можно както реализовать ИИ способного учиться на своих ошибках, или хотябы так сказать "интересного, незаурядного" противника и в монополии smile.gif
Но апетит приходит во время еды smile.gif допишу игру - буду экспериментировать по этому поводу, может появятся новые - более разумные мысли, постараюсь сделать игру максимально независимой, и менее чуствительной к подключению ИИ, в том смысле чтобы можно было пробывать сразу несколько схем.


--------------------
Считающий себя единственым здравомыслящим человеком сумасшедший? Если да, возможно я псих...
Пусть умолкнет всякий критик!
Я - системный аналитик!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


1. Под обучением обычно понимается совсем не тот процесс, что описан в первом сообщении. Там было "Запомнить, как поступил оппонент, и делать так же, как он". На самом деле обучение состоит примерно в следующем:
- на основе некоторой функц с настраиваемыми коэффициентами осуществляем выбор хода.
- ходим.
- ждем некоторое время (обычно не ранее окончания ответного хода оппонента и не позднее конца игры), когда будет ясно, "хорош" или "плох" оказался сделанный ход.
- вносим изменения в настроечные коэффициенты нашей функции таким образом, чтобы увеличить вероятность выбора "хороших" ходов и уменьшить "плохих" в дальнейшем.

2. Процесс обучения - весьма длителен по времени, поэтому в подавляющем большинстве случаев человеку надоест играть раньше, чем ИИ завершит хотя бы первый цикл обучения. Поэтому IMHO реализация обучения непосредственно в процесссе игры утопична (кроме небольшого числа частных случаев игр, где по самому характеру игры возможно провести процесс обучения быстро), а обучение ИИ может быть целесообразно лишь на стадии тестирования и балансировки игры.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(andriano @ 14.09.2009 13:26) *
1. Под обучением обычно понимается совсем не тот процесс, что описан в первом сообщении. ...
andriano высказал то, что плясало у меня на языке, но так и не сформулировалось. Точнее, это все сказано в теме про Калах, но тут надо было подчеркнуть. Так сказать, основной принцип этого способа "обучения".
Есть игровая ситуация (то есть состояние всех переменных) и есть ходы, сделанные в этой ситуации. Событием же назовем определенный ход в определенной ситуации. Событие может быть хорошим и плохим, а точнее - иметь вес, и это оценивается по результатам партии. Иначе говоря, все события (то есть все ходы, сделанные в возникших в игре ситуациях) победителя считаются хорошими, и их вес увеличивается на единицу. Напротив, вес всех событий проигравшего после игры мы уменьшаем на единицу. В этом и состоит обучение: когда очередная игра закончилась, мы пополняем БД событий новыми возникшими событиями (с нулевым начальным весом), а потом проводим политику кнута и пряника: вес хороших событий увеличиваем, плохих - уменьшаем.

Соответственно, размер этой БД, являющейся нашим обучаемым мозгом, определяется количеством состояний в игре, умноженным на количество ходов (это в предположении, что для веса достаточно 1 байта). А если быть более точным, то это сумма Mi по всем состояниям, где Mi - количество ходов в i-том состоянии. Это число, даже для уже квантованных игр (то есть у которых пространство состояний не непрерывное, а дискретное), как правило немаленькое. Я в своем выборе (Калах) руководствовался именно тем, что размер БД должен быть как можно меньшим - и то он получился огромным (и, кажется, отпугнул тебя, RathaR). В ситуации же с непрерывными параметрами размер БД будет зависеть от уровня квантования (чем мельче уровни - тем он больше), и маленьким он точно не покажется. Но думается мне, что этот подход в них вообще нежелательно применять в таких играх (в частности, по этой причине).

Цитата(andriano @ 14.09.2009 13:26) *
2. Процесс обучения - весьма длителен по времени, поэтому в подавляющем большинстве случаев человеку надоест играть раньше, чем ИИ завершит хотя бы первый цикл обучения. Поэтому IMHO реализация обучения непосредственно в процесссе игры утопична (кроме небольшого числа частных случаев игр, где по самому характеру игры возможно провести процесс обучения быстро), а обучение ИИ может быть целесообразно лишь на стадии тестирования и балансировки игры.
Это тоже верно, но никто же не заставляет играть реально. Мои программы играли сами с собой, а также с программой, ходящей случайным образом (на начальной стадии весьма полезно). Кроме того, я уже высказывал мысль такую: выложить ее на сайт в Инет, пусть народ играет. И посматривать на нее время от времени)).


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


Цитата(Lapp @ 15.09.2009 1:52) *
...ходы ... победителя считаются хорошими, и их вес увеличивается на единицу. Напротив, вес всех событий проигравшего после игры мы уменьшаем на единицу.
Ну, в частном случае может быть и так. При обучении сети Кохонена, например, обычно изменяется лишь вес "правильного" варианта, а остальные остаются неизменными. Да и величина шага может быть не единицей, а какой-либо другой величиной, в частности, допускающей настройку.
Цитата
Это тоже верно, но никто же не заставляет играть реально. Мои программы играли сами с собой, а также с программой, ходящей случайным образом (на начальной стадии весьма полезно).
Да, это обучение в процессе балансировки. Пользователь получает уже обученную НС, причем обучающий модуль вообще в комплект поставки не входит, а остается в списке утилит разработчика, а не пользователя.
Цитата
Кроме того, я уже высказывал мысль такую: выложить ее на сайт в Инет, пусть народ играет. И посматривать на нее время от времени)).
А это - обучение в процессе бетатестирования. База весов, опять же, остается у разработчика.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(andriano @ 15.09.2009 18:36) *
Ну, в частном случае может быть и так.
Я и не говорил про общий случай. Человеку, который едва вникает в идею, нужно продемонстрировать на простом примере. Тонскости понятия веса и т.п. не особо важны.

Цитата(andriano @ 15.09.2009 18:36) *
Да, это обучение в процессе балансировки. Пользователь получает уже обученную НС, причем обучающий модуль вообще в комплект поставки не входит, а остается в списке утилит разработчика, а не пользователя.
...
А это - обучение в процессе бетатестирования. База весов, опять же, остается у разработчика.
Да хоть горшком назови smile.gif. andriano, отвлекись немного от своей работы)). Речь идет не о поставке готового коммерческого продукта, а о демонстрации принципа (и, ябы сказал, самой возможности) самообучения. Так что "комплектом поставки" тут следует считать удовлетворение от того, что оно работает)). А бета-тестирование оставь для разработок, выполненых по конкретному техзаданию)).

RathaR, ты следишь за темой? И как дела с твоей программой?

P.S.
Я не спец в этой терминологии, но трудно согласиться, что обучение в реальных условиях можно называть бета-тестированием. Если это действительно так - это явная логическая ошибка. Я предполагаю выкладывание программы на сайт после окончания ее отладки (включая тестирование). Тогда, позвольте, что мы тестируем? принцип?.. скорость обучения?.. уровень публики?.. Продукт (в идеальном случае) больше не подвергается изменениям. И главная цель его - не играть, а именно обучаться. База данных - результат этого процесса. Это не есть альфа-бетта-гамма-..-омега-тестирование. Это его основной режим работы.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Знаток
****

Группа: Пользователи
Сообщений: 346
Пол: Мужской
Реальное имя: Иван

Репутация: -  7  +


Цитата(Lapp @ 16.09.2009 1:44) *

RathaR, ты следишь за темой? И как дела с твоей программой?

Конечно слежу, и очень рад что речь зашла о самообучающихся системах вообще, мне это очень интересно, andriano внёс много конкретики в моё понимание процеса обучения rolleyes.gif

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

НО, по ходу написания пришли ко мне следующие мысли:
1) - заставлять ИИ учиться просто делать покупки(тоесть покупать недвижимость или нет, участвовать в аукционе или нет) - глупость и пустая трата времени, поэтому самообучение планировал реализовать только на сделки;
2) - научить его предлагать сделки так как я думал просто невозможно:

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

Я з самого начала неправильно интерпритировал принцип "робота из 300 коробков" в идею ИИ для монополии
Цитата
1. Под обучением обычно понимается совсем не тот процесс, что описан в первом сообщении. Там было "Запомнить, как поступил оппонент, и делать так же, как он".


Я буду очень рад, если тема продолжиться не как коректировка моих бредовых идей unsure.gif , а как тема о самообучающихся системах.
Цитата
об самообучении ИИ в общем, и об монополии в частности.


З.Ы.
Но игра всёрамно будет интересной biggrin.gif
я нехочу лишать её практического смысла, тоесть нехочу чтобы это была просто игра, сейчас думаю над тем чтобы вот эту статистику показывать в конце игры, и сравнивать те сделки которые предлогал игрок с теми что предлагал ИИ. Тоесть предложения ИИ розсматриваем как "взаимовыгодная сделка", он будет предлагать только такие сделки( алгоритм ИИ примерно набросал), и сравниваем их с предложениями игрока, тоесть не "кто рациональней предложил", а "насколько рациональную сделку предложил, или отказался игрок".
По поводу самой программы, то почти закончил графику, получилось вроде красиво, анимация, гл. меню, поле..

Сообщение отредактировано: RathaR -


--------------------
Считающий себя единственым здравомыслящим человеком сумасшедший? Если да, возможно я псих...
Пусть умолкнет всякий критик!
Я - системный аналитик!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


Цитата(Lapp @ 16.09.2009 2:44) *
Я не спец в этой терминологии, но трудно согласиться, что обучение в реальных условиях можно называть бета-тестированием... Это его основной режим работы.

Ну, если обучение рассматривать как цель, а не как средство, то - конечно.

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

Предположим (гипотеза!), что среди всего множества потенциальных игроков (людей) можно выделить несколько характерных типов поведения (кто-то играет осторожно, кто-то авантюрно, кто-то предпочитает "позиционые войны", кто-то, наоборот, рассчитывает на "кавалеристский рывок" и т.п.).
Тогда можно выработать оптимальный характер поведения программы для каждого из типов игроков (т.е. получить массивы настроечных коэффициентов для каждого из типов - на этапе разработки), а также для некоторого "усредненного" типа (т.е. массив коэффициентов для равномерной смеси всех типов.
На начальном этапе (теперь уже при взаимодействии с игроком) программа работает по "усредненному" типу и пытается определить, к какому типу относится оппонент. На это, думаю, много времени не потребуется. А после того, как тип будет определен, вместо "усредненных" коэффициентов в функцию принятия решения заливаются коэффициенты найденного типа.
Естественно, можно предусмотреть динамику, т.е. чтобы програма продолжала отслеживать поведение игрока, если ему вдруг захочется поменять стратегию, и т.п.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Новичок
*

Группа: Пользователи
Сообщений: 48
Пол: Мужской
Реальное имя: Антон

Репутация: -  0  +


Я представляю решение этой задачи путем анализа ошибок допущенных ИИ.
Вобщем схема такая
имеется файл tactica.txt в котором записаны конфигурации поведения ии
по ходу действия программы определяется выиграл или проиграл компьютер
если выиграл, тактика преждняя
если проиграл, программа анализирует каждый ход игры и редактирует, дополняет файл tactica.txt в зависимости от обнаруженных ошибок.


Согласен система не доработана, но по моему это единственный очевидный путь.

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



--------------------
Я бы исправил мир, но Бог не дает мне исходников...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(andriano @ 17.09.2009 18:30) *
(гипотеза!)
Гипотезы - это хорошо, но ты не указал ни механизма распознавания типа поведения, ни конкретного способа реализации самой сети. Как я понял, ты хотел выиграть в размере базы, ограничившись ее частями (отбросив "серединку"). Но.. извини, этих соображений слишком мало.

Цитата(Shuruper @ 20.09.2009 20:35) *
имеется файл tactica.txt в котором записаны конфигурации поведения ии
- вот с этого места, пожалуйста, поподробнее.. Иначе его можно приравнять к такому: "имеется миллиард долларов; рассмотрим принципиальную возможность покупки буханки хлеба". Название файла - это далеко не все, увы.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Новичок
*

Группа: Пользователи
Сообщений: 48
Пол: Мужской
Реальное имя: Антон

Репутация: -  0  +


Цитата(Lapp @ 21.09.2009 11:10) *

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

файл может содержать все что угодно, начиная простыми переменными конфигураций и заканчивая сложными алгоритмами (например поиска путей);


--------------------
Я бы исправил мир, но Бог не дает мне исходников...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


Цитата(Lapp @ 21.09.2009 11:10) *

Гипотезы - это хорошо, но ты не указал ни механизма распознавания типа поведения, ни конкретного способа реализации самой сети.
Нет, гипотеза стостоит в том, что в данной задаче можно выделить конечное и сравнительно небольшое количество типов поведения.
Мне помнится, как-то довелось решать задачу по типизации состояний атмосферы, т.е.:
1. Определить оптимальное количество типов.
2. Получить механизм, позволяющий конкретную метеорологическую ситуацию отнести к конкретному типу.
Задача была решена с использованием сети Кохонена, а оптимальным количеством типов оказалось 4, что, кстати, согласуется с метеорологической практикой.
Думаю, что-то аналогичное можно было бы сделать и в данном случае. Непонятно только, как получить достаточно представительную базу проведенных игр. (состояние атмосферы определяется и тщательно протоколируется тысячами метеостанций каждые несколько часов, и эти набюдения ведутся на протяжении многих лет, что дало мне необходимый для настройки сети объем данных)
Цитата
Как я понял, ты хотел выиграть в размере базы, ограничившись ее частями (отбросив "серединку").
Нет, добиться, чтобы алгоритм сумел приспособиться к конкретному игроку раньше, чем тому надоест играть.
Цитата
Но.. извини, этих соображений слишком мало.
Я, собственно, и не пытался этого скрыть.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Shuruper @ 21.09.2009 15:51) *
файл может содержать все что угодно, начиная простыми переменными конфигураций и заканчивая сложными алгоритмами (например поиска путей);

"Миллиард долларов может быть взят, где угодно, начиная от тумбочки и заканчивая крупными банками.."


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #20


Знаток
****

Группа: Пользователи
Сообщений: 346
Пол: Мужской
Реальное имя: Иван

Репутация: -  7  +


По поводу самого алгоритма "300 коробков", я так понимаю он полностью универсален, тоесть подходит для всех игр где есть конкретная выиграшная стратегия, ну или хотябы та которая гарантирует ничью? И гарантирует он игру ИИ исключительно до уровня игрока, тоесть играть лутче того хто его "научил" он немождет... Судя из статьи существует уйма игр к которым его можна применить, но :
Цитата
Ну, если обучение рассматривать как цель, а не как средство

пусть применять его там-то, или там-то нерационально, или глупо, но моя цель - демонстрация его возможностей.
Так вот еще хотел спросить, я так понимаю сей алгоритм "уникален" в своём роде, т.к. являеться фактически методом кнута и пряника, а может существуют другие самообучающиеся алгоритмы, которые можна применять в играх?(без всяких нейронных сетей, чтото более-менее простое smile.gif ), или же все последующие алгоритмы исходят из этого, тоесть кнута и пряника?


--------------------
Считающий себя единственым здравомыслящим человеком сумасшедший? Если да, возможно я псих...
Пусть умолкнет всякий критик!
Я - системный аналитик!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

2 страниц V  1 2 >
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 14:52
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name