Logo GenDocs.ru

Поиск по сайту:  

Загрузка...

Алгоритмы обучения нейронных сетей - файл 1.doc


Алгоритмы обучения нейронных сетей
скачать (326 kb.)

Доступные файлы (1):

1.doc326kb.04.12.2011 09:46скачать

содержание

1.doc

Содержание
Введение……………………………………………………………………3

Глава 1. Нейронные сети…………………………………………….…….5

1.1. Обучение нейронной сети………………………..……….……5

1.2. Методы ускорения обучения нейронной сети………………12

1.3. Области применения нейронных сетей………………………15

Глава 2. Создание и обучение нейронной сети…………………………19


2.1. Алгоритм обратного распространения ошибки…………..…19

2.2. Аппроксимация функции……………………………………..24

Заключение……………………………..………………………………..30

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

  • Богатые возможности.  Нейронные сети – исключительно мощный метод моделирования, позволяющий воспроизводить чрезвычайно сложные зависимости.

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

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

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

Цель работы – изучение алгоритмов обучения нейронных сетей.

Для достижения поставленной цели в работе поставлены следующие задачи:

  1. Описать алгоритмы обучения нейронных сетей.

  2. Рассмотреть методы ускорения обучения нейронной сети.

  3. Изучить области применения нейронных сетей.

  4. Рассмотреть алгоритм обратного распространения ошибки.

  5. Реализовать алгоритм обратного распространения ошибки на примере аппроксимации функции.

Объектом исследования являются нейронные сети.

Предмет – алгоритмы обучения нейронной сети.

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

Структура работы и объем работы определяется целью и основными задачами исследования. Курсовая работа состоит из введения, двух глав, заключения и списка использованной литературы. Текст работы изложен на 33 страницах текста.
Глава 1. Нейронные сети
1.1. Обучение нейронной сети
Искусственные нейронные сети, подобно биологическим, являются вычислительной системой с огромным числом параллельно функционирующих простых процессоров с множеством связей. Несмотря на то, что при построении таких сетей обычно делается ряд допущений и значительных упрощений, отличающих их от биологических аналогов, искусственные нейронные сети демонстрируют удивительное число свойств, присущих мозгу, — это обучение на основе опыта, обобщение, извлечение существенных данных из избыточной информации [11].

Нейронные сети могут менять свое поведение в зависимости от состояния окружающей их среды. После анализа входных сигналов (возможно, вместе с требуемыми выходными сигналами) они самонастраиваются и обучаются, чтобы обеспечить правильную реакцию. Обученная сеть может быть устойчивой к некоторым отклонениям входных данных, что позволяет ей правильно «видеть» образ, содержащий различные помехи и искажения [1].

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

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

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

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

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




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

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

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

Обучение нейронных сетей – сложный и наукоемкий процесс. Алгоритмы обучения нейронных сетей имеют различные параметры и настройки, для управления которыми требуется понимание их влияния (см. рисунок 2).


Рисунок 2. Использование нейронной сети
После того, как нейронная сеть обучена, мы можем применять ее для решения полезных задач. Важнейшая особенность человеческого мозга состоит в том, что, однажды обучившись определенному процессу, он может верно действовать и в тех ситуациях, в которых он не бывал в процессе обучения. Например, мы можем читать почти любой почерк, даже если видим его первый раз в жизни. Так же и нейронная сеть, грамотным образом обученная, может с большой вероятностью правильно реагировать на новые, не предъявленные ей ранее данные. Например, мы можем нарисовать букву "А" другим почерком, а затем предложить нашей нейронной сети классифицировать новое изображение. Веса обученной нейронной сети хранят достаточно много информации о сходстве и различиях букв, поэтому можно рассчитывать на правильный ответ и для нового варианта изображения.

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

  • Обратное распространение

  • Левенберга-Маркара

  • Сопряженных градиентов

  • Квази-Ньютоновский

  • Быстрое распространение

  • Дельта-дельта-с-чертой

  • Псевдо-обратный

  • Обучение Кохонена

  • Пометка ближайших классов

  • Обучающий векторный квантователь

  • Радиальная (под)выборка

  • Метод K-средних

  • Метод К-ближайших соседей (KNN)

  • Установка изотропных отклонений

  • Установка явных отклонений

  • Вероятностная нейронная сеть

  • Обобщенно-регрессионная нейронная сеть

  • Генетический алгоритм отбора входных данных

  • Пошаговый прямой или обратный отбор входных данных

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

Предпочтение следует отдавать тем алгоритмам, которые позволяют обучить нейронную сеть за небольшое число шагов и требуют мало дополнительных переменных. Это связано с тем, что обучение сетей производится на компьютерах с ограниченным объемом оперативной памяти и небольшой производительностью. Как правило, для обучения используются персональные компьютеры [13].

Стохастические алгоритмы требуют очень большого числа шагов обучения. Это делает невозможным их практическое использование для обучения нейронных сетей больших размерностей. Экспоненциальный рост сложности перебора с ростом размерности задачи в алгоритмах глобальной оптимизации также делает невозможным их использование для обучения нейронных сетей больших размерностей. Метод сопряженных градиентов очень чувствителен к точности вычислений, особенно при решении задач оптимизации большой размерности. Методы, учитывающие направление антиградиента на нескольких шагах алгоритма, и методы, включающие в себя вычисление матрицы Гессе, требуют дополнительных переменных [5].

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

^ 1.2. Методы ускорения обучения нейронной сети
Нейронные сети являются одним из направлений искусственного интеллекта, которые часто используются при решении задач оптимизации и распознавания образов. Уже разработано достаточное количество моделей нейронных сетей для решения различных прикладных задач. Для каждой модели предложены свои методы и алгоритмы обучения. Несмотря на это, не прекращающиеся работы по совершенствованию существующих и разработке новых моделей и их алгоритмов обучения, сама теория нейронных сетей по-прежнему остается плохо формализованной [1].

Тем не менее, при разработке нейронных сетей можно выделить два основных этапа:

  • Структурный синтез – этап, на котором выбирается модель будущей нейронной сети, ее предварительная структура и алгоритм обучения.

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

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

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

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

Степень достаточности обучения нейронной сети во многом определяется исходя их условий конкретной задачи и желаемого результата.

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

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

Суть принципа достаточности заключается в отказе от стремления к идеалу при поиске решения задачи. Если этот принцип перенести на процесс обучения нейронной сети, то можно сказать, что 100% точность распознавания требуется далеко не во всех случаях. Для того чтобы объект распознавания был правильно определен в свой класс вполне достаточно, чтобы ошибка нейронной сети на конкретном обучающем наборе не превосходила некоторого δ.

Максимальное значение δ, при котором будет сохраняться заданная точность распознавания, зависит от характера обучающей выборки. В качестве параметров характеризующих обучающую выборку, рассмотрим ее полноту и противоречивость [18].

Полнота обучающей выборки характеризует обеспеченность классов обучающими наборами. Считается, что для каждого класса количество обучающих наборов должно хотя бы в 3-5 раз превосходить количество признаков класса, используемое в этих наборах. Для расчета полноты обучающей выборки можно воспользоваться следующей формулой:



где:

  • nF  – число классов, удовлетворяющих вышеописанному правилу;

  • n  – общее число классов.

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



где:

  • NA – количество противоречивых наборов;

  • N – общее количество наборов в обучающей выборке.

Таким образом, чем больше будут значения FОВ и СОВ, тем больше может быть величина δ, и тем быстрее может проходить обучение нейронной сети [19].
^ 1.3. Области применения нейронных сетей
Отметим, что задачи классификации (типа распознавания букв) очень плохо алгоритмизуются. Если в случае распознавания букв верный ответ очевиден для нас заранее, то в более сложных практических задачах обученная нейронная сеть выступает как эксперт, обладающий большим опытом и способный дать ответ на трудный вопрос.

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

Классификация предприятий по степени их перспективности – это уже привычный способ использования нейронных сетей в практике западных компаний. При этом нейронная сеть также использует множество экономических показателей, сложным образом связанных между собой [3].

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

Методы нейронных сетей можно использовать в любой ситуации, где требуется найти значения неизвестных переменных или характеристик по известным данным наблюдений или измерений (сюда относятся различные задачи регрессии, классификации и анализа временных рядов), причем этих исторических данных должно быть достаточное количество, а между известными и неизвестными значениями действительно должна существовать некоторая связь или система связей (нейронные сети довольно устойчивы к помехам). Еще одно применение нейросетей – разведочный анализ и поиск кластеров в данных (здесь используются сети Кохонена).

Приведем набор примеров из разных областей, где применяются нейронные сети, который не является исчерпывающим [2].

  • Оптическое распознавание символов, включая распознавание подписи (например, система идентификации подписи, учитывающая не только окончательный ее рисунок, но и скорость движения пера на различных участках, что значительно затрудняет подделку чужой подписи).

  • Обработка изображений (например, система сканирует видеоизображения станций метро и определяет, насколько станция заполнена людьми, причем работа системы не зависит от условий освещенности и движения поездов).

  • Прогнозирование финансовых временных рядов (компания LBS Capital Management объявила о значительных успехах в финансовых операциях, достигнутых за счет прогнозирования цен акций с помощью многослойных персептронов).

  • Оценка кредитоспособности (классическая задача - по анкетным данным определить, надежен ли данный заемщик).

  • Торговля путем прямой рассылки (по сведениям из базы данных выявить клиентов, которые скорее всего откликнутся на почтовую рекламу).

  • Медицинская диагностика (например, прогнозирование эпилептических припадков).

  • Техническая диагностика (по вибрации и шуму на ранней стадии определять неисправности в механизме и проводить превентивный ремонт).

  • Синтез речи (знаменитая экспериментальная система Nettalk, способная произносить фонемы из написанного текста).

  • Прогнозирование хаотических временных рядов (целый ряд исследований продемонстрировал хорошие способности нейронных сетей к прогнозированию хаотических временных данных).

  • Управление процессами (в частности, мониторинг процессов производства с непрерывным регулированием управляющих параметров).

  • Системы управления двигателями (оценка уровня потребления топлива с помощью сенсорных данных и управление им).

  • Лингвистический анализ (пример: сеть с неконтролируемым обучением используется для идентификации ключевых фраз и слов в языках туземцев Южной Америки).

  • Системы детекторов с переключением в реальном времени в физике. Нейронные сети устойчивы к шуму и допускают использование шаблонов в физических данных с большим статистическим шумом.

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

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

В последнее время предпринимаются активные попытки объединения искусственных нейронных сетей и экспертных систем. В такой системе искусственная нейронная сеть может реагировать на большинство относительно простых случаев, а все остальные передаются для рассмотрения экспертной системе. В результате сложные случаи принимаются на более высоком уровне, при этом, возможно, со сбором дополнительных данных или даже с привлечением экспертов [4].

^

Глава 2. Создание и обучение нейронной сети


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

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

Рассмотрим алгоритм обучения с учителем (см. рисунок 3).



Рисунок 3. Алгоритм обучения нейронной сети с учителем
Среди различных структур нейронных сетей одной из наиболее известных является многослойная структура, в которой каждый нейрон произвольного слоя связан со всеми аксонами нейронов предыдущего слоя или, в случае первого слоя, со всеми входами НС. Такие НС называются полносвязными. Когда в сети только один слой, алгоритм ее обучения с учителем довольно очевиден, так как правильные выходные состояния нейронов единственного слоя заведомо известны, и подстройка синаптических связей идет в направлении, минимизирующем ошибку на выходе сети.

Рассмотрим более подробно алгоритм обучения НС с учителем для однослойной нейронной сети, примером которой является однослойный персептрон.

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

  2. Подать на входы один из входных векторов, которые сеть должна научиться различать, и вычислить ее выход.

  3. Если выход правильный, перейти на шаг 4.

Иначе вычислить разницу между идеальным и полученным значениями выхода:



где:

  • yu – идеальное значение;

  • y – полученное значение.

Модифицировать веса в соответствии с формулой



где:

  • t и t+1 - номера соответственно текущей и следующей итераций;

  • η - коэффициент скорости обучения, 0< η <1;

  • δ – ошибка нейронной сети;

  • i- номер входа;

  • j - номер нейрона в слое.

Очевидно, что, если уц > у , весовые коэффициенты будут увеличены и тем самым уменьшат ошибку. В противном случае они будут уменьшены, и у тоже уменьшится, приближаясь к уц.

4) Цикл с шага 2, пока сеть не перестанет ошибаться.

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

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

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

 



Рисунок 4. Метод обратного распространения ошибки для многослойной полносвязанной нейронной сети
Конечно, при таком обучении нейронной сети нет уверенности, что она обучилась наилучшим образом, поскольку всегда существует возможность попадания алгоритма в локальный минимум. Для этого используются специальные приемы, позволяющие «выбить» найденное решение из локального экстремума. Если после нескольких таких действий нейронная сеть сходится к тому же решению, то можно сделать вывод о том, что найденное решение, скорее всего, оптимально [10].

Алгоритм обучения НС с помощью процедуры обратного распространения строится так [15]:

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

2. Вычислить разницу между идеальным и полученным значениями выхода для выходного слоя.

Рассчитать изменения весов слоя.

3. Рассчитать разницу между идеальным и полученным значениями выхода и изменения весов для всех остальных слоев.

4. Скорректировать все веса в НС.

5. Если ошибка сети существенна, перейти на шаг 1. В противном случае – конец.

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

Когда выходное значение стремится к нулю, эффективность обучения заметно снижается. При двоичных входных векторах в среднем половина весовых коэффициентов не будет коррек­тироваться, поэтому область возможных значений выходов нейронов [0,1] желательно сдвинуть в пределы [-0.5,+0.5], что достигается простыми модификациями логистических функций. Например, сигмоид с экспонентой () преобразуется к виду



Теперь коснемся вопроса емкости НС, то есть числа образов, предъявляемых на ее входы, которые она способна научиться распознавать. Для сетей с числом слоев больше двух, он остается открытым. Для НС с двумя слоями, то есть выходным и одним скрытым слоем, детерминистская емкость сети оценивается так:



где:

  • Cd – детерминистская емкость сети;

  • Nw – число подстраиваемых весов;

  • Ny – число нейронов в выходном слое.

Следует отметить, что данное выражение получено с учетом некоторых ограничений. Во-первых, число входов Nx и нейронов в скрытом слое Nh должно удовлетворять неравенству Nx+Nh>Ny. Во-вторых, . Фигурирующее в названии емкости прилагательное "детерминистский" означает, что полученная оценка емкости подходит абсолютно для всех возможных входных образов, которые могут быть представлены Nx входами. В действительности распределение входных образов, как правило, обладает некоторой регулярностью, что позволяет НС проводить обобщение и, таким образом, увеличивать реальную емкость. Так как распределение образов, в общем случае, заранее не известно, мы можем говорить о такой емкости только предположительно, но обычно она раза в два превышает емкость детерминистскую [16].
^ 2.2. Аппроксимация функции
При проектировании вычислительных устройств и систем управления часто возникает задача нахождения аппроксимирующих функций для зависимостей, которые не могут быть вычислены с помощью простых арифметических операций: сложение, вычитание, умножение и деление. Для решения этой задачи исходная функция заменяется другой функцией, параметры которой находятся в процессе минимизации ошибки приближения по выбранному критерию [14].

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

Часто мы сталкиваемся с табличным заданием функций. Так при обработке статистического материала приходится устанавливать надежность статистических выводов с помощью известных функций распределения Стьюдента, Фишера и других, таблицы которых присутствуют во всех руководствах по статистике. Но с таблицами надо уметь работать. При поиске значений таблично заданной функции при значениях x, отличных от узлов таблицы придется затратить гораздо больше времени [6].

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

В среде Matlab необходимо построить и обучить нейронную сеть для аппроксимации таблично заданной функции , i=1,20. Разработать программу, которая реализует нейросетевой алгоритм аппроксимации и выводит результаты аппроксимации в виде графиков.

Аппроксимация заключается в том, что, используя имеющуюся информацию по f(x), можно рассмотреть аппроксимирующую функцию z(x) близкую в некотором смысле к f(x), позволяющую выполнить над ней соответствующие операции и получить оценку погрешности такой замены.

Под аппроксимацией обычно подразумевается описание некоторой, порой не заданной явно, зависимости или совокупности представляющих ее данных с помощью другой, обычно более простой или более единообразной зависимости. Часто данные находятся в виде отдельных узловых точек, координаты которых задаются таблицей данных. Результат аппроксимации может не проходить через узловые точки. Напротив, задача интерполяции — найти данные в окрестности узловых точек. Для этого используются подходящие функции, значения которых в узловых точках совпадают с координатами этих точек [8].

Задача. В среде Matlab необходимо построить и обучить нейронную сеть для аппроксимации таблично заданной функции (см. рисунок 5).


xi

0,1

0,2

0,3

0,4

0,5

0,6

0,7

0,8

0,9

1

f(xi)

2,09

2,05

2,19

2,18

2,17

2,27

2,58

2,73

2,82

3,04

xi

1,1

1,2

1,3

1,4

1,5

1,6

1,7

1,8

1,9

2

f(xi)

3,03

3,45

3,62

3,85

4,19

4,45

4,89

5,06

5,63

5,91


Рисунок 5. Таблица значений функции
В математической среде Matlab в командном окне записываем код программы создания и обучения нейронной сети.

Для решения воспользуемся функцией newff(.) – создание «классической» многослойной НС с обучением по методу обратного распространения ошибки, т.е. изменение весов синапсов происходит с учетом функции ошибки, разница между реальными и правильными ответами нейронной сети, определяемыми на выходном слое, распространяется в обратном направлении — навстречу потоку сигналов. Сеть будет иметь два скрытых слоя. В первом слое 5 нейронов, во втором – 1. Функция активации первого слоя – 'tansig' (сигмоидная функция, возвращает выходные векторы со значениями в диапазоне от -1 до 1), второго – 'purelin' (линейная функция активации, возвращает выходные векторы без изменений). Будет проведено 100 эпох обучения. Обучающая функция 'trainlm' –функция, тренирующая сеть (используется по умолчанию, поскольку она обеспечивает наиболее быстрое обучение, но требует много памяти) [9].

Код программы:

P = zeros(1,20);

for i = 1:20 %создание массива

P(i) = i*0.1; %входные данные (аргумент)

end

T=[2.09 2.05 2.19 2.18 2.17 2.27 2.58 2.73 2.82 3.04 3.03 3.45 3.62 3.85 4.19 4.45 4.89 5.06 5.63 5.91]; %входные данные (значение функции)

net = newff([-1 2.09],[5 1],{'tansig' 'purelin'}); %создание нейронной сети

net.trainParam.epochs = 100; %задание числа эпох обучения

net=train(net,P,T); %обучение сети

y = sim(net,P); %опрос обученной сети

figure (1);

hold on;

xlabel ('P');

ylabel ('T');

plot(P,T,P,y,'o'),grid; %прорисовка графика исходных данных и функции, сформированной нейронной сетью

^ Результат работы нейронной сети.

Результат обучения (см. рисунок 6): график показывает время обучения нейронной сети и ошибку обучения. В этом примере нейронная сеть прошла все 100 эпох постепенно обучаясь и уменьшая ошибки, дошла до 10-2,35 (0,00455531).



Рисунок 6. Результат обучения нейронной сети
График исходных данных и функции, сформированной нейронной сетью (см. рисунок 7): кружками обозначены исходные данные, а линия – функция, сформированная нейронной сетью. Далее по полученным точкам можно построить регрессию и получить уравнение аппроксимации (см. рисунок 8). Мы использовали кубическую регрессию, так как ее график наиболее точно проходит через полученные точки. Полученное уравнение имеет вид: y=0.049x3+0.88x2-0.006x+2.1.

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




Рисунок 7. График исходных данных и функции, сформированной нейронной сетью




Рисунок 8. График функции аппроксимации

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

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

В соответствии с задачами в курсовой работе было выполнено следующее.

        1. Проведен обзор алгоритмов обучения нейронных сетей.

        2. Рассмотрены методы ускорения обучения нейронной сети.

        3. Изучены области применения нейронных сетей.

        4. Рассмотрен алгоритм обратного распространения ошибки.

        5. Реализован алгоритм обратного распространения ошибки на примере аппроксимации функции.

В ходе выполнения данной курсовой работы была построена и обучена нейронная сеть для аппроксимации таблично заданной функции , i=1,20 в среде Matlab. Разработана программа, которая реализует нейросетевой алгоритм аппроксимации и выводит результаты аппроксимации в виде графиков.

Для решения использована функция newff(.) – создание «классической» многослойной НС с обучением по методу обратного распространения ошибки.

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

^ Список использованной литературы


  1. Амосов, О.С. Интеллектуальные информационные системы. Нейронные сети и нечеткие системы: Учеб. Пособие [Текст] / О.С. Амосов. – Комсомольск-на-Амуре: ГОУВПО «КнАГТУ», 2004. – 104 с.

  2. Белов, В.Г. О перспективах искусственного интеллекта [Текст] / В.Г. Белов. – М.: Дело, 2006. – 82 с.

  3. Галушкин, А.И. Применения нейрокомпьютеров в финансовой деятельности [Текст] / А.И. Галушкин. – Новосибирск: Наука, 2002. – 215с.

  4. Ефимов, Д.В. Нейросетевые системы управления [Текст] / Д.В. Ефимов. – М.: Высшая школа, 2002. — 184 с.

  5. Каллан, Р. Основные концепции нейронных сетей [Текст] / Р. Каллан. – М.: Вильямс, 2001. — 288 с.

  6. Короткий, С.А. Нейронные сети Хопфилда [Текст] / С.А. Короткий. – М.: ЮНИТИ-ДАНА, 2005. – 315 с.

  7. Круглов, В.В. Искусственные нейронные сети. Теория и практика [Текст] / В.В. Круглов. – М.: Горячая линия - Телеком, 2001. — 382 с.

  8. Терехов, С.А. Лекции по теории и приложениям искусственных нейронных сетей [Текст] / С.А. Терехов. – Снежинск: ВНИТФ, 2003. – 183 с.

  9. Уоссермен, Ф. Нейрокомпьютерная техника: Теория и практика [Текст] / Ф. Уоссермен . — М.: Мир, 2006. — 240 с.

  10. Хайкин, С. Нейронные сети: полный курс [Текст] / С. Хайкин. – М.: Вильямс, 2006. — 1104 с.

  11. Ясницкий, Л.Н. Введение в искусственный интеллект. [Текст] / Л.Н. Ясницкий. – М.: Издательский центр "Академия", 2005. — 176 с.

  12. Алгоритмы обучения нейронных сетей будущего [электронный ресурс]: http://ai.h16.ru/note/algo/algo.php

  13. Аналитические технологии для прогнозирования и анализа данных [электронный ресурс]: http://www.neuroproject.ru/neuro.htm

  14. Введение в теорию нейронных сетей [электронный ресурс]: http://www.orc.ru/~stasson/neurox.html

  15. Нейронные сети [электронный ресурс]: http://www.statsoft.ru/ textbook/modules/stneunet.html

  16. Нейронные сети. Алгоритм обратного распространения [электронный ресурс]: http://ai.obrazec.ru/neur-2.html

  17. Нейронные сети: обучение без учителя [электронный ресурс]: http://www.codenet.ru/progr/alg/ai/htm/gl3_4.php

  18. Обучение нейронной сети [электронный ресурс]: http://www. aiportal.ru/articles/neural-networks/learning-neunet.html

  19. Парадигмы обучения нейронных сетей [электронный ресурс]: http://apsheronsk.bozo.ru/Neural/Lec3.htm



Скачать файл (326 kb.)

Поиск по сайту:  

© gendocs.ru
При копировании укажите ссылку.
обратиться к администрации