Нейро-нечеткие сети
Интеллектуальная система как техническая или программная система, решающая задачи, которые считаются творческими и принадлежат конкретной предметной области. Анализ системы нечеткого логического вывода. Знакомство со средой программирования 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
Подобные документы
Понятие и свойства лингвистической переменной, ее разновидности. Основы теории приближенных рассуждений. Нечеткие системы логического вывода с одной и несколькими входными переменными. Принципы нечеткого моделирования, вычисление уровней истинности.
презентация [152,7 K], добавлен 29.10.2013Методы, системы, типы и способы проводимых измерений в автоматизированных системах медицинского обеспечения безопасности на транспорте. Проектирования нечеткого алгоритма предрейсовых медицинских осмотров на основе адаптивной сети нейро-нечеткого вывода.
дипломная работа [6,5 M], добавлен 06.05.2011Основные этапы систем нечеткого вывода. Правила нечетких продукций, используемые в них. Нечеткие лингвистические высказывания. Определение алгоритмов Цукамото, Ларсена, Сугено. Реализации нечеткого вывода Мамдани на примере работы уличного светофора.
курсовая работа [479,6 K], добавлен 14.07.2012Понятие интеллектуальной информационной системы. Подбор земельного участка под индивидуальное жилищное строительство в качестве предметной области. Выбор среды разработки системы, особенности ее проектирования. Анализ типичного пользователя системы.
курсовая работа [1,6 M], добавлен 18.01.2017Решение задачи аппроксимации поверхности при помощи системы нечёткого вывода. Определение входных и выходных переменных, их термы; алгоритм Сугено. Подбор функций принадлежности, построение базы правил, необходимых для связи входных и выходных переменных.
курсовая работа [1,8 M], добавлен 31.05.2014Исследование методов автоматического проектирования нечетких систем управления (НСУ). Методы автоматической настройки семантики лингвистических переменных. Искусственные нейронные сети, генетические алгоритмы. Коэволюционный алгоритм для формирования НСУ.
дипломная работа [2,3 M], добавлен 02.06.2011Назначение системы по контролю встреч с НЛО, пользователи. Главные задачи администратора. Агент по работе с паранормальными явлениями. Диаграмма вариантов использования для роли "Директор". Процесс авторизации в системе. Общий анализ предметной области.
контрольная работа [123,6 K], добавлен 05.01.2013Обзор методов и подходов решения поставленной задачи аппроксимации логического вывода экспертной системы. Разработка и описание метода сетевого оператора для решения данной задачи. Разработка алгоритма решения. Проведение вычислительного эксперимента.
дипломная работа [1,5 M], добавлен 23.02.2015Разработка базы данных с применением выбранной модели представления знаний и системы пользовательского интерфейса. Определение системы логического вывода. Спецификация составных частей программы. Обзор основных используемых приёмов и методов обработки.
курсовая работа [765,6 K], добавлен 12.05.2013Понятия в области метрологии. Представление знаний в интеллектуальных системах. Методы описания нечетких знаний в интеллектуальных системах. Классификация интеллектуальных систем, их структурная организация. Нечеткие системы автоматического управления.
курсовая работа [768,2 K], добавлен 16.02.2015