Нейро-нечеткие сети

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

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 30.09.2016
Размер файла 2,6 M

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

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

Размещено на http://www.allbest.ru/

Введение

интеллектуальный логический программирование

Множество исследований 90-х годов были посвящены гибридизации интеллектуальных систем. Под интеллектуальной системой понимают техническую или программную систему, решающую задачи, которые традиционно считаются творческими и принадлежат конкретной предметной области, знания о которой хранятся в памяти такой системы. Группа наук, объединяемых под названием «искусственный интеллект», изучает такие системы. В результате объединения различных технологий искусственного интеллекта появился специальный термин - "мягкие вычисления" (soft computing). Для сложных технических систем, систем экономического планирования, систем принятия решений характерна ситуация, когда их определение недостаточно полно и невозможно получить полную информацию. Сущностью мягких вычислений является то, что в отличие от жестких традиционных вычислений они стремятся приспособиться к всеобъемлющей неточности реального мира. Мягкие вычисления являются объединением различных направлений, таких как искусственные нейронные сети, нечеткая логика, эволюционные алгоритмы и вероятностные рассуждения. Они используются в различных комбинациях, в которых происходит взаимное усиление достоинств систем и нивелирование недостатков, что позволяет более эффективно решать поставленные задачи. Таким образом, исследование гибридных систем является актуальной и перспективной задачей.

Целью данной работы является исследование одной из таких комбинаций - нечетких нейронных сетей. На данный момент рассмотрены различные модели таких систем, по-разному объединяющие эти технологии. Наиболее известная из них рассмотрена в работе. Однако практически реализованных нечетких нейронных сетей очень мало. Отдельной задачей является изучение нечеткого контроллера, основанного на нейронной сети (Neural-network-based fuzzy logic controller (NNFLC)) и его программная реализация. Его строение и способ обучения имеют свои специфические особенности, отличающие систему от других сетей такого типа. Система NNFLC рассматривалась в статьях [1, 2, 3]. В работе [2] демонстрируется аппаратная реализация контроллера.

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

1. Обзор нечетких нейронных сетей

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

1.1 Нейронные сети

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

Более того, сети с большим количеством межнейронных соединений приобретают отказоустойчивость к небольшим повреждениям нейронов или связей. В этой ситуации в силу распределенности информации по всей сети также возможно получение результатов. Нейронные сети широко используются в задачах распознавания образов, аппроксимации, оптимизации, классификации и других [5]. Однако не существует четкого алгоритма для расчета необходимого количества слоев сети и количества нейронов в каждом слое, что приводит к проектированию сети скорее на интуиции, чем на существующих закономерностях. Также знания, накопленные сетью, распределяются между всеми ее элементами, что делает невозможным представление функциональной зависимости между входом и выходом исследуемого объекта в явном виде [6].

Этих недостатков лишены системы управления с нечеткой логикой.

1.2 Нечеткие системы

В основе нечеткой логики лежит понятие нечеткого множества, которое является попыткой математической формализации неточной нечеткой информации для построения математических моделей. Идеей нечеткого множества является возможность элементов в какой-то степени принадлежать множеству. Оно состоит из пар: элемент и степень принадлежности элемента, которая определяется функцией принадлежности к множеству и может принимать значения от 0 до 1. Для описания нечетких множеств вводится понятие лингвистической переменной. Ее значениями могут быть слова или словосочетания некоторого языка. Для человека является более привычным описывать значения переменных словами, а не числами. Зависимость между элементами нечетких множеств задается с помощью нечеткой базы знаний, которая состоит из правил <Если-То>. На основе этих правил система, основанная на нечеткой логике, принимает решения. Нечеткое моделирование предоставляет эффективные средства и методы для изучения систем в ситуациях, когда [7]:

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

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

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

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

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

1.3 Нечеткие нейронные сети

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

В нечетких нейронных сетях вывод осуществляется на основе аппарата нечеткой логики, а параметры функций принадлежности настраиваются при помощи алгоритмов обучения нейронной сети. Модуль нечеткого управления представляется в форме многослойной сети, в которой слои выполняют функции элементов системы нечеткого вывода (Рис. 1.1). Нечеткая нейронная сеть, как правило, состоит из четырех слоев [7]:

· слоя фазификации входных переменных (введение нечеткости);

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

· слоя дефаззификации (приведение к четкости).

Для подбора параметров таких сетей применим метод обратного распространения ошибки.

Рис.1.1 Система нечеткого логического вывода

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

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

И-нейрон - нейрон, в котором умножение веса w на вход x моделируется конормой S(w,x), а сложение нормой T(w,x). Если нейрон имеет два входа, то справедливо:

ИЛИ-нейрон - нейрон, в котором умножение веса и входа определяется нормой T(w,x), а сложение - конормой S(w,x) [4]:

Норма T и конорма S могут представляться различными функциями, и каждой норме соответствует своя конорма. Например:

· , ;

· , ;

· , ;

Если в качестве нормы выбрана операция min, а конормы max, то

И-нейрон (Рис 1.2 а) .

ИЛИ-нейрон (Рис 1.2 б) .

Рис 1.2. а) И-нейрон, б) ИЛИ-нейрон

Можно выделить класс систем, которые используют нейросетевую технологию в качестве инструмента для реализации различных компонентов нечетких продукционных моделей - моделей, которые представляют собой согласованное множество нечетких продукционных правил вида "ЕСЛИ А, ТО В", предназначенное для определения степени истинности заключений нечетких продукционных правил [7]. Эти системы, в свою очередь, могут подразделяться по способу интеграции нечетких продукционных моделей с нейронными сетями на следующие:

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

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

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

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

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

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

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

· введение нечеткости в структуру путем приписывания нечеткости значениям обучающих примеров и получением выходов в терминах нечеткой логики

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

· изменение характеристик нейронов так, чтобы они выполняли операции теории нечетких множеств

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

1.4 Система ANFIS

ANFIS (Adaptive Network-based Fuzzy Inference System) - адаптивная сетевая нечеткая система вывода, обучаемая классическими градиентными алгоритмами. Была предложена Янгом (Jang) в 1992 г. Эта сеть является универсальным аппроксиматором.

Она состоит из пяти слоев (Рис. 1.3):

· на вход подаются значения и вычисляются значения функций принадлежности входных переменных;

· второй слой выполняет агрегирование значений предпосылок для каждого правила в соответствии с выбранной Т-нормой;

· в третьем слое выполняется нормализация значений, поступивших ему на вход;

· четвертый слой формирует значение выхода;

· последний слой выполняет дефаззификацию.

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

Рис. 1.3. Структура ANFIS

1.5 Система NNFLC

NNFLC (Neural-Network-Based Fuzzy Logic Control System(Controller)) - модель, которая привносит в традиционный нечеткий контроллер структуру нейронной сети и ее способность к обучению, и в то же время сохраняет в себе идею человеческих рассуждений и вывода систем нечеткой логики.

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

Она представлена многослойной сетью прямого распространения сигнала.

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

В данной главе были выполнены следующие задачи:

· изучена теоретическая основа гибридных нечетких нейронных сетей;

· исследованы возможные способы интеграции нечеткой логики и нейронных сетей;

· рассмотрена распространенная сеть ANFIS, которая имеет реализацию в среде MATLAB;

· введено общее описание изучаемой системы NNFLC.

2. Система NNFLC

2.1 Структура сети

Сеть состоит из 4 слоев (Рис. 2.1):

· Узлы первого слоя выступают в качестве функций принадлежности входных переменных.

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

· Третий - функции принадлежности выходных переменных.

· Четвертый слой формирует выход.

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

Рис 2.1. Структура NNFLC

Опишем конкретнее задачи узлов каждого слоя:

1 слой (входные термы):

Выполняется раздельная фаззификация каждой переменной (i=1..n) в соответствии с функцией принадлежности. Функции принадлежности бывают разных видов, в данной работе она представлена функцией Гаусса

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

2 слой (правила):

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

3 слой (выходные термы):

В рабочем режиме выполняет нечеткую операцию ИЛИ для комбинации правил с одинаковыми следствиями. Для этого выбрана функция максимума:

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

4 слой (выходные лингвистические значения):

Также выполняет разные функции в режиме обучения и работы

В рабочем режиме выполняет дефаззификацию методом центра тяжести

где , а - параметры функций принадлежности выходных переменных.

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

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

- количество термов переменной (количество нечетких разбиений лингвистической переменной . Структура инициализируется согласно принципу построение полной базы правил, поэтому их количество во втором слое определяется как . Входами же узлов правил является одна возможная комбинация входных термов. Изначально соединены все узлы 2 и 3 слоя, это значит, что следствия правил еще не определены. После обучения в качестве следствия правила будет выбран один узел.

2.2 Обучение

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

2.2.1 Самоорганизация

На данном этапе ставится следующая задача:

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

На этой стадии сеть работает в две стороны, то есть обучающие входные и выходные данные подаются сети с двух сторон.

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

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

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

Для каждого набора данных подбираем ближайший центр относительно применяемой метрики и корректируем его в соответствии с алгоритмом победителя (WTA - Winner Takes All). Значение остальных центров не меняется [2].

где - монотонно убывающий уровень обучения, k=.

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

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

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

где r - параметр перекрытия.

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

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

Рис. 2.2 Подбор подходящего следствия

Алгоритм победителя ищет матрицу весов, которая оценивает связь левой и правой частей правил Обозначим за вес связи между i-ым элементом второго слоя и j-ым элементом третьего.

,

где .

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

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

1) заключение правил одинаково;

2) есть одинаковые условия;

3) некоторые условия правил образуют полное множество названий значения какой-либо лингвистической переменной.

Если существует множество элементов слоя 2, удовлетворяющее всем этим правилам, то оно заменяется единственным элементом (Рис. 2.3).

Рис. 2.3 Объединение правил

2.2.2 Обучение с учителем

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

Задача данной фазы формулируется так:

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

Для обучения с учителем используется метод обратного распространения ошибки. Цель - уменьшить функцию ошибки

где - желаемый выход, - текущий выход.

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

где - настраиваемый параметр, - скорость обучения

В результате дифференцирования получим

4 слой: параметры - центры и ширины функций принадлежности выходного значения

Далее до 1 слоя распространяется ошибка . Здесь параметры - центры и ширины функций принадлежности входных данных.

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

2.3 Работа с сетью

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

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

2.4 Преимущества системы

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

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

Во второй главе на основании изученных статей и работ:

· изучено строение и структура сети, количество слоев и нейронов в них, функции слоев;

· выявлены особенности обучения гибридной сети и отличие этого процесса от нейронных сетей, а также предоставлено полное описание процесса;

· изложено описание работы сети после обучения.

3.Программная реализация

3.1 Выбор среды программирования

интеллектуальный логический программирование

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

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

Для разработки нейронных сетей применяют такие программы как NeuroPro, NeuralBase, STATISTICA Automated Neural Networks и другие.

Количество сред для работы с обеими парадигмами значительно меньше. Приведем описание самых распространенных.

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

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

В MATLAB встроены различные пакеты и наборы инструментов, расширяющие его функциональность. Они представлены коллекцией функций на языке MATLAB для решения определенного класса задач. В частности здесь присутствуют наборы инструментов для работы с нейронными сетями (Neural Network Toolbox) и нечеткой логикой (Fuzzy Logic Toolbox). Таким образом для дополнения функциональных возможностей в данную среду могут быть встроены дополнительные разработанные пакеты.

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

3.2 Программная реализация

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

На входе имеется набор обучающих данных вида (), где n1 - количество входных переменных, n2 - количество выходных переменных, k=1..K - номер примера.

Этап 1. Настройка параметров

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

где - монотонно убывающий уровень обучения, k=.

·

где r - параметр перекрытия.

Этап 2. Нахождение базы правил

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

,

где

· Для каждого правила выбираем следствие с наибольшим весом. Если все веса для данного правила очень маленькие, то это правило удаляется.

· Комбинация схожих правил.

Этап 3. Обучение с учителем

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

Рис. 3.1. Блок-схема обучения

В данной главе были представлены:

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

· описание компонентов для программной реализации

4. Примеры применения системы NNFLC

4.1 Задача определения давления звука

Данные, предоставленные Национальным управлением по воздухоплаванию и исследованию космического пространства (НАСА) [9], содержат описание авиационных профилей NACA 0012 крыла летательных аппаратов различных размеров и в различных аэродинамических туннелях. При столкновении профилей с потоками воздуха возникают возмущения, которые оказывают давление на профиль, при этом их скорость распространения равна скорости звука. Исследуется зависимость этого давления при различных параметрах [10].

Входные переменные Х1 Частота (Гц) Х2 Угол атаки (є) - угол между хордой и направлением скорости набегающего потока. Хорда - это условная линия, которая соединяет две наиболее удаленные друг от друга точки профиля.X3 Длина хорды (м) Х4 Скорость потока (м/c)Х5 Толщина замещения (м). Используется для определения параметра формы пограничного слоя - слоя, непосредственно прилегающего к поверхности летательного аппарата. Выходная переменная Y Уровень давления звука (дБ).

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

В результате обучения сетей на обучающих данных и проверки результатов работы на тестовой выборке (Приложение 1) были получены следующие результаты:

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

Рис. 4.1 Результат работы ANFIS

В системе NNFLC ошибка отличается не сильно 3.4, при этом относительная погрешность составляет 4%. При тестовых значениях ошибка равна 3.6.

Таким образом ошибки двух систем не имеют сильных отличий

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

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

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

(а)

(б)

Рис. 4. 2. Изменения параметров функции принадлежности переменной y до (а) и после (б) обучения с учителем

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

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

· система показала свою работоспособность;

· отклонение в ошибках является незначительным;

· некоторые характеристики NNFLC превосходят характеристики ANFIS.

·

Заключение

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

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

2. Исследование способов интеграции этих технологий

3. Определение структуры нечеткой нейронной сети типа NNFLC, количества слоев, нейронов, способа построения, отличительных особенностей.

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

5. Программная реализация исследуемой сети в среде MATLAB.

6. Применение системы для решения практической задачи регрессии.

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

Список литературы

1. C. T. Lin and C. S. G. Lee. Neural-network-based fuzzy logic control and decision system // IEEE Trans. on Computers, Vol. C-40, No. 12. pp. 1320-1336. Dec. 1991.

2. Zhenfeng Wang, Dongming Jin, and Zhijian Li. Single-Chip Realization of a Fuzzy Logic Controller with Neural Network Structure (NNFLC) // ISMVL IEEE Computer Society, pp. 68-73, 1993

3. Бегман Ю.В. Нейросетевая экспертная система на основе прецедентов для решения проблем абонентов сотовой сети, 2009, 216 с.

4. Леоненков А.В. Нечеткое моделирование в среде MATLAB и fuzzyTECH, СПб.: БХВ-Петербург, 2005, 736c.

5] Осовский С. Нейронные сети для обработки информации, М.: Финансы и статистика, 2002, 344 с.

6. Рутковская Д., Пилиньский М., Рутковский Л. Нейронные сети, генетические алгоритмы и нечеткие системы, М.: Горячая линия - Телеком, 2006, 452 с.

7.Борисов В.В., Круглов В.В., Федулов А.С. Нечеткие модели и сети, М.: Горячая линия - Телеком, 2007, 284 с.

8. Ярушкина Н.Г. Основы теории нечётких и гибридных систем, М.: Финансы и статистика, 2004, 320 с.

9. Machine learning repository. Airfoil Self-Noise Data Set. URL: http://archive.ics.uci.edu/ml/datasets/Airfoil+Self-Noise (01.05.2016)

10. A. Tsanas, A. Xifara: 'Accurate quantitative estimation of energy performance of residential buildings using statistical machine learning tools', Energy and Buildings, Vol. 49, pp. 560-567, 2012

Приложение 1

Тестовые данные системы

2000 0 0.3048 39.6 0.00310138 123.689

2500 0 0.3048 39.6 0.00310138 121.399

3150 0 0.3048 39.6 0.00310138 120.319

4000 0 0.3048 39.6 0.00310138 119.229

5000 0 0.3048 39.6 0.00310138 117.789

6300 0 0.3048 39.6 0.00310138 116.229

8000 0 0.3048 39.6 0.00310138 114.779

10000 0 0.3048 39.6 0.00310138 112.139

12500 1.5 0.3048 71.3 0.00336729 109.222

16000 1.5 0.3048 71.3 0.00336729 106.582

315 1.5 0.3048 39.6 0.00392107 121.851

400 1.5 0.3048 39.6 0.00392107 124.001

500 1.5 0.3048 39.6 0.00392107 126.661

630 1.5 0.3048 39.6 0.00392107 128.311

800 1.5 0.3048 39.6 0.00392107 128.831

4000 3 0.3048 55.5 0.00452492 118.689

5000 3 0.3048 55.5 0.00452492 117.309

6300 3 0.3048 55.5 0.00452492 115.679

8000 3 0.3048 55.5 0.00452492 113.799

10000 3 0.3048 55.5 0.00452492 112.169

315 3 0.3048 39.6 0.00495741 123.312

400 3 0.3048 39.6 0.00495741 125.472

500 3 0.3048 39.6 0.00495741 127.632

315 0 0.2286 31.7 0.0027238 120.595

400 0 0.2286 31.7 0.0027238 123.635

500 0 0.2286 31.7 0.0027238 126.675

630 0 0.2286 31.7 0.0027238 129.465

800 0 0.2286 31.7 0.0027238 130.725

1000 0 0.2286 31.7 0.0027238 130.595

1250 0 0.2286 31.7 0.0027238 128.805

10000 5.3 0.2286 71.3 0.0051942 111.350

250 5.3 0.2286 39.6 0.00614329 127.011

315 5.3 0.2286 39.6 0.00614329 129.691

400 5.3 0.2286 39.6 0.00614329 131.221

500 5.3 0.2286 39.6 0.00614329 132.251

630 5.3 0.2286 39.6 0.00614329 132.011

250 7.3 0.2286 31.7 0.0132672 130.089

315 7.3 0.2286 31.7 0.0132672 130.239

400 7.3 0.2286 31.7 0.0132672 130.269

500 7.3 0.2286 31.7 0.0132672 128.169

630 7.3 0.2286 31.7 0.0132672 126.189

800 7.3 0.2286 31.7 0.0132672 123.209

1000 7.3 0.2286 31.7 0.0132672 119.099

1250 7.3 0.2286 31.7 0.0132672 120.509

5000 0 0.1524 39.6 0.00193287 123.453

6300 0 0.1524 39.6 0.00193287 121.313

8000 0 0.1524 39.6 0.00193287 120.553

10000 0 0.1524 39.6 0.00193287 115.413

500 0 0.1524 31.7 0.00209405 121.617

630 0 0.1524 31.7 0.00209405 125.997

3150 5.4 0.1524 55.5 0.00433288 121.587

4000 5.4 0.1524 55.5 0.00433288 119.737

5000 5.4 0.1524 55.5 0.00433288 118.757

6300 5.4 0.1524 55.5 0.00433288 117.287

8000 5.4 0.1524 55.5 0.00433288 114.927

315 5.4 0.1524 39.6 0.00485029 125.347

400 5.4 0.1524 39.6 0.00485029 127.637

500 5.4 0.1524 39.6 0.00485029 129.937

400 12.6 0.1524 39.6 0.0584113 115.910

500 12.6 0.1524 39.6 0.0584113 114.900

630 12.6 0.1524 39.6 0.0584113 116.550

800 12.6 0.1524 39.6 0.0584113 116.560

Приложение 2

Программа реализации в среде MATLAB.\

function paramreg()

%тестовые данные

global outputNum

global inputNum

global cx

global cy

global dx

global dy

global tx

global ty

tx=0;

in=dlmread('airfoiltrain.dat');

x=in';

format long

intest=dlmread('airfoiltest.dat');

testdata=intest';

sz=size(x);

varNum=sz(1);

outputNum=1; %ввод с клавиатуры

inputNum=varNum-outputNum;

dataNum=sz(2); %количество тестовых пример

mfNum=[2 2 2 2 2 4]; %Количество фп для каждой входной и выходной переменной

tx(1,1:inputNum)=mfNum(1,1:inputNum);

ty=1;

cx=zeros(inputNum,max(mfNum(1:inputNum)));

cy=zeros(outputNum,max(mfNum(inputNum+1:inputNum+outputNum)));

%начальный выбор центров

for i=1:inputNum

[~,q]=kmeans(x(i,1:end)',tx(1,i));

cx(i,1:tx(1,i))=sort(q);

end

[~,q]=kmeans(x(i+inputNum,1:end)',ty(1,i));

cy(i,1:ty(1,i))=sort(q);

% %настройка центров.

pp=0;

for i=1:dataNum*3 %определяет тестовый пример

l=0.6-0.02*(i-1);

if l<0.02 l=0.02; end

i=rem(i,dataNum);

if i==0 i=dataNum; end

if i==1 g=0; end

%произвольный выбор данных

gg=randi(dataNum);

while isempty(find(g==gg))==0

gg=randi(dataNum);

end

g(1,i)=gg;

for k=1:inputNum %определяет настраиваемую переменную

x(k,gg);

v=abs(cx(k,1:tx(1,k))-x(k,gg));

[~,kmin]=min(v);

m=cx(k,kmin);

cx(k,kmin)=cx(k,kmin)+l*(x(k,gg)-cx(k,kmin));

if (abs(m-cx(k,kmin))<0.01)

pp=pp+1;

else pp=0;

end

if pp==inputNum*3 break; end

end

v=abs(cy(1,:)-x(1+inputNum,gg));

[~,kmin]=min(v);

cy(1,kmin)=cy(1,kmin)+l*(x(inputNum+1,gg)-cy(1,kmin));

end

%настройка ширины

dx=zeros(inputNum,max(mfNum(1:inputNum)));

dy=zeros(outputNum,max(mfNum(inputNum+1:inputNum+outputNum)));

h1=2; %параметр перекрытия

for k=1:inputNum %определяет настраиваемую переменную (x1,x2,...)

for j=1:tx(1,k)

v=abs(cx(k,1:tx(1,k))-cx(k,j));

v(:,j)=[];

dx(k,j)=min(v)/h1;

end

end

h2=2; %параметр перекрытия

for j=1:ty

v=abs(cy(1,1:ty)-cy(1,j));

v(:,j)=[];

dy(1,j)=min(v)/h2;

end

%НАСТРОЙКА ВЕСОВ

rulesNum=prod(tx'); %подсчет количества правил

%начальный выбор весов

w1=rand(rulesNum,sum(ty));

w=rem(w1,0.33);

for k=1:dataNum*5 %проход по всем обучающим векторам

l=0.5-0.02*(k-1);

if l<0.02 l=0.02; end

k=rem(k,dataNum);

if k==0 k=dataNum; end

if k==1 g=0; end

%произвольный выбор данных

gg=randi(dataNum);

while isempty(find(g==gg))==0

gg=randi(dataNum);

end

g(1,k)=gg;

l1=layer1(x(1:inputNum,gg)) ;

l2=layer2(l1);

l3=layer3Down(x(1+inputNum,gg)); %СЛОЙ 3 (фп выходных переменных)

dw=zeros(rulesNum,sum(ty));

for i=1:rulesNum

for j=1:ty

dw(i,j)=l3(1,j)*(l2(1,i)-w(i,j));

w(i,j)=w(i,j)+l*dw(i,j);

end

end

end

%оставляем связи с максимальным весом

for i=1:rulesNum

[~,kmax]=max(w(i,1:end));

w(i,1:end)=0;

w(i,kmax)=1;

end

%обратное распространение ошибки

%рассчитываем выход сети для каждого входного примера

disp('BP')

h=0.2;

for k=1:dataNum*4 %проход по всем обучающим векторам по порядку

h=h-0.005*(k-1);

if h<0.005 h=0.005; end

k=rem(k,8);

if (k==0) k=dataNum; end;

k;

if k==1 g=0; end

%произвольный выбор данных

gg=randi(dataNum);

while isempty(find(g==gg))==0

gg=randi(dataNum);

end

g(1,i)=gg;

gg;

l1=layer1(x(1:inputNum,gg));

l1;

l2=layer2(l1);

l2;

l3=layer3Up(ty,l2,w);

l4=layer4(l3);

l3;

%обратное распространение

%слой 4 (настройка параметров фп выходов)

summa_du=0;

summa_cdu=0;

for i=1:ty %посмотреть для нескольких выходов

summa_du=summa_du+l3(1,i)*dy(1,i);

summa_cdu=summa_cdu+cy(1,i)*l3(1,i)*dy(1,i);

end

%посмотреть для нескольких выходов

for i=1:ty

cy(1,i)=cy(1,i)+h*(x(inputNum+1,gg)-l4)*( l3(1,i)*dy(1,i)/summa_du);

dy(1,i)=dy(1,i)+h*(x(inputNum+1,gg)-l4)*((cy(1,i)*l3(1,i)*summa_du)-summa_cdu*l3(1,i))/(summa_du^2);

end

%параметры фп входов

summax_du=zeros(1,inputNum);

summax_cdu=zeros(1,inputNum);

for i=1:inputNum %!

for j=1:tx(1,i) %!

summax_du(1,i)=summax_du(1,i)+dx(i,j)*l1(i,j);

summax_cdu(1,i)=summax_cdu(1,i)+cx(i,j)*dx(i,j)*l1(i,j);

end

end

summax_du;

summax_cdu;

ft=[];

q2=zeros(1,length(l2));

for i=1:ty

pp=l2'.*w(1:end,i);

f=find(pp==l3(1,i));

if (f~=0)

fff=f';

for ff=1:length(fff)

ft(1,length(ft)+1)=f(ff);

q2(1,f(ff))=1;

end

end

end

for i=1:inputNum

for j=1:tx(1,i)

q1=zeros(1,length(l2));

q1=0;

for ff=1:length(ft)

if (l1(i,j)==l2(ft(1,ff)))

q1=q1+1;

end

end

sigma=(x(inputNum+1,gg)-l4)*(cx(i,j)*dx(i,j)*summax_du(1,i)-summax_cdu(1,i)*dx(i,j))/(summax_du(1,i)^2);

cx(i,j)=cx(i,j)-h*sum(q1.*q2)*sigma*exp(-((x(i,gg)-cx(i,j))^2)/(2*dx(i,j)^2))*((x(i,gg)-cx(i,j))/dx(i,j)^2);

dx(i,j)=dx(i,j)-h*sum(q1.*q2)*sigma*exp(-((x(i,gg)-cx(i,j))^2)/(2*dx(i,j)^2))*((x(i,gg)-cx(i,j))^2/(dx(i,j)^3));

end

end

end

error11=0;

S=0;

%ТЕСТ

for ii=1:length(testdata)

l1=layer1(testdata(1:inputNum,ii));

l2=layer2(l1);

l3=layer3Up(ty(1,1),l2,w);

l4=layer4(l3);

S=S+l4;

error1(1,ii)=testdata(inputNum+1,ii)-l4;

error11=error11+error1(1,ii)^2;

end

error11=sqrt(error11/length(testdata))

S=S/dataNum

percent=error11/S

function q=layer1(xval)

global inputNum

global cx

global dx

global tx

for i=1:inputNum

for j=1:tx(1,i)

q(i,j)=exp(-((xval(i)-cx(i,j))^2)/(2*dx(i,j)^2));

end

end

end

% СЛОЙ 2

function l2=layer2(l1)

global qq

global tx

global a

global ii

a=l1;

ii=1;

qq=[];

for val=1:tx(1,1)

recurse(a(1,val))

end

l2=qq;

end

function recurse(m)

global qq

global tx

global a

global ii

s=size(a);

ii=ii+1;

curr=a(ii,:);

for v=1:tx(1,ii)

newm=min(m,curr(1,v));

if ii==s(1,1)

qq(1,length(qq)+1)=newm;

else

recurse(newm)

end

end

ii=ii-1;

if ii==1 return; end

end

function q=layer3Down(xval)

global outputNum

global cy

global dy

global ty

for i=1:outputNum

for j=1:ty

q(i,j)=exp(-((xval(i)-cy(i,j))^2)/(2*dy(i,j)^2));

end

end

end

function q=layer3Up(Num,l2,w)

for i=1:Num

q(1,i)=max(l2'.*w(1:end,i));

end

end

function q=layer4(l3)

global outputNum

global cy

global dy

global ty

q=zeros(1,outputNum);

l41=0;l42=0;

for i=1:outputNum

for j=1:ty(1,i)

l41=l41+l3(1,j)*cy(1,j)*dy(1,j);

l42=l42+l3(1,j)*dy(1,j);

end

q(1,i)=l41/l42;

end

end

Размещено на Allbest.ru


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

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