Добавлен: 22.05.2023
Просмотров: 92
Скачиваний: 2
Коль скоро обучение основывается на минимизации значения некоторой функции (показывающей, насколько результат, который выдает сеть на данном обучающем множестве, далек от образцового значения), нужно, прежде всего, выбрать меру ошибки, соответствующую сути задачи. Удачный выбор меры погрешности обычно приводит к более гладкой поверхности невязки и упрощает задачу обучения. Обычно в качестве меры погрешности берется средняя квадратичная ошибка:
где – желаемая величина выхода; – реально полученное на сети значение для i-го примера; – количество примеров в обучающем множестве.
Минимизация величины осуществляется с помощью градиентных методов. В первом из них берется градиент общей ошибки, и веса пересчитываются каждый раз после обработки всей совокупности обучающих примеров («эпохи»). Изменение весов происходит в направлении, обратном к направлению наибольшей крутизны для функции ошибок:
где – определяемый пользователем параметр, который называется величиной градиентного шага или коэффициентом обучения.
В последнее время широко используется процедура обучения многослойного персептрона, получившего название алгоритма обучения с обратным распространением ошибки (error backpropagation). Этот алгоритм является обобщением на произвольное число слоев одной из процедур обучения элементарного персептрона, известный как правило Уидроу – Хоффа (дельта-правило).
В отличие от элементарного персептрона, для которого ошибки функционирования имеют единственный минимум, многослойный персептрон может иметь несколько минимумов с приблизительно равными областями притяжения. Для получения заданного качества распознавания необходимо многократного (сотни и тысячи раз) предъявления всего обучающего множества. Предложены различные модификации алгоритма обучения backpropagation, позволяющие повысить скорость обучения и улучшить точность воспроизведения требуемого отображения «вход – выход».
Перед тем, как начинать процесс обучения нейронной сети, необходимо присвоить весам начальные значения. Цель здесь, очевидно, должна состоять в том, чтобы найти как можно более хорошее начальное приближение к решению и таким образом сэкономить время обучения и улучшить сходимость. Конечно, можно положить начальные веса во всей сети равными нулю, но тогда частные производные от невязки по всем весам будут одинаковыми, и изменения весов
не будут должным образом структурированы. В результате нельзя будет надеяться на то, что сеть вообще когда-нибудь сможет решить задачу. Нужно искать способы уйти от такой симметрии.
Классический подход к проблеме выбора начальных значений весов состоит
в следующем: случайным образом выбрать малые величины весов, чтобы быть уверенным, что ни один из сигмоидных элементов не насыщен (и значения всех производных очень малы).
Поверхность невязки в пространстве весов в общем случае имеет локальные минимумы, и это является главным препятствием для процесса обучения нейронной сети, в особенности, для алгоритма спуска. Можно встретить утверждения,
что в ряде случаев локальный минимум является вполне приемлемым решением, однако в общей ситуации необходимо разработать стратегию, которая позволяла
бы избегать таких точек и гарантировала бы сходимость обучающего алгоритма
к глобальному решению.
Для того чтобы обучающий алгоритм не стал двигаться в ложном направлении, нужно, прежде всего, упорядочить случайным образом последовательность примеров, которые он обрабатывает (так называемое «перемешивание»). Более того, если какой-то из классов примеров представлен недостаточно, случайный выбор должен осуществляться таким образом, чтобы примеры из слабо представленной группы встречались чаще – этим будет устранен ложный крен при минимизации ошибки.
При более последовательном подходе для улучшения процесса обучения можно использовать информацию о производных второго порядка от функции невязки. Соответствующие методы оптимизации называются квадратичными: спуск по сопряженному градиенту, масштабированный метод сопряженных градиентов RBackProp, квазиньютоновский метод, метод Левенберга-де-Маркара.
В отличие от методов второго порядка, где веса изменяются пропорционально их вкладу в направление глобального поиска, в локальных методах оптимизации каждый вес меняется локально. В качестве примера таких методов можно назвать метод дельта-дельта, QuickProp.
Выбор эффективного обучающего алгоритма всегда включает в себя компромисс между сложностью решаемой задачи и техническими ограничениями (быстродействие и объем памяти компьютера, время, цена).
Как отмечалось ранее, нейронные сети могут служить универсальным средством аппроксимации в том смысле, что при достаточно разветвленной архитектуре они реализуют широкий класс функций. Как часто бывает, достоинство одновременно является и недостатком. Благодаря способности тонко улавливать структуру аппроксимируемой функции сеть достигает очень высокой степени соответствия на обучающем множестве, и в результате плохо делает обобщения при последующей работе с реальными данными. Это явление называется переобучением. Сеть моделирует не столько саму функцию, сколько присутствующий в обучающем множестве шум. Переобучение присутствует
и в таких более простых моделях, как линейная регрессия, но там оно не так выражено, поскольку через обучающие данные нужно провести всего лишь прямую линию. Чем богаче набор моделирующих функций, тем больше риск переобучения. (На рисунке показать типичные проявления переобучения, пример с распознаванием танков).
Естественное желание состоит в том, чтобы увеличивать число примеров
в обучающем множестве. Чем их больше, тем более представительны данные.
Как и в любом физическом измерении, увеличение числа наблюдений уменьшает шум. Если имеется несколько измерений одного объекта, сеть возьмет их среднее значение, и это лучше, чем точно следовать одному единственному зашумленному значению.
Однако на практике и, особенно, в приложениях к задачам биологии
и медицины невозможно получить такое количество наблюдений, которое было
бы желательно в свете положений статистики. Число необходимых примеров резко растет с увеличением сложности моделируемой функции и повышением уровня шума. Более того, доступные нам данные могут иметь все меньшее отношение
к делу. Наконец, могут существовать физические ограничения на размер базы данных, например, объем памяти или недопустимо большое время обучения.
Другой способ избавиться от переобучения заключается в том, чтобы измерить ошибку сети на некотором множестве примеров из базы данных,
не включенных в обучающее множество, – контрольном множестве. Для этого
из обучающего множества случайным образом может быть выделено некоторое множество примеров. При этом «обучение» сети производят по прежнему
на обучающем множестве, контрольное же множество используют лишь
для определения момента переобучения. В случае, когда функция ошибок
на обучающем множестве продолжает уменьшаться, а на контрольном
не изменяется либо увеличивается, обучение прекращается. Если же объем выборки не позволяет выделить контрольное множество, то может быть использован метод перекрестного подтверждения.
Еще один способ избежать переобучения состоит в том, чтобы ограничить совокупность функций отображения, реализуемых сетью. Методы такого типа называются регуляризацией. Например, в функцию ошибок может быть добавлено штрафное слагаемое, подавляющее резкие скачки отображающей функции
(на математическом языке – большие значения ее второй производной). Алгоритм обучения изменяется таким образом, чтобы учитывался этот штраф.
2. Практическая часть
2.1. Задание
Задача на определение затрат на свадьбу
В задаче требуется определить, сколько денег будет потрачено на свадьбу.
Входные сигналы:
а) количество гостей (маленькое, среднее, большое);
б) наличие приглашенных артистов (много артистов, мало артистов);
в) количество блюд на праздничном столе (много блюд, среднее количество блюд, мало блюд).
Выходной сигнал: затраты на свадьбу (богатая свадьба, средняя, бедная). Правила:
1. Если количество гостей маленькое, мало приглашенных артистов, мало блюд на столе, то свадьба бедная.
2. Если среднее количество гостей, мало артистов, среднее количество блюд, то свадьба средняя.
3. Если много приглашенных гостей, много приглашенных артистов, много блюд на столе, то свадьба богатая.
2.2. Решение
Запустим программу и откроем редактор системы нечеткого вывода FuzzyLogic. Для этого можно ввести команду fuzzy в командной строке программы, в результате чего появляется редактор системы нечёткого вывода (рис. 2.1).
Рис. 2.1 – Окно редактора системы нечёткого ввода
По умолчанию установлен алгоритм вывода mamdanni. Альтернативой к нему является алгоритм sugeno, оставим первый вариант.
В соответствии с условием определяем входные и выходные переменные
(рис. 2.2).
Рис. 2.2 – Добавление входных переменных
Добавляем три входные переменные в соответствии с условием задания
и осуществляем их переименование, в результате чего получается картина окна редактора нечёткого ввода, изображённая на рис. 2.3.
Рис. 2.3 – Окно редактора нечёткого ввода после определения количества входных переменных
Приступим к редактированию входных и выходных переменных двойным щелчком левой кнопки мыши на каждой из них (рис. 2.4 – 2.7).
Рис. 2.4 – Редактирование входной переменной «гости»
Рис. 2.5 – Редактирование входной переменной «артисты»
Рис. 2.6 – Редактирование входной переменной «блюда»
Рис. 2.7 – Редактирование выходной переменной «затраты»
Далее переходим к заданию правил. Для этого дважды щелкнем левой кнопкой мыши по центру проекта. Введем все правила, заданные в условии,
в результате чего получаем картину, изображённую на рис. 2.8.
Рис. 2.8 – Правила модели
Выполнив все эти этапы, мы создали нечеткую систему определения затрат на свадьбу.
Переходим к этапу тестирования. Для этого мы откроем Rule-Viewer (рис. 2.9).
Рис. 2.9 – Окно Rule-Viewer
Проведём моделирование с параметрами входа, представленными на рис. 2.10.
Рис. 2.10 – Окно Rule-Viewer с введёнными параметрами в строке input
Как видно из рис. 2.10 при параметрах входа:
Гости = 25
Артисты = 7
Блюда = 23
Выходные параметры:
Затраты: 1,12 млн.
Таким образом, получили, что затраты на свадьбу с указанными выше параметрами являются достаточно большими. По результатам моделирования можно путём варьирования значения трёх входных параметров выйти на требуемый предел затрат на свадьбу.
Перейдем к просмотру общей зависимости путем рассмотрения поверхности отклика, для этого запустим View-Surface (рис. 2.11).
Рис. 2.11 – Окно трёхмерного графика зависимости выходной переменной
от трёх входных (одновременно можно наблюдать вид графика от двух параметров)
Заключение.
В процессе выполнения работы были изучены вопросы об истории развития нейронных сетей и аналогии нейронных сетей с мозгом и биологическим нейроном. Было изучено понятие искусственного нейрона и виды искусственных нейронных сетей. Также рассмотрено обучение нейронных сетей.
В результате выполнения практической части курсовой работы была создана модель нечёткой работы для заданного объекта: затрат на проведение свадьбы
на основе трёх входных параметров. Предложена и реализована в пакете MATLAB нечеткая модель управления затратами на свадьбу.
Список используемых источников
- Барский А. Б. Логические нейронные сети; Интернет-университет информационных технологий, Бином. Лаборатория знаний - Москва, 2007. - 352 c.
- Бочарников В.П. Fuzzy – Технология: математические основы практика моделирования в экономике. – СПб., 2001.
- Галушкин А. И. Нейронные сети. Основы теории. – М.: Горячая Линия – Телеком, 2012.
- Дьяконов В. П. MATLAB. Полный самоучитель; ДМК Пресс - Москва, 2010. - 768 c.
- Круглов В.В., Дли М.И., Голунов Р.Ю. Нечеткая логика и искусственные нейронные сети. – М.: Wings Comics – Москва, 2001.
- Редько В.Г. Эволюция, нейронные сети, интеллект. Модели и концепции эволюционной кибернетики. – М.: Либроком, 2013.
- Тарасян В. С. Пакет Fuzzy Logic Toolbox for Matlab : учеб, пособие /
В. С. Тарасян. – Екатеринбург: Изд-во УрГУПС, 2013. - Хайкин С. Нейронные сети: полный курс. – М.: Вильямс, 2006.
- Штовба С.Д. Проектирование нечётких систем средствами Matlab. –
М.: Горячая линия – Телеком, 2007.