ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 14.06.2023

Просмотров: 270

Скачиваний: 5

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

где и - соответственно «эталонное» и действительное значение выходного сигнала j – го блока для p – й обучающей пары нейронов вход-выход.

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

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

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

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

5.2 Обучение без учителя


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

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

wij(t+1)=wij(t)+a * yi[n-1] * yj[n]

где yi[n-1] выходное значение нейрона i слоя n-1, yj[n] выходное значение нейрона j слоя n, wij(t) и wij(t-1) весовой коэффициент синапса, соединяющего эти нейроны, на итерациях t и t-1 соответственно, a - коэффициент скорости обучения.

Существует также дифференциальный метод обучения Хебба.

wij(t+1)=wij(t) + a * ( yi[n-1](t) - yi[n-1](t-1) ) * ( yj[n](t) - yj[n](t-1) )

Здесь yi[n-1](t) и yi[n-1](t-1) выходное значение нейрона i слоя n-1 соответственно на итерациях t и t-1, yj[n](t) и yj[n](t-1) то же самое для нейрона j слоя n. Как видно из формулы, сильнее всего обучаются синапсы, соединяющие те нейроны, выходы которых наиболее динамично изменились в сторону увеличения.

Алгоритм обучения с применением этих формул выглядит так:

1. При инициализации всем весовым коэффициентам присваиваются небольшие слу­чай­ные значения.

2. На входы сети подается входной образ, и сигналы возбуждения распространяются по всем слоям согласно по принципу классических прямопоточных сетей, то есть для каждого нейрона рассчитывается взвешенная сумма его входов, к которой затем применяется активационная функция нейрона, в результате чего получается его выходное значение yi(n), i=0...Mi-1, где Mi – число нейронов в слое i; n=0...N-1, а N – число слоев в сети.

3. На основании полученных выходных значений нейронов произво­дится изменение весовых коэффициентов.


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

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

Алгоритм обучения без учителя Кохонена – предусматривает подстройку синапсов на основании их значений от предыдущей итерации.

Обучение сводится к минимизации разницы между входными сигналами нейрона, поступающими с выходов нейронов предыдущего слоя yi(n‑1), и весовыми коэффициентами его синапсов.

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

Другой вариант выбора выигравшего нейрона - расчет расстояния между векторами в p-мерном пространстве, где p – размер векторов. «Побеждает» нейрон с наименьшим расстоянием.

где j – индекс нейрона в слое n, i – индекс суммирования по нейронам слоя (n-1), wij – вес синапса, соединяющего нейроны; выходы нейронов слоя (n-1) являются входными значениями для слоя n.

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

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


где xi – i-ая компонента вектора входного образа или вектора весовых коэффициентов, а n – его размерность.

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

где xi – i-ая компонента входного образа, n – общее число его компонент, α(t) – коэф­фи­ци­ент, изменяющийся в процессе обучения от нуля до единицы, в результате чего вначале на входы сети подаются практически одинаковые образы, а с течением времени они все больше сходятся к исходным. Весовые коэффициенты устанавливаются на шаге инициализации равными величине

где n – размерность вектора весов для нейронов инициализируемого слоя.

На основе рассмотренного выше метода строятся нейронные сети особого типа – так назы­ва­емые самоорганизующиеся структуры.

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

6. Применение нечеткой логики на практике

В практической части выполню решение задачи на нечеткую логику в программном комплексе MATLAB Fuzzy Logic Toolbox.

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

Для решения этой задачи выделяются три основных правила, которые должны быть реализованы в сети:

1. Если скорость движения низкая, температура воздуха низкая, то расход топлива маленький.

2. Если скорость движения средняя, температура воздуха низкая, то расход средний.


3. Если скорость высокая, температура воздуха высокая, то расход большой.

Для решения этой задачи в программном комплексе MATLAB Fuzzy Logic Toolbox:

- создадим входы и выходы

- определим функции принадлежности для нечетких переменных

- определим правила работы системы.

Открываю редактор и создаю входы и выход сети. Вызвать фаззи-систему можно выбором в меню вкладки APPS, затем Fuzzy Logic Disigner, но наиболее простой способ вызова фаззи-системы, является написание в строке функций Matlab записи «fuzzy» с последующим нажатием Enter. Открывшийся редактор (рис.6.1) позволяет создавать входы, выходы, функции принадлежности, редактировать и смотреть работу правил. По умолчанию предлагается алгоритм логического вывода madman, который я буду использовать.

Рис. 6.1 Начальное состояние редактора

В моей системе два входа скорость движения и температура окружающего воздуха. Добавляю входы в редакторе: Edit→Add Variable.. →Input. При этом в редакторе появляется новый блок с именем input2. Далее по щелчку на блок input1 изменяю его имя в графе Name на «скорость» и завершаю ввод нажатием на Enter. Аналогично меняю имя второго входа на «температура». Выходной блок назову «топливо». Присваиваю имя всей сети «Fuel» (рис. 6.2) через меню File→Export→То Workspace...

Рис 6.2 Состояние редактора после создания и переименования входных и выходных сигналов

Задаю функциии принадлежности Edit→Membership Functions... Задам и отредактирую функцию принадлежности для входа «скорость». Сначала в полях Range, Display Range устанавливаю диапазон изменения переменных [0, 120]. Задаю функцию принадлежности гаусовского вида «gaussmf» с общим числом 3. Изменяю имена функций на «низкая», «средняя» и «высокая». Для функций устанавливаю следующие значения параметров «низкая» - Params [25 0], «средняя» Params [25 60], а для «высокая» - Params [25 120].

Рис. 6.3 Редактирование функций принадлежности входного сигнала «скорость»

Далее редактирую функции принадлежности для входа «температура». Сделаю диапазон Range, Display Range [-30 +40] Создаю 2 функции принадлежности трапецеидальной формы «tramf» с соответствующими параметрами. Функции будут «низкая» и «высокая». Для функции «низкая» устанавливаю следующие с значения параметров Рагаms [-30 -30 15 20] и для функции «высокая» Рагаms [22 27 40 40].

Рис. 6.4 Редактирование функций принадлежности входного сигнала «температура»