Генетический алгоритм

Автор работы: Пользователь скрыл имя, 31 Декабря 2010 в 00:58, курсовая работа

Краткое описание

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

Содержание работы

ВВЕДЕНИЕ 5
1 МОДЕЛИРОВАНИЕ РАБОТЫ НЕЙРОННОЙ СЕТИ 6
2 АЛГОРИТМ ОБРАТНОГО РАСПРОСТРОНЕНИЯ ОШИБКИ 10
3 ГЕНЕТИЧЕСКИЙ АЛГОРИТМ 15
4 ЭФФЕКТИВНОСТЬ ГЕНЕТИЧЕСКИХ АЛГОРИТМОВ 22
4.1 Показатели эффективности генетических алгоритмов 22
4.2 Скорость работы генетических алгоритмов 22
4.3 Устойчивость работы генетических алгоритмов 24
4.4 Направления развития генетических алгоритмов 27
ЗАКЛЮЧЕНИЕ 30
СПИСОК ЛИТЕРАТУРЫ 31
ПРИЛОЖЕНИЕ 32

Содержимое работы - 1 файл

Курсовая_Таня.docx

— 115.30 Кб (Скачать файл)

Федеральное агентство по образованию  (Рособразование)

Архангельский государственный технический университет
     
  Кафедра вычислительных систем и телекоммуникаций  
  (наименование  кафедры)  
       ЗАДАНИЕ  НА  КУРСОВУЮ РАБОТУ  
  по Интеллектуальные  информационные системы  
             (наименование дисциплины)  
  студенту ОИТ образования 5 курса 1251 группы  
     
  (фамилия,  имя, отчество студента)  
     
  ТЕМА: Генетический  алгоритм  
     
  ИСХОДНЫЕ  ДАННЫЕ:    
  1) Дать  обзор моделированию нейронных сетей  
  2) Смоделировать  нейронную сеть  
  3) Обучит сеть при помощи генетического алгоритма  
     
     
     
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
      
 
  Срок  проектирования      с     «18» декабря 2009г.       По «24» декабря 2009г.  
  Руководитель  проекта ассистент          
      (должность)   (подпись)   (и.,о., фамилия)  
 

     ЛИСТ ЗАМЕЧАНИЙ

 

СОДЕРЖАНИЕ 

ВВЕДЕНИЕ 5

1 МОДЕЛИРОВАНИЕ РАБОТЫ НЕЙРОННОЙ СЕТИ 6

2 АЛГОРИТМ ОБРАТНОГО РАСПРОСТРОНЕНИЯ ОШИБКИ 10

3 ГЕНЕТИЧЕСКИЙ АЛГОРИТМ 15

4 ЭФФЕКТИВНОСТЬ ГЕНЕТИЧЕСКИХ АЛГОРИТМОВ 22

4.1 Показатели эффективности генетических алгоритмов 22

4.2 Скорость работы генетических алгоритмов 22

4.3 Устойчивость работы генетических алгоритмов 24

4.4 Направления развития генетических алгоритмов 27

ЗАКЛЮЧЕНИЕ 30

СПИСОК ЛИТЕРАТУРЫ 31

ПРИЛОЖЕНИЕ 32

 

     ВВЕДЕНИЕ

 

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

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

 

 
 
 
 

     1 МОДЕЛИРОВАНИЕ РАБОТЫ НЕЙРОННОЙ СЕТИ

 

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

     Как отмечалось, искусственная нейронная  сеть (ИНС, нейросеть) - это набор  нейронов, соединенных между собой. Как правило, передаточные (активационные) функции всех нейронов в сети фиксированы, а веса являются параметрами сети и могут изменяться. Некоторые  входы нейронов помечены как внешние  входы сети, а некоторые выходы - как внешние выходы сети. Подавая  любые числа на входы сети, мы получаем какой-то набор чисел на выходах сети. Таким образом, работа нейросети состоит в преобразовании входного вектора X в выходной вектор Y, причем это преобразование задается весами сети. Практически любую задачу можно свести к задаче, решаемой нейросетью.

     Моделирование сети начинается с выбора архитектуры. На данном этапе необходимо учесть:

     - какие нейроны мы хотим использовать (число входов, передаточные функции);

     - каким образом следует соединить их между собой;

     - что взять в качестве входов и выходов сети.

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

     В зависимости от функций, выполняемых  нейронами в сети, можно выделить три их типа:

     - входные нейроны - это нейроны, на которые подается входной вектор, кодирующий входное воздействие или образ внешней среды; в них обычно не осуществляется вычислительных процедур, информация передается с входа на выход нейрона путем изменения его активации;

     - выходные нейроны - это нейроны, выходные значения которых представляют выход сети;

     - промежуточные нейроны - это нейроны, составляющие основу искусственных нейронных сетей.

     Обучить нейросеть - значит, сообщить ей, чего мы от нее добиваемся. Этот процесс очень похож на обучение ребенка алфавиту. Показав ребенку изображение буквы «А», мы спрашиваем его: «Какая это буква?» Если ответ неверен, мы сообщаем ребенку тот ответ, который мы хотели бы от него получить: «Это буква А». Ребенок запоминает этот пример вместе с верным ответом, т.е. в его памяти происходят некоторые изменения в нужном направлении. Мы будем повторять процесс предъявления букв снова и снова до тех пор, когда все буквы будут твердо запомнены. Такой процесс называют «обучение с учителем».

     При обучении сети мы действуем совершенно аналогично. У нас имеется некоторая  база данных, содержащая примеры (набор рукописных изображений  букв). Предъявляя изображение буквы «А» на вход сети, мы получаем от нее некоторый ответ, не обязательно верный. Нам известен и верный (желаемый) ответ, в данном случае нам хотелось бы, чтобы на выходе с меткой «А» уровень сигнала был максимален. Обычно в качестве желаемого выхода в задаче классификации берут набор (1, 0, 0,...), где 1 стоит на выходе с меткой «А», а 0 - на всех остальных выходах. Вычисляя разность между желаемым ответом и реальным ответом сети, мы получаем (для букв русского алфавита) 33 числа - вектор ошибки. Алгоритм обучения - это набор формул, который позволяет по вектору ошибки вычислить требуемые поправки для весов сети. Одну и ту же букву (а также различные изображения одной и той же буквы) мы можем предъявлять сети много раз. В этом смысле обучение скорее напоминает повторение упражнений в спорте - тренировку.

     Оказывается, что после многократного предъявления примеров веса сети стабилизируются, причем сеть дает правильные ответы на все (или  почти все) примеры из базы данных. В таком случае говорят, что «сеть  выучила все примеры», «сеть обучена», или «сеть натренирована». В программных  реализациях можно видеть, что  в процессе обучения функция ошибки (например, сумма квадратов ошибок по всем выходам) постепенно уменьшается. Когда функция ошибки достигает нуля или приемлимого малого уровня, тренировку останавливают, а полученную сеть считают натренированной и готовой к применению на новых данных.

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

     Математически процесс обучения можно описать  следующим образом. В процессе функционирования нейронная сеть формирует выходной сигнал Y в соответствии с входным сигналом X, реализуя некоторую функцию Y = G(X). Если архитектура сети задана, то вид функции G определяется значениями синоптических весов и смещений сети. Пусть решением некоторой задачи является функция Y = = F(X), заданная парами входных - выходных данных (X 1, Y 1 ), (X 2, Y 2 ), ..., (Xw, Yw), для которых Y k = F(X k ) (к = 1, 2, …,N). 

     Рисунок 5- Схема обучения сети

 

     

     2 АЛГОРИТМ ОБРАТНОГО РАСПРОСТРОНЕНИЯ ОШИБКИ

 

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

     Алгоритм  обратного распространения используется для обучения многослойных нейронных сетей с последовательными связями вида. Нейроны в таких сетях делятся на группы с общим входным сигналом. Нейроны выполняют взвешенное (с синоптическими весами) суммирование элементов входных сигналов; к данной сумме прибавляется смещение нейрона. Над полученным результатом выполняется активационной функцией затем нелинейное преобразование. Значение функции активации есть выход нейрона.

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

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

Информация о работе Генетический алгоритм