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

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    1,69 Мб
  • Опубликовано:
    2016-09-30
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

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

Введение

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

Множество исследований 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.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

.1 Структура сети

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

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

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

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

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

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

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

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

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

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


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

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

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


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

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


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

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

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

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


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

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


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

 - количество термов переменной  (количество нечетких разбиений лингвистической переменной . Структура инициализируется согласно принципу построение полной базы правил, поэтому их количество во втором слое определяется как . Входами же узлов правил является одна возможная комбинация входных термов. Изначально соединены все узлы 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, удовлетворяющее всем этим правилам, то оно заменяется единственным элементом (Рис. 2.3).

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

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

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

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

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


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

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


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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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) были получены следующие результаты:


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

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

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

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

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

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

(а)

(б)

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

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

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

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

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

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

·       

Заключение

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

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

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

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

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

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.

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

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

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

. Ярушкина Н.Г. Основы теории нечётких и гибридных систем, М.: Финансы и статистика, 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)

. 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

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

         0       0.3048        39.6  0.00310138         123.689

         0       0.3048        39.6  0.00310138         121.399

         0       0.3048        39.6  0.00310138         120.319

         0       0.3048        39.6  0.00310138         119.229

         0       0.3048        39.6  0.00310138         117.789

         0       0.3048        39.6  0.00310138         116.229

         0       0.3048        39.6  0.00310138         114.779

         0       0.3048        39.6  0.00310138         112.139

         1.5    0.3048        71.3  0.00336729         109.222

         1.5    0.3048        71.3  0.00336729         106.582

         1.5    0.3048        39.6  0.00392107         121.851

         1.5    0.3048        39.6  0.00392107         124.001

         1.5    0.3048        39.6  0.00392107         126.661

         1.5    0.3048        39.6  0.00392107         128.311

         1.5    0.3048        39.6  0.00392107         128.831

         3       0.3048        55.5  0.00452492         118.689

         3       0.3048        55.5  0.00452492         117.309

         3       0.3048        55.5  0.00452492         115.679

         3       0.3048        55.5  0.00452492         113.799

         3       0.3048        55.5  0.00452492         112.169

         3       0.3048        39.6  0.00495741         123.312

         3       0.3048        39.6  0.00495741         125.472

         3       0.3048        39.6  0.00495741         127.632

         0       0.2286        31.7  0.0027238  120.595

         0       0.2286        31.7  0.0027238  123.635

         0       0.2286        31.7  0.0027238  126.675

         0       0.2286        31.7  0.0027238  129.465

         0       0.2286        31.7  0.0027238  130.725

         0       0.2286        31.7  0.0027238  130.595

         0       0.2286        31.7  0.0027238  128.805

         5.3    0.2286        71.3  0.0051942  111.350

         5.3    0.2286        39.6  0.00614329         127.011

         5.3    0.2286        39.6  0.00614329         129.691

         5.3    0.2286        39.6  0.00614329         131.221

         5.3    0.2286        39.6  0.00614329         132.251

         5.3    0.2286        39.6  0.00614329         132.011

         7.3    0.2286        31.7  0.0132672  130.239

         7.3    0.2286        31.7  0.0132672  130.269

         7.3    0.2286        31.7  0.0132672  128.169

         7.3    0.2286        31.7  0.0132672  126.189

         7.3    0.2286        31.7  0.0132672  123.209

         7.3    0.2286        31.7  0.0132672  119.099

         7.3    0.2286        31.7  0.0132672  120.509

         0       0.1524        39.6  0.00193287         123.453

         0       0.1524        39.6  0.00193287         121.313

         0       0.1524        39.6  0.00193287         120.553

         0       0.1524        39.6  0.00193287         115.413

         0       0.1524        31.7  0.00209405         121.617

         0       0.1524        31.7  0.00209405         125.997

         5.4    0.1524        55.5  0.00433288         121.587

         5.4    0.1524        55.5  0.00433288         119.737

         5.4    0.1524        55.5  0.00433288         118.757

         5.4    0.1524        55.5  0.00433288         117.287

         5.4    0.1524        55.5  0.00433288         114.927

         5.4    0.1524        39.6  0.00485029         125.347

         5.4    0.1524        39.6  0.00485029         127.637

         5.4    0.1524        39.6  0.00485029         129.937

         12.6  0.1524        39.6  0.0584113  115.910

         12.6  0.1524        39.6  0.0584113  114.900

         12.6  0.1524        39.6  0.0584113  116.550

         12.6  0.1524        39.6  0.0584113  116.560

Приложение 2

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

function paramreg()

%тестовые данныеoutputNuminputNumcxcydxdytxty=0;=dlmread('airfoiltrain.dat');=in';long=dlmread('airfoiltest.dat');=intest';=size(x);=sz(1);=1; %ввод с клавиатуры=varNum-outputNum;=sz(2); %количество тестовых пример

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

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

%начальный выбор центровi=1:inputNum

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

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

% %настройка центров.=0;i=1:dataNum*3 %определяет тестовый пример

l=0.6-0.02*(i-1);l<0.02 l=0.02; end=rem(i,dataNum);i==0 i=dataNum; endi==1 g=0; end

%произвольный выбор данных=randi(dataNum);

while isempty(find(g==gg))==0=randi(dataNum);(1,i)=gg;

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

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

[~,kmin]=min(v);=cx(k,kmin);(k,kmin)=cx(k,kmin)+l*(x(k,gg)-cx(k,kmin));(abs(m-cx(k,kmin))<0.01)=pp+1;pp=0;pp==inputNum*3 break; end=abs(cy(1,:)-x(1+inputNum,gg));

[~,kmin]=min(v);(1,kmin)=cy(1,kmin)+l*(x(inputNum+1,gg)-cy(1,kmin));

%настройка ширины=zeros(inputNum,max(mfNum(1:inputNum)));=zeros(outputNum,max(mfNum(inputNum+1:inputNum+outputNum)));

h1=2; %параметр перекрытияk=1:inputNum %определяет настраиваемую переменную (x1,x2,...)j=1:tx(1,k)=abs(cx(k,1:tx(1,k))-cx(k,j));(:,j)=[];(k,j)=min(v)/h1;=2; %параметр перекрытияj=1:ty=abs(cy(1,1:ty)-cy(1,j));(:,j)=[];(1,j)=min(v)/h2;

end

%НАСТРОЙКА ВЕСОВ=prod(tx'); %подсчет количества правил

%начальный выбор весов=rand(rulesNum,sum(ty));=rem(w1,0.33);k=1:dataNum*5 %проход по всем обучающим векторам

l=0.5-0.02*(k-1);l<0.02 l=0.02; end=rem(k,dataNum);k==0 k=dataNum; endk==1 g=0; end

%произвольный выбор данных=randi(dataNum);

while isempty(find(g==gg))==0=randi(dataNum);(1,k)=gg;=layer1(x(1:inputNum,gg)) ;=layer2(l1);=layer3Down(x(1+inputNum,gg)); %СЛОЙ 3 (фп выходных переменных)=zeros(rulesNum,sum(ty));i=1:rulesNumj=1:ty(i,j)=l3(1,j)*(l2(1,i)-w(i,j));(i,j)=w(i,j)+l*dw(i,j);

end

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

for i=1:rulesNum

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

end

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

%рассчитываем выход сети для каждого входного примера('BP')=0.2;k=1:dataNum*4 %проход по всем обучающим векторам по порядку

h=h-0.005*(k-1);h<0.005 h=0.005; end=rem(k,8);(k==0) k=dataNum; end;

k;k==1 g=0; end

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

gg=randi(dataNum);isempty(find(g==gg))==0=randi(dataNum);(1,i)=gg;;=layer1(x(1:inputNum,gg));;=layer2(l1);;=layer3Up(ty,l2,w);

l4=layer4(l3);;

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

%слой 4 (настройка параметров фп выходов)_du=0;_cdu=0;i=1:ty %посмотреть для нескольких выходов

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

end

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

cy(1,i)=cy(1,i)+h*(x(inputNum+1,gg)-l4)*( l3(1,i)*dy(1,i)/summa_du);(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);

%параметры фп входов_du=zeros(1,inputNum);_cdu=zeros(1,inputNum);i=1:inputNum %!j=1:tx(1,i) %!_du(1,i)=summax_du(1,i)+dx(i,j)*l1(i,j);_cdu(1,i)=summax_cdu(1,i)+cx(i,j)*dx(i,j)*l1(i,j);_du;_cdu;=[];=zeros(1,length(l2));i=1:ty=l2'.*w(1:end,i);=find(pp==l3(1,i));(f~=0)=f';ff=1:length(fff)(1,length(ft)+1)=f(ff);(1,f(ff))=1;i=1:inputNumj=1:tx(1,i)=zeros(1,length(l2));=0;ff=1:length(ft)(l1(i,j)==l2(ft(1,ff)))=q1+1;=(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);(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);(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));=0;=0;

%ТЕСТii=1:length(testdata)=layer1(testdata(1:inputNum,ii));=layer2(l1);=layer3Up(ty(1,1),l2,w);=layer4(l3);=S+l4;(1,ii)=testdata(inputNum+1,ii)-l4;=error11+error1(1,ii)^2;=sqrt(error11/length(testdata))=S/dataNum=error11/Sq=layer1(xval)inputNumcxdxtxi=1:inputNumj=1:tx(1,i)(i,j)=exp(-((xval(i)-cx(i,j))^2)/(2*dx(i,j)^2));

end

Похожие работы на - Нейро-нечеткие сети

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!