Re[2]: Генетические алгоритмы
От: Кодёнок  
Дата: 21.04.08 11:26
Оценка: +1
Здравствуйте, Anpek, Вы писали:

A>Я делал такое. Ну ползают, ну скрещиваются, ну передают свои гены детям, ну едят. И дальше чё? ИИ не появился


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

uuu2: Чтобы ГА сделал вам ИИ, надо сформулировать такую функцию y = f(X), которая как можно более монотонно себя ведет при изменении каждого из параметров. Если параметры это команды процессора, то изменение одной полностью ломает всю программу, функция получается практически рандомным шумом. Это наихудшие условия для любого метода оптимизации. Вряд ли существует метод оптимизации, который может справиться с функцией такого вида

         ***
  ***    * *
*** ****** ********


Любые попытки будут не более чем случайными выстрелами в надежде однажды попасть, ГА тут ничего не даёт. Перебор будет быстрее.
Re[3]: Генетические алгоритмы
От: prVovik Россия  
Дата: 21.04.08 11:31
Оценка: :)
Здравствуйте, Кодёнок, Вы писали:

Кё>Любые попытки будут не более чем случайными выстрелами в надежде однажды попасть, ГА тут ничего не даёт. Перебор будет быстрее.


Как это ничего не дает? А романтика?
лэт ми спик фром май харт
Re[4]: Генетические алгоритмы
От: Кодёнок  
Дата: 21.04.08 11:31
Оценка: +1
Здравствуйте, uuu2, Вы писали:

E>>А что за команды? Свои какие-то? Или типа.... машина Тьюринга. Ну я не знаю... как было то?


U>Свои — имитация машинного кода. Команда состояла из 17 байт (1 байт команды и четыре 4-байтных числовых параметра).

U>Команд было немного — типа "IF-THEN-ELSE", "GOTO", "MOV" и т.п. Были "ячейки памяти" для текущей позиции, а также 2 байта для выходного "ответа" (т.е. организм заносил в ходе своей работы какие-то значения в эти 2 байта, и это интерпретировалось как ход).

А каков был метод скрещивания?
Re[3]: Генетические алгоритмы
От: Ellin Россия www.rsdn.ru
Дата: 21.04.08 11:32
Оценка:
Здравствуйте, Кодёнок, Вы писали:

Кё>
Кё>         ***
Кё>  ***    * *
Кё>*** ****** ********
Кё>


Кё>Любые попытки будут не более чем случайными выстрелами в надежде однажды попасть, ГА тут ничего не даёт. Перебор будет быстрее.


Почему же? Вот если бы у uuu2 была реализована операция скрещивания, то эффективнее простого перебора.
Re[5]: Генетические алгоритмы
От: Ellin Россия www.rsdn.ru
Дата: 21.04.08 11:35
Оценка:
Здравствуйте, Кодёнок, Вы писали:

Кё>А каков был метод скрещивания?


Насколько я понял его не было => это был своего рода алгоритм простого перебора.
Re[4]: Генетические алгоритмы
От: prVovik Россия  
Дата: 21.04.08 11:40
Оценка:
Здравствуйте, Ellin, Вы писали:

E>Вот если бы у uuu2 была реализована операция скрещивания...


Всего то ничего...
Напоминает сказку про кашу из топора. ГА — это топор, "операция скрещивания" — это всякие вспомогательные ингредиенты
лэт ми спик фром май харт
Re: Генетические алгоритмы
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 21.04.08 12:06
Оценка: 4 (2)
Здравствуйте, Ellin, Вы писали:

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

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

Уже сделано и с приятной графикой:
http://necrobones.com/bugfest/
Наблюдать довольно интересно.
Re: Генетические алгоритмы
От: nen777w  
Дата: 21.04.08 12:07
Оценка:
Тему интересную вы подняли. Да еще и в таком свете.
Давно хотел с ГА разобраться.
Накидайте мни пожалуйста ссылок на тему "что такое ГА" с примерами было бы вообще великолепно.
Спасибо.
Re[2]: Генетические алгоритмы
От: Ellin Россия www.rsdn.ru
Дата: 21.04.08 12:11
Оценка:
Здравствуйте, nen777w, Вы писали:

N>Тему интересную вы подняли. Да еще и в таком свете.

N>Давно хотел с ГА разобраться.
N>Накидайте мни пожалуйста ссылок на тему "что такое ГА" с примерами было бы вообще великолепно.
N>Спасибо.
Просто с ген. алгоритмом плотно столкнулся и разобрался летом 2006... пришлось... там решалась одна задача на его основе. Все лето ушло... но там сильно много специфики... зато видимо хорошо разобрался...
А так я сейчас посмотрел... может в википедии вам подсказать? Даже и не знаю где хорошие источники найти, что ни найду — все какое-то ... в молоко...
Предлагаю в википедию сходить для начала.
Re[5]: Генетические алгоритмы
От: uuu2  
Дата: 21.04.08 12:14
Оценка:
Кё>А каков был метод скрещивания?

Скрещивания не было, было клонирование. Т.е. 2 "победителя" дублировали сами себя по 4 раза, а потом в "клоны" добавлялась небольшая (порядка 20 байт) случайная мутация. 8 "проигравших" (самых плохих игроков) уничтожались.
Re[3]: Генетические алгоритмы
От: uuu2  
Дата: 21.04.08 13:10
Оценка:
Кё>uuu2: Чтобы ГА сделал вам ИИ, надо сформулировать такую функцию y = f(X), которая как можно более монотонно себя ведет при изменении каждого из параметров. Если параметры это команды процессора, то изменение одной полностью ломает всю программу, функция получается практически рандомным шумом.

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

А для того, чтобы было меньше "шума", я и хотел "улучшать" организмы постепенно. Т.е. сначала они играют с простеньким "детским" движком, специально совершающим ошибки. Потом, он играет с противником на уровне 3-го разряда, и улучшает свой уровень. И так, постепенно, учится принимать правильные решения.
Re[4]: Генетические алгоритмы
От: machine3000  
Дата: 21.04.08 13:33
Оценка:
Здравствуйте, uuu2, Вы писали:


Кё>>uuu2: Чтобы ГА сделал вам ИИ, надо сформулировать такую функцию y = f(X), которая как можно более монотонно себя ведет при изменении каждого из параметров. Если параметры это команды процессора, то изменение одной полностью ломает всю программу, функция получается практически рандомным шумом.


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


В простейшем случае программа просто выбирает из всех ход, приводящий к наилучшей позиции. Оценка позиции производится путём домножения на веса и суммирования различных показателей. Собственно, эту функцию и имеет смысл подбирать генетическим алгоритмом.
Более продвинутая версия должна выбирать ход, приводящий к наилучшей позиции через серию ходов. Для оценки того, как долго просчитывать каждую ветвь используется другая функция, определяющая насколько позиция устойчива. Её тоже можно подбирать ГА. Ну а всё остальное надо просто тупо захардкодить.
Re[5]: Генетические алгоритмы
От: uuu2  
Дата: 21.04.08 13:44
Оценка:
M>В простейшем случае программа просто выбирает из всех ход, приводящий к наилучшей позиции.

Что значит "к наилучшей позиции"? Если я сдам своего ферзя — это хорошая позиция или нет? А если в результате сдачи фигуры я поставлю мат через 5 ходов?

M>Оценка позиции производится путём домножения на веса и суммирования различных показателей. Собственно, эту функцию и имеет смысл подбирать генетическим алгоритмом.


Тогда мне придётся самому придумывать показатели, а генетический алгоритм (ГА) только манипулирует весами. Это уже не ИИ! Я хочу чтобы ГА сам сформировал показатели и веса, чтобы он мог в ходе эволюции добавлять новые показатели, избавляться от ненужных и т.п.
Re[6]: Генетические алгоритмы
От: prVovik Россия  
Дата: 21.04.08 13:55
Оценка:
Здравствуйте, uuu2, Вы писали:


U>Тогда мне придётся самому придумывать показатели, а генетический алгоритм (ГА) только манипулирует весами. Это уже не ИИ! Я хочу чтобы ГА сам сформировал показатели и веса, чтобы он мог в ходе эволюции добавлять новые показатели, избавляться от ненужных и т.п.


Так, стоп. ГА, несмотря на свое громкое название, — это всего лишь один из методов оптимизации, то есть это алгоритм поиска набора параметров некоторой функции, на которых эта функция достигает оптимума. Не более того. Соответственно, чтобы применить ГА надо свести задачу к функции f(X1, X2, ..., Xn)
лэт ми спик фром май харт
Re[6]: Генетические алгоритмы
От: machine3000  
Дата: 21.04.08 14:05
Оценка:
Здравствуйте, uuu2, Вы писали:

U>Тогда мне придётся самому придумывать показатели, а генетический алгоритм (ГА) только манипулирует весами. Это уже не ИИ! Я хочу чтобы ГА сам сформировал показатели и веса, чтобы он мог в ходе эволюции добавлять новые показатели, избавляться от ненужных и т.п.


Ну когда мощность компьютеров порядков на 40 выростет, может у тебя чего-нибудь и получится. Хотя нет, чтоб получилось, механизм мутаций также должен быть подвержен мутациям. А такие мутации, как ты описал, любой механизм сразу выводят из строя.
Re[7]: Генетические алгоритмы
От: uuu2  
Дата: 21.04.08 15:53
Оценка:
V>Так, стоп. ГА, несмотря на свое громкое название, — это всего лишь один из методов оптимизации

Это вопрос терминологии. Ну, назовём это не "генетическим", а "эволюционно-интеллектуальным" алгоритмом. Смысл в том, что создается "живой" организм, который выполняет некую задачу, идеальный алгоритм решения которой не известен, постепенно обучается и проходи "искусственный отбор" по критерию успешности решения задачи.
Re[8]: Генетические алгоритмы
От: prVovik Россия  
Дата: 21.04.08 17:15
Оценка:
Здравствуйте, uuu2, Вы писали:

U>Это вопрос терминологии. Ну, назовём это не "генетическим", а "эволюционно-интеллектуальным" алгоритмом. Смысл в том, что создается "живой" организм, который выполняет некую задачу, идеальный алгоритм решения которой не известен, постепенно обучается и проходи "искусственный отбор" по критерию успешности решения задачи.


Чем это отличается от простого полного перебора всех возможных комбинаций элементов живых организмов? Только скоростью. И то не факт. ГА (эволюционный) может работать быстрее только при выполнении ряда условий. Одним из таких условий является то, что "яблоко от яблони должно недалеко падать". Другими словами, функция эффективности должна быть гладкой. То есть f(x) — f(x + delta) должно стремиться к нулю, если delta стремиться к нулю. Потомок должен быть почти таким же, как его родители. Отсюда следует, что ГА не будет работать на мутациях компьютерной программы. Вообще, добиться выполнения этого условия очень трудно. И если это сделать, то пропадает вся "романтика" и "волшебство" эволюционных алгоритмов
лэт ми спик фром май харт
Re[9]: Генетические алгоритмы
От: uuu2  
Дата: 21.04.08 19:00
Оценка:
V>Чем это отличается от простого полного перебора всех возможных комбинаций элементов живых организмов? Только скоростью.

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

V>Потомок должен быть почти таким же, как его родители. Отсюда следует, что ГА не будет работать на мутациях компьютерной программы.


Именно такой вывод я и сделал. Правда, есть ещё одна мысль — смоделировать некую нейронную сеть. Т.е. в "мозге" расположены нейроны (точки с координатами x,y,z). Часть нейронов являются рецепторами (туда поступает информация о расположении фигур на доске, о времени на часах и т.п.). Часть — "двигательными" (выполняют движение фигуры после обдумывания). Между нейронами протянуты "нити", по которым проходят сигналы. При этом нейроны сгруппированы нитями в "группы" (участки мозга), хотя есть нити и между разными группами.

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

В ходе эволюции, в основном, мозг сохраняет структуру. Немного (в пределах 0.1%) изменяются связи, добавляются/исчезают некоторые нейроны. Связи меняются, в основном, не сильно (на соседние нейроны).
Re[10]: Генетические алгоритмы
От: prVovik Россия  
Дата: 21.04.08 19:35
Оценка:
Здравствуйте, uuu2, Вы писали:

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


U>В ходе эволюции, в основном, мозг сохраняет структуру. Немного (в пределах 0.1%) изменяются связи, добавляются/исчезают некоторые нейроны. Связи меняются, в основном, не сильно (на соседние нейроны).


Все украдено до нас

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: Генетические алгоритмы
От: Cyberax Марс  
Дата: 21.04.08 20:03
Оценка: 2 (1)
Здравствуйте, Ellin, Вы писали:

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

Естественно. Тысячи работ, не меньше.

Можно начать отсюда: http://www.talkorigins.org/faqs/genalg/genalg.html
Sapienti sat!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.