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

ЛИЧНЫЙ КАБИНЕТ 

 

Здравствуйте гость!

 

Логин:

Пароль:

 

Запомнить

 

 

Забыли пароль? Регистрация

Повышение уникальности

Предлагаем нашим посетителям воспользоваться бесплатным программным обеспечением «StudentHelp», которое позволит вам всего за несколько минут, выполнить повышение уникальности любого файла в формате MS Word. После такого повышения уникальности, ваша работа легко пройдете проверку в системах антиплагиат вуз, antiplagiat.ru, etxt.ru или advego.ru. Программа «StudentHelp» работает по уникальной технологии и при повышении уникальности не вставляет в текст скрытых символов, и даже если препод скопирует текст в блокнот – не увидит ни каких отличий от текста в Word файле.

Результат поиска


Наименование:


курсовая работа Применение генетических алгоритмов

Информация:

Тип работы: курсовая работа. Добавлен: 08.07.2012. Сдан: 2011. Страниц: 18. Уникальность по antiplagiat.ru: < 30%

Описание (план):


 
 
 
 
 
 
 
Курсовая  работа по программированию
на  тему: «Применение  генетических алгоритмов»
 

 

План 

      Теоретическая часть.......................................................................................3
      Введение…………………………………………………………….……….3
      Раздел I. Основные понятия генетического алгоритма…………..…….....7
      1. 1. Классический генетический алгоритм……………………..…………7
      1. 2. Алгоритм работы……………………………………………….…….10
      1.3.  Шимы, теорема шим……………………………………………..…...13
      Раздел II. Модели генетических алгоритмов.............................................20
      2. 1. Настройка генетических алгоритмов………………………….……20
      2. 2. Модели генетических алгоритмов......................................................21
      Раздел III. Применение генетических алгоритмов....................................30
      3. 1. Применение генетических алгоритмов..............................................30
      3. 2. Перспективные направления развития нейрокомпьютерных технологий..............................................................................................................32
      Выводы………………………………………………………………….….36
      Практическая часть......................................................................................39
      Литература………………………………………………………………....47 

 

 

     Теоретическая часть
     Введение 

     Природа поражает своей сложность и богатством всех своих проявлений. Среди примеров можно назвать сложные социальные системы, иммунные и нейронные системы, сложные взаимосвязи между видами. Они - всего лишь некоторые из чудес, которые стали более очевидны, когда мы стали глубже исследовать себя самих и мир вокруг нас. Наука - это одна из сменяющих друг друга систем веры, которыми мы пытается объяснять то, что наблюдаем, этим самым изменяя себя, чтобы приспособиться к новой информации, получаемой из внешнего мира. Многое из того, что мы видим и наблюдаем, можно объяснить единой теорией: теорией эволюции через наследственность, изменчивость и отбор.
     Теория  эволюции повлияла на изменение мировоззрения  людей с самого своего появления. Теория, которую Чарльз Дарвин представил в работе, известной как "Происхождение Видов", в 1859 году, стала началом этого изменения. Многие области научного знания в настоящее время наслаждаются свободой мысли в атмосфере, которая многим обязана революции, вызванной теорией эволюции и развития. Но Дарвин, подобно многим своим современникам, кто предполагал, что в основе развития лежит естественный отбор, не мог не ошибаться. Например, он не смог показать механизм наследования, при котором поддерживается изменчивость. Его гипотеза о пангенезисе оказалась неправильной. Это было на пятьдесят лет до того, как теория наследственности начала распространяться по миру, и за тридцать лет до того, как "эволюционный синтез" укрепил связь между теорией эволюции и относительно молодой наукой генетикой. Однако Дарвин выявил главный механизм развития: отбор в сочетании с изменчивостью или, как он его называл, "спуск с модификацией". Во многих случаях, специфические особенности развития через изменчивость и отбор все еще не бесспорны, однако, основные механизмы объясняют невероятно широкий спектр явлений, наблюдаемых в Природе.
     Поэтому неудивительно, что ученые, занимающиеся компьютерными исследованиями, обратились к теории эволюции в поисках вдохновения. Возможность того, что вычислительная система, наделенная простыми механизмами изменчивости и отбора, могла бы функционировать по аналогии с законами эволюции в природных системах, была очень привлекательна. Эта надежда стала причиной появления ряда вычислительных систем, построенных на принципах естественного отбора.
     История эволюционных вычислений началась с  разработки ряда различных независимых  моделей. Основными из них были генетические алгоритмы и классификационные  системы Голланда (Holland), опубликованные в начале 60-х годов и получившие всеобщее признание после выхода в свет книги, ставшей классикой в этой области, - "Адаптация в естественных и искусственных системах" ("Adaptation in Natural and Artifical Systems", 1975). В 70-х годах в рамках теории случайного поиска Растригиным Л.А. был предложен ряд алгоритмов, использующих идей бионического поведения особей. Развитие этих идей нашло отражение в цикле работ Букатовой И.Л. по эволюционному моделированию. Развивая идеи Цетлина М.Л. о целесообразном и оптимальном поведении стохастических автоматов, Неймарк Ю.И. предложил осуществлять поиск глобального экстремума на основе коллектива независимых автоматов, моделирующих процессы развития и элиминации особей. Большой вклад в развитие эволюционного программирования внесли Фогел (Fogel) и Уолш (Walsh). Несмотря на разницу в подходах, каждая из этих "школ" взяла за основу ряд принципов, существующих в природе, и упростила их до такой степени, чтобы их можно было реализовать на компьютере.
     Главная трудность с возможностью построения вычислительных систем, основанных на принципах естественного отбора и применением этих систем в прикладных задачах, состоит в том, что природные системы достаточно хаотичны, а все наши действия, фактически, носят четкую направленность. Мы используем компьютер как инструмент для решения определенных задач, которые мы сами и формулируем, и мы акцентируем внимание на максимально быстром выполнении при минимальных затратах. Природные системы не имеют никаких таких целей или ограничений, во всяком случае нам они не очевидны. Выживание в природе не направлено к некоторой фиксированной цели, вместо этого эволюция совершает шаг вперед в любом доступномее направлении.
     Возможно  это большое обобщение, но я полагаю, что усилия, направленные на моделирование  эволюции по аналогии с природными системами, к настоящему времени можно разбить на две большие категории: 1) системы, которые смоделированы на биологических принципах. Они успешно использовались для задач типа функциональной оптимизации и могут легко быть описаны на небиологическом языке, 2) системы, которые являются биологически более реалистичными, но которые не оказались особенно полезными в прикладном смысле. Они больше похожи на биологические системы и менее направлены (или ненаправлены вовсе). Они обладают сложным и интересным поведением, и, видимо, вскоре получат практическое применение.
     Конечно, на практике мы не можем разделять  эти вещи так строго. Эти категории - просто два полюса, между которыми лежат различные вычислительные системы. Ближе к первому полюсу - эволюционные алгоритмы, такие как Эволюционное Программирование (Evolutionary Programming), Генетические Алгоритмы (Genetic Algorithms) и Эволюционные Стратегии (Evolution Strategies). Ближе ко второму полюсу - системы, которые могут быть классифицированы как Искусственная Жизнь (Artificial Life).
     Конечно, эволюция биологических систем не единственный "источник вдохновения" создателей новых методов, моделирующих природные  процессы. Нейронные сети (neural networks), например, основаны на моделировании  поведения нейронов в мозге. Они  могут использоваться для ряда задач классификации, например, задачи распознавания образов, машинного обучения, обработки изображений и др. Область их приложения частично перекрывается со сферой применения ГА. Моделируемый отжиг (simulated annealing) - другая методика поиска, которая основана скорее на физических, а не биологических процессах.
     Объектом  изучения данной курсовой работы являются генетические алгоритмы.
     Предмет изучения – применение генетических алгоритмов.
     Методы  исследования:
    сбор и анализ литературных источников по данной теме;
    изучение особенностей создания и использования генетических алгоритмов;
    моделирование работы генетического алгоритма на компьютере.
     Целью данной курсовой работы является разработка программы, использующей генетический алгоритм.
     Задачи:
1. проанализировать возможности генетических алгоритмов;
2. изучить особенности генетических алгоритмов;
3. создание программы с использованием генетического алгоритма. 

 
 

 

      Раздел I. Основные понятия  генетического алгоритма 
     1. 1. Классический генетический алгоритм 

     Генетические  Алгоритмы - адаптивные методы поиска, которые в последнее время  часто используются для решения  задач функциональной оптимизации. Они основаны на генетических процессах  биологических организмов: биологические  популяции развиваются в течении нескольких поколений, подчиняясь законам естественного отбора и по принципу "выживает наиболее приспособленный" (survival of the fittest), открытому Чарльзом Дарвином. Подражая этому процессу генетические алгоритмы способны "развивать" решения реальных задач, если те соответствующим образом закодированы. Например, ГА могут использоваться, чтобы проектировать структуры моста, для поиска максимального отношения прочности/веса, или определять наименее расточительное размещение для нарезки форм из ткани. Они могут также использоваться для интерактивного управления процессом, например на химическом заводе, или балансировании загрузки на многопроцессорном компьютере. Вполне реальный пример: израильская компания Schema разработала программный продукт Channeling для оптимизации работы сотовой связи путем выбора оптимальной частоты, на которой будет вестись разговор. В основе этого программного продукта и используются генетические алгоритмы[12;172].
     Основные  принципы ГА были сформулированы Голландом (Holland, 1975), и хорошо описаны во многих работах. В отличии от эволюции, происходящей в природе, ГА только моделируют те процессы в популяциях, которые являются существенными для развития. Точный ответ на вопрос: какие биологические процессы существенны для развития, и какие нет? - все еще открыт для исследователей[13;225].
     В природе особи в популяции  конкурируют друг с другом за различные  ресурсы, такие, например, как пища или  вода. Кроме того, члены популяции  одного вида часто конкурируют за привлечение брачного партнера. Те особи, которые наиболее приспособлены к окружающим условиям, будут иметь относительно больше шансов воспроизвести потомков. Слабо приспособленные особи либо совсем не произведут потомства, либо их потомство будет очень немногочисленным. Это означает, что гены от высоко адаптированных или приспособленных особей будут распространятся в увеличивающемся количестве потомков на каждом последующем поколении. Комбинация хороших характеристик от различных родителей иногда может приводить к появлению "суперприспособленного" потомка, чья приспособленность больше, чем приспособленность любого из его родителя. Таким образом, вид развивается, лучше и лучше приспосабливаясь к среде обитания.
     ГА  используют прямую аналогию с таким  механизмом. Они работают с совокупностью "особей" - популяцией, каждая из которых представляет возможное решение данной проблемы. Каждая особь оценивается мерой ее "приспособленности" согласно тому, насколько "хорошо" соответствующее ей решение задачи. Например, мерой приспособленности могло бы быть отношение силы/веса для данного проекта моста. (В природе это эквивалентно оценке того, насколько эффективен организм при конкуренции за ресурсы.) Наиболее приспособленные особи получают возможность "воспроизводит" потомство с помощью "перекрестного скрещивания" с другими особями популяции[17;213]. Это приводит к появлению новых особей, которые сочетают в себе некоторые характеристики, наследуемые ими от родителей. Наименее приспособленные особи с меньшей вероятностью смогут воспроизвести потомков, так что те свойства, которыми они обладали, будут постепенно исчезать из популяции в процессе эволюции.
     Так и воспроизводится вся новая  популяция допустимых решений, выбирая  лучших представителей предыдущего  поколения, скрещивая их и получая множество новых особей. Это новое поколение содержит более высокое соотношение характеристик, которыми обладают хорошие члены предыдущего поколения. Таким образом, из поколения в поколение, хорошие характеристики распространяются по всей популяции. Скрещивание наиболее приспособленных особей приводит к тому, что исследуются наиболее перспективные участки пространства поиска[19;128]. В конечном итоге, популяция будет сходиться к оптимальному решению задачи.
     Имеются много способов реализации идеи биологической эволюции в рамках ГА. Традиционным считается ГА, представленный на схеме. 

      НАЧАЛО /* генетический алгоритм */
      Создать начальную популяцию
      Оценить приспособленность каждой особи
      останов := FALSE
      ПОКА  НЕ останов ВЫПОЛНЯТЬ
      НАЧАЛО /* создать популяцию нового поколения */
      ПОВТОРИТЬ (размер_популяции/2) РАЗ
      НАЧАЛО /* цикл воспроизводства */
      Выбрать две особи с высокой приспособленностью из предыдущего поколения для  скрещивания
      Скрестить выбранные особи и получить двух потомков
      Оценить приспособленности потомков
      Поместить потомков в новое поколение
      КОНЕЦ
      ЕСЛИ  популяция сошлась ТО останов := TRUE
      КОНЕЦ
      КОНЕЦ 

     В последние годы, реализовано много  генетических алгоритмов и в большинстве  случаев они мало похожи на этот ГА. По этой причине в настоящее  время под термином "генетические алгоритмы" скрывается не одна модель, а достаточно широкий класс алгоритмов, подчас мало похожих друг от друга. Исследователи экспериментировали с различными типами представлений, операторов кроссовера и мутации, специальных операторов, и различных подходов к воспроизводству и отбору.
     Хотя  модель эволюционного развития, применяемая  в ГА, сильно упрощена по сравнению  со своим природным аналогом, тем  не менее ГА является достаточно мощным средством и может с успехом  применяться для широкого класса прикладных задач, включая те, которые трудно, а иногда и вовсе невозможно, решить другими методам[8;239]. Однако, ГА, как и другие методы эволюционных вычислений, не гарантирует обнаружения глобального решения за полиномиальное время. ГА-мы не гарантируют и того, что глобальное решение будет найдено, но они хороши для поиска "достаточно хорошего" решения задачи "достаточно быстро". Там, где задача может быть решена специальными методам, почти всегда такие методы будут эффективнее ГА и в быстродействии и в точность найденных решений. Главным же преимуществом ГА-мов является то, что они могут применяться даже на сложных задачах, там, где не существует никаких специальных методов. Даже там, где хорошо работаю существующие методики, можно достигнуть улучшения сочетанием их с ГА[10;247]. 

      1. 2. Алгоритм работы
     На  рисунке изображена схема работы любого генетического алгоритма:

     В классическом ГА начальная популяция формируется случайным образом. Фиксируется размер популяции (количество особей в ней будем обозначать символом N), который не изменяется в течение работы всего алгоритма. Каждая особь генерируется как случайная L-битная строка, где L — длина кодировки особи, она тоже фиксирована и для всех особей одинакова.
     Следует заметить, что каждая особь является одним из решений поставленной задачи. Более приспособленные особи — это более подходящие ответы. Этим ГА отличается от большинства других алгоритмов оптимизации, которые оперируют лишь с одним решением, улучшая его.
     Шаг алгоритма состоит из трех стадий: генерация промежуточной популяции (intermediate generation) путем отбора (selection) текущего поколения (current generation), скрещивание (recombination) особей промежуточной популяции путем кроссовера (crossover), что приводит к формированию нового поколения (next generation), и мутация нового поколения. На рисунке изображены первые две стадии:
 

     Промежуточная популяция — это набор особей, которые получили право размножаться. Приспособленные особи могут  быть записаны туда несколько раз. «Плохие» особи с большой вероятностью туда вообще не попадут[12;275].
     В классическом ГА вероятность каждой особи попасть в промежуточную  популяцию пропорциональна ее приспособленности, т. е. работает пропорциональный отбор (proportional selection). Можно его реализовать следующим образом: пусть особи располагаются на колесе рулетки, так что размер сектора каждой особи пропорционален ее приспособленности. Изначально промежуточная популяция пуста. N раз запуская рулетку, выберем требуемое количество особей для записи в промежуточную популяцию. Ни одна выбранная особь не удаляется с рулетки. Такой отбор называется stochastic sampling.
     Другой  способ отбора, который также является пропорциональным, это remainder stochastic sampling. Для каждой особи вычисляется отношение ее приспособленности к средней приспособленности популяции. Целая часть этого отношения указывает, сколько раз нужно записать особь в промежуточную популяцию, а дробная — это ее вероятность попасть туда еще раз. Пусть, к примеру, для некоторой особи i f? <f> = 1.36 (<f> — средняя приспособленность текущей популяции). Тогда она будет выбрана один раз, а затем с вероятностью 0.36 еще раз. Реализовать такой способ отбора удобно следующим образом: расположим особи на рулетке так же, как было описано[3;177]. Теперь пусть у рулетки не одна стрелка, а N, причем они отсекают одинаковые сектора. Тогда один запуск рулетки выберет сразу все N особей, которые нужно записать в промежуточную популяцию. Такой способ иллюстрируется следующим рисунком:

     После отбора особи промежуточной популяции  случайным образом разбиваются  на пары. Каждая из них с вероятностью pc скрещивается, т. е. к ней применяется оператор кроссовера, в результате чего получаются два потомка. Они записываются в новое поколение. Если же паре не выпало скрещиваться, в новое поколение записываются сами особи этой пары[4;258].
В классическом генетическом алгоритме применяется  одноточечный оператор кроссовера (1-point crossover): для родительских хромосом (т. е. строк) случайным образом выбирается точка раздела, и они обмениваются отсеченными частями. Полученные две строки являются потомками:
11010 01100101101 ? 10110 01100101101
10110 10011101001 ? 11010 10011101001
     К полученному в результате скрещивания новому поколению применяется оператор мутации. Каждый бит каждой особи популяции с вероятностью pm инвертируется. Эта вероятность обычно очень мала, менее 1%.
1011001100101101 ? 1011001101101101
     Таким образом, процесс отбора, скрещивания и мутации приводит к формированию нового поколения. Шаг алгоритма завершается объявлением нового поколения текущим. Далее все действия повторяются.
Вообще  говоря, такой процесс эволюции может  продолжаться до бесконечности. Критерием  останова может служить заданное количество поколений или схождение (convergence) популяции.
     Схождением  называется такое состояние популяции, когда все строки популяции почти  одинаковы и находятся в области  некоторого экстремума. В такой ситуации кроссовер практически никак не изменяет популяции. А вышедшие из этой области за счет мутации особи склонны вымирать, так как чаще имеют меньшую приспособленность, особенно если данный экстремум является глобальным максимумом. Таким образом, схождение популяции обычно означает, что найдено лучшее или близкое к нему решение[18;213].

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

     1.3.  Шимы, теорема шим 

     Шимой (schema) называется строка длины L (т. е. той же длины, что и любая строка популяции), состоящая из символов {0, 1, *} (где * — «don't care» символ). Будем говорить, что строка является представителем данной шимы, если в позициях, где знак шимы равен 0 или 1, она имеет тот же символ. Например, у шимы 01*0*110 следующие представители:
         01000110
         01001110
         01110110
         01111110
     Порядком (order) шимы называется количество фиксированных битов в ней. Определяющей длиной (defining length) шимы называется расстояние между ее крайними фиксированными битами. Например, для шимы *1***01* порядок o = 3, а определяющая длина ? = 5.
     Очевидно, что количество представителей шимы H равно 2L?o(H), а количество шим равно 3L (действительно, шимы — это строки, у которых на каждой позиции может находиться один из трех символов) [3;180].
     Если  представить пространство поиска в  виде гиперкуба, то строки это его  вершины, а шима определяет в нем гиперплоскость. К примеру, шима **1 определяет правую грань этого трехмерного куба:
     Куб
     
     Поэтому термины «гиперплоскость» и «шима» взаимозаменяемы. Следующий рисунок изображает другое представление шим:
     Сечение пространства поиска
     
     На  нем видно, что некоторые шимы имеют с среднем по всему пространству поиска большую приспособленность, чем другие.
     Приспособленностью  шимы называется средняя приспособленность строк из популяции, являющихся ее представителями. Следует заметить, что эта величина зависит от популяции, и поэтому меняется со временем.
     Внешне  кажется, что генетический алгоритм при отборе выбирает строку, однако при этом неявным образом происходит выборка шим, представителем которых она является[7;334]. Это означает, что на каждом поколении количество представителей шимы изменяется в соответствии с текущей приспособленностью этой шимы. У «хороших» шим представители в среднем более приспособленные, а значит, они чаще будут выбираться в промежуточную популяцию. «Плохие» шимы имеют много шансов вымереть. Одна строка является представителем сразу многих шим (а именно 2L: на каждой позиции мы либо оставляем бит строки, либо заменяем его на «*»). Поэтому при отборе одной строки отбирается сразу целое множество шим. Это явление получило название неявный параллелизм (implicit parallelism).
     Теорема шим
     Теорема шим (The Schema Theorem) была приведена в упомянутой выше работе Холланда и является первой попыткой объяснить, почему генетические алгоритмы работают. Она показывает, как изменяется доля представителей шимы в популяции.
     Пусть M(H, t) — число представителей шимы H в t-ом поколении. В силу того, что при построении промежуточной популяции используется пропорциональный отбор, в ней количество представителей данной шимы будет M(H, t + intermediate) = M(H, t) f(H, t) ? <f(t)>,где f(H, t) — приспособленность шимы H в t-ом поколении, а <f(t)> — средняя приспособленность t-го поколения.
     Особи промежуточной популяции с вероятностью pc подвергаются кроссоверу. Одноточечный кроссовер может разрушить шиму, что означает, что один из родителей был представителем рассматриваемой шимы, но ни один из детей уже таковым являться не будет. Вероятность разрушения меньше, чем ?(H) (1 ? P(H, t) f(H, t) ? <f(t)>) ? (L?1), где P(H, t) — доля представителей шимы H в t-ом поколении. Первый множитель произведения равен вероятности точки раздела попасть между фиксированными битами шимы, а второй — вероятности выбрать в пару представителя другой шимы[7;335].
     Действительно, кроссовер разрушает шиму не чаще, чем когда второй родитель (а он выбирается в промежуточной популяции) не является представителем этой шимы, и при этом точка раздела попадает между фиксированными битами шимы. Даже в этих ситуациях она не обязательно разрушается, например, если мы рассматриваем шиму 11****, а кроссоверу подвергаются строки 110101 и 100000, и точка раздела попадает между первыми двумя битами, то, хотя вторая строка не является представителем нужной шимы, все равно один из потомков окажется подходящим и шима не разрушится.
     Таким образом, после кроссовера, переходя от количества представителей к их доле, получаем следующее неравенство:
     P(H, t + 1) ? P(H, t) f(H, t) [1 ? pc ?(H) (1 ? P(H, t) f(H, t) ? <f(t)>) ? (L?1)] ? <f(t)>
     Теперь  учтем влияние мутации. Для каждого  фиксированного бита вероятность того, что он не будет инвертирован, равна (1 ? pm). Поскольку всего в шиме фиксированных битов o(H), то верна следующая итоговая формула теоремы шим:
     P(H, t + 1) ? P(H, t) f(H, t) [1 ? pc ?(H) (1 ? P(H, t) f(H, t) ? <f(t)>) ? (L?1)] (1 ? pm)o(H) ? <f(t)>
     Полученное  выражение не слишком удачно для  анализа работы генетического алгоритма. Во-первых, в нем присутствует знак неравенства, связанный также с тем, что мы не учитывали случаи, когда рассматриваемая шима получается в результате кроссовера пары строк, не являющихся его представителями. Во-вторых, приспособленность шимы и средняя приспособленность популяции быстро изменяются от поколения к поколению, поэтому полученное неравенство хорошо описывает ситуацию только для следующего поколения.
     Тем не менее, теорема шим является хоть каким-то теоретическим обоснованием работы классического генетического алгоритма (следует заметить, что она верна только для классического ГА с его пропорциональным отбором и одноточечным кроссовером). На данный момент существуют более точные версии этой теоремы, а также другие рассуждения, доказывающие целесообразность использования генетических алгоритмов.
     Строительные  блоки
     Из  полученного в теореме шим выражения видно, что шимы с малым порядком и малой определяющей длиной менее подвержены разрушению в результате кроссовера или мутации, поэтому рост (или уменьшение) их доли в популяции происходит динамичнее. Шимы с высокой приспособленностью, малым порядком и малой определяющей длиной называются строительными блоками (building blocks) [9;285].
     Холланд (1992) показал, что в то время, как  ГА обрабатывает N строк на каждом поколении, в то же время неявно обрабатываются порядка N3 гиперплоскостей. Это доказывается с рассчетом на реально применимые размеры популяции и длины строки. Практически это означает, что большая популяция имеет возможность локализовать решение быстрее, чем маленькая. Для оценки рекомендуемого размера популяции в зависимости от длины строки можно вспомнить, что всего гиперплоскостей 3L.
     Еще один аргумент в пользу больших популяций: в случае, если разброс приспособленностей представителей блока большой, то вероятность выбрать некоторое количество представителей блока с меньшей приспособленностью вместо представителей более хорошего достаточно велика, поскольку отдельные особи «слабого» блока могут оказаться лучше, чем многие особи «сильного». Увеличение размера популяции увеличит количество осуществляемых при генерации промежуточной популяции выборок, и вероятность сделать в итоге выбор неверного блока окажется достаточно малой[12;215].
     В гипотезе о строительных блоках считается, что в процессе приближения популяции к глобальному оптимуму порядок и приспособленность строительных блоков увеличиваются. Это легко видно на простом примере:
     График
     
     Все локальные максимумы приведенной  функции приходятся на блок **0*, а  минимумы — на **1*, поэтому очевидно, что после отбора основная часть  особей будут представителями первого  блока. Левая половина графика в  среднем ниже правой, поэтому доля блока 1*** будет преобладать над долей 0***. Получается, что основная масса особей окажутся представителями блока 1*** и в то же время **0*, значит, большое их количество будут представителями блока 1*0*. Теперь, выбирая между блоками 100* и 110*, получаем, что второй блок будет преобладать над первым. Таким образом, можно сказать, что хорошие строительные блоки малого порядка сложились в приспособленные блоки большего порядка, и в результате мы оказались в области глобального максимума, чем приблизились к решению задачи. 

 

      Раздел II. Модели генетических алгоритмов 
     2. 1. Настройка генетических алгоритмов 

     Генетический  алгоритм производит поиск решений  двумя методами одновременно: отбором  гиперплоскостей (hyperplane sampling) и методом hill-climbing. Кроссовер осуществляет первый из них, поскольку комбинирует и совмещает шаблоны родителей в их детях. Мутация обеспечивает второй метод: особь случайным образом изменяется, неудачные варианты вымирают, а если полученное изменение оказалось полезным, то, скорее всего, эта особь останется в популяции.
     Возникает вопрос: какой же из этих методов  лучше осуществляет поиск хороших  решений? Исследования показали, что  на простых задачах, таких, как максимизация унимодальной функции, ГА с мутацией (и без кроссовера) находят решение быстрее[3;211]. Также для такого метода требуется меньший размер популяции. На сложных многоэкстремальных функциях лучше использовать ГА с кроссовером, поскольку этот метод более надежен, хотя и требует большего размера популяции.
     С точки зрения теоремы шаблонов, мутация только вредит росту количества представителей хороших шаблонов, поскольку лишний раз их разрушает. Однако мутация просто необходима для ГА с малым размером популяции. Дело в том, что для малочисленных популяций свойственна преждевременная сходимость (premature convergence). Это ситуация, когда в некоторых позициях все особи имеют один и тот же бит, но такой набор битов не соответствует глобальному экстремуму[20]. При этом кроссовер практически не изменяет популяции, т. к. все особи почти одинаковы. В этом случае мутация способна инвертировать «застрявший» бит у одной из особей и вновь расширить пространство поиска.
     Введем  понятие давления отбора (selection pressure) — это мера того, насколько различаются  шансы лучшей и худшей особей популяции попасть в промежуточную популяцию. Для пропорционального отбора эта величина имеет свойство уменьшаться с увеличением средней приспособленности популяции. Действительно, при этом для каждой особи отношение f ? <f> стремится 1, а значит шансы плохой и хорошей особей создать потомство уравниваются.
     При увеличении pc или pm и при уменьшении давления отбора (например, за счет использования  других стратегий отбора) размножение  представителей приспособленных шаблонов замедляется, но зато происходит интенсивный поиск других шаблонов. Обратно, уменьшение pc или pm и увеличение давления отбора ведет к интенсивному использованию найденных хороших шаблонов, но меньше внимания уделяется поиску новых. Таким образом, для эффективной работы генетического алгоритма необходимо поддерживать тонкое равновесие между исследованием и использованием. Это можно сформулировать также как необходимость сбалансированной сходимости ГА: быстрая сходимость может привести к схождению к неоптимальному решению, а медленная сходимость часто приводит к потере найденной наилучшей особи.
     Методология управления сходимостью классического  ГА до сих пор не выработана. 

     2. 2. Модели генетических алгоритмов 

     Классический  ГА хорош для понимания работы генетических алгоритмов, однако он не является наиболее эффективным из них. Сейчас мы рассмотрим различные варианты кодировки, генетические операторы и стратегии отбора, а также другие модели ГА[21].
     Кодирование
     Если  сравнивать кодирование бинарным алфавитом  и небинарным, то первый вариант  обеспечивает лучший поиск с помощью гиперплоскостей, т. к. предоставляет максимальное их количество. Действительно, если требуется закодировать 2L значений, то для бинарного алфавита количество гиперплоскостей будет 3L, тогда как при использовании, к примеру, четырехзначного алфавита длина слов будет в 2 раза меньше, и гиперплоскостей будет 5L ? 2, т. е. меньше.
     Еще один аргумент в пользу бинарных алфавитов  — это то, что для встречаемости  каждого символа в каждой позиции  им требуется меньший размер популяции. Действительно, даже если имеется всего две строки, есть вероятность, что на каждой позиции в популяции есть и 0, и 1 (т. е. одна строка является результатом инвертирования другой) [3;215]. Если же алфавит большей мощности, то популяция из двух строк заведомо не будет содержать в каждой позиции несколько символов, и до применения мутации большая часть пространства поиска будет недоступна с точки зрения кроссовера. После применения мутации станет недоступна другая часть.
     С другой стороны, небинарные алфавиты зачастую обеспечивают более наглядное представление решений задачи.
     Исследования  показали, что для большинства  функций генетические алгоритмы  будут работать лучше, если закодировать параметры в строку кодом Грея, а не прямым бинарным кодом. Это связано  с т. н. Hamming cliffs, когда, к примеру, числа 7 и 8 различаются на 4 бита. Бинарное кодирование добавляет дополнительные разрывы, что осложняет поиск. Это можно показать на примере: пусть требуется минимизировать функцию f(x) = x2. Если в популяции изначально преобладали отрицательные хорошие решения, то с большой вероятностью она сойдется к ?1 = 11…1. При этом достигнуть глобального минимума будет практически невозможно, поскольку любые изменения одного бита будут приводить к ухудшению решения. При кодировании кодом Грея такой проблемы не возникает[10;167].
     Кодирование с плавающей точкой тоже является более удачным, чем прямое бинарное. На вопрос, лучше ли оно, чем кодирование  кодом Грея, можно ответить, что  на каких-то задачах лучше работает первый вариант, на других — второй. Как определить, какой вариант использовать для конкретной задачи, пока неизвестно.
     Кроссовер
     Одноточечный  кроссовер мы рассмотрели выше.
     При двухточечном кроссовере для родительской пары случайным образом выбираются 2 точки раздела, и родители обмениваются промежутками между ними. В результате получаются два ребенка. Удобно в этом случае представить строки в виде колец:
     Скрещивающиеся  особи
     
     Определяющая  длина в этом случае тоже измеряется в кольце, поэтому для такого шаблона, как 1*****1, при одноточечном кроссовере определяющая длина равна 6, и точка  раздела всегда попадает между крайними фиксированными битами, а при двухточечном эта длина равна 1.
     Следует заметить, что одноточечный кроссовер  является частным случаем двухточечного, когда одна из точек раздела фиксирована.
     Однородный  кроссовер осуществляется следующим  образом: один из детей наследует  каждый бит с вероятностью p0 у  первого родителя, а иначе у второго. Второй ребенок получает все остальные не унаследованные биты. Обычно p0 = 0.5. Для однородного кроссовера не важна определяющая длина шаблона, и вообще в большинстве случаев шаблон разрушается. Такой агрессивный оператор плохо предназначен для отбора гиперплоскостей, однако его применение оправдано при малом размере популяции, т. к. он препятствует преждевременному схождению, свойственному таким популяциям[11].
     Стратегии отбора
     Как мы уже отмечали выше, для пропорционального  отбора свойственно уменьшение давления отбора с увеличением средней приспособленности популяции. Исправить этот недостаток можно с помощью масштабирования (scaling): на каждом поколении нулем приспособленности можно считать наихудшую особь.
     Ранковый  отбор (rank selection) отличается от пропорционального тем, что для каждой особи ее вероятность попасть в промежуточную популяцию пропорциональна ее порядковому номеру в отсортированной по возрастанию приспособленности популяции. Такой вид отбора не зависит от средней приспособленности популяции.
     Турнирный отбор (tournament selection) осуществляется следующим  образом: из популяции случайным  образом выбирается t особей, и лучшая из них помещается в промежуточную  популяцию. Этот процесс повторяется N раз, пока промежуточная популяция не будет заполнена. Наиболее распространен вариант при t = 2. Турнирный отбор является более агрессивным, чем пропорциональный.
     Отбор усечением (truncation selection): популяция сортируется  по приспособленности, затем берется  заданная доля лучших, и из них случайным образом N раз выбирается особь для дальнейшего развития[18;192].
     Стратегии формирования нового поколения
     Выделяют  два типа формирования нового поколения  после получения множества детей  в результате кроссовера и мутации:
      дети замещают родителей;
      новое поколение составляется из совокупности и детей, и их родителей, например, выбором N лучших.
     Также для формирования нового поколения  возможно использование принципа элитизма: в новое поколение обязательно  включается заданное количество лучших особей предыдущего поколения (часто одна лучшая особь) [19;169].
     Использование второй стратегии и элитизма оказывается  весьма полезным для эффективности  ГА, т. к. не допускает потерю лучших решений. К примеру, если популяция  сошлась в локальном максимуме, а мутация вывела одну из строк в область глобального, то при первой стратегии весьма вероятно, что эта особь в результате скрещивания будет потеряна, и решение задачи не будет получено. Если же используется элитизм, то полученное хорошее решение будет оставаться в популяции до тех пор, пока не будет найдено еще лучшее.
     Некоторые модели генетических алгоритмов
     Классический  ГА был рассмотрен выше. Напомним, что его создал Holland (1975).
     Genitor
     Этот  алгоритм был создан Уитли (D. Whitley). Genitor-подобные алгоритмы отличаются от классического  ГА следующими тремя свойствами:
         На каждом шаге только одна  пара случайных родителей создает  только одного ребенка.
         Этот ребенок заменяет не родителя, а одну из худших особей  популяции (в первоначальном Genitor — самую худшую).
         Отбор особи для замены производится  по ее ранку (рейтингу), а не  по приспособленности.
     Утверждается (Syswerda, 1991), что в Genitor поиск гиперплоскостей происходит лучше, а сходимость быстрее, чем у классического ГА[21].
     CHC
     CHC расшифровывается как Cross generational elitist selection, Heterogenous recombination, Cataclysmic mutation. Этот алгоритм был создан Eshelman (1991) и характеризуется следующими параметрами:
         Для нового поколения выбираются N лучших различных особей среди  родителей и детей. Дублирование  строк не допускается.
         Для скрещивания выбирается случайная  пара, но не допускается, чтобы  между родителями было мало Хэммингово расстояние или мало расстояние между крайними различающимися битами.
         Для скрещивания используется  разновидность однородного кроссовера HUX (Half Uniform Crossover): ребенку переходит  ровно половина битов каждого  родителя.
         Размер популяции небольшой, около 50 особей. Этим оправдано использование однородного кроссовера.
         CHC противопоставляет агрессивный  отбор агрессивному кроссоверу, однако все равно малый размер  популяции быстро приводит ее  к состоянию, когда создаются  только более или менее одинаковые строки. В таком случае CHC применяет cataclysmic mutation: все строки, кроме самой приспособленной, подвергаются сильной мутации (изменяется около трети битов). Таким образом, алгоритм перезапускается и далее продолжает работу, применяя только кроссовер[7;195].
     Hybrid Algorithms
     Идея  гибридных алгоритмов (hybrid algorithms) заключается  в сочетании генетического алгоритма  с некоторым другим методом поиска, подходящим в данной задаче (зачастую это бывает hill-climbing). На каждом поколении каждый полученный потомок оптимизируется этим методом, после чего производятся обычные для ГА действия. При использовании hill-climbing получается, что каждая особь достигает локального максимума, вблизи которого она находится, после чего подвергается отбору, скрещиванию и мутации.
     Такой вид развития называется Ламарковой эволюцией, при которой особь  способна обучаться, а затем полученные навыки записывать в собственный  генотип, чтобы потом передать их потомкам. И хотя такой метод ухудшает способность алгоритма искать решение с помощью отбора гиперплоскостей, однако на практике гибридные алгоритмы оказываются очень удачными. Это связано с тем, что обычно велика вероятность того, что одна из особей попадет в область глобального максимума и после оптимизации окажется решением задачи[28].
     Генетический  алгоритм способен быстро найти во всей области поиска хорошие решения, но он может испытывать трудности  в получении из них наилучших. Такой метод, как hill-climbing быстро достигает  локального максимума, однако не может искать глобальный. Сочетание этих двух алгоритмов способно использовать преимущества обоих.
     Параллельные  ГА
     В природе все процессы происходят параллельно и независимо друг от друга. Генетические алгоритмы тоже можно организовать как несколько параллельно выполняющихся процессов, и это увеличит их производительность.
     Сделаем из классического ГА параллельный. Для этого будем использовать турнирный отбор. Заведем N ? 2 процессов (здесь и далее процесс подразумевается  как некоторая машина, процессор, который может работать независимо) [15;175]. Каждый из них будет выбирать случайно из популяции 4 особи, проводить 2 турнира, и победителей скрещивать. Полученные дети будут записываться в новое поколение. Таким образом, за один цикл работы одного процесса будет сменяться целое поколение.
     Island Models
     Островная модель (island model) — это тоже модель параллельного генетического алгоритма. Она заключается в следующем: пусть у нас есть 16 процессов  и 1600 особей. Разобьем их на 16 подпопуляций по 100 особей. Каждая их них будет развиваться отдельно с помощью некого генетического алгоритма. Таким образом, можно сказать, что мы расселили особи по 16-ти изолированным островам.
     Изредка (например, каждые 5 поколений) процессы (или острова) будут обмениваться несколькими хорошими особями. Это называется миграция. Она позволяет островам обмениваться генетическим материалом[15;183].
     Островная модель
     
     Так как населенность островов обычно бывает невелика, подпопуляции будут склонны к преждевременной сходимости. Поэтому важно правильно установить частоту миграции. Чересчур частая миграция (или миграция слишком большого числа особей) приведет к смешению всех подпопуляций, и тогда островная модель будет несильно отличаться от обычного ГА. Если же миграция будет слишком редкой, то она не сможет предотвратить преждевременного схождения подпопуляций.
     Генетические  алгоритмы стохастичны, поэтому  при разных его запусках популяция может сходиться к разным решениям (хотя все они в некоторой степени «хорошие»). Островная модель позволяет запустить алгоритм сразу несколько раз и пытаться совмещать «достижения» разных островов для получения в одной из подпопуляций наилучшего решения[10;198].
     Cellular Genetic Algorithms
     Cellular Genetic Algorithms — модель параллельных ГА. Пусть дано 2500 процессов, расположенных на сетке размером 50?50 ячеек, замкнутой, как показано на рисунке (левая сторона замыкается с правой, верхняя с нижней, получается тор).
     Клеточная модель
     
     Каждый  процесс может взаимодействовать  только с четырьмя своими соседями (сверху, снизу, слева, справа). В каждой ячейке находится ровно одна особь. Каждый процесс будет выбирать лучшую особь среди своих соседей, скрещивать с ней особь из своей ячейки и одного полученного ребенка помещать в свою ячейку вместо родителя.
     По  мере работы такого алгоритма возникают эффекты, похожие на островную модель. Сначала все особи имеют случайную приспособленность (на рисунке она определяется по цвету). Спустя несколько поколений образуются небольшие области похожих особей с близкой приспособленностью[17;235]. По мере работы алгоритма эти области растут и конкурируют между собой.
     Другие  модели
     До  сих пор мы рассматривали ГА с  фиксированными параметрами, такими как  размер популяции, длина строки, вероятность  кроссовера и мутации. Однако существуют генетические алгоритмы, в которых эти параметры могут изменяться и подстраиваться.
     К примеру, пусть вероятность мутации  для каждой особи будет отдельной. Можно добавить к строке особи  подстроку, кодирующую эту вероятность. При вычислении приспособленности  эта подстрока будет игнорироваться, но она будет подвергаться кроссоверу и мутации так же, как и остальная часть строки. Вероятность каждого бита данной особи быть инвертированным при мутации будет равна значению, кодируемому добавленной подстрокой[13;275]. Инициализируются вероятности мутации случайным образом.
     Thomas Back (1992) в своей работе заметил,  что для унимодальных функций  вариант с глобальной вероятностью  мутации работает лучше, однако  для многоэкстремальных функций  использование адаптивной мутации  дает лучшие результаты.
 

      Раздел III. Применение генетических алгоритмов 
     3. 1. Применение генетических алгоритмов 

     Генетические  алгоритмы в различных формах применились ко многим научным и  техническим проблемам. Генетические алгоритмы использовались при создании других вычислительных структур, например, автоматов или сетей сортировки. В машинном обучении они использовались при проектировании нейронных сетей или управлении роботами. Они также применялись при моделировании развития в различных предметных областях, включая биологические (экология, иммунология и популяционная генетика), социальный (такие как экономика и политические системы) и когнитивные системы[16;324].
     Тем не менее, возможно наиболее популярное приложение генетических алгоритмов - оптимизация многопараметрических функций. Многие реальные задачи могут быть сформулированы как поиск оптимального значения, где значение - сложная функция, зависящая от некоторых входных параметров. В некоторых случаях, представляет интерес найти те значения параметров, при которых достигается наилучшее точное значение функции. В других случаях, точный оптимум не требуется - решением может считаться любое значение, которое лучше некоторой заданное величины. В этом случае, генетические алгоритмы - часто наиболее приемлемый метод для поиска "хороших" значений. Сила генетического алгоритма заключена в его способности манипулировать одновременно многими параметрами, эта особенность ГА использовалось в сотнях прикладных программ, включая проектирование самолетов, настройку параметров алгоритмов и поиску устойчивых состояний систем нелинейных дифференциальных уравнений[23].
     Однако  нередки случаи, когда ГА работает не так эффективно, как ожидалось.
     Предположим есть реальная задача, сопряженная  с поиском оптимального решения, как узнать, является ли ГА хорошим методом для ее решения? До настоящего времени не существует строгого ответа, однако многие исследователи разделяют предположения, что если пространство поиска, которое предстоит исследовать, - большое, и предполагается, что оно не совершенно гладкое и унимодальное (т.е. содержит один гладкий экстремум) или не очень понятно, или если функция приспособленности с шумами, или если задача не требует строго нахождения глобального оптимума - т.е. если достаточно быстро просто найти приемлемое "хорошее" решения (что довольно часто имеет место в реальных задачах) - ГА будет иметь хорошие шансы стать эффективной процедурой поиска, конкурируя и превосходя другие методы, которые не используют знания о пространстве поиска.
     Если  же пространство поиска небольшое, то решение может быть найдено методом полного перебора, и можно быть уверенным, что наилучшее возможное решение найдено, тогда как ГА мог с большей вероятностью сойтись к локальному оптимуму, а не к глобально лучшему решению[18;325]. Если пространство гладкое и унимодальное любой градиентный алгоритм, такой как, метод скорейшего спуска будет более эффективен, чем ГА. Если о пространстве поиска есть некоторая дополнительная информация (как, например, пространство для хорошо известной задачи о коммивояжере), методы поиска, использующие эвристики, определяемые пространством, часто превосходят любой универсальный метод, каким является ГА. При достаточно сложном рельефе функции приспособленности методы поиска с единственным решением в каждый момент времени, такой как простой метод спуска, могли "затыкаться" в локальном решении, однако считается, что ГА, так как они работают с целой "популяцией" решений, имеют меньше шансов сойтись к локальному оптимуму и робастно функционируют на многоэкстремальном ландшафте.
     Конечно, такие предположения не предсказывают строго, когда ГА будет эффективной процедурой поиска, конкурирующей с другими процедурами. Эффективность ГА сильно зависит от таких деталей, как метод кодировки решений, операторы, настройки параметров, частный критерий успеха[26]. Теоретическая работа, отраженная в литературе, посвященной Гамам, не дает оснований говорить о выработки каких-либо строгих механизмов для четких предсказаний. 

      3. 2. Перспективные направления развития нейрокомпьютерных технологий 

      Детальный анализ зарубежных разработок нейрокомпьютеров позволил выделить основные перспективные направления современного развития нейрокомпьютерных технологий: нейропакеты, нейросетевые экспертные системы, СУБД с включением нейросетевых алгоритмов, обработка изображений, управление динамическими системами и обработка сигналов, управление финансовой деятельностью, оптические нейрокомпьютеры, виртуальная реальность. Сегодня разработками в этой области занимается более 300 зарубежных компаний, причем число их постоянно увеличивается. Среди них такие гиганты как Intel, DEC, IBM и Motorolla. Сегодня наблюдается тенденция перехода от программной эмуляции к программно-аппаратной реализации нейросетевых алгоритмов с резким увеличением числа разработок СБИС нейрочипов с нейросетевой архитектурой[19;227]. Резко возросло количество военных разработок, в основном направленных на создание сверхбыстрых, "умных" супервычислителей.
      Если  говорить о главном перспективном  направлении - интеллектуализации вычислительных систем, придания им свойств человеческого мышления и восприятия, то здесь нейрокомпьютеры - практически единственный путь развития вычислительной техники. Многие неудачи на пути совершенствования искусственного интеллекта на протяжении последних 30 лет связаны с тем, что для решения важных и сложных по постановке задач выбирались вычислительные средства, не адекватные по возможностям решаемой задаче, в основном из числа компьютеров, имеющихся под рукой. При этом как правило не решалась задача, а показывалась принципиальная возможность ее решения. Сегодня активное развитие систем MPP создало объективные условия для построения вычислительных систем, адекватных по возможностям и архитектуре практически любым задачам искусственного интеллекта.
      В Японии с 1993 года принята программа "Real world computing program",. Ее основная цель - создание адаптивной, эволюционирующей ЭВМ. Проект рассчитан на 10 лет. Основой разработки является нейротехнология, используемая для распознавания образов, обработки семантической информации, управления информационными потоками и роботами, которые способны адаптироваться к окружающей обстановке. Только в 1996 году было проведено около сотни международных конференций по нейрокомпьютерам и смежным проблемам. Разработки нейрокомпьютеров ведутся во многих странах мира и даже в Австралии создан свой образец коммерческого супернейрокомпьютера.
      В 1996 году московская компания "Тора-Центр" начинает беспрецедентную акцию - продажу  в России лицензионного пакета моделирования  нейронных сетей BrainMaker производства California Scientific Software. Пакет предназначался для моделирования многослойных нейронных сетей с полными последовательными связями, обучаемыми по методу обратного распространения ошибки (error backpropagation), оказался прост в использовании и предоставлял много возможностей по изменению топологии многослойной сети и алгоритма обучения, хотя и был несколько сложен для первого восприятия. В пакете не было предусмотрено защиты от копирования, он размещался на стандартной 3,5-дюймовой дискете. При этом разработчиком было особо оговорено, что BrainMaker ориентирован в первую очередь на решение финансовых задач, и основными его потребителями должны стать банки и крупные финансовые компании - сектор рынка, где в то время были сосредоточены основные отечественные финансовые ресурсы. Расчет оказался верным - благодаря мощной рекламной поддержке нейропакет BrainMaker приобрел в России небывалую популярность; спустя некоторое время он даже появился на пиратских компакт-дисках.
      В тот период появились и другие нейропакеты, например, AI Trilogy от Ward Systems Group и в продажу поступил нейрокомпьютерный ускоритель CNAPS компании Adaptive Solutions, представляющий собой аппаратный ускоритель, построенный на базе одного или нескольких нейрочипов того же производителя. По оценкам, для некоторых задач он может дать выигрыш в производительности до 1000 раз по сравнению с самым передовым на тот момент компьютером с процессором Pentium. Выпускался CNAPS до 1997-1998 годов, после чего был снят с производства, скорее всего, по причине нерентабельности.
      Слово "нейро" становится в России модным - почти каждый уважающий себя банк считает долгом купить лицензионный нейропакет и поставить красивую белую коробку на полку[21]. К сожалению, политика компании "Тора" не предусматривала дальнейшего информационного и методического сопровождения своего детища, а консультации по разработке нейросетевых алгоритмов с использованием этого нейропакета пропагандировались, в основном, на бумаге. Поэтому большое количество купленных нейропакетов так и осталось пылиться на полках. Несмотря на это и, невзирая на то, что отдельные пользователи восприняли нейропакет как "средство от всех бед", который сам по себе может решить любую задачу, а бездумное использование нейропакета привело к определенной дискретизации нейрокомпьютинга, проведенная акция стала громадным шагом на пути нейрокомпьютеризации страны, ибо массовый разработчик узнал, что существует новый класс алгоритмов под названием "нейронные сети" и что с их помощью можно эффективно решать различные задачи.
      Судьба  же аппаратного нейрокомпьютерного ускорителя CNAPS более печальна. Мощный нейроускоритель был нужен для  решения только суперзадач, которых  не так уж и много, а 
и т.д.................


Перейти к полному тексту работы


Скачать работу с онлайн повышением уникальности до 90% по antiplagiat.ru, etxt.ru или advego.ru


Смотреть полный текст работы бесплатно


Смотреть похожие работы


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