Войти
ПрограммированиеФорумОбщее

Генетический алгоритм, нейросеть + размножение агентов.

Advanced: Тема повышенной сложности или важная.

Страницы: 1 2 Следующая »
#0
4:13, 26 окт. 2010

Итак...
Старая песня о главном.
1. Обучаю агентов(по сути НС) с помощью ГА.
2. Агенты должны улучшать свое поведение(фитнес-функция - это продолжительность жизни)
3. Кроссинговер делаю по разному:
    * Многоточечный кроссинговер:
        а)  Беру случайное значение веса от 1 родителя или от другого,  вероятность pos = 0.5
        б)  Тоже самое только на целый нейрон.

    * Одно, двух...-точечный кроссинговер
4. Мутации тоже по разному задаю .
        а) В момент кроссинговера, может случится сбой и ген(вес в сети) получит случайное значение.
        б) Или вес не полностью заменяется, а инкриментируется на небольшое значение +-  rnd_value(задается тоже как переменная случайная величина)
5. Прихожу к идеям
  *  доминантных и рецессивных генов.
  *  к идее "мутантного гена"  Суть такова:
      Если при кроссе какой то ген мутирует, а в итоге образуется "отличная" особь предок, то ТАКОЙ ген вызывает повышенный интерес.
      Есть смысл расчитать фитнес-функции агентов с вариациями этого гена. ( ну или абстрагируемя от 1 гена и получаем группу мутантных генов)
А ТЕПЕРЬ СОБСТВЕННО ВОПРОС.
Как мне получить обобщенное правило для размножения агентов, такое чтобы оно эволюционировало вместе со структурой нейросети и значением ее весов.
Помниццо я представлял массив весов нейронки как набор нулей и единиц: 010101010111111111100101.
  Делал кросс + мутировал случайное значение бита. Вроде бы хорошая идея и обобщенная что ли, но что-то не так.
Думаю что в вопросе обучения нейросети эволюционными способами - очень важно сосредоточится именно на способе размножении агентов, на правиле по которому получается нейронка.
  Это правило должно эволюционировать. Но как это сделать?
Потихоньку смотрю в область автоматов на примере игры life. Старая тема, но это гениально!!! Мне кажется наша жизнь устроенна очень похоже на игру life.
Вселенная - бесконечно-мощный суперкомпьютер. Но это уже совсем другая тема для дискуссии.
         


#1
4:24, 26 окт. 2010

Я к чему это все писал.
Эволюционные способы действительно показывают отличные результаты, но они ОЧЕНЬ СИЛЬНО
зависят от мощности вычислительной системы. Все зависит от задачи, конечно, но поверьте мне, если Вы хотите создать человека из ничего,
то Вам потребуется вычислительная мощность(ВМ) аналогичная ВМ планеты Земля и парочку миллиардов лет расчетов.
Не обладая такой огромной ВМ как Земля, логично было бы нам обобщить тот опыт, которым наделила нас природа и сделать "умную" эволюцию:
половое размножение, система доминантных генов и т.д. Впрочем, кроссинговер уже подразумевает половое размножение, а генетический алгоритм рассматривается в контексте кроссинговера, но лично
я считаю, что генетическим алгоритмом можно называть аналогичную систему без кроссинговера, вполне достаточно обычных мутации.

#2
9:38, 26 окт. 2010

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

>Как мне получить обобщенное правило для размножения агентов, такое чтобы оно эволюционировало вместе со структурой нейросети и значением ее весов?
Это нужно подумать. Сформулировать структуру нейронной сети с помощью последовательности чисел, которые можно будет подвергать корректировкам, что в свою очередь могло бы приводить к полной реструктуризации всей сети. Сам подобные алгоритмы писал, но не в идеальном виде, так что лучше подумать.

#3
9:42, 26 окт. 2010

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

#4
11:35, 26 окт. 2010

optimist32
> Как мне получить обобщенное правило для размножения агентов, такое чтобы оно эволюционировало вместе со структурой нейросети и значением ее весов.
Боюсь спросить, но видно придётся: зачем?

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

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

optimist32
> Думаю что в вопросе обучения нейросети эволюционными способами - очень важно сосредоточится именно на способе размножении агентов, на правиле по которому получается нейронка.
Думаю, что при любом применении ГА важны правила по которым преобразуется генотип, это как бы часть ГА, без этих правил он вообще не работает.

#5
12:59, 26 окт. 2010

Tiendil
> Боюсь спросить, но видно придётся: зачем?
Чтобы оптимизировать поиск в огромном пространстве значении. У меня нет 3 миллиардов лет в запасе.
Очевидно, что оптимальный способ размножения закрепится в популяции и будет одной из движущих сил отбора.
Tiendil
> Думаю, что при любом применении ГА важны правила по которым преобразуется
> генотип, это как бы часть ГА, без этих правил он вообще не работает.
Способы размножения и "правила по которым преобразуется генотип" несколько разные понятия, тем более
что  в своей задаче, я представляю генотип в виде весов нейронки.

#6
13:24, 26 окт. 2010

Alexander K
> Это нужно подумать. Сформулировать структуру нейронной сети с помощью
> последовательности чисел, которые можно будет подвергать корректировкам, что в
> свою очередь могло бы приводить к полной реструктуризации всей сети. Сам
> подобные алгоритмы писал, но не в идеальном виде, так что лучше подумать.
Чем мне нравится автомат игры Life ?  Там есть все что нужно для эволюции - я уверен, что определенный набор начальных условии приведет систему в
состояния дарвинского развития.  Но как создать такие условия?  Достаточно ли создать дивиргенцию, поток... Не знаю "поток энергии" в областях пространства? А если мы их создадим, как направить эволюцию на решение своей задачи?
Казалось, бы причем тут ГА и Life? Но если хорошо подумать, то взаимосвязь станет очевидной. Дело даже не просто в ГА, а в развитии системы.
Зацепка гениальная до ужаса, но анализ этого Мира  Life безумно сложен. 
1. Вот представьте себе "Корабль" в Life  огромный из множества точек, с большим периодом.
2. Допустим он изолирован в какой то области и совершает свой длинный путь в пространстве.
3. Летит он себе и летит. И тут залетает в него глайдер - это такой очень маленькии кораблик
4. Тут возможны несколько вариантов:
    * глайдер разрушит систему
    * глайдер не разрушит систему, а это уже очень хорошо - получается в системе возникает гомеостаз, а это одно из основных свойств живого...(и дело тут не в способности сохранять температуру тела постоянным,  вопрос куда более глубок)
5. Тут целая теория возникает.... Только мне спать уже охота. Пойду я.
ИМХО - глайдер самый просто ЖИВОЙ ОРГАНИЗМ в игре life. 
Качайте Симулятор Game of Life    -  Golly
Кто нибудь может сделать так, чтобы глайдер поменял направление движения? На что ему нужно наткнутся? У меня получилось )

#7
10:52, 27 окт. 2010

optimist32
> Способы размножения и "правила по которым преобразуется генотип" несколько разные понятия
Можно тогда пояснить, что имеется в виду под каждым из понятий?

> тем более что в своей задаче, я представляю генотип в виде весов нейронки.
Что мешает его расширить до представления недостающих параметров?

> Чтобы оптимизировать поиск в огромном пространстве значении. У меня нет 3 миллиардов лет в запасе.
> Очевидно, что оптимальный способ размножения закрепится в популяции и будет одной из движущих сил отбора
Забудь как страшный сон. Раз уж на то пошло, то оптимальный способ размножения уже природой открыт: мальчик, девочка ну и т.д. не?

#8
16:34, 27 окт. 2010

Tiendil
> не?
не..
Потому что половое размножение - это лишь одна из возможных многомерных функции и далеко не факт, что ТО что работает у нас с Вами в Нашем Мире будет так же оптимально работать
в любой другой задаче, популяции искусственных агентов. Вполне логично более удачными могут быть совершенно другие функции размножения. Об них то и речь.
Ключевое понятие именно мутация.
> > тем более что в своей задаче, я представляю генотип в виде весов нейронки.
> Что мешает его расширить до представления недостающих параметров?
Возможно, что констант в программе вообще быть не должно. Пусть все значения алгоритма будут переменными и являться  элементами генотипа особи. Такой алгоритм уже нельзя будет называть ГА, это уже
разновидность эволюционного алгоритма, но по сути это мало меняет концепцию дарвинизма.
Хотя даже тут ограничении достаточно. А вот в автоматах нет никаких ограничении.
Простой закон Мира - и ВСЁ, ВСЁ что надо для эволюции. Вы понимаете о чём я говорю?
> > Способы размножения и "правила по которым преобразуется генотип" несколько
> > разные понятия
> Можно тогда пояснить, что имеется в виду под каждым из понятий?
Тут ключевое слово "преобразуется", а мне послышалось интерпретируется... Термин "размножение" более удачен по моиму.
Вообще печально, что так мало людей в теме. Единицы буквально. Нужно собрать команду по эволюционным методам и забацать что нить веселое.
Только где взять эту команду? Если вот Вы будучи в теме вопроса советуете мне "забыть как страшный сон" концепцию, которая мне кажется очевидной и логичной для обсуждения и развития.

#9
19:51, 27 окт. 2010

optimist32
> Если вот Вы будучи в теме вопроса советуете мне "забыть как страшный сон"
> концепцию, которая мне кажется очевидной и логичной для обсуждения и развития.
Он не в теме вопроса, раз так говорит.

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

П.С. я слежу за твоими постами, мб как-нибудь сработаемся в "конце всего" xD

#10
19:59, 27 окт. 2010

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

> Простой закон Мира - и ВСЁ, ВСЁ что надо для эволюции. Вы понимаете о чём я говорю?
Возможно понимаю, но не до конца.

> Нужно собрать команду по эволюционным методам и забацать что нить веселое.
Если бы можно было что-то забацать обладая маленькими ресурсами, уже забацали бы.
Единственный достойный пример - Норны, но их реализовывал доктор of computer science...

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

#11
21:50, 27 окт. 2010

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

> - двуполое размножение (да и вообще любое) описывается вероятностно, а
> математика везде одинакова и раз оно сработало у нас, то сработает везде, где
> имеет место такая же математика.
Хорошо, зайду с другой стороны. Информацию возможно представить бесконечным числом способом.
Вы уверены, что именно кроссинговер отдельных весов, нейронов либо еще какой то вариант - наиболее успешен именно в Вашем представлении информации? Напомню, что
ДНК и РНК человека устроены удивительно компактно и многие гены кодируют сразу группу признаков. Тут всё очень сложно, если копнуть.
Соглашусь с тем, что половое размножение будет очень оптимальным, при условии, что гены особи будут кодироватся соответствующей функцией кодировки, тогда
вопрос остается открытым....

> Если бы можно было что-то забацать обладая маленькими ресурсами, уже забацали
> бы.
> Единственный достойный пример - Норны, но их реализовывал доктор of computer
> science...
Если бы да кабы... Сколько я этих "если" уже слышал. Тут делать нужно, эксперементировать, а не ставить условия. ... Вспоминается поговорка- кто хочет тот ищет способы, кто не хочет - ищет отговорки.
Чем Вас технология CUDA не устрайвает? Прирост скорости достигает десятки и сотни раз. Можно на основе её сделать распределенную сеть вычислений. Основную часть времени считать на локальных машинах, а иногда синхронизовать данные с сервером SQL, скажем. Напомню, что моё ИМХО что эволюционные способы работают отлично, но очень ресурсоёмки. Мы ставим задачу, а система САМА ЕЁ РЕШАЕТ. Помойму такую систему вполне можно называть "умной", ИИ, ну или как Вам угодно будет. Мне нравится перспектива постановки задачи и получение результата.

> почему в сети нет материалов о ней?
Как заметил мой случайный знакомый химик, который окончил МГУ:"если Вас интересует узкопрофильная литература, то в интернете Вам её попросту не найти".
Сколько я не искал CUDA + ГА + Нейросеть, я так и не нашел в сети, не то что  исходников, но даже экзешников. А если они есть то это просто единицы программ на 5 миллиардов человек.
А в рунете, так вообще НУЛЬ, ЗЕРРРРРРРООО  ....
В итоге, я поставил себе простую задачу и решил ее(208000-житель рекорд). Ввел даже обратные связи, но "вечного жителя" так и не нашел, хотя очевидно, что их бесконечное количество.
Задача обучения нейросети дарвиновским способом открыта!

Alexander K
> П.С. я слежу за твоими постами, мб как-нибудь сработаемся в "конце всего" xD
Давай прямо щас сработаемся, уже есть несколько умных людей. Я считаю некоторых из них гениями, ну или талантищами.
Тут главное не загаживать любую идею на корню. ВЕДЬ НА ПРОСТОМ ПОЗНАЕТСЯ СЛОЖНОЕ.
Если простая задача не решена, то о каких сложных прогнозах в сложных системах можно говорить.

> А ты всё верно говоришь, но пока народ не видит того, за что можно было бы со
> слюной изо рта взяться и работать не покладая рук. Но признайся, разработай ты
> такую вещь - станешь ты её на публику выкидывать?)
Я голосую всеми руками и ногами за открытый код. Только так все выйграют, только совместная работа принесет достойный результат.
Я вообще за социализм, но к нему должно быть готово общество, иначе анархия - мать порядка и как следствие борьба за выживание. А зачем НАМ ЛЮДЯМ ВЫЖИВАТЬ? Мы уже
на вершине эволюции. Нужно помогать друг другу и идти к общей цели. Вот на [url=\http://www.google.ru/#sclient=psy&hl=ru&newwindow=1&q… fc71f9f4e1c93]Хокинга[/url] посмотрите, инвалид как никак, а стоит жизни многих людей.

#12
22:45, 27 окт. 2010

optimist32
> Вы уверены, что именно кроссинговер отдельных весов, нейронов либо еще какой то вариант - наиболее успешен именно в Вашем представлении информации?
Я ни в чём не уверен :-) у меня нет необходимой базы, что бы быть в это уверенным. Но считаю, что для любого адекватного способа кодирования наиболее оптимальным вариантом кроссовера будет реализация с двумя родителями.

> Чем Вас технология CUDA не устрайвает?
Меня всем устраивает. Кроме того, что лично я опыты с ГА отложил на неопределённый срок, так как нашёл для себя более интересные и полезные занятия, к тому же более реальные.

> Можно на основе её сделать распределенную сеть вычислений. Основную часть времени считать на локальных машинах, а иногда синхронизовать данные с сервером SQL, скажем.
Это уже тянет минимум на человеко-год.

> Мы ставим задачу, а система САМА ЕЁ РЕШАЕТ.
Это очень абстрактно звучит, Попыток сделать хорохо было много. В моём вузе на кафедре ИИ уже 15 лет пилят систему, которая "сама её решает", я даже какое-то участие принимал, мизерное правдо, до момента когда стечение обстоятельств и внезапное прозрение не сказали бросать это дело и идти работать.

> Сколько я не искал CUDA + ГА + Нейросеть, я так и не нашел в сети,
Плохо искали: google, одна из 1-ых ссылок там даже видео какое-то предлагается

#13
23:41, 27 окт. 2010

Tiendil
> Плохо искали: google, одна из 1-ых ссылок там даже видео какое-то предлагается
Я эту ссылку видел  18 раз уже, ВОПРОС а причОм тут эволюция ?
Жду ответ.
PS: есть куда более интересный проект с исходным кодом MBP

#14
0:09, 28 окт. 2010

optimist32
> Я эту ссылку видел 18 раз уже, ВОПРОС а причОм тут эволюция ?
сорри, затупил :-) про ГА там ничего.
В любом случае на запрос вида "cuda neural genetic" гугл отдаёт на первый взгляд адекватные и полезные результаты.
Даже какую-то конференцию нашёл: CIGPU-2010 там по всем правилам оформленные статьи, в том числе в каждой по 20 ссылок на сопутствующие материалы.

Страницы: 1 2 Следующая »
ПрограммированиеФорумОбщее

Тема в архиве.