![]() |
![]() ![]() |
![]() |
RathaR |
![]()
Сообщение
#1
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 346 Пол: Мужской Реальное имя: Иван Репутация: ![]() ![]() ![]() |
Вот, меня весьма заинтересовала идея Lappa , о написании кокой нибуть вариации монополии, с самообучающимся ИИ. Погуглил я на эту тему, но единственное что нашёл, это описание принципа роботы с крестиками-ноликами и много бредней про то что машины зохавают мир
![]() Поэтому и решил создать тему здесь, об самообучении ИИ в общем, и об монополии в частности. Так вот, как я это представляю: допустим в игре участтвуэт самообучающийся ИИ, и человек/жёстко заданый ИИ. Весь процес самообучения происходит следующим образом (поправте или скоординируйте меня если неправ): Человек/жёстко заданый ИИ делает ход, попадая на определённый участок(правила монополии я думаю всем известны ![]() Вот так и будет продолжаться игра, кроме того, самообучающийся ИИ будет записывать каждый раз когда его опонент заложит какой либо участок, или возьмёт зсуду в банке, и в случае возникновения похожей ситуации, будет поступать также, брать похожую зсуду, закладывать примерно равноценный участок. Ставить дома и отели на своих участках он тоже будет только после того как "научиться " этого у опонента. Хух, теперь о следуюющем ![]() После всего этого у меня возник ряд вопросов: 1) Всётаки монополия - это не крестики нолики, и каждая игра займёт время, такчто обучаться он будет медленно, в связи с этим появляеться необходимость сделать "автоматический режим " в игре, когда она будет играть сама з собой опр кол-во партий, чтобы достигнуть того или иного уровня знаний? 2) А вообще реально ли это зделать?, я имею в виду, не будет ли это всё занимать огромные обьёмы памяти, и не будет ли ИИ думать по 10 мин? ( прошу дать хоть приблизительную оценку, по даному алгоритму, потомучто мне самому очень тяжело об этом судить) 3) Правильно я уразумел алгоритм хотябы в общих чертах? Очень прошу поправить меня там где неправ ![]() И с удовольствием выслушаю другие идеи по поводу этой же темы, или алгоритма. И вообще мне кажеться что всё это не очень сложно в реализации, сложности могут возникнуть лишь с интерфейсом, графикой, а в общих чертах алгоритм сравнительно прост, или я не прав? З.Ы. Lappу +1 за идею (уж очень она мне понравилась ![]() Сообщение отредактировано: RathaR - 1.08.2009 17:15 -------------------- Считающий себя единственым здравомыслящим человеком сумасшедший? Если да, возможно я псих...
Пусть умолкнет всякий критик! Я - системный аналитик! |
Lapp |
![]()
Сообщение
#2
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
+1 за идею (уж очень она мне понравилась Идея-то хорошая, хотя и не моя)). Но насчет применения ее (в чистом виде) в Монополии - ох, сумлеваюсь..![]() Идею лично я почерпнул у Гарднера, Мартина. Какая книжка - не помню (одна из первых); у меня была практически полная коллекция, но все они не со мной сейчас. Там была рассмотрена имено игра Крестики-Нолики, причем в самом примитивном виде, поле 3х3. Книга вышла в конце 60-х, когда никто и не помышлял о широком внедрении компьютеров в массы. Реализовывалась на спичечных коробках, каждый из которых представлял грубо говоря переменную в памяти (типа байт)), как мы сейчас можем сказать. Опуская подробности, скажу, что одним из основных условий реализуемрсти такого автомата является несильное ветвление графа игры. Иначе говоря, если на каждои ходу у игрока выбор из нескольких ходов - годится. А если десятки и сотни (как в шахматах) - увы и ах..(( В Калахе, например, ходов никогда не больше 6. А кроме того, он очень легко масштабируется на меньшее число ячеек, и все становится совсем просто. Еще нужно заметить, что с точки зрения человека эта игра как раз сложная (сложность для человека, я считаю, определяется величиной изменений на доске за один ход). Вот и получаем в итоге крайне благоприятный материал для реализации. Кстати сказать, крестики-нолики 5-в-ряд на большой доске совершенно не удовлетворяют первому условию. При более тщательном рассмотрении метод, описанный у Гарднера, является ничем иным, как хорошо завулированным полным перебором, и именно это в конечном итоге и определяет требования к памяти. Да, для обучения я организовывал как игру программы самой с собой, так и просто со случайно ходящим противником. Оба способа не без недостатков, быстрее всего обучение проходило при игре человека с программой. При достаточном количестве материала можно считать доказанным, что, например, ходящий первым выигрывает (так было у меня в верии калах-3). Кстати, у меня зародилась идея выложить полностью необученную конфигурацию на вебсайт, и пусть она обучается (при этом можно показывать, например, число сыгранных партий). Вот. Теперь про Монополию.. Если честно, не думаю, что тут можно использовать эти принципы в чистом виде. Но не исключаю, что все-таки можно что-то отсюда взять и применить. Отличие монополии от калаха в том, что она менее дискретная. В калахе отличие ситуации на единицу (один камень в одной лунке убрать или добавить) влечет за собой кардинальные изменения (ситуация из выигрышной может превратиться в полный проигрыш). А монополия менее чуствительна к подобным изменениям. Иначе говоря, там можно ввести понятие "похожести" (слово из мессаджа автора темы). Но это - крайне туманные соображения.. Когда я говорил об обратной связи, я практически ничего не имел в виду - так, общие слова)). Короче, надо подумать. Заканчиваю писать - сижу в кафе с очень слабым освещением, замаялся исправлять опечатки. Покумекаю - напишу еще. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
RathaR |
![]()
Сообщение
#3
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 346 Пол: Мужской Реальное имя: Иван Репутация: ![]() ![]() ![]() |
Цитата Опуская подробности, скажу, что одним из основных условий реализуемрсти такого автомата является несильное ветвление графа игры. Иначе говоря, если на каждои ходу у игрока выбор из нескольких ходов - годится. эм...я,не сильно розбираюсь в теории графов, скажу даже больше, вообще в ней не розбираюсь ![]() у ИИ при совершении хода - выбор из следующих вариантов действий: 1) Купить недвижимость (если нет, здать на аукцион); 2) Поучаствовать в аукционе(неважно хто его обявил, либо участвует, либо нет, если да то активно, или неочень); 3) Заложить недвижимость; 4) Выкупить ранее заложеную недвижимость; 5) Взять ссуду в банке; 6) Погасить ссуду в банке; Вроде всё перечислил...сделки между игроками отменяються, ну и по поводу тюрьмы правила тоже упрощаються... Таким образом у ИИ на каждом ходе выбор из 2(что чаще всего - купить/аукцион)-4(что реже - заложить/взять ссуду/купить/аукцион) вариантов. Правда нужно обдумать одновременное выполнение нескольких условий (заложить+купить, взять ссуду+выкупить заложеное+купить, взять одну ссуду+погасить другую). Ну а в крестиках ноликах там ведь выбор у ИИ сначала из 9 вариантов, затем из 7, из 5 из 3... Тоесть это не намного сложней чем крестики нолики, как мне кажеться. Сообщение отредактировано: RathaR - 2.08.2009 23:10 -------------------- Считающий себя единственым здравомыслящим человеком сумасшедший? Если да, возможно я псих...
Пусть умолкнет всякий критик! Я - системный аналитик! |
Lapp |
![]()
Сообщение
#4
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
эм...я,не сильно розбираюсь в теории графов, <...> Тоесть это не намного сложней чем крестики нолики, как мне кажеться. Собственно, теории для понимания ветвления не нужно..)). RathaR, я не ожидал, что простым упоминанием популярной игры вызову у тебя такие бурные чувства)). Мне жутко не хочется тебя разочаровывать, но все-таки как грится, считаю долгом предупредить: игра Монополия ну оооочень слабо годится для реализации той методикой, которую я употребил в Калахе.Я обещал "покумекать и написать" - вот, выполняю вторую часть обещания. Первую, увы, можно считать невыполненной((. Мои попытки придумать определение для "похожести" ситауций не пошли дальше обычного сравнения финансовых возможностей, а этого мало. Игра наполовину дискретная, наполовину непрерывная. Собственно, как наша жизнь - у почти всех качеств есть непрерывный спектр изменения, но выбор чаще всего дискретный: институт, жена, и даже курицу в магазине ты берешь ЭТУ, а не ТУ, и именно она может оказаться тухлой.. Ни дать ни взять - наглядное воплощение принципа спонтанного нарушения симметрии (это из теории квантовых полей)). Монополия была задумана как максимальное приближение к жизни, и, мне кажется, авторам удалось этого добиться в довольно неплохой степени. Рынок всегда был очень сложным объектом для математического описания. В докомпьютерную эру, возможно, могло бы показаться, что в нем можно все рассчитать - были бы вычислительные мощности. И вот они есть - и что? Все точно так же сложно (последний кризиз тому примером). Более того, компьютеры сами вносят усложнения в рынок (по разным версиям, они сыграли свою роль в подготовке условий для него). Буду рад продолжить беседу в этой теме, если ты выскажешь какие-то продуктивные соображения - у меня их нет((. А по поводу изначальной темы (проекта) я выскажусь в в изначальном топике)). -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
RathaR |
![]()
Сообщение
#5
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 346 Пол: Мужской Реальное имя: Иван Репутация: ![]() ![]() ![]() |
Я обещал "покумекать и написать" - вот, выполняю вторую часть обещания. Я приятно удивлён, и ОЧЕНЬ признателен что эта тема не канула в небытие ![]() Буду рад продолжить беседу в этой теме, если ты выскажешь какие-то продуктивные соображения - у меня их нет((. А по поводу изначальной темы (проекта) я выскажусь в в изначальном топике)). Я очень люблю и уважаю эту настольную игру ![]() И буду держаться за эту идею до конца ![]() Ну и по поводу "продуктивных соображений" может быть возможно использовать следующую схему?? пусть это нельзя назвать "самообучением" но всёже, я хочу чтобы ИИ, мог менять свои решения, выходить за пределы первоначально установленых схем, по мере игры, но не случайным образом а хоть более -менее "сознательно". Поэтому предлагаю следующее допустим у ИИ есть три состояния, ну или характера игры: 1 - Он скупает всё что попадаеться и пытаеться выкупить нужную ему недвижимость у противника, предлагая более-менее выгодные сделки для обеих сторон. 2 - Он действует нейтрально, на "выжыдание" (только пока незнаю чего ![]() 3 - Он судорожно продаёт и закладывает все что ему меньше всего нужно, это в случае если у него долги. и таким образом по ходу игры будут в определённый файл делаться записи, по ходам, на первый ход у человека было столькото недвижимости(по кол-ву) и столькото денег, на второй столькото и столькото , и постоянно вычисляеться среднее арифметическое, и тогда если у ИИ меньше недвижимости, тогда он будет переходить в режим закупки, если больше, то в нейтральный, а если много недвижимости и очень мало денег(по сравнению со средним арифметическим) то он будет продаваться... можно еще добавить отдельный файл для записи его смен "режимов", чтобы он мог ориентироваться еще и по ним, если партия была выиграна то стараться держаться этой тактики "режимов" (всё эти крестики нолики из головы не идут ![]() При этом в каждом "режиме" его действия будут вполне рациональны - определены жёсткими формулами... Мне кажеться из этого моглобы чтото выйти, не то чтобы "интелект", но эксцентричный игрок чтоли, незнаю как по другому назвать, и не то чтобы "самообцчающийся" но всётаки сам координирующий свои действия на опыте прошлых игр.... Жажду выслушать критику по поводу этих мыслей ![]() ![]() З.Ы. Наверно не в тему, но интерес вызвала фраза Цитата Более того, компьютеры сами вносят усложнения в рынок (по разным версиям, они сыграли свою роль в подготовке условий для него). А это как? ![]() Просто я думаю что компьютеры рацыональны, а "усложнения" может вносить только человек со своей жадностью, злобой (ну это грубовато конечно) но помойму усложнения - дела рук людей неготовых к власти (в чом бы то нибыло) но которые к ней стремятся, тоесть - дилетантов. -------------------- Считающий себя единственым здравомыслящим человеком сумасшедший? Если да, возможно я псих...
Пусть умолкнет всякий критик! Я - системный аналитик! |
Гость |
![]()
Сообщение
#6
|
Гость ![]() |
> признателен что эта тема не канула в небытие
![]() Ничто не зря, и ничто не вечно > Я очень люблю и уважаю эту настольную игру А я как раз нет. Допускаю, что это может влиять на мое отношение и к идее программы, но все же я стараюсь быть объективным)). Упомянул я ее просто потому, что не знаю других игр на тему рынка. > И буду держаться за эту идею до конца ![]() Флаг тебе в руки)). > допустим у ИИ есть три состояния, ну или характера игры: > 1 - Он скупает всё что попадаеться и пытаеться выкупить ... > 2 - Он действует нейтрально, на "выжыдание" ... > 3 - Он судорожно продаёт и закладывает все ... В этих состояниях я вижу только то, что ты играть умеешь и понимаешь ситуацию. Границы этих "состояний" невозможно четко определить. Извини, но в программировании все должно быть именно ЧЕТКО. Потому что в конечном итоге решение принимает железка по четко заданным правилам (твой код). Конечно, можно ввести и случайный элемент, но его следует использовать только при выборе из РАВНЫХ (в принятой системе сравнений) возможностей. А сама система сравнения возможностей все-таки должна быть ЧЕТКО ОПРЕДЕЛЕННОЙ. Представь себе, что ты комбинируешь некий параметр P (наподобие того же Доу Джонса), по которому принимаешь это решение: if P1 <= P then реализуется режим 1 if P2 <= P < P1 then реализуется режим 2 if P <= P3 then реализуется режим 3 Тебе не кажется странным, что если Р=P1, то мы все скупаем, а если P изменился всего на один пункт - все, стратегия резко меняется на выжидание? Напрашивается вывод: увеличить количество состояний, сгладив по возможности переходы между ними. Но тогда возникает вопрос: до какой степени сглаживать? Вопрос совершенно не праздеый, когда речь идет о программировании, повторяю: все должно быть четко определено. И тогда мы приходим к идее непрерывной зависимости, то есть к тому, от чего ты пытался уйти ![]() > по ходу игры будут в определённый файл делаться записи, > по ходам, на первый ход у человека было столькото недвижимости > (по кол-ву) и столькото денег, на второй столькото и столькото , > и постоянно вычисляеться среднее арифметическое, Что ж, это можно условно принять за исходную идею. Но заметь, что ты тут производишь НЕСКОЛЬКО сравнений. И тебе нужно ввести некоторое соотношение порядка в МНОГОМЕРНОМ пространстве. Иначе говоря, если сравнить две точки (x,y) на плоскости, то что больше: точка (3,7) или точка (2,9)? Если сравнивать только по расстоянию до точки (0,0), то будет ли это соответствовать цели? > Жажду выслушать критику по поводу этих мыслей ![]() Типа вот.. ![]() Отвечаю на P.S. Почему это не по теме? Как раз ОЧЕНЬ даже ПО теме, ибо напрямую касается реализации алгоритма принятия решений. Соображение такое. В последнее время основная часть сделок на ьирже производится не людьми, а программами. Я не знаю точной статистики, но кажется их число больше половины (по количеству, по финансам может и нет). Эти программы в основном рассчитаны на анализ сиюминтной (идаже сиюсекндной скорее) ситуации и ориентированы на сиюминтную прибыль. Программы как правило не пытаются учесть долгосрочного изменения ситуации на рынке, это им просто не под силу. И вот ТАКУЮ с позволения сказать "стратегию" ты называешь "рациональной"? ![]() |
Lapp |
![]()
Сообщение
#7
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Предыдущий пост мой. Странно, вроде я входил...
-------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
RathaR |
![]()
Сообщение
#8
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 346 Пол: Мужской Реальное имя: Иван Репутация: ![]() ![]() ![]() |
Цитата Что ж, это можно условно принять за исходную идею. Но заметь, что ты тут производишь НЕСКОЛЬКО сравнений. И тебе нужно ввести некоторое соотношение порядка в МНОГОМЕРНОМ пространстве. Иначе говоря, если сравнить две точки (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). В монополии я росчитывал поступать по аналогии, высший приоритет имеет например кол-во денег, а затем уже кол-во участков. Если чесно то сейчас у меня только очень туманные соображения по этому поводу, но почемуто во мне живёт уверенность в том что можно както реализовать ИИ способного учиться на своих ошибках, или хотябы так сказать "интересного, незаурядного" противника и в монополии ![]() Но апетит приходит во время еды ![]() -------------------- Считающий себя единственым здравомыслящим человеком сумасшедший? Если да, возможно я псих...
Пусть умолкнет всякий критик! Я - системный аналитик! |
andriano |
![]()
Сообщение
#9
|
Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: ![]() ![]() ![]() |
1. Под обучением обычно понимается совсем не тот процесс, что описан в первом сообщении. Там было "Запомнить, как поступил оппонент, и делать так же, как он". На самом деле обучение состоит примерно в следующем:
- на основе некоторой функц с настраиваемыми коэффициентами осуществляем выбор хода. - ходим. - ждем некоторое время (обычно не ранее окончания ответного хода оппонента и не позднее конца игры), когда будет ясно, "хорош" или "плох" оказался сделанный ход. - вносим изменения в настроечные коэффициенты нашей функции таким образом, чтобы увеличить вероятность выбора "хороших" ходов и уменьшить "плохих" в дальнейшем. 2. Процесс обучения - весьма длителен по времени, поэтому в подавляющем большинстве случаев человеку надоест играть раньше, чем ИИ завершит хотя бы первый цикл обучения. Поэтому IMHO реализация обучения непосредственно в процесссе игры утопична (кроме небольшого числа частных случаев игр, где по самому характеру игры возможно провести процесс обучения быстро), а обучение ИИ может быть целесообразно лишь на стадии тестирования и балансировки игры. |
Lapp |
![]()
Сообщение
#10
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
1. Под обучением обычно понимается совсем не тот процесс, что описан в первом сообщении. ... andriano высказал то, что плясало у меня на языке, но так и не сформулировалось. Точнее, это все сказано в теме про Калах, но тут надо было подчеркнуть. Так сказать, основной принцип этого способа "обучения".Есть игровая ситуация (то есть состояние всех переменных) и есть ходы, сделанные в этой ситуации. Событием же назовем определенный ход в определенной ситуации. Событие может быть хорошим и плохим, а точнее - иметь вес, и это оценивается по результатам партии. Иначе говоря, все события (то есть все ходы, сделанные в возникших в игре ситуациях) победителя считаются хорошими, и их вес увеличивается на единицу. Напротив, вес всех событий проигравшего после игры мы уменьшаем на единицу. В этом и состоит обучение: когда очередная игра закончилась, мы пополняем БД событий новыми возникшими событиями (с нулевым начальным весом), а потом проводим политику кнута и пряника: вес хороших событий увеличиваем, плохих - уменьшаем. Соответственно, размер этой БД, являющейся нашим обучаемым мозгом, определяется количеством состояний в игре, умноженным на количество ходов (это в предположении, что для веса достаточно 1 байта). А если быть более точным, то это сумма Mi по всем состояниям, где Mi - количество ходов в i-том состоянии. Это число, даже для уже квантованных игр (то есть у которых пространство состояний не непрерывное, а дискретное), как правило немаленькое. Я в своем выборе (Калах) руководствовался именно тем, что размер БД должен быть как можно меньшим - и то он получился огромным (и, кажется, отпугнул тебя, RathaR). В ситуации же с непрерывными параметрами размер БД будет зависеть от уровня квантования (чем мельче уровни - тем он больше), и маленьким он точно не покажется. Но думается мне, что этот подход в них вообще нежелательно применять в таких играх (в частности, по этой причине). 2. Процесс обучения - весьма длителен по времени, поэтому в подавляющем большинстве случаев человеку надоест играть раньше, чем ИИ завершит хотя бы первый цикл обучения. Поэтому IMHO реализация обучения непосредственно в процесссе игры утопична (кроме небольшого числа частных случаев игр, где по самому характеру игры возможно провести процесс обучения быстро), а обучение ИИ может быть целесообразно лишь на стадии тестирования и балансировки игры. Это тоже верно, но никто же не заставляет играть реально. Мои программы играли сами с собой, а также с программой, ходящей случайным образом (на начальной стадии весьма полезно). Кроме того, я уже высказывал мысль такую: выложить ее на сайт в Инет, пусть народ играет. И посматривать на нее время от времени)).-------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
andriano |
![]()
Сообщение
#11
|
Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: ![]() ![]() ![]() |
...ходы ... победителя считаются хорошими, и их вес увеличивается на единицу. Напротив, вес всех событий проигравшего после игры мы уменьшаем на единицу. Ну, в частном случае может быть и так. При обучении сети Кохонена, например, обычно изменяется лишь вес "правильного" варианта, а остальные остаются неизменными. Да и величина шага может быть не единицей, а какой-либо другой величиной, в частности, допускающей настройку.Цитата Это тоже верно, но никто же не заставляет играть реально. Мои программы играли сами с собой, а также с программой, ходящей случайным образом (на начальной стадии весьма полезно). Да, это обучение в процессе балансировки. Пользователь получает уже обученную НС, причем обучающий модуль вообще в комплект поставки не входит, а остается в списке утилит разработчика, а не пользователя.Цитата Кроме того, я уже высказывал мысль такую: выложить ее на сайт в Инет, пусть народ играет. И посматривать на нее время от времени)). А это - обучение в процессе бетатестирования. База весов, опять же, остается у разработчика. |
Lapp |
![]()
Сообщение
#12
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Ну, в частном случае может быть и так. Я и не говорил про общий случай. Человеку, который едва вникает в идею, нужно продемонстрировать на простом примере. Тонскости понятия веса и т.п. не особо важны.Да, это обучение в процессе балансировки. Пользователь получает уже обученную НС, причем обучающий модуль вообще в комплект поставки не входит, а остается в списке утилит разработчика, а не пользователя. Да хоть горшком назови ... А это - обучение в процессе бетатестирования. База весов, опять же, остается у разработчика. ![]() RathaR, ты следишь за темой? И как дела с твоей программой? P.S. Я не спец в этой терминологии, но трудно согласиться, что обучение в реальных условиях можно называть бета-тестированием. Если это действительно так - это явная логическая ошибка. Я предполагаю выкладывание программы на сайт после окончания ее отладки (включая тестирование). Тогда, позвольте, что мы тестируем? принцип?.. скорость обучения?.. уровень публики?.. Продукт (в идеальном случае) больше не подвергается изменениям. И главная цель его - не играть, а именно обучаться. База данных - результат этого процесса. Это не есть альфа-бетта-гамма-..-омега-тестирование. Это его основной режим работы. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
RathaR |
![]()
Сообщение
#13
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 346 Пол: Мужской Реальное имя: Иван Репутация: ![]() ![]() ![]() |
RathaR, ты следишь за темой? И как дела с твоей программой? Конечно слежу, и очень рад что речь зашла о самообучающихся системах вообще, мне это очень интересно, andriano внёс много конкретики в моё понимание процеса обучения ![]() А по поводу моей программы, то только позавчера вернулся к ней, начало нового учебного года немного отвлекло, но руки не опустились, правда... насчет реализации самообучения както наверно позновато, но пришло понимание того что нереально это... с самого начала я хотел показать то, что игра, после нескольких , а может и десятка партий с человеком, могла бы играть сама з собой любое кол-во партий, обучаясь по ходу процеса, тоесть игра с человеком даёт ей минимальное кол-во образцов сделок (Базу Данных), а потом основываясь на ней ИИ мог бы розвиваться дальше, а в конце, мы могли бы посмотреть чтото типа статистики, списка всех сделок которые ИИ предлагал бы самому себе, ну и соответственно список его решений, и в идеале сделки в этом списке должны были становиться менее глупыми, более рациональными, по мере его наростания. НО, по ходу написания пришли ко мне следующие мысли: 1) - заставлять ИИ учиться просто делать покупки(тоесть покупать недвижимость или нет, участвовать в аукционе или нет) - глупость и пустая трата времени, поэтому самообучение планировал реализовать только на сделки; 2) - научить его предлагать сделки так как я думал просто невозможно: "ждем некоторое время (обычно не ранее окончания ответного хода оппонента и не позднее конца игры), когда будет ясно, "хорош" или "плох" оказался сделанный ход." "(то есть все ходы, сделанные в возникших в игре ситуациях) победителя считаются хорошими, и их вес увеличивается на единицу." Я з самого начала неправильно интерпритировал принцип "робота из 300 коробков" в идею ИИ для монополии Цитата 1. Под обучением обычно понимается совсем не тот процесс, что описан в первом сообщении. Там было "Запомнить, как поступил оппонент, и делать так же, как он". Я буду очень рад, если тема продолжиться не как коректировка моих бредовых идей ![]() Цитата об самообучении ИИ в общем, и об монополии в частности. З.Ы. Но игра всёрамно будет интересной ![]() я нехочу лишать её практического смысла, тоесть нехочу чтобы это была просто игра, сейчас думаю над тем чтобы вот эту статистику показывать в конце игры, и сравнивать те сделки которые предлогал игрок с теми что предлагал ИИ. Тоесть предложения ИИ розсматриваем как "взаимовыгодная сделка", он будет предлагать только такие сделки( алгоритм ИИ примерно набросал), и сравниваем их с предложениями игрока, тоесть не "кто рациональней предложил", а "насколько рациональную сделку предложил, или отказался игрок". По поводу самой программы, то почти закончил графику, получилось вроде красиво, анимация, гл. меню, поле.. Сообщение отредактировано: RathaR - 16.09.2009 19:04 -------------------- Считающий себя единственым здравомыслящим человеком сумасшедший? Если да, возможно я псих...
Пусть умолкнет всякий критик! Я - системный аналитик! |
andriano |
![]()
Сообщение
#14
|
Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: ![]() ![]() ![]() |
Я не спец в этой терминологии, но трудно согласиться, что обучение в реальных условиях можно называть бета-тестированием... Это его основной режим работы. Ну, если обучение рассматривать как цель, а не как средство, то - конечно. Здесь еще есть интересная идейка асчет "быстрого обучения" (т.е. улучшения стратегии игры против конкретного игрока в обозримый, т.е. исчисляемый единицами игровых циклов период). Правда, сразу скажу, что это лишь идея, базирующаяся на предположениях, и реализацию этой идеи для меня неочевидна. Предположим (гипотеза!), что среди всего множества потенциальных игроков (людей) можно выделить несколько характерных типов поведения (кто-то играет осторожно, кто-то авантюрно, кто-то предпочитает "позиционые войны", кто-то, наоборот, рассчитывает на "кавалеристский рывок" и т.п.). Тогда можно выработать оптимальный характер поведения программы для каждого из типов игроков (т.е. получить массивы настроечных коэффициентов для каждого из типов - на этапе разработки), а также для некоторого "усредненного" типа (т.е. массив коэффициентов для равномерной смеси всех типов. На начальном этапе (теперь уже при взаимодействии с игроком) программа работает по "усредненному" типу и пытается определить, к какому типу относится оппонент. На это, думаю, много времени не потребуется. А после того, как тип будет определен, вместо "усредненных" коэффициентов в функцию принятия решения заливаются коэффициенты найденного типа. Естественно, можно предусмотреть динамику, т.е. чтобы програма продолжала отслеживать поведение игрока, если ему вдруг захочется поменять стратегию, и т.п. |
Shuruper |
![]()
Сообщение
#15
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 48 Пол: Мужской Реальное имя: Антон Репутация: ![]() ![]() ![]() |
Я представляю решение этой задачи путем анализа ошибок допущенных ИИ.
Вобщем схема такая имеется файл tactica.txt в котором записаны конфигурации поведения ии по ходу действия программы определяется выиграл или проиграл компьютер если выиграл, тактика преждняя если проиграл, программа анализирует каждый ход игры и редактирует, дополняет файл tactica.txt в зависимости от обнаруженных ошибок. Согласен система не доработана, но по моему это единственный очевидный путь. Хочу добавит, что суждения о характере игрока очень интересный нюанс, но все равно интелект бота не меняется, меняется только характер поведения и по этому игра не становится умнее. По моему эта тема долго не загнется так как вопрос очень интересный. -------------------- Я бы исправил мир, но Бог не дает мне исходников...
|
Lapp |
![]()
Сообщение
#16
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
(гипотеза!) Гипотезы - это хорошо, но ты не указал ни механизма распознавания типа поведения, ни конкретного способа реализации самой сети. Как я понял, ты хотел выиграть в размере базы, ограничившись ее частями (отбросив "серединку"). Но.. извини, этих соображений слишком мало. имеется файл tactica.txt в котором записаны конфигурации поведения ии - вот с этого места, пожалуйста, поподробнее.. Иначе его можно приравнять к такому: "имеется миллиард долларов; рассмотрим принципиальную возможность покупки буханки хлеба". Название файла - это далеко не все, увы.-------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Shuruper |
![]()
Сообщение
#17
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 48 Пол: Мужской Реальное имя: Антон Репутация: ![]() ![]() ![]() |
- вот с этого места, пожалуйста, поподробнее.. Иначе его можно приравнять к такому: "имеется миллиард долларов; рассмотрим принципиальную возможность покупки буханки хлеба". Название файла - это далеко не все, увы. файл может содержать все что угодно, начиная простыми переменными конфигураций и заканчивая сложными алгоритмами (например поиска путей); -------------------- Я бы исправил мир, но Бог не дает мне исходников...
|
andriano |
![]()
Сообщение
#18
|
Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: ![]() ![]() ![]() |
Гипотезы - это хорошо, но ты не указал ни механизма распознавания типа поведения, ни конкретного способа реализации самой сети. Мне помнится, как-то довелось решать задачу по типизации состояний атмосферы, т.е.: 1. Определить оптимальное количество типов. 2. Получить механизм, позволяющий конкретную метеорологическую ситуацию отнести к конкретному типу. Задача была решена с использованием сети Кохонена, а оптимальным количеством типов оказалось 4, что, кстати, согласуется с метеорологической практикой. Думаю, что-то аналогичное можно было бы сделать и в данном случае. Непонятно только, как получить достаточно представительную базу проведенных игр. (состояние атмосферы определяется и тщательно протоколируется тысячами метеостанций каждые несколько часов, и эти набюдения ведутся на протяжении многих лет, что дало мне необходимый для настройки сети объем данных) Цитата Как я понял, ты хотел выиграть в размере базы, ограничившись ее частями (отбросив "серединку"). Нет, добиться, чтобы алгоритм сумел приспособиться к конкретному игроку раньше, чем тому надоест играть.Цитата Но.. извини, этих соображений слишком мало. Я, собственно, и не пытался этого скрыть. |
Lapp |
![]()
Сообщение
#19
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
файл может содержать все что угодно, начиная простыми переменными конфигураций и заканчивая сложными алгоритмами (например поиска путей); "Миллиард долларов может быть взят, где угодно, начиная от тумбочки и заканчивая крупными банками.." -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
RathaR |
![]()
Сообщение
#20
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 346 Пол: Мужской Реальное имя: Иван Репутация: ![]() ![]() ![]() |
По поводу самого алгоритма "300 коробков", я так понимаю он полностью универсален, тоесть подходит для всех игр где есть конкретная выиграшная стратегия, ну или хотябы та которая гарантирует ничью? И гарантирует он игру ИИ исключительно до уровня игрока, тоесть играть лутче того хто его "научил" он немождет... Судя из статьи существует уйма игр к которым его можна применить, но :
Цитата Ну, если обучение рассматривать как цель, а не как средство пусть применять его там-то, или там-то нерационально, или глупо, но моя цель - демонстрация его возможностей. Так вот еще хотел спросить, я так понимаю сей алгоритм "уникален" в своём роде, т.к. являеться фактически методом кнута и пряника, а может существуют другие самообучающиеся алгоритмы, которые можна применять в играх?(без всяких нейронных сетей, чтото более-менее простое ![]() -------------------- Считающий себя единственым здравомыслящим человеком сумасшедший? Если да, возможно я псих...
Пусть умолкнет всякий критик! Я - системный аналитик! |
![]() ![]() |
![]() |
Текстовая версия | 26.06.2024 22:26 |