Нейросеревые модели

Изучение сути искусственных нейронных сетей. Векторные пространства. Матрицы и линейные преобразования векторов. Биологический нейрон и его кибернетическая модель. Теорема об обучении персептрона. Линейная разделимость и персептронная представляемость.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 06.06.2012
Размер файла 239,7 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

где m - число компонент входного вектора X, значение L>1. Процесс обучения происходит без учителя, на основе самоорганизации. Обучение производится для весов нейрона-победителя в случае как успешной, так и неуспеншной классификации. При этом веса вектора B стремятся к нормализованной величине компонент вектора C:

При этом роль нормализации компонент крайне важна. Вектора с большим число единиц приводят к небольшим значениям весов b, и наоборот. Таким образом, произведение

оказывается масштабированным. Масштабирование приводит к тому, что возможно правильное различение векторов, даже если один является подмножеством другого. Пусть нейрон X1 соответствует образу (100000), а нейрон X2 - образу (111100). Эти образы являются, очевидно, различными. При обучении без нормализации (т.е. bi ® ci) при поступлении в сеть первого образа, он даст одинаковые скалярные произведения, равные 1, как с весами нейрона X1, так и X2. Нейрон X2, в присутствии небольших шумовых отклонений в значениях весов, может выиграть конкуренцию. При этом веса его вектора T установятся равными (100000), и образ (111100) будет безвозвратно "забыт" сетью.

При применении нормализации исходные скалярные произведения будут равны единице для нейрона X1, и значению 2/5 для нейрона X2 (при L=2). Тем самым, нейрон X1 заслуженно и легко выиграет конкурентное соревнование.

Компоненты вектора T, как уже говорилось, при обучении устанавливаются равными соответствующим значениям вектора C. Следует подчеркнуть, что это процесс необратим. Если какая-то из компонент tj оказалась равной нулю, то при дальнейшем обучении на фазах сравнения соответствующая компонента cj никогда не получит подкрепления от tj=0 по правилу 2/3, и, следовательно, единичное значение tj не может быть восстановлено. Обучение, таким образом, сопровождается обнулением все большего числа компонент вектора T, оставшиеся ненулевыми компоненты определяют множество критических черт данной категории.

Обучающие образы C и сформированный вектор критических черт T - минимальный набор общих элементов категории.

9.4 Теоремы АРТ

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

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

10. Сжатие данных и ассоциативная память

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

Этапы решения задач:

1) Сбор данных для обучения.

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

Репрезентативность -- данные должны иллюстрировать истинное положение вещей в предметной области;

Непротиворечивость -- противоречивые данные в обучающей выборке приведут к плохому качеству обучения сети;

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

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

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

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

2) Подготовка и нормализация данных.

3) Выбор топологии сети.

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

4) Экспериментальный подбор характеристик сети.

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

5) Экспериментальный подбор параметров обучения.

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

6) Собственно обучение.

В процессе обучения сеть в определенном порядке просматривает обучающую выборку. Порядок просмотра может быть последовательным, случайным и т. д. Некоторые сети, обучающиеся без учителя, например, сети Хопфилда просматривают выборку только один раз. Другие, например, сети Кохонена, а также сети, обучающиеся с учителем, просматривают выборку множество раз, при этом один полный проход по выборке называется эпохой обучения. При обучении с учителем набор исходных данных делят на две части -- собственно обучающую выборку и тестовые данные; принцип разделения может быть произвольным. Обучающие данные подаются сети для обучения, а проверочные используются для расчета ошибки сети (проверочные данные никогда для обучения сети не применяются). Таким образом, если на проверочных данных ошибка уменьшается, то сеть действительно выполняет обобщение. Если ошибка на обучающих данных продолжает уменьшаться, а ошибка на тестовых данных увеличивается, значит, сеть перестала выполнять обобщение и просто «запоминает» обучающие данные. Это явление называется переобучением сети или оверфиттингом. В таких случаях обучение обычно прекращают. В процессе обучения могут проявиться другие проблемы, такие как паралич или попадание сети в локальный минимум поверхности ошибок. Невозможно заранее предсказать проявление той или иной проблемы, равно как и дать однозначные рекомендации к их разрешению.

7) Проверка адекватности обучения.

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

8) Корректировка параметров, окончательное обучение.

9) Вербализация сети с целью дальнейшего использования.

11. Распознавание образов, классификация, категоризация

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

Топология такой сети характеризуется тем, что количество нейронов в выходном слое, как правило, равно количеству определяемых классов. Когда сети предъявляется некий образ, на одном из её выходов должен появиться признак того, что образ принадлежит этому классу. В то же время на других выходах должен быть признак того, что образ данному классу не принадлежит. Если на двух или более выходах есть признак принадлежности к классу, считается что сеть «не уверена» в своём ответе.

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

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

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

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

Экспертные системы (ЭС)

Нейросетевые системы (НС)

Источник знаний

Формализованный опыт эксперта, выраженный в виде логических утверждений - правил и фактов, безусловно принимаемых системой

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

Характер знаний

Формально-логическое “левополушарное” знание в виде правил

Ассоциативное “правополушарное” знание в виде связей между нейронами сети

Развитие знаний

В форме расширения совокупности правил и фактов (базы знаний)

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

Роль эксперта

Задает на основе правил полный объем знаний экспертной системы

Отбирает характерные примеры, не формулируя специально обоснование своего выбора

Роль искусственной системы

Поиск цепочки фактов и правил для доказательства суждения

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

12. Современность нейросетевых технологий

12.1 Черты современных архитектур

Классические исследования, выполненные в послевоенные годы и дальнейших бурный прогресс в нейроинформатике в 80-е годы определили некоторые общие черты перспективных архитектур и направления исследований.

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

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

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

4. Ориентация исследований и архитектур непосредственно на приложения. Модели общего характера, такие как сеть Хопфилда или многослойный персептрон, в основном представляют научный интерес, так как допускают относительно полное теоретическое исследование.

Этот список является далеко не полным.

12.2 Программное обеспечение

К настоящему времени сформировался обширный рынок нейросетевых продуктов. Подавляющее большинство продуктов представлено в виде моделирующего программного обеспечения. Ведущие фирмы разрабатывают также и специализированные нейрочипы или нейроплаты в виде приставок к обычным ЭВМ (как правило, персональным ЭВМ линии IBM PC AT). При этом программы могут работать как без нейро-приставок, так и с ними. В последнем случае быстродействие гибридной ЭВМ возрастает в сотни и тысячи раз. Некоторые наиболее извесные и популярные нейросистемы: NeuralWorks Professional II Plus, ExploreNet 3000, NeuroShell 2.0

12.3 Многообразие применения

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

Вывод

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

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

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

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

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

Практическая часть

Лабораторная работа № 1

Искусственные нейронные сети

Цель работы: изучение архитектуры искусственных нейронных сетей, способов их графического изображения в виде функциональных и структурных схем и программного представления в виде объектов специального класса network, включающих массив структур с атрибутами сети и набор необходимых методов для создания, инициализации, обучения, моделирования и визуализации сети, а также приобретение навыков построения сетей различной архитектуры с помощью инструментального программного пакета Neural Network Toolbox системы MATLAB.

Теоретические сведения.

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

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

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

Структурная схема сети изображается с помощью типового набора блоков, соединительных элементов и обозначений, принятых в инструментальном программном пакете Neural Network Toolbox системы MATLAB и пакете имитационного моделирования Simulink той же системы. Структурная схема сети может быть укрупнённой или детальной, причём степень детализации определяется пользователем.

Системы обозначений блоков, элементов и параметров сети является векторно-матричной, принятой в системе MATLAB. Если в обозначении используется два индекса, то, как правило, первый индекс (индекс строки) указывает адресата, или пункт назначения, а второй индекс (индекс столбца) - источник структурной схемы сети. Структурные схемы создаются системой автоматически с помощью команды gensim. Если элементом вектора или матрицы на структурной схеме является сложный объект, то используются соответственно ячейка и массив ячеек. Программным представлением, или вычислительной моделью искусственной нейронный сети, является объект специального класса network, который включает массив структур с атрибутами сети и на- бор методов, необходимых для создания сети, а также для её инициализации, обучения, моделирования и визуализации. Класс Network имеет два общих конструктора, один из которых не имеет параметров и обеспечивает создание массива структур с нулевыми значениями полей, а второй - имеет минимальный набор параметров для создания модели нейронной сети, достраиваемой затем до нужной конфигурации с помощью операторов присваивания. Для создания нейронных сетей определённого вида используются специальные конструкторы.

Практические задания.

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

Net = network (numInputs, numLayers, biasConnect, imputConnect,

layerConnect, outputConnect, tartegtConnect).

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

Смысл и значения параметров конструктора для создания модели сети заданной архитектуры таковы:

numImputs=2 - количество входов сети;

numLayers=3 - количество слоёв в сети;

biasConnect=[1; 0; 0] - матрица связности для смещений размера numLayers * 1;

inputConnect=[1 1; 0 0; 0 0] - матрица связности для входов

размера numLayers * numImputs;

layerConnect=[0 0 0;1 0 0 0 ; 0 1 0] - матрица связности для сло-

ёв размера numLayers * numLayers;

outputConnect=[0 0 1] - матрица связности для выходов разме-

ра 1* numLayers;

targetConnect=[0 0 1] - матрица связности для целей размера 1 *

numLayers.

Порядок выполнения заданий следующий:

1. Создать шаблон сети, выполнив команду

net = network (2, 3, [1; 0; 0], [1 1; 0 0 ; 0 0], …. ,

[0 0 0 ; 1 0 0 ; 0 1 0], [0 0 1])

2. Проверить значения полей вычислительной модели нейронной сети net и их соответствие заданным значениям в списке параметров.

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

numOutputs = 1 - количество выходов сети;

numTargets = 1 - количество целей сети;

numInputDelays = 0 - максимальное значение задержки для

входов сети.

numLayersDelays = 0 - максимальное значение задержки для

слоёв сети.

Заметим, что каждый выход и каждая цель присоединяются к одному или нескольким слоям при этом количество компонент выхода или цели равно количеству нейронов в соответствующем слое. Для увеличения возможности модели в сеть включают линии задержки либо на её входах, либо между слоями. Каждая линия задерживает сигнал на один такт. Параметры numInputDelays и NumLayerDelays определяют максимальное число линий для какого-либо входа или слоя соответственно.

4. Проанализировать структурную схему построенной сети, выполнив команду gensim(net) и детализируя блоки с помощью двойного щелчка левой клавиши мыши по рассматриваемому блоку. На структурных схемах искусственных нейронных сетей в пакете NNT используются следующие обозначения:

а) Neural Network - искусственная нейронная сеть с обозначениями входов p{1}, p{2}, … и выхода y{1};

б) входы Input1 , или p{1} и Input2 , или p{2};

в) дисплей y{1};

г) Layer 1, Layer 2, Layer 3, … слои нейронов с обозначениями входов p{1}, p{2], a{1}, a{2}, … и выходов a{1}, a{2}, a{3}, … , y{1};

д) TDL - линии задержки (Time Delay) с именами Delays1, Delays2, ..., которые обеспечивают задержку входных сигналов или сигналов между слоями нейронов на 1, 2, 3, … такта;

е) Weights - весовая матрица для входных сигналов или сигналов между слоями нейронов; размер матрицы весов для каждого вектора входа SЧR, где S - число нейронов входного слоя, а R - число компонент вектора входа, умноженное на число задержек; размер матрицы для сигнлов от слоя j к слою i равен SЧR, где S - число нейронов в слое i, а R - число нейронов в слое j, умноженное на число задержек;

ж) dotprod - блок взвешивания входных сигналов и сигналов между слоями, на выходе которого получается сумма взвешенных, т. е. умноженных на соответствующие веса компонент сигнала;

з) mux - концентратор входных сигналов и сигналов между слоями, преобразует набор скалярных сигналов в вектор, а набор векторов в один вектор суммарной длины;

и) netsum - блок суммирования компонент для каждого нейрона слоя: компонент от нескольких векторов входа с учётом задержек, смещения и т. п.;

к) hardlim, purelin и т. д. - блоки функций активации;

л) pd{1, 1}, pd{1, 2}, ad{2, 1}, ... - сигналы после линий задержки (d - delay);

м) iz{1, 1}, iz{1, 2}, lz{2, 1}, lz{3, 2} - вектор-сигналы с выхода концентратора;

н) bias - блок весов смещений для слоя нейронов;

о) IW - массив ячеек с матрицами весов входов: IW{i, j} - матрицы для слоя i от входного вектора j;

п) LW - массив ячеек с матрицами весов для слоёв: LW{i, j} - матрицы для слоя i от слоя j.

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

6. Задать нулевые последовательности сигналов для входов

P = [0 0 ; 0 0]

и произвести моделирование сети

A = sim(net, P).

7. Задать диапазоны входных сигналов и весовые матрицы с помощью следующих присваиваний:

net.inputs{1}.range = [0 1];

net.inputs{2}.range = [0 1];

net.b{1} = - ј;

net.IW{1, 1} = [0.5];

net.IW{1, 2} = [0.5];

net.LW{2, 1} = [0.5];

net.LW{3, 2} = [0.5].

Исполнить команду gensim(net) и проверить параметры блока.

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

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

PG = [0.5 1 ; 1 0.5];

PS = {[0.5 1] [1 0.5]};

AG = sim(net, PG);

AS = sim(net, PS).

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

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

net.inputWeights{1, 1}.delays = [0 1];

net.inputWeights{1, 2}.delays = [0 1];

net.layerWeights{3, 2}.delays = [0 1 2].

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

11. Скорректировать весовые матрицы:

net.IW{1, 1} = [0.5 0.5];

net.IW{1, 2} = [0.5 0.25];

net.LW{3, 2} = [0.5 0.25 1].

12. Промоделировать динамическую сеть, используя групповое и последовательное представление входных сигналов:

AG = sim(net, PG);

AS = sim(net, PS).

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

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

14. Сохранить содержимое командного окна в М-файле для последующего использования.

Задание 2. Создать точно такую же динамическую сеть asgnet, используя конструктор класса network без параметров и задавая значения соответствующих полей вычислительной модели с помощью операторов присваивания. Убедиться в идентичности сетей net и asgnet.

Сравнить результаты работы полученных сетей.

Задание 3. Используя блоки имитационного моделирования инструментального пакета Simulink системы MATLAB, построить модель динамической сети asgnet, провести исследование модели, проверить адекватность её поведения поведению модели net и оформить электронный отчёт с помощью генератора Report Generator.

Задание 4. Используя конструктор класса network с параметрами и операторы присваивания для полей и ячеек объектов этого класса, построить, выдать на экран и промоделировать искусственные нейронные сети следующей архитектуры:

а) однослойная сеть с тремя нейронами, тремя двухкомпонентными входами и одним целевым выходом;

б) трёхслойная сеть с прямой передачей сигналов и с тремя нейронами в каждом слое; количество входов - три с двумя, пятью и тремя компонентами; для всех слоёв имеется смещение; выход -один;

в) трёхслойная сеть, в которой каждый слой соединён со всеми остальными; вход - один и состоит из двух компонентов; количество нейронов в каждом слое - три; слои имеют смещения;

г) трёхслойная динамическая сеть с тремя нейронами в каждом слое; число входов - три, из них каждый состоит из трёх компонентов; имеются смещения на всех слоях; линии задержки задерживают сигналы на один и два такта и включены между всеми слоями, а также на входе;

д) квадратная сеть с десятью слоями и десятью нейронами в каждом слое; десять векторов подключаются по одному к каждому слою; имеется десять выходов от всех слоёв сети; смещения подключены к каждому слою.

Лабораторная работа № 2

Методы и алгоритмы обучения искусственных нейронных сетей

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

Теоретические сведения.

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

net = init (net).

Перед вызовом этого метода в вычислительной модели сети необходимо задать следующие свойства:

net.initFcn - для определения функций, которые будут использоваться для задания начальных матриц весов и весов слоёв, а также начальных векторов смещений;

net.layers {i}. initFcn - для задания функции инициализации i-го слоя;

net.biases{i}.initFcn - для задания начального вектора смещения i-го слоя;

net.inputWeights{i,j}.initFcn - для задания функции вычисления матрицы весов к слою i от входа j;

net.layerWeight{i,j}.initFcn - для задания функции вычисления матрицы весов к слою i от входа j;

net.initParam - для задания параметров функций инициализации.

Способ инициализации сети определяется заданием свойств и net.initFcn net.layers{i}.initFcn.

Для сетей с прямой передачей сигналов по умолчанию используется net.initFcn = `initlay', что разрешает для каждого слоя использовать собственные функции инициализации, задаваемые свойством net.layers{i}.initFcn с двумя возможными значениями: `initwb' и 'initnw'.

Функция initwb позволяет использовать собственные функции инициализации для каждой матрицы весов и для каждого вектора смещений, при этом возможными значениями для свойств net.inputWeights{i,j}.initFcn и net.layerWeight{i,j}.initFcn являются:

`initzero', `midpoint', 'randnc', 'rands', а для свойства net.biases{i}.initFcn - значения `initcon', `initzero и `rands'.

Для сетей без обратных связей с линейными функциями активации веса обычно инициализируются случайными значениями из интервала [-1 1].

Функция initnw реализуют алгоритм Nguyen-Widrow и применяется для слоёв, использующих сигмоидальные функции активации.

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

Другими возможными значениями свойства net.initFcn являются: `initcon', `initnw', `initwb' и `initzero'.

Помимо функции initnw следующие функции производят непосредственную инициализацию весов и смещений:

initzero присваивает матрицам весов и векторам смещений нулевые значения;

rands присваивает матрицам весов и векторам смещений случайные значения из диапазона [-1 1];

randnr присваивает матрице весов случайные нормированные строки из диапазона [-1 1];

randnc присваивает матрице весов случайные нормированные столбцы из диапазона [-1 1];

midpoint присваивает элементам вектора смещения начальные равные смещения, зависящие от числа нейронов в слое, и используется вместе с функцией настройки learncon.

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

1. Выбрать для свойства net.initFcn одно из возможных значений: `initzero', `initcon', `initnw', `initwb' или `initlay'.

2. Если выбраны значения `initzero', `initcon' или `initnw', то задание функций инициализации сети завершено.

3. Если выбрано значение `initwb', то переход к шагу 6.

4. Если выбрано значение `initlay', то переходим к слоям и для каждого слоя i свойству net.layers{i}.initFcn необходимо задать одно из возможных значений: `initnw' или `initwb'.

5. Если для i-го слоя выбрано значение `initnw', то для этого слоя задание функций инициализации завершено.

6. Если для всех слоев сети или для какого-то слоя установлено свойство `initwb', то для этих слоёв необходимо задать свойства net.biases{i}.initFcn, выбрав его из набора: `initzero', `rands' или `initcon', а также свойства net.layerWeights{i,j}.initFcn, используя следующие значения: `initzero', `midpoint', `randnc', `randnr' или `rands'.

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

Эта проблема носит название "проклятие размерности". Для большинства реальных задач бывает достаточно нескольких сотен или тысяч наблюдений.

После того как собран обучающий набор данных для проектируемой сети, производится автоматическая настройка весов и смещений с помощью процедур обучения, которые минимизируют разность между желаемым сигналом и полученным на выходе в результате моделирования сети. Эта разность носит название "ошибки обучения". Используя ошибки обучения для всех имеющихся наблюдений, можно сформировать функцию ошибок или критерий качества обучения. Чаще всего в качестве такого критерия используется сумма квадратов ошибок. Для линейных сетей при этом удаётся найти абсолютный минимум критерия качества, для других сетей достижение такого минимума не гарантируется. Это объясняется тем, что для линейной сети критерий качества, как функция весов и смещения, является параболоидом, а для других сетей - очень сложной поверхностью в N+1-мерном пространстве, где N - число весовых коэффициентов и смещений.

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

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

а) реализовано заданное количество циклов;

б) ошибка достигла заданной величины;

в) ошибка достигла некоторого значения и перестала уменьшаться.

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

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

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

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

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

Итак, процедура построения нейронной сети состоит из следующих шагов:

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

2. Обучить сеть и проверить ее на контрольном множестве, добавив в случае необходимости дополнительные нейроны и промежуточные слои.

3. Проверить, не переобучена ли сеть. Если имеет место эффект переобучения, то произвести реконфигурацию сети.

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

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

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

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

где Q - объём выборки; q - номер выборки; i - номер выхода;

Целью обучения сети является минимизация этого функционала с помощью изменения весов и смещений.

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

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

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

в) методы второго порядка, в которых используются вторые производные функционала.

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

Если используется градиент функционала ошибки, то

где X k и X k+1 - векторы параметров на k-й и k+1-й итерациях;

бk - параметр скорости обучения; k g - градиент функционала, соответствующий k-й итерации.

Если используется сопряжённый градиент функционала, то на первой итерации направление движения 0 p выбирают против градиента 0 g этой итерации:

Для следующих итераций направление k p выбирают как линейную комбинацию векторов k g и k ?1 p:

а вектор параметров рассчитывают по формуле:

Для методов второго порядка расчет параметров на k-м шаге производят по формуле (метод Ньютона):

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

Градиентными алгоритмами обучения являются:

GD - алгоритм градиентного спуска;

GDM - алгоритм градиентного спуска с возмущением;

GDA - алгоритм градиентного спуска с выбором параметра скорости настройки;

Rprop - пороговый алгоритм обратного распространения ошибки;

GDX - алгоритм градиентного спуска с возмущением и адаптацией параметра скорости настройки.

Алгоритмами, основанными на использовании метода сопряженных градиентов, являются:

CGF - алгоритм Флетчера-Ривса;

CGP - алгоритм Полака-Ребейры;

CGB - алгоритм Биеле-Пауэлла;

SCG - алгоритм Молера.

Квазиньютоновскими алгоритмами являются:

DFGS - алгоритм Бройдена, Флетчера, Гольдфарба и Шанно;

OSS - одношаговый алгоритм метода секущих плоскостей (алгоритм Баттини);

LM - алгоритм Левенберга-Марквардта;

BR - алгоритм Левенберга-Марквардта с регуляризацией по Байесу.

В процессе работы алгоритмов минимизации функционала ошибки часто возникает задача одномерного поиска минимума вдоль заданного направления. Для этих целей используется метод золотого сечения GOL, алгоритм Брента BRE, метод половинного деления и кубической интерполяции HYB, алгоритм Чараламбуса CHA и алгоритм перебора с возвратом BAC.

Практические задания.

Задание 1. Адаптировать параметры однослойной статической линейной сети с двумя входами для аппроксимации линейной зависимости вида t = 2 p1 + p2 , выполнив следующие действия:

1. С помощью конструктора линейного слоя

net = newlin(PR, s, id, lr),

где PR - массив размера Rx2 минимальных и максимальных значений для R векторов входа; s - число нейронов в слое; id - описание линий задержек на входе слоя; lr - параметр скорости настройки, сформировать линейную сеть:

net = newlin([-1 1; -1 1], 1, 0, 0).

2. Подготовить обучающие последовательности в виде массивов ячеек, используя зависимости 1 2 t = 2 p + p и четыре пары значений 1 p и 2 p (произвольные):

P = {[-1; 1] [-1/3; 1/4] [1/2; 0] [1/6; 2/3]};

T = { -1 -5/12 1 1 }.

3. Для группировки представления обучающей последовательности преобразовать массивы ячеек в массивы чисел:

P1 = [P{:}], T1 = [T{:}].

4. Выполнить команды net и gensim(net), проанализировать поля вычислительной модели и структурную схему сети и записать в тетрадь значения полей, определяющих процесс настройки параметров сети (весов и смещений):

net.initFcn - функция для задания начальных матриц весов и векторов смещений;

net.initParam - набор параметров для функции initFcn, которые можно определить с помощью команды help(net.initFcn), где nitFcn - заданная функция инициализации: initcon, initlay, initnw,


Подобные документы

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

    реферат [136,2 K], добавлен 25.04.2016

  • Первое систематическое изучение искусственных нейронных сетей. Описание элементарного перцептрона. Программная реализация модели распознавания графических образов на основе перцептрона. Интерфейс программы, основные окна. Составление алгоритма приложения.

    реферат [100,5 K], добавлен 18.01.2014

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

    реферат [158,2 K], добавлен 16.03.2011

  • История возникновения, примеры использования и основные виды искусственных нейронных сетей. Анализ задач, решаемых при помощи Персептрона Розенблатта, создание схемы имитационной модели в среде Delphi. Исходные коды компьютерной программы Perseptron.

    дипломная работа [933,1 K], добавлен 18.12.2011

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

    дипломная работа [336,3 K], добавлен 07.06.2008

  • Диагностический анализ изучения алгоритмов обучения нейронных сетей "с учителем". Сбор входных и выходных переменных для наблюдений и понятие пре/пост процессирования. Подготовка и обобщение многослойного персептрона, модель обратного распространения.

    курсовая работа [249,3 K], добавлен 22.06.2011

  • Понятие искусственного нейрона и искусственных нейронных сетей. Сущность процесса обучения нейронной сети и аппроксимации функции. Смысл алгоритма обучения с учителем. Построение и обучение нейронной сети для аппроксимации функции в среде Matlab.

    лабораторная работа [1,1 M], добавлен 05.10.2010

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

    презентация [582,1 K], добавлен 25.06.2013

  • Рост активности в области теории и технической реализации искусственных нейронных сетей. Основные архитектуры нейронных сетей, их общие и функциональные свойства и наиболее распространенные алгоритмы обучения. Решение проблемы мертвых нейронов.

    реферат [347,6 K], добавлен 17.12.2011

  • Искусственные нейронные сети как одна из широко известных и используемых моделей машинного обучения. Знакомство с особенностями разработки системы распознавания изображений на основе аппарата искусственных нейронных сетей. Анализ типов машинного обучения.

    дипломная работа [1,8 M], добавлен 08.02.2017

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.