ЭВОЛЮЦИОННЫЕ СИСТЕМЫ

 
+
-
edit
 
Три года назад было много материалов по подобной теме. Почти во всех журналах, на многих сайтах(кто помнит маленькую фирмочку обещавшую настольные суперкомпьютеры выполняющие любые программы? :) ) Потом все как то затихло... А странно - FPGA стали чут ли не на порядок мощней(появился например Ксилинк с 4мя Power-ами на схеме!), вроде бы вперед! Ан нет -тема утихла. Благодаря Форуму "Форт" :) я наконец то нашел одну из старых статей -на мой взгляд самую интресную -приведу ее почти полность(подчеркнув особо интресные места):

Он пришел дать им волю

Адриан Томпсон устраивает эволюцию и естественный отбор среди интегральных схем. Он дает им полную свободу и даже разрешает превращаться из цифровых в аналоговые.

Среди членов программного комитета EH'99 - наш сегодняшний собеседник, д-р Адриан Томпсон (Adrian Thompson), один из пионеров этого направления. После окончания Института науки и техники Манчестерского университета по специальности "Разработка систем микроэлектроники" он развивал свои идеи в области эволюционной электроники, работая над диссертацией в Университете Сассекса. В настоящее время он исследователь-стипендиат (research fellow) этого университета, а с 2000 года займет должность лектора (lecturer) по компьютерным наукам и искусственному интеллекту.

Прежде чем предложить вниманию читателя ответы Томпсона на мои вопросы о прошлом, настоящем и будущем эволюционной электроники, я кратко расскажу о той работе, которая принесла ему известность (исчерпывающее изложение этой работы имеется в его книге: A. Thompson. Hardware Evolution: Automatic design of electronic circuits in reconfigurable hardware by artificial evolution, выпущенной издательством "Springer Verlag" в 1998 году в серии "Выдающиеся диссертации").

Томпсон решил поэкспериментировать с эволюцией электронных устройств не на компьютерных моделях, а в реальности. Очень удобными для таких экспериментов оказались FPGA (Field Programmable Gate Array, электрически программируемые матрицы вентилей). Это интегральная схема, состоящая из множества ячеек, способных выполнять простейшие функции, но не имеющих между собой фиксированных связей. Связи устанавливаются программным образом, по командам управляющего микропроцессора, и могут изменяться в процессе работы схемы. Эволюцию на таком устройстве нетрудно организовать при помощи генетического алгоритма. Для этого создается некая "популяция" конструкций - грубо говоря, схем соединения элементарных ячеек. Каждая "особь" поочередно испытывается на приспособленность к выполнению поставленной задачи; наименее приспособленные отсеиваются, наиболее приспособленные скрещиваются, мутируют и так далее, как это принято в генетических алгоритмах (см. статью Росса Клемента в этом номере КТ).
Однако если не выходить за общепринятые методы создания интегральных схем, то есть заниматься сборкой более сложных цифровых модулей из простых элементов-вентилей, ничего нового по сравнению с компьютерным моделированием не получится. А значит, и радикально новых результатов не будет. Идея Томпсона состояла в том, чтобы с самого начала нарушить "инструкцию по эксплуатации" FPGA. Он хотел понять, что произойдет, если запустить эволюцию, сняв все ограничения, какие только можно. Например, он отказался от генератора тактовой частоты. В итоге FPGA в этих экспериментах выступала не как цифровое, а как аналоговое устройство! Динамика системы из дискретной стала непрерывной, и возникли совершенно неожиданные эффекты.

Была поставлена задача вывести схему, способную различать два сигнала различной частоты - 1 кГц и 10 кГц. Для этого использовался "уголок" FPGA размером 10 на 10 ячеек. На рисунке показана конструкция, возникшая в результате эволюции, продолжавшейся более 4000 поколений популяции из 50 особей. Видно, что использованы далеко не все возможные ячейки. Никакие тактовые генераторы сами собой не появились. Количество активных элементов намного меньше, чем понадобилось бы при обычном цифровом использовании FPGA. Но самое забавное, что долгое время никто не мог понять, как вообще работает эта схема. Более того. Обратите внимание на пять ячеек, заштрихованных серым. Они не выполняют никаких активных функций в полученной схеме, но если их отключить, схема перестает работать (то есть различать нужные сигналы)...

При ближайшем рассмотрении стало ясно, что на кристалле возникло нечто неуловимое и уникальное. Конструкция была очень чувствительна к температуре, а также, что уж совсем неприятно, соглашалась работать только на одном определенном экземпляре FPGA. Но ведь никто и не рассчитывал сразу получить промышленный образец Лучшего В Мире Различателя Двух Бипов. Главное в том, что идея привела к нетривиальным результатам и стало ясно, что открылось новое поле для исследований. Оказалось, что эта деятельность интересует очень многих, вокруг нее мгновенно выросло научно-инженерное сообщество, образовалась инфраструктура в виде конференций, "воркшопов"... Но давайте послушаем, что обо всем этом думает сам Адриан Томпсон.

Что привело вас к мысли реализовать эволюцию в хардвере?
- Такие идеи высказывалась уже давно. Например, Вирт Атмар (Wirt Atmar) из Университета Нью-Мексико писал об аппаратной реализации эволюционирующих систем еще в 1976 году в своей диссертации "Рассуждение об эволюции машинного интеллекта и ее возможной реализации в машинной форме". Это было до появления реконфигурируемых электронных устройств. И в 80-х, когда эти устройства были созданы, их потенциал не остался незамеченным: в статье Стивена Вольфрама (Stephen Wolfram) "Подходы к инженерии сложности" ("Approaches to Complexity Engineering", Physica 22D, 1986) упоминались некоторые возможные применения. За прошедшее с тех пор время такие устройства в форме FPGA стали одним из важнейших видов электронной техники. Теперь они очень большие и очень сложные.
Так что я, инженер-электронщик, окончив университет в начале 90-х, хорошо разбирался в конструировании на основе FPGA. Когда я приехал в Университет Сассекса (University of Sussex) для работы над диссертацией, меня интересовала искусственная эволюция нейронных сетей (в этой области университет Сассекса был и остается лидером). Опять-таки благодаря тому, что я электронщик, я стал думать не о моделировании эволюции, а о том, как ее на самом деле устроить для тех специализированных нейрочипов, которые тогда были в наличии. Как совместить эволюцию с ограничениями, налагаемыми архитектурой конкретного чипа? Как она может воспользоваться специфическими особенностями этого чипа? Обдумывая эти вопросы, я вскоре понял, что нейрочип - отнюдь не единственное устройство, пригодное для экспериментов с эволюцией. Если вы хотите заставить эволюцию заработать на куске кремния, почему там обязательно должна присутствовать именно нейроархитектура? Не лучше ли будет позволить эволюции манипулировать мелкоблочной (fine-grain) FPGA и самой определить, какая архитектура лучше всего использует ресурсы чипа?
Мне посчастливилось тогда познакомиться с группой разработчиков из Xilinx, которые как раз заканчивали работу над FPGA модели XC6216. Хотя к тому времени существовало уже много гораздо более изощренных моделей FPGA, эта была первой, идеально приспособленной для экспериментов с эволюцией. Команда Xilinx отнеслась ко мне очень дружелюбно, и благодаря их поддержке я получил возможность работать с этим замечательным чипом.
Я должен сказать, что принципиальные возможности для занятий хардверной эволюцией существовали значительно раньше. Ведь вполне можно строить интересные реконфигурируемые устройства на уровне обычных печатных плат, используя какие-нибудь аналоговые переключательные чипы. Собственно, в некоторых из наших исследовательских работ мы и сегодня делаем именно это. Можно, разумеется, моделировать эволюцию схем и программным путем, а полученный результат реализовывать обычным способом. Первые публикации такого рода появились не менее десяти лет назад. Хотя нашу группу больше всего интересует, что происходит в результате эволюции физически реконфигурируемых чипов, моделированию мы придаем очень большое значение. Может даже так случиться, что чем больше мы будем узнавать о том, как работает эволюция для реальных чипов, тем легче мы сможем в будущем полностью заменить такие опыты программным моделированием! Это - открытая область исследований.

Каковы основные принципы организации эволюции в ваших опытах?
- В своих первых экспериментах я использовал самый примитивный генетический алгоритм. В статье "An evolved circuit, intrinsic in silicon...", которая, как и другие мои статьи, находится на моей WWW-странице, есть описание экспериментальной установки. В данный момент я работаю с другими вариантами эволюционных алгоритмов. Возможностей здесь много.

Содержался ли, в той или иной форме, "ответ" уже в самом алгоритме "обучения" или результат эволюции оказался совершенно неожиданным?
- Поведение полученной схемы было именно таким, какого я старался добиться, и оно было точно описано с самого начала. Но способы, которые для этого использует схема, действительно оказались совершенно неожиданными. Я хотел, чтобы в процессе эволюции могли возникать самые необычные структуры, в том числе и выходящие за рамки общепринятых конструкторских решений. Для этого я предоставил схеме максимальную свободу развития и не навязывал никаких правил. Оказалось, что полученная схема использует очень тонкие и интересные эффекты. Нам с Полем Лэйзеллом (Paul Layzell) потребовался добрый месяц, чтобы в общих чертах разобраться, что же именно там происходит! Об этой работе рассказывается в нашей статье "Analysis of Unconventional Evolved Electronics".

Ваши первые устройства учились различать два звуковых сигнала (гудка) различной частоты. Какие задачи решаются сегодня?
- Сначала мы заменили гудки словами "Go" и "Stop", которые произносились в микрофон, после чего преобразовывались в потоки импульсов, а те подавались на вход FPGA. Используя уже выработанное умение различать гудки, эволюция без особого труда научила схему различать и эти слова. Это доказывало, что у схем можно вырабатывать потенциально полезные "навыки", пусть и довольно простые. Главной проблемой, с которой мы столкнулись, оказалась высокая чувствительность обеих схем (реагирующих на гудки и на Go/Stop) к внешним условиям. Они правильно работали только на одном определенном чипе, который использовался в эксперименте, причем диапазон допустимых температур был не очень широк. Поэтому до реальной практики еще далеко. И эта проблема носит общий характер: я намеренно позволил эволюции как можно полнее использовать любые свойства чипа, но за это пришлось платить падением устойчивости к небольшим изменениям этих свойств. Поэтому теперь я работаю с установкой, где есть несколько различных чипов, выпущенных на различных фабриках, работающих при разных температурах, разных напряжениях питания и т. д. За счет этого я пытаюсь создать давление отбора (selection pressure), чтобы стимулировать появление надежных схем без моего предварительного вмешательства в виде внесения конструктивных ограничений. Животные и растения используют множество интересных стратегий, чтобы добиться устойчивости. Эти стратегии сильно отличаются от того, к чему мы привыкли в электронике, но могут оказаться полезными при эволюционном подходе. Этому посвящена моя статья "Temperature in Natural and Artificial Systems".
Работа по "выведению" надежных схем без предварительного наложения конструктивных ограничений оказалась трудной. Поэтому я ограничиваюсь пока простой задачей с различением гудков, зная по эксперименту с Go/Stop, что потом можно будет перейти к более сложным сигналам.

Каков спектр ожидаемых приложений этой технологии? Каковы задачи на близкую, среднюю и дальнюю перспективу? В частности, чего можно было бы добиться на существующем "материале"? И насколько широк его выбор?
- Я не рассматриваю свою работу по выведению нестандартных схем на XC6216 как поиск новых методов практического использования именно этого чипа (хотя, кто знает...). Это просто удобный инструмент для исследований. Мы занимаемся и программным моделированием эволюции схем, работаем на реконфигурируемых печатных схемах, а также с реконфигурируемыми аналоговыми устройствами фирм Motorola (правда, они недавно у нас забрали свое устройство) и Zetex. Я думаю, что первыми приложениями нестандартной хардверной эволюции будут совсем маленькие схемы, используемые как элементы больших конструкций. Нас интересует создание при помощи эволюции маленьких схем, потребляющих мало энергии и, желательно, устойчивых к отказам. Мы также думаем о применении эволюционных алгоритмов в качестве инструментов разработки реконфигурируемых устройств в обычных CAD-системах.
Что касается материала, то он уже сейчас довольно разнообразен. Во-первых, существует множество разновидностей FPGA, среди которых есть даже аналоговые. Во-вторых, можно построить собственную реконфигурируемую систему на уровне печатной платы (см. WWW-страницы Поля Лэйзелла у нас в Сассексе). В-третьих, есть группы, такие как группа Хигучи (Higuchi) в ETL, в Японии, которые разрабатывают собственные реконфигурируемые чипы СБИС, однако это не всем под силу, так как требует больших затрат денег и времени. Кстати, я хотел бы выразить благодарность компаниям Xilinx, Zetex, British Telecom, Hewlett-Packard и Algotronix за их помощь в моей работе.
А в какой степени эта возникающая сейчас технология может оказаться зависимой от конкретного материала? Что, если принципы эволюции, которые сейчас вырабатываются (а частично, быть может, уже выработаны) будут воплощены на базе, допустим, нанотехнологий?..
- Одна из главных задач, которую мы поставили перед собой здесь, в Сассексе, состоит в том, чтобы найти такие формы и процессы, которые наиболее естественны для данной аппаратной среды. Это означает, что результаты того или иного эксперимента будут приспособлены к имеющимся средствам воплощения. Но если мы воспроизведем тот же процесс эволюции на другой аппаратуре, там может образоваться другая архитектура. И мы активно изучаем, как это может повлиять на стиль работы с прогрессивными технологиями будущего, где будут возникать серьезные препятствия к применению традиционных методов конструирования.

Каковы потенциальные опасности и злоупотребления, связанные с эволюционирующим хардвером? Можно ли говорить о "хардверных вирусах"?
[red] - Современные динамически реконфигурируемые FPGA стирают грань между программной и аппаратной средой.[/red] Поэтому проблемы, традиционно связанные с программными средствами, вполне могут распространиться и на системы, использующие изменяемые по ходу работы FPGA-компоненты. В этом нет ничего особенно страшного или сверхъестественного. Более интересна перспектива эволюционного порождения системы, механизм работы которой нам непонятен. В нашей работе "Analysis of Unconstrained..." (на нее есть ссылка на моей WWW-странице) высказаны некоторые соображения на эту тему. Я считаю, что начинать практическое использование эволюционно выведенной схемы можно будет только после достаточно серьезного анализа полученной конструкции. В этом, собственно, тоже нет ничего нового, и с точно такими же опасностями мы всегда сталкиваемся при создании больших программных систем.
.....
Благодарю вас за интересные и содержательные ответы.

Какие мнения? :cwm12:

Ник
Объективная реальность - вариант бреда, обычно вызывается низким уровнем концентрации алкоголя в крови.
 

hcube

старожил
★★
Не. Если уж на то пошло - то надо сначала писать верхний уровень нейроалгоритма, а потом под него разрабатывать оптимизированное железо. А так... кому, нафиг, нужен этот различатель двух бипов, построенный на паразитных явлениях, если никто не знает, как он работает? Техника должна быть ПОЛНОСТЬЮ КОНТРОЛИРУЕМА. Если этого нет - это прямой путь к катастрофе. Вон, читал того же Винджа - у него тоже были... тележки наездников. С встроенным бэкдором и совершенно непонятной, простой в изготовлении и работающей конструкцией. Ну так ими, пардон, сверхразум занимался при проектировании. Который ТОЧНО ЗНАЛ, к чему приведет та или иная паразитная связь.
Убей в себе зомби!  

au

   
★★☆
Nick_Crak> [red] - Современные динамически реконфигурируемые FPGA стирают грань между программной и аппаратной средой.[/red]

Ничего они не стирают. Интересное железо, ни на шаг не ближе к софту, чем ASIC. Стирать грани пытаются писатели всяких SystemC и прочая, и то выходит не то чтобы красиво. Нет смысла стирать грань, кроме как дать возможность кнопкодавителям делать работу инженеров. Но цель эта сомнительна, результаты весьма слабые, и VHDL как рулил описанием железа, так и рулит, и будет рулить, т.к. для этого и создан. С - нет. Verilog с потомками тоже рулит в определённых районах земного шара, но он брат VHDLа. От соседа %):D

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

По материалам лекций проф-ра Ульриха Рюкерта, с моей варварской обработкой :)
 
+
-
edit
 

avmich

координатор

>Ничего они не стирают. Интересное железо, ни на шаг не ближе к софту, чем ASIC.

Ну, ASIC-то нельзя же программировать в таком же диапазоне, как FPGA? Это и имеется в виду.

>Нет смысла стирать грань, кроме как дать возможность кнопкодавителям делать работу инженеров. Но цель эта сомнительна, результаты весьма слабые, и VHDL как рулил описанием железа, так и рулит, и будет рулить, т.к. для этого и создан. С - нет.

Аргументация похожа на ту, которую применяет Старый в Космическом. Мол, если чего-то нет, то этого и не может быть, потому что иначе было бы. А может, просто технология не успела до этого добраться? Вон, в Верилоге есть способ высокоуровневого описания чипа, по алгоритмам поведения. А такие высокоуровневые алгоритмы на ЯВУ писались уже давно и успешно. Так что, казалось бы, почему бы и нет?

>Дело в том, что глючный софт народ привык терпеть как неизбежное зло. Но глючное железо порождает праведный гнев и не терпится.

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

>Вот где похоронят эти инициативы о ламеризации инженерного труда.

Почему сразу ламеризации?..
 

hcube

старожил
★★
И, уже если так хочется, чтобы и чипы разрабатывались, и усилий не надо было прикладывать, то это надо делать от программной части. Сначала создать модель блоков схемы, потом добиться того, чтобы собранный из таких можделей программный имитатор работал, а потом скинуть его 'на железо'. Тогда никакими побочными эффектами тот пользоваться не будет - в программной модели их просто нет ;-) , а вот работоспособность, если модель блока правильная - останется.
Убей в себе зомби!  

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru