Re[2]: Генетические алгоритмы
От: Cyberax Марс  
Дата: 21.04.08 20:05
Оценка:
Здравствуйте, uuu2, Вы писали:

U>* позднее была поставлена более простая задача — научить организм играть хотя бы в крестики-нолики. Было математически доказано, что такое обучение возможно и 4 Кб кода хватит для правильной работы такого организма. Однако "эволюция" этих организмов к успеху не привела.

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

Проблема в том, что функция отбора изменяется неплавно с изменением генов. Эволюция с такими условиями работает плохо.

Вот что-нибудь аналоговое (типа алгоритма хождения по поверхности) — будет работать замечательно.
Sapienti sat!
Re[4]: Генетические алгоритмы
От: Кодёнок  
Дата: 22.04.08 06:20
Оценка:
Здравствуйте, uuu2, Вы писали:

U>Монотонной функции тут явно не будет — алгоритм слишком сложный. И вообще, любой код состоит из команд процессора, как же ещё будет работать шахматная программа, без команд-то?


U>А для того, чтобы было меньше "шума", я и хотел "улучшать" организмы постепенно. Т.е. сначала они играют с простеньким "детским" движком, специально совершающим ошибки. Потом, он играет с противником на уровне 3-го разряда, и улучшает свой уровень. И так, постепенно, учится принимать правильные решения.


Я думаю обучения просто не происходило, даже в простейшем случае, на крестиках-ноликах. Представь конструкцию цикла например, ей нужно несколько взаимосвязанных опкодов. Допустим, мутация добавила половину этих опкодов, добавление второй половины сильно улучшит ИИ; даст ли половина какое-то преимущество? Она просто не будет работать, а значит в следующем поколении половина ценной эволюционной находки будет благополучно утеряна.

Если строить программу путем дописывания одной-пары команд, то для крестиков-ноликов, при правильном выборе опкодов сработает, но она будет перебором всех ситуаций на доске. Выглядеть она будет так:

IF ситуация-1 MOVE ход в такую-то клетку
IF ситуация-2 MOVE ход в такую-то клетку
сюда добавляются еще случайные команды
кончились команды, но игра еще идет — выигрывает тот, у кого позже кончились (т.е. длинее очередь)

Такая функция по мере удлинения программы правильными командами плавно приближается к правильному ИИ. Но это очевидно будет просто усеченным перебором.

Смысл генетического алгоритма, чтобы можно было заменить один ген и поменять одно свойство, не ломая остальные. Что нужно подкрутить, чтобы f1, f2, ..., fN превратилось в for i = 1..N f(i)? Для шахмат это необходимо, там перебор ситуаций не катит, даже для 4Гб генов. Проблема в том, что это должно случиться за одно поколение, сразу, скачком. Если по частям, то это движение в светлому будущему попадает во временную яму и будет сочтено неверным направлением. Надо чтобы каждый ген независимо от остальных плавно, любым изменением за одно поколение, мог приближать организм к победе; опкоды на роль генов как-то не подходят.
Re[5]: Генетические алгоритмы
От: uuu2  
Дата: 22.04.08 07:01
Оценка:
Кё>IF ситуация-1 MOVE ход в такую-то клетку
Кё>IF ситуация-2 MOVE ход в такую-то клетку

Тогда получится база данных позиций и соответствующих им идеальных ходов. Вы знаете, сколько в шахматах возможно позиций? Ну а теперь оцените объём необходимой базы. А также машинное время, необходимое для накопления этой базы.

И потом, как определить, что ход в данной позиции идеальный? Ну, допустим, я выиграл партию за N ходов. Но это не значит, что все мои ходы были правильными! Вероятно, 80% ходов были совсем не идеальными, и при более серьёзном обдумывании можно было найти ход лучше.
Re[6]: Генетические алгоритмы
От: Кодёнок  
Дата: 22.04.08 07:17
Оценка:
Здравствуйте, uuu2, Вы писали:

Кё>>IF ситуация-1 MOVE ход в такую-то клетку

Кё>>IF ситуация-2 MOVE ход в такую-то клетку

U>Тогда получится база данных позиций и соответствующих им идеальных ходов. Вы знаете, сколько в шахматах возможно позиций? Ну а теперь оцените объём необходимой базы. А также машинное время, необходимое для накопления этой базы.


Именно. Это вырожденная программа, зато работающий вариант. То, на что ты возлагал надежды, не могло сработать. Путем случайного мутирования строк нельзя написать даже простой вычислитель факториала из 1-го цикла, ибо цикл должен появиться сразу целиком, за одно поколение, а это не эволюция, это одномоментное угадывание; тогда как предназначение эволюции — постепенное приближение к идеалу от поколения к поколению.

Если ты сможешь придумать, как писать функции по шагам, так чтобы на каждом шаге они оставались работающими и выдавали все более точные результаты, только тогда твоя задумка с шахматами удастся.
Re: Статистическое программирование? :)
От: Erop Россия  
Дата: 22.04.08 08:09
Оценка:
Здравствуйте, Ellin, Вы писали:

E>Вобщем все это задумки... можно продумать основательно мне кажется. Вот только наверняка такое уже есть. Может подскажите где?

В целом я впечатлён идеей, что тысяча обезьян таки сможет написать "каису"

Если уж охота так эксперементировать, то я бы придумал другое представление программы. Какое-нибудь более оринетированное на предметную область. Хотя бы декларативное, что ли.
Скажем как цепочку слабейщих предусловий, или ещё как-нибудь декларативно.
Можно какой-то готовый декларативный язык взять или функциональный, например.

Но можно, в принципе, подумать, и родить какой-то свой интерпретатор. Грубо говоря, хорошо бы написать такую программу, чтобы любая последовательность байт интерпретирповалась ей, как корректный игрок в шахматы.
Тогда можно будет придумать адекватный способ скрещивания...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[2]: Статистическое программирование? :)
От: prVovik Россия  
Дата: 22.04.08 08:12
Оценка: :)
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, Ellin, Вы писали:


E>>Вобщем все это задумки... можно продумать основательно мне кажется. Вот только наверняка такое уже есть. Может подскажите где?

E>В целом я впечатлён идеей, что тысяча обезьян таки сможет написать "каису"

Да мне много не надо. Достаточно обучить программу писать работающие программы по ТЗ
лэт ми спик фром май харт
Re[2]: Статистическое программирование? :)
От: Ellin Россия www.rsdn.ru
Дата: 22.04.08 08:37
Оценка:
Здравствуйте, Erop, Вы писали:

E>Но можно, в принципе, подумать, и родить какой-то свой интерпретатор. Грубо говоря, хорошо бы написать такую программу, чтобы любая последовательность байт интерпретирповалась ей, как корректный игрок в шахматы.

E>Тогда можно будет придумать адекватный способ скрещивания...

У меня вообщето планы весьма скромные... может я не правильно выразился... или попросту еще не устоялась формулировка.
Пусть есть мир и два типа насекомых, как здесь
Автор: D. Mon
Дата: 21.04.08

Насекомые делятся на хищников и травоядных.
На карте, где они обитают есть земля с травой. которую едят травоядные и водой, которую для простоты никто не пьет и которую надо обходить.

Есть ряд характеристик у насекомых — может совершать рывки на такое то расстояние с такой-то скоростью, может двигаться бесшумно, может слышать шорохи, может различать движущиеся объекты на таком-то расстоянии, может обходится без еды столько-то, надо есть столько то чтоб наестся и т.п. и т.д. Здесь надо продумать набор этих параметров... многое выкинуть для простоты.

И самое главное!
Нейронные сетки У каждого зверька есть мозг . Так вот поведение зверька определяется сеткой... ну это можно сделать мне кажется... типа поступил сигнал со зрения — движущийся предмет там-то...(координаты пространства для простоты передаются...), нейронная сетка должна определить в какую сторону бежать... некоторые будут бежать в сторону хищника и соотв. исчезнут, некоторые убегать...

И цель. Как то так подобрать, чтоб со временем нейронная сетка хотя бы росла... нет я не говорю что искуственный интеллект получим это конечно упрется в какие-нить "оптимальные" 400 нейронов, определяющие поведение травоядного как зигзагообразное убегание от "рывками прыгающего" хищника с 300 нейронами... А изначально у них было, допустим по 20 нейронов...

Мне такого хватит, например... Хотя, конечно не факт что увеличение нейронов — плюсь... может даже они уменьшатся начнут...

Вобщем поковырятся можно... Вот только хорошобы какой-нибудь базис в виде API... или может готовых прог...
Re[11]: Генетические алгоритмы
От: uuu2  
Дата: 24.04.08 16:54
Оценка:
V>http://www.google.ru/search?aq=f&complete=1&hl=ru&client=firefox-a&rls=org.mozilla%3Aru%3Aofficial&hs=jTM&q=neural+network+learning+genetic+algorithms&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&lr=

Это готовое, практическое решение. А мне хотелось бы забацать подобную (путь и более простую) штуку самостоятельно, чтобы хотя бы примерно понять, как это всё программируется и что я делал неправильно.
Re[7]: Генетические алгоритмы
От: ora Россия  
Дата: 24.04.08 17:30
Оценка: 1 (1) +2 :))) :))
Здравствуйте, Amon-RA, Вы писали:

AR>Здравствуйте, Amon-RA, Вы писали:


AR>>Быстро этот вид исчез


AR>Я тоже баловался таким же


Твое насекомое, пишущее в рсдн, глючит, оно само с собой разговаривает.
Re: Генетические алгоритмы
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 30.04.08 10:15
Оценка:
Довольно скоро, кстати, выйдет игра Spore. Можно будет самому прокладывать путь эволюции.
Re[7]: Генетические алгоритмы
От: vadimcher  
Дата: 30.04.08 14:58
Оценка:
Здравствуйте, Amon-RA, Вы писали:

AR>Здравствуйте, Amon-RA, Вы писали:


AR>>Быстро этот вид исчез


AR>Я тоже баловался таким же


А в твоем случае программа случайно не Fight Club (Бойцовский Клуб) называлась?

А вот зайца кому, зайца-выбегайца?!
Re[4]: Генетические алгоритмы
От: Vamp Россия  
Дата: 05.05.08 20:18
Оценка: :)
M>Вот график за последнее время Надо узнать, сколько будет завтра. Ну или через час, или через месяц. Можешь "насекомых" озадачить этим делом. Кто сильнее ошибся, тот и умер.

Все перемрут.
Да здравствует мыло душистое и веревка пушистая.
Re[4]: Генетические алгоритмы
От: Аноним  
Дата: 07.05.08 10:06
Оценка:
Здравствуйте, machine3000, Вы писали:

M>Вот график за последнее время Надо узнать, сколько будет завтра. Ну или через час, или через месяц. Можешь "насекомых" озадачить этим делом. Кто сильнее ошибся, тот и умер.


Брутально звучит

Я пробовал такие вещи делать. В лучшем случае удастся добиться 55-60% удачных сделок. Маловато однако. Так Баффетом не стать
Re[5]: Генетические алгоритмы
От: machine3000  
Дата: 08.05.08 10:42
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Я пробовал такие вещи делать. В лучшем случае удастся добиться 55-60% удачных сделок. Маловато однако. Так Баффетом не стать


Где-то читал что уже сейчас 30% сделок на бирже совершается роботами. А через 10 лет, типа, будет 100.
Хотелось бы самому тоже попробовать. Так, блин, чтоб тело бренное прокормить, на работе всякой туфтой приходится заниматься. А по выходным ничего серьёзного сделать не успеешь.
Re: Генетические алгоритмы
От: ridli  
Дата: 15.05.08 12:24
Оценка: -1 :)
E>Вот только наверняка такое уже есть. Может подскажите где?

нагуглите tierra
... << RSDN@Home 1.2.0 alpha 4 rev. 1088>>
Re[2]: Генетические алгоритмы
От: Alex Reyst Россия  
Дата: 16.05.08 13:30
Оценка:
Здравствуйте, ridli, Вы писали:

R>нагуглите tierra


Как ты думаешь, сколько миллионов ссылок можно нагуглить на слово "Земля"?

Tierra by Tom Ray

- У вас закипает, — сказала флегматичная Петина мама.
— Да! У меня закипает чувство справедливого негодования по поводу нашего так называемого воспитания молодежи, которое приводит только к ...
— У вас закипело молоко, — сказала менее ленивая Сережина мама...

Все, что здесь сказано, может и будет использоваться против меня.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.