Комментарии 32
охренеть сколько интересного текста,
попробую за выходные разобраться.
Огромное спасибо! Сам не так давно интересовался подобными проблемами, конкретно — моделью NORGEV [PDF] (она, по приведённой классификации, относится к методу «пространства ячеек»). Ещё собраться бы и попробовать закодить это всё…
С Norgev, честно говоря, не сталкивался.

Если к вопросу про «закодить», то советую обратить внимание на методику NEAT (я ее описывал в статье), а точнее на её модификацию (публикация, кстати, была только в конце прошлого года) HyperNEAT (если тема интересна — могу описать, очень интересная технология, которая в построении сети учитывает пространственную геометрию).

У этих обоих методов есть бооольшой плюс — доступны библиотеки на разных языках + множество туториалов.
Да… Здесь исследовать и исследовать. Зато, когда доисследуемся, то сразу начнётся бурная эпоха роботов.
А я щас по теме читаю книжку «Эгоистичный ген» by тов. Докинз Р.
Весьма интересные мысли там.

Ну, эгоистичный ген — это классика :)
Еще одна «маст-рид» книга по теме — Artificial Life Лэнгдона. В ней, в частности, подводится логическая база под то, почему генетические алгоритмы являются, наверное, единственно возможным методом эволюции, а также очень красиво описывается разница между генотипом и фенотипом.
Пасиба за источник.

Мне чем ЭГ нравится, так это обоснованием эгоизма/альтруизма!

Вот уж где всё в итоге чётко на свои места встает.
А как она называется в русском переводе? Или нет ее пока в переводе еще? В любом случае цена просто умопомрачительная на ОЗОНе www.ozon.ru/context/detail/id/7015293/
Известны ли вам какие-нибудь другие источники этой книги, которые не стоят так много денег?
Ух, приятно, что статью читают по прошествии столь длительного времени после публикации :)

Как статья называется по-русски, честно говоря, не в курсе, т.к. предпочитаю такого рода вещи читать в оригинале — к сожалению, переводы научной литературы на русский не всегда адекватны. Та ссылка, которую Вы дали — это сборник статей под редакцией Лэнгдона, поэтому, не совсем то, о чем я говорил. Впрочем, изучить книжку можно и забесплатно — http://lmgtfy.com/?q=artificial+life+an+overview+pdf&l=1
Ну, а саму статью легко найти через википедию Artificial Life — см. сноску №9 в разделе References.
Я по процедурному вопросу:
За статью спасибо.

Но в HTML сноски без ссылок — моветон.
А лучше б примечания и вообще не уносить — а просто делать врезки с отступом на месте.
Почему-то ссылки на сносках порезались. Если дадите пример статьи, где они работают или скажите как оформить — исправлю
Если текст примечания перенести туда, где была циферка-сноска, и поставить следующим абзацем, обернув его, например, в тег <blockquote>, то текст уже будет читаться поудобнее.
Вот так примечание будет выглядеть такое примечание

И вовсе не обязательно его откидывать в конец текста… Мне так кажется.
НЛО прилетело и опубликовало эту надпись здесь
Абсолютно согласен :) Именно поэтому в статье нет ни одного метода, основанного на том, что можно назвать «слепой имитацией». Везде, где говорится про «биологичность», это стоит трактовать как «механизм имеет аналог в природе». Если в процессе эволюции природа выработала некий полезный алгоритм — имеет смысл присмотреться к нему и попытаться понять, какие выгоды он дает. Опять же на эту (ну, почти на эту тему) очень неплохо размышляет Лэнгдон в своем «Artificial Life»
Антона Конушина, вообще-то, а не Артема. Можете сделать сноски — ссылками, кстати?
Хорошая статья, а генетическое программирование применяется где-нить кроме нейронных сетей? Я видел только работы Шалыто (генерация автомата состояний) и проект генерации C-кода с очень сложным мутатором. Сам я сделал простенький язык программирования и генетический генератор для него :) github.com/ai/d2na, ищу чтобы почитать по этому направлению.
О, да. Фактически, применение его в нейронных сетях — это новшество, которое только исследуется (и, что характерно, пока дает результаты максимум сравнимые с использованием специально оптимизированных ГА).
А на тему, где оно используется — велкам ту www.genetic-programming.org (откуда была взята логотипная картинка), а точнее — в этот параграф:

There are now 36 instances where genetic programming has automatically produced a result that is competitive with human performance, including 15 instances where genetic programming has created an entity that either infringes or duplicates the functionality of a previously patented 20th-century invention, 6 instances where genetic programming has done the same with respect to a 21st-centry invention, and 2 instances where genetic programming has created a patentable new invention.
Я в своем дипломе применяю генетическое программирование для обученя решающих деревьев в контексте другого алгоритма машинного обучения, бустинга (о нем на Хабре уже писали, кажется).
Поскольку текст диплома еще не дописан, могу предложить только слайды презентации-отчета. В принципе, идею по ним вполне можно понять. В слайдах есть и ссылка на код. Если нужно — дайте мне свой e-mail, я отправлю.
Скажите, а архитектура GA применима к использованию в квантовых компьютерах?
(понятное дело пока их нет, но за разработку алгоритма уже можно приниматься)
Честно говоря, не знаю — с теорией квантовых вычислений знаком весьма поверхностно, поэтому все нижесказанное — мое имхо :)
Если говорить про принципиальную возможность реализации — то почему нет? Коль скоро квантовый компьютер (в теории) может выполнять функции машины Тьюринга — то и любой другой алгоритм выполнить сможет. Вопрос — можно ли реализовать ГА, эффективно использующий квантовое ускорение? Тут, само собой, нужны отдельные исследования. Как минимум, мне видится ускорение за счет активного использования алгоритма Гровера.
Я бегло проглядел статью, и нигде не увидел ответов на следующие важный вопрос (если не заметил — заранее извиняюсь): что служит функцией приспособленности? Ошибка обученной сети с выбранной архитектурой на заранее фиксированной обучающей выборке? Оценка ошибки обученной сети на генеральной совокупности с помощью кросс-валидации (ох и долго же наверное это будет работать) или просто оценка по тестовой выборке?
Нет, указаний на некую общую функцию приспособленности, действительно, нет. Это связано с тем, что (как я указывал) для оценки эффективности каждой методики их авторы выбирают определенные проблемные домены и уже в их рамках вводят соответствующую фитнесс-функцию, поэтому советую обратиться к первоисточникам по каждой методике. В общем могу только отметить что:
а) Большая часть методик вообще не предусматривает предварительного обучения нейросети
б) Более новые методики используют агенто-ориентированные оценки — сгенерировали сеть, поместии её в агента, прогнали агента в симуляторной среде (например, NEAT в качестве одной из задач, решает задачу баллансировки двух шестов, а в ней фитнесс-функция оценивает время удачной балансировки)
Более-менее понятно, спасибо. Хотя, конечно, если вычисление фитнесс-функции для данной архитектуры сети требует объемных вычислений (решить задачу заново с данной архитектурой), то требуемое на решение оптимизационной задачи время должно быть воистину колоссальным. Впору суперкомпьютеры использовать.
Не все так печально — в конце концов эволюции понадобилось гораздо больше времени :) Ну, это так — в порядке шутки.

А если серьезно, то, действительно, вычисление фитнесс-функции — это узкое место в производительности нейроэволюционных алгоритмов. Конечно, исследователи идут на всевозможные ухищрения — например, измеряют не время решения задачи вообще, а, скажем, прогресс за 1000 поколений плюс целый пучок вспомогательных параметров (например, скорость обучения системы). Более того, даже сейчас идет активная работа по улучшению производительности как генетических алгоритмов вообще (например — активные исследования «островной» модели, что позволит эффективно использовать «гриды» вычислителей), так и генетических алгоритмов применительно к нейроэволюции в частности (например, тот же NEAT).

Однако, в области, в которой оправдано применение нейроэволюционных методов, а именно в задачах, когда не известна структура не только ответа, но и вопроса, ничего более эффективного пока не придумали.
Спасибо за статью! Только теперь получил возможность оставить комментарий, так как именно ваш обзор вдохновил меня опубликовать близкие по теме идеи в отдельной статье и получить инвайт. Было интересно обнаружить, что уже напридумано столько методов по теме нейроэволюции.
Сейчас провожу эксперимент по косвенному кодированию нейросети с помощью голограммы.
Правда большой геном так не построишь, сложность построения и расшифровки голограммы — O(n^2)
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.