Книга
Книга
ВВЕДЕНИЕ
Как известно, аппарат нечетких множеств и нечеткой логики уже давно (более 10 лет) с успехом применяется для решения задач, в которых исходные данные являются ненадежными и слабо формализованными. Сильные стороны такого подхода:
описание условий и метода решения задачи на языке, близком к естественному;
универсальность: согласно знаменитой теореме FAT (Fuzzy Approximation Theorem), доказанной Б. Коско (В. Kosko) в 1993 г., любая математическая система может быть аппроксимирована системой, основанной на нечеткой логике;
эффективность (связана с универсальностью), поясняемая рядом теорем, аналогичных теоремам о полноте для искусственных нейронных сетей, например, теоремой вида: для каждой вещественной непрерывной функции д, заданной на компакте U и для произвольного £ $ 0 существует нечеткая экспертная система, формирующая выходную функцию /(х) такую, что sup ||g(x) — /(х)||《% где || • || — символ принятого рас
стояния между функциями.
Вместе с тем для нечетких экспертных и управляющих систем характерны и определенные недостатки:
исходный набор постулируемых нечетких правил формулируется экспертом-человеком и может оказаться неполным или противоречивым;
вид и параметры функций принадлежности, описывающих входные и выходные переменные системы, выбираются субъективно и могут оказаться не вполне отражающими реальную действительность.
Для устранения, по крайней мере, частично, указанных недостатков рядом авторов было предложено выполнять нечеткие экспертные и управляющие системы адаптивными — корректируя, по мере работы системы, и правила и параметры функций принадлежности. Среди нескольких вариантов такой адаптации одним из самых удачных, по-види- мому, является метод так называемых гибридных нейронных сетей.
Гибридная нейронная сеть формально по структуре идентична многослойной нейронной сети с обучением, например, по алгоритму обратного распространения ошибки, но скрытые слои в ней соответствуют этапам функционирования нечеткой системы. Так:
1-й слой нейронов выполняет функцию введения нечеткости на основе заданных функций принадлежности входов;
2-й слой отображает совокупность нечетких правил;
3-й слой выполняет функцию приведения к четкости.
Каждый из этих слоев характеризуется набором параметров (параметрами функций принадлежности, нечетких решающих правил, активационных функций, весами связей), настройка которых производится, в сущности, так же, как для обычных нейронных сетей.
В книге рассмотрены теоретические аспекты составляющих подобных сетей, именно, аппарат нечеткой логики, основы теории искусственных нейронных сетей и собственно гибридных сетей применительно к задачам управления и принятия решений в условиях неопределенности.
Особое внимание уделено программной реализации моделей указанных подходов инструментальными средствами математической системы MATLAB 5.2/5.3.
Глава 1
НЕЧЕТКАЯ ИНФОРМАЦИЯ И ВЫВОДЫ
Пожалуй, наиболее поразительным свойством человеческого интеллекта является способность принимать правильные решения в обстановке неполной и нечеткой информации. Построение моделей приближенных рассуждений человека и использование их в компьютерных системах будущих поколений представляет сегодня одну из важнейших проблем науки.
Значительное продвижение в этом направлении сделано 30 лет тому назад профессором Калифорнийского университета (Беркли) Лотфи А. Заде (Lotfi A. Zadeh). Его работа «Fuzzy Sets», появившаяся в 1965 г. в журнале Information and Control, № 8, заложила основы моделирования интеллектуальной деятельности человека и явилась начальным толчком к развитию новой математической теории.
Л. Заде расширил классическое канторовское понятие множества, допустив, что характеристическая функция (функция принадлежности элемента множеству) может принимать любые значения в интервале [0; 1], а не только значения 0 либо 1. Такие множества были названы им нечеткими (fuzzy). Он определил также ряд операций над нечеткими множествами и предложил обобщение известных методов логического вывода modus ponens и modus tollens.
Введя затем понятие лингвистической переменной и допустив, что в качестве ее значений (термов) выступают нечеткие множества, Л. Заде создал аппарат для описания процессов интеллектуальной деятельности, включая нечеткость и неопределенность выражений.
Дальнейшие работы профессора Л. Заде и его последователей заложили прочный фундамент новой теории и создали предпосылки для внедрения методов нечеткого управления в инженерную практику.
Уже к 1990 г. по этой проблематике опубликовано свыше 10000 работ, а число исследователей достигло 10000, причем в США,
Европе и СССР по 200-300 человек, около 1000 — в Японии, 20003000 — в Индии и около 5000 исследователей в Китае.
В последние 5-7 лет началось использование новых методов и моделей в промышленности и в военном деле. Спектр приложений их широк: от управления процессом отправления и остановки поезда метрополитена, управления грузовыми лифтами и доменной печью до стиральных машин, пылесосов и СВЧ-печей. При этом нечеткие системы позволяют повысить качество продукции при уменьшении ресурсо- и энергозатрат и обеспечивают более высокую устойчивость к воздействию мешающих факторов по сравнению с традиционными системами автоматического управления.
Другими словами, новые подходы позволяют расширить сферу приложения систем автоматизации за пределы применимости классической теории. В этом плане любопытна точка зрения Л. Заде: «Я считаю, что излишнее стремление к точности стало оказывать действие, сводящее на нет теорию управления и теорию систем, так как оно приводит к тому, что исследования в этой области сосредоточиваются на тех и только тех проблемах, которые поддаются точному решению. В результате многие классы важных проблем, в которых данные, цели и ограничения являются слишком сложными или плохо определенными для того, чтобы допустить точный математический анализ, оставались и остаются в стороне по той причине, что они не поддаются математической трактовке. Для того чтобы сказать что-либо существенное для проблем подобного рода, мы должны отказаться от наших требований точности и допустить результаты, которые являются несколько размытыми или неопределенными».
Смещение центра исследований нечетких систем в сторону практических приложений привело к постановке целого ряда проблем, таких как новые архитектуры компьютеров для нечетких вычислений, элементная база нечетких компьютеров и контроллеров, инструментальные средства разработки, инженерные методы расчета и разработки нечетких систем управления и многое другое.
Математическая теория нечетких множеств позволяет описывать нечеткие понятия и знания, оперировать этими знаниями и делать нечеткие выводы.
Нечеткое управление оказывается особенно полезным, когда технологические процессы являются слишком сложными для анализа с помощью общепринятых количественных методов или когда доступные источники информации интерпретируются качественно, неточно или неопределенно. Нечеткая логика, на которой основано нечеткое управление, ближе по духу к человеческому мышлению и естественным языкам, чем традиционные логиче-
ские системы. Нечеткая логика, в основном, обеспечивает эффективные средства отображения неопределенностей и неточностей реального мира. Наличие математических средств отражения нечеткости исходной информации позволяет построить модель, адекватную реальности.
Нечеткие множества
Пусть Е — универсальное множество, ж — элемент £〉a R — некоторое свойство. Обычное (четкое) подмножество А универсального множества £〉элементы которого удовлетворяют свойству R, определяется как множество упорядоченных пар
4={从工(化)/化})
где 〃工(化)—характеристическая функция^ принимающая значение 1, если ж удовлетворяет свойству R, и 0 — в противном случае.
Нечеткое подмножество отличается от обычного тем, что для элементов х из Е нет однозначного ответа «да-нет» относительно свойства R. В связи с этим нечеткое подмножество А универсального множества Е определяется как множество упорядоченных пар
4={从工(化)/化})
где 〃工(化)—характеристическая функция принадлежности (или просто функция принадлежности), принимающая значения в некотором вполне упорядоченном множестве М (например, М = =[0, 1])・
Функция принадлежности указывает степень (или уровень) принадлежности элемента ж подмножеству А. Множество М называют множеством принадлежностей. Если М = {0, 1}, то нечеткое подмножество А может рассматриваться как обычное или четкое множество.
Примеры записи нечеткого множества
Пусть Е = {宓 1,宓2,宓з,宓4,宓5}, Af = [0, 1]; А — нечеткое множество, для которого
〃再(宓 1)二 °,3; 〃再(宓2)= 0; 〃再(宓3)= 1; 〃再(宓4)二 °,5; 〃再(宓5)= 0,9.
Тогда А можно представить в виде
А = {0,3/^1; 0/宓2; 1/宓з; 0,5/^4; 0,9/宓5},
или
a = {0,3/宓 1 + 0/宓2 + 1/宓 3 + 0,5/宓4 +0,9/宓5},
илиили宓1宓2宓3宓4宓50,3010,50,9宓1宓2宓3宓4宓50,3010,50,9
или
или
宓1
宓2
宓3
宓4
宓5
0,3
0
1
0,5
0,9
宓1
宓2
宓3
宓4
宓5
0,3
0
1
0,5
0,9
Замечание. Здесь знак «+» не является обозначением операции сложения, а имеет смысл объединения.
Основные характеристики нечетких множеств. Пусть М = =[0, 1] и А — нечеткое множество с элементами из универсального множества Е и множеством принадлежностей М.
Величина sup 〃工(化)называется высотой нечеткого множе
ства А. Нечеткое множество А нормально^ если его высота равна 1, т. е. верхняя граница его функции принадлежности равна 1 (sup〃工(化)=1). При sup〃工(化)< 1 нечеткое множество называ- хЕЕхЕЕ
ется субнормальным.
Нечеткое множество пусто^ если V化 е £ 〃工(化)=0. Непустое субнормальное множество можно нормализовать по формуле
Нечеткое множество унимодально^ если 〃工(化)=1 только на одном ж из Е.
Носителем нечеткого множества А является обычное подмножество со свойством 〃工(化)〉0, т. е. носитель А = {х/х С е 〃储)〉о}.
Элементы х Е Е^ для которых 〃工(化)=0,5, называются точками перехода множества А.
Примеры нечетких множеств
Пусть Е = {0, 1, 2, . . 10}, М = [0, 1]. Нечеткое множество «Несколько» можно определить следующим образом: «Несколько» = =0,5/3+ 0,8/4+1/5 +1/6+ 0,8/7 +0,5/8; его характеристики: высота =
=1, носитель = {3, 4, 5, 2. Пусть Е = {0, 1, 2 можно определить:
«Малый» =
3. Пусть Е = {1, 2, 3 тогда нечеткое множество
/^Молодой (^)—
6, 7, 8}, точки перехода — {3, 8}.
3, ...,〃,.. .}. Нечеткое множество «Малый»
{…⑺=1 +(硏0)2“
...,100} и соответствует понятию «Возраст», «Молодой» может быть определено с помощью
Т,宓 е [1, 25],
х > 25.
Нечеткое множество «Молодой» на универсальном множестве Е‘ = ={ИВАНОВ,ПЕТРОВ,СИДОРОВ,...} задается с помощью функции принадлежности д/Молодой(ж) на 石 二{1, 2,3,.. ., 100} (возраст), называемой по отношению к Е' функцией совместимости, при этом:
^Молодой(СИДОРОВ):= //молодой(^),
где 宓一возраст СИДОРОВА.
Пусть Е = {ЗАПОРОЖЕЦ,ЖИГУЛИ, МЕРСЕДЕС,..— множество марок автомобилей, а Е‘ = [0, сю) — универсальное множество «Стоимость», тогда на Е' мы можем определить нечеткие множества типа:
«Для бедных», «Для среднего класса», «Престижные», с функциями принадлежности вида рис. 1.1.
Имея эти функции и зная стоимости автомобилей из 石 в данный момент времени, мы тем самым определим на Е' нечеткие множества с этими же названиями.
Так, например, нечеткое множество «Для бедных», заданное на универсальном множестве Е = {ЗАПОРОЖЕЦ,ЖИГУЛИ,МЕРСЕДЕС,.. выглядит так, как показано на рис. 1.2.
Рис. 1.2. Пример задания нечеткого множества
Аналогично можно определить нечеткое множество «Скоростные», «Средние», «Тихоходные» и т. д.
Пусть Е — множество целых чисел:
Е = {-8, -5, -3, 0, 1, 2, 4, 6, 9}.
Тогда нечеткое подмножество чисел, по абсолютной величине близких к нулю, можно определить, например, так:
А = {0/-8 + 0,5/-5 + 0,6/-3 +1/0 + 0,9/1 + 0,8/2 + 0,6/4 + 0,3/6 + 0/9}.
О методах построения функций принадлежности нечетких множеств. В приведенных выше примерах использованы прямые методы, когда эксперт либо просто задает для каждого х Е Е значение ^л(ж), либо определяет функцию совместимости. Как правило, прямые методы задания функции принадлежности используются для измеримых понятий, таких как скорость, время, расстояние, давление, температура и т. д., или когда выделяются полярные значения.
Во многих задачах при характеристике объекта можно выделить набор признаков и для каждого из них определить полярные значения, соответствующие значениям функции принадлежности, 0 или 1.
Например, в задаче распознавания лиц можно выделить шкалы, приведенные в табл. 1.1.
Таблица 1.1. Шкалы в задаче распознавания лиц
0
1
冗1
высота лба
низкий
высокий
冗2
профиль носа
курносый
горбатый
冗3
длина носа
короткий
длинный
冗4
разрез глаз
узкие
широкие
冗5
цвет глаз
светлые
темные
冗6
форма подбородка
о стр оконечный
квадратный
冗7
толщина губ
тонкие
толстые
冗8
цвет лица
темный
светлый
冗9
очертание лица
овальное
квадратное
Для конкретного лица А эксперт, исходя из приведенной шкалы, задает 〃工(化)С [0, 1], формируя векторную функцию принадлежности {〃工(化 1))从工(化2)). • •)从工(化9)}.
При прямых методах используются также групповые прямые методы, когда, например, группе экспертов предъявляют конкретное лицо и каждый должен дать один из двух ответов: «этот человек лысый» или «этот человек не лысый», тогда количество утвердительных ответов, деленное на общее число экспертов, дает
значение ^Лысый (данного лица). (В этом примере можно действовать через функцию совместимости, но тогда придется считать число волосинок на голове у каждого из предъявленных эксперту лиц.)
Косвенные методы определения значений функции принадлежности используются в случаях, когда нет элементарных измеримых свойств, через которые определяется интересующее нас нечеткое множество. Как правило, это методы попарных сравнений. Если бы значения функций принадлежности были нам известны, например, 〃工(化 j = ^高 г = 1, 2, ..., п, то попарные сравнения можно представить матрицей отношений А = {«^}, где aij = Wi/wj (операция деления).
На практике эксперт сам формирует матрицу А, при этом предполагается, что диагональные элементы равны 1, а для элементов симметричных относительно диагонали а斎 = 1/«^-, т. е. если один элемент оценивается в а раз сильнее, чем другой, то этот последний должен быть в 1/а раз сильнее, чем первый. В общем случае задача сводится к поиску вектора w, удовлетворяющего уравнению вида Aw = Amaxw, где Amax — наибольшее собственное значение матрицы А. Поскольку матрица А положительна по построению, решение данной задачи существует и является положительным.
Можно отметить еще два подхода:
использование типовых форм кривых для задания функций принадлежности (в форме (Ь-Ё)-типа — см. ниже) с уточнением их параметров в соответствии с данными эксперимента;
использование относительных частот по данным эксперимента в качестве значений принадлежности.
Операции над нечеткими множествами
Логические операции
Включение. Пусть А и В — нечеткие множества на универсальном множестве Е. Говорят, что А содержится в В, если Mx G E 从工(化)W (化)•
Обозначение: А С В.
Иногда используют термин доминирование^ т. е. в случае, когда А С В^ говорят, что В доминирует А.
Равенство. А и В равны, если Mx G Е 〃工(化)=〃в(化)• Обозначение: А — В.
Дополнение. Пусть М = [0, 1], А и В — нечеткие множества, заданные на Е. Аи В дополняют друг друга, если V化 е £ 〃工(化)= =1 一〃 b (化)•
Обозначение: В — А или А — В.
Очевидно, что А = А (дополнение определено для М = [0, 1], но очевидно, что его можно определить для любого упорядоченного М).
Пересечение. А Г\ В — наибольшее нечеткое подмножество, содержащееся одновременно в А и В:
МАпВ(®) = min (〃厶(z), Мв(ж))-
Объединение. AU В — наименьшее нечеткое подмножество, включающее как А, так и В, с функцией принадлежности:
〃4uB(z) = max (〃厶(z), Мв(ж))-
Разность. А — В = АГ\ В с функцией принадлежности:
^А-в{х) = Млпв(ж) = min (〃厶(z), 1 - Мв(ж))-
Дизъюнктивная сумма
А ф В = (А - В) U (В - А) = (А П В) U (А П В)
с функцией принадлежности:
〃a-b(z) = max (min (^л(ж), 1 - ^B(s)); min (1 - 4A(z), 〃b(z))).
Примеры. Пусть
Л. = 0,4/宓1+ 0,2/宓2 + 0/宓 3 + 1/宓 4;
В = 0,7/^i + 0,9/^2+ 0,1/^з + 1/宓4;
0 = 0,1/宓1 + 1/宓2 + 0,2/宓3+ 0,9/宓4.
Здесь:
А С В, т. е. А содержится в В или В доминирует А; С несравнимо ни с А, ни с В, т. е. пары {А, С} и {А, С} — пары недоминируемых нечетких множеств.
А^ В ^ С.
А = 0,6/宓 1 + 0,8/宓2+ 1/宓з + °/宓4;月=0,3/宓 1 + 0,1/宓2+ 0,9/宓з + + 0/宓4.
А С\ В = 0,4/^i -|-0,2/^2 ~hO/;r3-|- 1/^4.
A U В = 0,7/^i + 0,9/^2 + 0,1/^з + 1/宓4.
А — В = А А В = 0,3/宓 1 + 0,1/宓2 + О/宓 з+。/宓 4;月一力=力门月= =0,6/^i + 0,8/^2+ 0,1/^з+ 0/^4-
7)力㊉ В = 0,6/^i + 0,8/^2 + 0,1/^з + 0/宓4.
Наглядное представление логических операций над нечеткими множествами. Для нечетких множеств можно строить визуальное представление. Рассмотрим прямоугольную систему координат, на оси ординат которой откладываются значения 〃工(化)〉на оси абсцисс в произвольном порядке расположены элементы Е (мы уже использовали такое представление в примерах нечетких множеств). Если Е по своей природе упорядочено, то этот порядок желательно сохранить в расположении
aб
G
Рис. 1.3. Графическая интерпретация логических операций: а ——нечеткое множество Л; б — нечеткое множество Л; в — Л П Л; г — AU А
элементов на оси абсцисс. Такое представление делает наглядными простые логические операции над нечеткими множествами (см. рис. 1.3).
На рис. i.3a заштрихованная часть соответствует нечеткому множеству А и, если говорить точно, изображает область значений А и всех нечетких множеств, содержащихся в А. На рис. 1.36, в, г даны А, А П A, A U А.
Свойства операций U и П
Пусть А, В, С — нечеткие множества, тогда выполняются следующие свойства:
АПВ = ВП
В — В А I — коммутативность]
、(Ас5)се = 4с(5с。)]
2)(4 U 8) U С = 4 U (8 U С) j — ^социативностъ-
3)3)4c4 =、
3)
3)
л л идемпотентность]
A U А = А I
、А П (В U С) = (А П В) U (А П С) 1、『
* 4 U ® С)=(…)С (4 U С) j — дистрибутивность-
A U 0 = А, где 0 — пустое множество^ т. е. 〃。(化)=О
6)7)8)9)6)7)8)9)А П 0 = 0;
6)
7)
8)
9)
6)
7)
8)
9)
АГ\ Е — А^ где Е — универсальное множество;
A\JE = Е;
4 r1 8 = AUB}
— —теоремы де Моргана.
AU В = АГ\В\
В отличие от четких множеств, для нечетких множеств в общем случае:
АП%次 0, AU А / Е
(что, в частности, проиллюстрировано выше в примере наглядного представления нечетких множеств).
Замечание. Введенные выше операции над нечеткими множествами основаны на использовании операций max и min. В теории нечетких множеств разрабатываются вопросы построения обобщенных, параметризованных операторов пересечения, объединения и дополнения, позволяющих учесть разнообразные смысловые оттенки соответствующих им связок «и», «или», «не».
Один из подходов к операторам пересечения и объединения заключается в их определении в классе треугольных норм и ко- норм.
Треугольной нормой {t-нормои) называется двуместная действительная функция Т: [0, 1] X [0, 1] —> [0, 1], удовлетворяющая следующим условиям:
Т(0, 0) = 0; Т(^л, 1)= 〃工;Т(1, 〃工)=〃工—ограниченность]
Т(〃а, Мв) < Т(〃с, 〃о), если 〃厶 < Мс, “в & 林dмоно
тонкость;
7(〃工〉儿в) = 7(〃в〉〃工)一 коммутативность;
Т(必)7(〃в〉Me)) = 7(丁(〃工〉儿в)〉Мс) — ассоциативность;
Примеры треугольных норм
min (〃厶,〃в)
произведение 〃厶♦ 〃吕
max(0, 〃厶 + 〃в — !)•
Треугольной конормой {t-конормои) называется двуместная действительная функция S: [0, 1] X [О, 1] —> [О, 1] со свойствами:
5(1, 1) = 1; S(〃工〉0)= 〃工;5(0, 〃工)= 〃工 — ограниченность]
S(〃a, Mb)》S(〃c, 〃d), если 〃厶》Me, 〃в》〃d — монотонкость;
S(〃从 〃в) = S(〃b〉〃工)一 коммутативность;
S(^л, S(〃b〉Me)) = S(S(〃从 儿в)〉Me) — ассоциативность.
Примеры /-конорм
тах(〃厶,〃в)
Аа + Ав — Аа,〃в
min(l, 〃厶 + 〃в)・
2.2. Алгебраические операции над нечеткими множествами
Алгебраическое произведение Аи В обозначается А-В и определяется tак: V化 е е 从工 B(化)=从工(化)儿b(化)•
Алгебраическая сумма этих множеств обозначается А+В и определяется tак: \!x ^ Е 从工手b(化)=^a{х) + 从b(化)一从工(化)从B(化)•
Для операций {•, +} выполняются свойства:
1)1)2)2)3)3)4)4)НеНе1)1)2)2)3)3)A-B^B-A]厶彳月 _В丰厶 Г — коммутативность](А+В)+С = АЦВ+С) j ассоциативность-,Л • 0 = 0, Л+0 = А, А- Е = А, А+Е = Е;А^В = А+В ]— —теоремы де Моргана.А+В = А-В]выполняются:А-А = А]厶彳厶 厶 j — идемпотентность;А-(В+С) = (А-В)ЦА-СЦМ(В © = (МВ) • (МО / Атрибутивности а также А - А = 0, А+А = Е.A-B^B-A]厶彳月 _В丰厶 Г — коммутативность](А+В)+С = АЦВ+С) j ассоциативность-,Л • 0 = 0, Л+0 = А, А- Е = А, А+Е = Е;А^В = А+В ]— —теоремы де Моргана.А+В = А-В]выполняются:А-А = А]厶彳厶 厶 j — идемпотентность;А-(В+С) = (А-В)ЦА-СЦМ(В © = (МВ) • (МО / Атрибутивности а также А - А = 0, А+А = Е.
1)
1)
2)
2)
3)
3)
4)
4)
Не
Не
1)
1)
2)
2)
3)
3)
A-B^B-A]
厶彳月 _В丰厶 Г — коммутативность]
(А+В)+С = АЦВ+С) j ассоциативность-,
Л • 0 = 0, Л+0 = А, А- Е = А, А+Е = Е;
А^В = А+В ]
— —теоремы де Моргана.
А+В = А-В]
выполняются:
А-А = А]
厶彳厶 厶 j — идемпотентность;
А-(В+С) = (А-В)ЦА-СЦ
М(В © = (МВ) • (МО / Атрибутивности а также А - А = 0, А+А = Е.
A-B^B-A]
厶彳月 _В丰厶 Г — коммутативность]
(А+В)+С = АЦВ+С) j ассоциативность-,
Л • 0 = 0, Л+0 = А, А- Е = А, А+Е = Е;
А^В = А+В ]
— —теоремы де Моргана.
А+В = А-В]
выполняются:
А-А = А]
厶彳厶 厶 j — идемпотентность;
А-(В+С) = (А-В)ЦА-СЦ
М(В © = (МВ) • (МО / Атрибутивности а также А - А = 0, А+А = Е.
Замечание. При совместном использовании операций {U, П, + , •} выполняются свойства:
A - (BU С) = (А-В) U (А-С);
А - (В ПС) = (А-В) П (А-С);
АЦВ U С) = (А+В) U (А+С);
АЦВ ПС) = (А+В) П (А+С).
На основе операции алгебраического произведения определяется операция возведения 6 степень а нечеткого множества А, где а — положительное число. Нечеткое множество Аа определяется функцией принадлежности 〃么=〃么(化). Частным случаем возведения в степень являются:
CON (А) = А2 — операция концентрирования (уплотнения)]
DIL (А)=厶°'5 — операция растяжения^ которые используются при работе с лингвистическими неопределенностями (рис. 1.4).
Умножение на число. Если а — положительное число, такое, что a max 〃工(化) W 1, то нечеткое множество аА имеет функцию принадлежности:
М«л(^)二 a从力(胃).
Выпуклая комбинация нечетких множеств. Пусть Ai, А2,... ...,Ап — нечеткие множества универсального множества £〉а 团〉 32〉……九 一 неотрицательные числа, сумма которых равна 1.
Выпуклой комбинацией 厶匕 厶2〉• • •〉Ап называется нечеткое множество А с функцией принадлежности:
^х е Е ^Л(Ж1, ж2, • • • , М)= 31〃工1(化)+^2〃工2(化)+ ・•・ + з九〃工?(化)•
Декартово (прямое) произведение нечетких множеств. Пусть 4〉4〉…〉Ап — нечеткие подмножества универсальных множеств £ь 邑〉…〉Еп соответственно. Декартово, или прямое
лотнения) илотнения) иРис. 1.4. растяженияРис. 1.4. растяжения
лотнения) и
лотнения) и
Рис. 1.4. растяжения
Рис. 1.4. растяжения
произведение А = А^ X А2 X ... X Ап является нечетким подмножеством множества Е = Е\ X Е? X … X Еп с функцией принадлежности:
Мл(жь 才2,Zn) = min(Мд1(®1), Мл2(®2), • • • , 〃ас(7п))・
Оператор увеличения нечеткости используется для преобразования четких множеств в нечеткие и для увеличения нечеткости нечеткого множества.
Пусть А — нечеткое множество, Е — универсальное множество и для всех х Е Е определены нечеткие множества К(化).Совокупность всех К(化)называется ядром оператора увеличения нечеткости Ф. Результатом действия оператора Ф на нечеткое множество А является нечеткое множество вида
①(4 К) = (J Ца^К^х),
где /лА(х)К(х) — произведение числа на нечеткое множество.
Пример. Пусть
^ = {1,2, 3,4}; А = 0,8/1+ 0,6/2+ 0/3+ 0/4; К⑴=1/1 + 0,4/2;
К(2) = 1/2+ 0,4/1+ 0,4/3; К(3) = 1/3 + 35/4; К⑷=1/4.
Тогда
①(4 К)= 〃厶⑴к⑴ и/М2)К⑵ и/U3)K⑶ и/М4)К⑷=
=0,8(1/1 + 0,4/2) U 0,6(1/2 + 0,4/1 + 0,4/3) = 0,8/1 + 0,6/2 + 0,24/3.
Четкое множество a-уровня {или уровня а). Множеством d-уровня нечеткого множества А универсального множества Е называется четкое подмножество Аа универсального множества £〉 определяемое в виде
= {化/〃工(化)?a})
где а W 1.
Пример. Пусть А = 0,2/宓]+ 0/宓2 + 0,5/^з + 1/宓% тогда Ао;з = ={宓3,宓4),40,7 = {宓4).
Достаточно очевидное свойство: если m》а% то Aai W 人2・
Нечеткая и лингвистическая переменные
Понятие нечеткой и лингвистической переменных используется при описании объектов и явлений с помощью нечетких множеств.
Нечеткая переменная характеризуется тройкой〈&〉X〉А), где а — наименование переменной;
X — универсальное множество (область определения а);
А — нечеткое множество на X〉описывающее ограничения (т. е. 〃工(化))на значения нечеткой переменной а.
Лингвистической переменной (ЛП) называется набор (/3, Т, X, G, М\ где
/3 — наименование лингвистической переменной;
Т — множество ее значений (терм-множество), представляющих собой наименования нечетких переменных, областью определения каждой из которых является множество X. Множество Т называется базовым терм-множеством лингвистической переменной;
G — синтаксическая процедура, позволяющая оперировать элементами терм-множества Т, в частности, генерировать новые термы (значения). Множество TUG(T), где G(7) — множество сгенерированных термов, называется расширенным терм-множеством лингвистической переменной;
М — семантическая процедура, позволяющая превратить каждое новое значение лингвистической переменной, образуемое процедурой G, в нечеткую переменную, т. е. сформировать соответствующее нечеткое множество.
Замечание. Чтобы избежать большого количества символов:
символ /3 используют как для названия самой переменной, так и для всех ее значений;
пользуются одним и тем же символом для обозначения нечеткого множества и его названия, например терм «Молодой», являющийся значением лингвистической переменной /3 = «возраст», одновременно есть и нечеткое множество М («Молодой»).
Присвоение нескольких значений символам предполагает, что контекст позволяет разрешить возможные неопределенности.
Пример. Пусть эксперт определяет толщину выпускаемого изделия с помощью понятий «Малая толщина», «Средняя толщина» и «Большая толщина», при этом минимальная толщина равна 10мм, а максимальная —80 мм.
Формализация такого описания может быть проведена с помощью следующей лингвистической переменной〈仇 Т, X, G, JW〉,где
В — толщина изделия;
Т — {«Малая толщина», «Средняя толщина», «Большая толщина»};
X — [10, 80];
G — процедура образования новых термов с помощью связок «и», «или» и модификаторов типа «очень», «не», «слегка» и т. п. Например: «Малая или средняя толщина», «Очень малая толщина» и т.д.;
М — процедура задания на X 二[10, 80] нечетких подмножеств & = =«Малая толщина», А^ = «Средняя толщина», Аз = «Большая толщина», а также нечетких множеств для термов из G(T) в соответствии с правилами трансляции нечетких связок и модификаторов «и», «или», «не»,
«очень», «слегка» и других операций над нечеткими множествами вида: АПВ, AUB, A, CONA = A2, DILA = А°>5 и т.п.
Замечание. Наряду с рассмотренными выше базовыми значениями лингвистической переменной «Толщина» (Т = {«Малая толщина», «Средняя толщина», «Большая толщина»}) возможны значения, зависящие от области определения X. В данном случае значения лингвистической переменной «Толщина изделия» могут быть определены как «около 20 мм», «около 50 мм», «около 70 мм», т. е. в виде нечетких чисел.
Терм-множество и расширенное терм-множество в условиях примера можно характеризовать функциями принадлежности, приведенными на рис. 1.5 и 1.6.
Рис. 1.5. Функции принадлежности нечетких множеств: «Малая толщина» = Ai, «Средняя толщина» = А2, «Большая толщина» =人
Рис. 1.6. Функция принадлежности нечеткого множества «Малая или средняя толщина» = Я1 U 厶2
Нечеткие числа
Нечеткие числа — нечеткие переменные, определенные на числовой оси, т. е. нечеткое число определяется как нечеткое множество А на множестве действительных чисел R с функцией принадлежности 〃工(化)С [0, 1], где ж — действительное число, т. е. ж 6 К.
Нечеткое число А нормально^ если max〃工(化)=1; выпуклое^ если для любых х у z выполняется
Мл(ж)》Мл(У)Л 〃厶⑶•
Множество а-уровнн нечеткого числа А определяется как
Aa = {化/从工(化)?a}•
Подмножество 5л G К называется носителем нечеткого числа А, если
S工={化/〃力(化)〉0}•
Нечеткое число А унимодально^ если условие 〃工(化)=1 справедливо только для одной точки действительной оси.
Выпуклое нечеткое число А называется нечетким нулем^ если
〃А(0) = sup 從4(z)).
Нечеткое число А положительно^ если V化 С S工〉ж > 0 и отрицательно^ если V化 С S工〉ж < 0.
Операции над нечеткими числами. Расширенные бинарные арифметические операции (сложение, умножение и пр.) для нечетких чисел определяются через соответствующие операции для четких чисел с использованием принципа обобщения следующим образом.
Пусть Аи В — нечеткие числа, и 工一нечеткая операция, соответствующая произвольной алгебраической операции * над обычными числами. Тогда (используя здесь и в дальнейшем обозначения V вместо max и Д вместо min) можно записать
СXхX
С = AiB - 〃©⑶= V (〃工(化)л 〃в(д))・
Отсюда
с = А+В - 〃c(z) = V 仇工(化)А 〃в(д))〉 z二х+у
С = А-В - 〃c(z) = V 5a(Q)八祖в(у», Z=X-Y
e=4:月 一 〃c(z) = V (〃工(化)A〃B(g)),
⑶= V (мл (化)а 〉
Z=X^Y
с = max (Л, В) - ^с(г) = V (〃厶(才)А 〃в®)), Z=max (X, У)
с = min (4 8) - 〃с(2)= V (〃厶(7)А 〃в®))・ Z=min (X, У)
Нечеткие числа (Ь-К)-типа. Нечеткие числа (L-R)- типа — это разновидность нечетких чисел специального вида, т. е. задаваемых по определенным правилам с целью снижения объема вычислений при операциях над ними.
Функции принадлежности нечетких чисел (L—R)-THna задаются с помощью невозрастающих на множестве неотрицательных действительных чисел функций действительного переменного L(化)и R(化)〉удовлетворяющих свойствам:
L(一化)=l(ж), R(-化)=R(%);
L(0) = R(0).
Очевидно, что к классу (Ь-Н)-функций относятся функции, графики которых имеют вид, приведенный на рис. 1.7.
Рис. 1.7. Возможный вид (Ь-И)-функцийРис. 1.7. Возможный вид (Ь-И)-функцийWТWТОхОх
Рис. 1.7. Возможный вид (Ь-И)-функций
Рис. 1.7. Возможный вид (Ь-И)-функций
W
Т
W
Т
Ох
Ох
Примерами аналитического задания (Ь-Н)-функций могут быть
L(^) = е-|х|Р,R(%) = ] +;评〉Р О,
и т. д.
Пусть L(g) и R(g) — функции (L—R)-THna (конкретные). Унимодальное нечеткое число А с модой а (т. е. 〃工(а) = 1) с помощью
L(g) и R(g) задается следующим образом:
приприприприх а^х〉а、х а^х〉а、
при
при
при
при
х а^
х〉а、
х а^
х〉а、
где а — мода; а〉0〉/3 > 0 — левый и правый коэффициенты нечеткости.
Таким образом, при заданных L(g) и R(g) нечеткое число (унимодальное) задается тройкой А = («,/3).
Толерантное нечеткое число задается, соответственно, четверкой параметров А = («1, ” &〉/3), где «1 и «2 — границы толерантности, т. е. в промежутке [«i, «2] значение функции принадлежности равно 1.
Примеры графиков функций принадлежности нечетких чисел (L-R)-THna приведены на рис. 1.8.
ПримерыПримерыграфиковграфиковфункцийфункцийпринадлежности нечетких чиселпринадлежности нечетких чисел
Примеры
Примеры
графиков
графиков
функций
функций
принадлежности нечетких чисел
принадлежности нечетких чисел
Рис. 1.8. (L-R)-THna
Отметим, что вОтметим, что вконкретных ситуациях функции L(g)〉R(g)〉а
Отметим, что в
Отметим, что в
также параметры &〉/3 нечетких чисел («, &〉/3) и («1, ” &〉/3)
должны подбираться таким образом, чтобы результат операции (сложения, вычитания, деления и т. д.) был точно или приблизительно равен нечеткому числу с теми же L(g) и R(g)〉а параметры с/ и /3’ результата не выходили за рамки ограничений на эти параметры для исходных нечетких чисел, особенно если результат в дальнейшем будет участвовать в операциях.
Замечание. Решение задач математического моделирования сложных систем с применением аппарата нечетких множеств требует выполнения большого объема операций над разного рода лингвистическими и другими нечеткими переменными. Для удобства исполнения операций, а также для ввода-вывода и хранения данных, желательно работать с функциями принадлежности стандартного вида.
Нечеткие множества, которыми приходится оперировать в большинстве задач, являются, как правило, унимодальными и нормальными. Одним из возможных методов аппроксимации унимодальных нечетких множеств является аппроксимация с помощью функций (L-R)-THna.
Примеры (Ь-Н)-представлений некоторых лингвистических переменных приведены в табл. 1.2.
Таблица 1.2. Возможное (Ь-К)-представление некоторых лингвистических переменных
Терм ЛП
(Ь-И)-представление
Графическое представление
Средний
4/3)lr
а = /3 > 0
а Р
Малый
4 = (а, оо, /3)lr а = оо
а = 8 /3
Большой
4 = (а, а, oo)lr 0 = 8
а /3 = 8
Приблизительно
4 = (@1, @2, а, /3)LR
а р
в диапазоне
а = /3 > 0
@1 @2
Опредеденный
4 = (а, 0, 0)Lr а = /3 = 0
а = 0 /3 = 0
Разно обр азный: зона полной неопределенности
4 = (а, ОО, OO)LR а = /3 = оо
а = /3 = оо
Нечеткие отношения
Пусть Е = X Е2 X ... X Еп — прямое произведение универсальных множеств и М — некоторое множество принадлежностей (например, М = [0, 1]). Нечеткое n-арное отношение определяется как нечеткое подмножество R на £ принимающее свои значения в М. В случае п = 2 и М = [0, 1] нечетким отношением R между множествами X — Е\ ^Y — Е^ будет называться функция А: (X, У) —> [0, 1], которая ставит в соответствие каждой паре элементов {х^ у] X xY величину 〃五(化〉у) С [0, 1].
Обозначение: нечеткое отношение на X X У запишется в виде 化 e X)у е Y : xRy.
В случае, когда X = У, т. е. X и У совпадают, нечеткое отношение R: X X X —> [0, 1] называется нечетким отношением на множестве X.
Примеры
Пусть X = {宓 1,宓2,宓з}, У = {%,竺,Уз,的}, М = [0, 1]. Нечеткое отношение R = XRY может быть задано, к примеру, табл. 1.3.
Т а блиц а 1.3. Задание нечеткого отношения
У1
У2
Уз
У4
Z1
0
0
ОД
0,3
Z2
0
0,8
1
方3
1
0,5
0,6
1
Пусть X — Y — (—схз, схз), т. е. множество всех действительных чисел. Отношение 宓》g (宓 много больше g) можно задать функцией принадлежности:
'0,если х & &
1 । 门 〃если У<х-
Отношение R)для которого 〃衣(宓,g) = e~k^x~y^2, при достаточно больших к можно интерпретировать так:《宓 и у близкие друг к другу числа».
4.1. Операции над нечеткими отношениями
Объединение двух отношений Ai и R?. Объединение двух отношений обозначается /?i U /?2 и определяется выражением
Мя1ия2(®, У)= Мя1(ж, У)V Мя2(ж,У)-
Пересечение двух отношений. Пересечение двух отношений R、и 电 обозначается R\C\ R^ ^ определяется выражением
Мя1Пя2(®, У)= Мя1(ж, У)Л Мя2(ж,У)-
Алгебраическое произведение двух отношений. Алгебраическое произведение двух отношений R、и R? обозначается R、• R? и определяется выражением
МЯ1-Я2(Ж,у) = МЯ1(Ж, у) • Мя2(ж,у)-
Алгебраическая сумма двух отношений. Алгебраическая сумма двух отношений R、и R? обозначается Л1+Л2 и определяется выражением
МЛ1+Л2(Ж, У)= Мя1(ж, У)+Мя2(ж,У)- Мя1(ж, У)-Мя2(ж,У)-
Для введенных операций справедливы следующие свойства дистрибутивности:
Ri П (J U Аз) = (Ai A J) U (Ai А Аз),
Ri U (i?2 G Аз) = (Ai U /?2)G (Ai U /?з),
А1 •(氏2 и Аз) = (А1 •氏2)и (А1 • Аз),丛•(氏2 A J) = (Ai • %) A (Ai • Аз),^1+(^2 U Аз) = (-Ri+/?2)U (А#Аз)〉^1+(^2 G а3) = (-Ri+/?2)G (/?1+/?3)-
Дополнение отношения. Дополнение отношения R обозначается R и определяется функцией принадлежности:
Мя(ж, у) = 1 - 〃R(z, у)-
Дизъюнктивная сумма двух отношений. Дизъюнктивная сумма двух отношений R、и R? обозначается R\® R^ ^ определяется выражением
R1 ㊉兄2 = (Я1 П 耳2)и (Л1 П л2).
Обычное отношение^ ближайшее к нечеткому. Пусть R — нечеткое отношение с функцией принадлежности 〃五(化〉у). Обычное отношение, ближайшее к нечеткому, обозначается R и определяется выражением
Мя(ж, У)= <Мя(ж, У)= <'0,1,、0 или 1,'0,1,、0 или 1,еслиеслиеслиеслиеслиесли〃r(z, У)< 0,5, 〃R(z, у) > 0,5, 〃r(z, У)= 0,5.〃r(z, У)< 0,5, 〃R(z, у) > 0,5, 〃r(z, У)= 0,5.
Мя(ж, У)= <
Мя(ж, У)= <
'0,
1,
、0 или 1,
'0,
1,
、0 или 1,
если
если
если
если
если
если
〃r(z, У)< 0,5, 〃R(z, у) > 0,5, 〃r(z, У)= 0,5.
〃r(z, У)< 0,5, 〃R(z, у) > 0,5, 〃r(z, У)= 0,5.
По договоренности принимают 〃五(化〉У)= ° при 〃五(化〉у) = 0,5.
Композиция (свертка) двух нечетких отношений. Пусть R、— нечеткое отношение 必:(X X У) —> [0, 1] между X и У, и /?2 — нечеткое отношение R?: (У X Z) —> [0, 1] между У и Z. Нечеткое отношение между X и Z〉обозначаемое R? Q R\)определенное через R、и R? выражением
МЯ1ОЯ2(Z, 2)= V(МЛ1 (ж, у) Л 〃R1 (у, 2)),
называется (тах-т1п)-композицией ((тах-т1п)-сверткой) отношений R\ И /?2・
Пример. Пусть
吊
仍
禽
兄2
Уз———
之2
之3
之4
宏1
宓2
0,1 1
0,7 0,5
0,4办
6纱
Уз
0,9
0,3
0,1
0 0,6
1
0:9 0,5
Тогда
行1 0兄2
刁
之2
之3
之4
宓1
0,3
0,6
0,1
0,7
宓2
0,9
0,5
1
0,5
При этом
〃r]0A2(宓 1,刁)=(〃/n (宓 1, %) A 〃a2(%,刁))V
V (〃К](宓 1,竺)A〃K2(U2,刁))V (〃K](宓 1, Уз) Л//Л2(уз,刁))=
=(0,1 Л 0,9) V (0,7 Л 0,3) V (0,4 Л 0,1) = 0,1 V0,3 V0,1 = 0,3;
〃/?]0/?2(宓 1,之 3)— 0」;
〃/?1。/?2(宓2,之5)- 0,5.
Замечание. В данном примере вначале использован «аналитический» способ композиции отношений Ai и R?、т. е. г-н строка R、«умножается» на j-й столбец R? с использованием операции Л, полученный результат «свертывается» с использованием операции V в 从(化高弓).
Свойства (m^x-min)-композиции. Операция (max-min)-KOM- позиции ассоциативна, т. е.
Я3о(Л2оЛ1) = (Л3оЛ2)оЛ1,
дистрибутивна относительно объединения, но недистрибутивна относительно пересечения:
а3。(а2 u Al) = (а3。а2)и (а3。/),
а3。(a2 А /)*(J。%) A (J。/)•
Кроме того, для (тах-т1п)-композиции выполняется следующее важное свойство: если R\ G R?、то Ro Ri G Ro R?.
m^x-композиция. В выражении
МЯ1ОЯ2(®, 2)= V^RiE у) Л^Л2(у, 2))
для (тах-т!п)-композиции отношений R、и Я2 операцию Л можно заменить любой другой, для которой выполняются те же ограничения, что и для Л: ассоциативность и монотонность (в смысле неубывания) по каждому аргументу. Тогда
МЯ1ОЯ2(Z, 2)= V(МЛ1 (ж, у) * МЯ1 (у, 2)) •
В частности, операция Л может быть заменена алгебраическим умножением, тогда говорят о (тах-рго(1)-композиции.
Нечеткие выводы
Используемый в различного рода экспертных и управляющих системах механизм нечетких выводов в своей основе имеет базу знаний, формируемую специалистами предметной области в виде совокупности нечетких предикатных правил вида:
П1: если ж есть Ai, тогда у есть Bi,
Г(2: если ж есть А2, тогда у есть В2,
Пп: если ж есть Ап, тогда у есть Вп,
где ж — входная переменная (имя для известных значений данных), у— переменная вывода (имя для значения данных, которое будет вычислено); А и В — функции принадлежности, определенные соответственно на 化 и у.
Пример подобного правила
Если х — низко, то у — высоко.
Приведем более детальное пояснение. Знание эксперта А —> В отражает нечеткое причинное отношение предпосылки и заключения, поэтому его можно назвать нечетким отношением и обозначить через А:
Л = А —> В, где «—>» называют нечеткой импликацией.
Отношение R можно рассматривать как нечеткое подмножество прямого произведения X X У полного множества предпосылок X и заключений У. Таким образом, процесс получения (нечеткого) результата вывода В' с использованием данного наблюдения А' и знания А —> В можно представить в виде формулы
В’ = А' о А = А' о (А —> В), где «о» — введенная выше операция свертки.
Как операцию композиции, так и операцию импликации в алгебре нечетких множеств можно реализовывать по-разному (при этом, естественно, будет разниться и итоговый получаемый результат), но в любом случае общий логический вывод осуществляется за следующие четыре этапа.
Нечеткость (введение нечеткости, фазификация, fuzzification). Функции принадлежности, определенные на входных переменных применяются к их фактическим значениям для определения степени истинности каждой предпосылки каждого правила.
Логический вывод. Вычисленное значение истинности для предпосылок каждого правила применяется к заключениям каждого правила. Это приводит к одному нечеткому подмножеству, которое будет назначено каждой переменной вывода для каждого правила. В качестве правил логического вывода обычно используются только операции min (МИНИМУМ) или prod (УМНОЖЕНИЕ). В логическом выводе МИНИМУМА функция принадлежности вывода «отсекается» по высоте, соответствующей вычисленной степени истинности предпосылки правила (нечеткая логика «И»). В логическом выводе УМНОЖЕНИЯ функция принадлежности вывода масштабируется при помощи вычисленной степени истинности предпосылки правила.
Композиция. Все нечеткие подмножества, назначенные к каждой переменной вывода (во всех правилах), объединяются вместе, чтобы формировать одно нечеткое подмножество для каждой переменной вывода. При подобном объединении обычно используются операции max (МАКСИМУМ) или sum (СУММА). При композиции МАКСИМУМА комбинированный вывод нечеткого подмножества конструируется как поточечный максимум по всем нечетким подмножествам (нечеткая логика «ИЛИ»). При композиции
СУММЫ комбинированный вывод нечеткого подмножества конструируется как поточечная сумма по всем нечетким подмножествам, назначенным переменной вывода правилами логического вывода.
В заключение (дополнительно) — приведение к четкости (дефазификация, defuzzification), которое используется, когда полезно преобразовать нечеткий набор выводов в четкое число. Имеется большое количество методов приведения к четкости, некоторые из которых рассмотрены ниже.
Пример. Пусть некоторая система описывается следующими нечеткими правилами:
П1: если х есть А, тогда w есть D,
П2: если у есть В, тогда w есть Е,
Пз: если г есть С, тогда w есть F,
где х, у и z — имена входных переменных, w — имя переменной вывода, а А, В, С, D, Е, F — заданные функции принадлежности (треугольной формы).
Процедура получения логического вывода иллюстрируется рис. 1.9.
Предполагается, что входные переменные приняли некоторые конкретные (четкие) значения — 宓о, у。и zq.
В соответствии с приведенными этапами, на этапе 1 для данных значений и исходя из функций принадлежности А, В, С, находятся степени истинности а(宓о), а(до) и а(之о) для предпосылок каждого из трех приведенных правил (см. рис. 1.9).
На этапе 2 происходит «отсекание» функций принадлежности заключений правил (т. е. D, Е, F) на уровнях а(宓о), а(до) и а(之о).
На этапе 3 рассматриваются усеченные на втором этапе функции принадлежности и производится их объединение с использованием операции max, в результате чего получается комбинированное нечеткое подмножество, описываемое функцией принадлежности //E(w) и соответствующее логическому выводу для выходной переменной w.
Наконец, на 4-м этапе — при необходимости — находится четкое значение выходной переменной, например, с применением центроидного метода: четкое значение выходной переменной определяется как центр тяжести для кривой //E(w), т. е.
J w//E(w) dw_ gW° / 〃式dw *
Рассмотрим следующие наиболее часто используемые модификации алгоритма нечеткого вывода, полагая, для простоты, что базу знаний организуют два нечетких правила вида:
П1: если ж есть Ai и у есть Bi, тогда z есть Ci,
П2: если ж есть А? и у есть В2, тогда z есть С2,
где х и у — имена входных переменных, z — имя переменной вывода, Ai, А2, Bi, В2, Ci, С2 — некоторые заданные функции принадлежности, при этом четкое значение % необходимо определить на основе приведенной информации и четких значений 化о и у。.
〃串 правило 20“
5.1. Алгоритм Mamdani. Данный алгоритм соответствует рассмотренному примеру и рис. 1.9. В рассматриваемой ситуации он математически может быть описан следующим образом.
Нечеткость: находятся степени истинности для предпосылок каждого правила: А1(ж0), А?(化о), Bi(go), В2(?/о)-
Нечеткий вывод: находятся уровни «отсечения» для предпосылок каждого из правил (с использованием операции
МИНИМУМ)
«1 = А1(ж0) Л В1(у0),
«2 = А2(®о) Л В2(у0),
где через «Л» обозначена операция логического минимума (min), затем находятся «усеченные» функции принадлежности
СО = (&1 Л С1(г)),
e6⑶=(a2 ЛC2(2)).
Композиция: с использование операции МАКСИМУМ (max, далее обозначаемой как «V») производится объединение найденных усеченных функций, что приводит к получению итогового нечеткого подмножества для переменной выхода с функцией принадлежности
〃£(z) = C(z) = &(z) V 玛⑶=(&1 A Cl(z)) V (&2 Л。2(乞))・
Наконец, приведение к четкости (для нахождения %) проводится, например, центроидным методом.
5.2. Алгоритм Tsukamoto. Исходные посылки — как у предыдущего алгоритма, но в данном случае предполагается, что функции С1(г),。2(乞)являются монотонными.
Первый этап — такой же, как в алгоритме Mamdani.
На втором этапе сначала находятся (как в алгоритме Mamdani) уровни «отсечения» m и а% а затем — посредством решения уравнений
@1 = C1(^1), @2 = С2(^2)
—четкие значения (刁 и ^) для каждого из исходных правил.
Определяется четкое значение переменной вывода (как взвешенное среднее 刁 и ^):
@1刁+ a2z2
в общем случае (дискретный вариант центроидного метода)
г = 1
% = —•
Пример. Пусть имеем А](宓о) = 0,7, А?(宓о) = 0,6, Bi(go) = 0,3, B2(go) = 0,8, соответствующие уровни отсечения
Qi = min(Ai(^o), Bi(go)) = min(0,7; 0,3) = 0,3,
。2 = min(А2(宓о), B2(go)) = min (0,6; 0,8) = 0,6
и значения 2^1 = 8 и 2^2 = 4, найденные в результате решения уравнений
Ci(^i) = 0,3, С2(^2) = 0,6.
При этом четкое значение переменной вывода (см. рис. 1.10)При этом четкое значение переменной вывода (см. рис. 1.10)
При этом четкое значение переменной вывода (см. рис. 1.10)
При этом четкое значение переменной вывода (см. рис. 1.10)
г0 = (8-0,3 + 4-0,6)/(0,3 + 0,6) = 6.
Алгоритм Sugeno. Sugeno и Takagi использовали набор правил в следующей форме (как и раньше, приводим пример двух правил):
П1: если ж есть Ai и у есть Bi, тогда z】=a^x + b、y) П2: если ж есть А? и у есть В2, тогда 乞2 = &2化 + b2g.
ПредставлениеПредставлениеалгоритмаалгоритма
Представление
Представление
алгоритма
алгоритма
Первый этап — как в алгоритме Mamdani.
На втором этапе находятся m = Ai (жо) Л В/уо)〉色 = =厶2(化0)Л В2(уо) и индивидуальные выходы правил:
2:=例2?0 + 仇%,
芍 =a270 +历%-
На третьем этапе определяется четкое значение переменной вывода:
&1Z; + С^2 ^2
% = :•
+ a2
Иллюстрирует алгоритм рис. 1.11.
Рис. 1.11. Иллюстрация к алгоритму Sugeno
5.4. Алгоритм Larsen. В алгоритме Larsen нечеткая импликация моделируется с использованием оператора умножения.
Описание алгоритма
Первый этап — как в алгоритме Mamdani.
На втором этапе, как в алгоритме Mamdani вначале находятся значения
«1 = А1(ж0) Л В1(у0),
«2 = А2(®о) Л В2(у0),
а затем ——частные нечеткие подмножества
&iCi(z),a2c2(z)・
Находится итоговое нечеткое подмножество с функцией принадлежности
〃£(z) = C(z) = (@1C1(Z)) v (a2c2(z))
(в общем случае п правил 〃£(z) = C(z) = V ^aiCi(z)y
«=1
При необходимости производится приведение к четкости (как в ранее рассмотренных алгоритмах).
Алгоритм Larsen иллюстрируется рис. 1.12.
Рис. 1.12. Иллюстрация алгоритма LarsenРис. 1.12. Иллюстрация алгоритма Larsen
Рис. 1.12. Иллюстрация алгоритма Larsen
Рис. 1.12. Иллюстрация алгоритма Larsen
5.5. Упрощенный алгоритм нечеткого вывода. Исходные правила в данном случае задаются в виде:
П1: если ж есть Ai и у есть Bi, тогда 刁=
Г(2: если ж есть А? и у есть В2, тогда 2^2 = С2, где ci и С2 — некоторые обычные (четкие) числа.
Описание алгоритма
Первый этап — как в алгоритме Mamdani.
На втором этапе находятся числа m = Ai (化o)/\Bi(go)〉色 = =a2(化0)Л в2(?/о)-
На третьем этапе находится четкое значение выходной переменной по формуле
% =% =@1 + @2@1 + @2+ @2^2
% =
% =
@1 + @2
@1 + @2
или — в общем случае наличия п правил — по формуле
% = —*
2 = 1
Иллюстрация алгоритма приведена на рис. 1.13.
Рис. 1.13. Иллюстрация упрощенного алгоритма нечеткого вывода
Методы приведения к четкости
Выше уже был рассмотрен один из данных методов — цен- троидный. Приведем соответствующие формулы еще раз.
Для непрерывного варианта:
для дискретного варианта:
Первый максимум (First-of-Maxima). Четкая величина переменной вывода находится как наименьшее значение, при котором
Рис. 1.14. Иллюстрация к методам приведения к четкости: а ——первый максимум; 6——средний максимум
достигается максимум итогового нечеткого множества, т. е. (см. рис. 1.14а)
% = min (z|C⑶=maxC(w)).
Средний максимум (Middle-of-Maxima). Четкое значение находится по формуле
где G — подмножество элементов, максимизирующих С (см. рис. 1.145).
Дискретный вариант (если С — дискретно):
Критерий максимума (Max-Criterion). Четкое значение выбирается произвольно среди множества элементов, доставляющих максимум С, т. е.
г0 С {z|C⑶=maxC(w)}.
Высотная дефазификация (Height defuzzification). Элементы области определения Q, для которых значения функции принад-
лежности меньше, чем некоторый уровень а в расчет не принимаются, и четкое значение рассчитывается по формуле
/ zC ⑶ dz
°/ C(z) dz〉
где Ca — нечеткое множество а-уровнн (см. выше).
Нисходящие нечеткие выводы. Рассмотренные до сих пор нечеткие выводы представляют собой восходящие выводы от предпосылок к заключению. В последние годы в диагностических нечетких системах начинают применяться нисходящие выводы. Рассмотрим механизм подобного вывода на примере.
Возьмем упрощенную модель диагностики неисправности автомобиля с именами переменных:
Ж1 — неисправность аккумулятора;
化2 ——отработка машинного масла;
% — затруднения при запуске;
纱—ухудшение цвета выхлопных газов;
Уз — недостаток мощности.
Между Xi и yj существуют нечеткие причинные отношения rij = Xi —> yj)которые можно представить в виде некоторой матрицы R с элементами 厂斎 С [0, 1]. Конкретные входы (предпосылки) и выходы (заключения) можно рассматривать как нечеткие множества Л и В на пространствах X и Y. Отношения этих множеств можно обозначить как
В — А о R, где, как и раньше, знак «о» обозначает правило композиции нечетких выводов.
В данном случае направление выводов является обратным к направлению выводов для правил, т. е. в случае диагностики имеется (задана) матрица R (знания эксперта), наблюдаются выходы В (или симптомы) и определяются входы Л (или факторы).
Пусть знания эксперта-автомеханика имеют вид
=ГО,9 0,1 0,2[0,6 0,5 0,5] 7
а в результате осмотра автомобиля его состояние можно оценить как
в = О,9/У1 + 0,1/у2 + 0,2/уз,
Требуется определить причину такого состояния:
Л = a1/% 1 + a2/化 2.
Отношение введенных нечетких множеств в виде
-п Q п 1
[0,9 0,1 0,2] = [ai а2] ° о'б 0'5
можно представить0,20,5,можно представить0,20,5,-0,9-0,10,2-0,9-0,10,20,90,10,20,90,10,2060,50,5060,50,5оо«1«2«1«2либо, транспонируя, в виде нечетких векторов-столбцов:
можно представить
0,2
0,5,
можно представить
0,2
0,5,
-0,9-0,10,2
-0,9-0,10,2
0,9
0,1
0,2
0,9
0,1
0,2
06
0,5
0,5
06
0,5
0,5
о
о
«1
«2
«1
«2
При использовании (тах-т1п)-композиции последнее соотношение преобразуется к виду
0,9 = (0,9 А «1) V (0,6 А «2),
0,1 = (0,1 А «1) V (0,5 А «2),
0,2 = (0,2 A а— V (0,5 А &2)・
При решении данной системы заметим прежде всего, что в первом уравнении второй член правой части не влияет на правую часть, поэтому
0,9 = 0,9 А «1, «1》0,9.
Из второго уравнения получим:
0,1》0,5 А «2,«2 W 0,1.
Полученное решение удовлетворяет третьему уравнению, таким образом имеем:
0,9 W 例 W 1,0, 0 W &2 W 0,1,
т. е. лучше заменить аккумулятор (例一параметр неисправности аккумулятора, «2 — параметр отработки машинного масла).
На практике в задачах, подобных рассмотренной, количество переменных может быть существенным, могут одновременно использоваться различные композиции нечетких выводов, сама схема выводов может быть многокаскадной. Общих методов решения подобных задач в настоящее время, по-видимому, не существует.
Пример: нечеткий регулятор
Приведем еще один пример использования аппарата нечеткой логики, на этот раз — в задаче управления. Рассмотрим замкнутую систему регулирования, представленную на рис. 1.15, где через О обозначен объект управления, через Р — регулятор, а через w, у^ е, ж — соответственно, входной сигнал системы, ее выходной сигнал, сигнал ошибки (рассогласования), поступающий на вход регулятора, и выходной сигнал регулятора.
В рассматриваемой системы регулятор вырабатывает управляющий сигнал ж в соответствии с выбранным алгоритмом регулирования, например, пропорционально сигналу ошибки, либо ее
Рис. 1.15. Структура замкнутой системы управления
интегралу и т. п. Покажем, что в данном случае для выработки такого сигнала применимы рассмотренные выше методы аппарата нечеткой логики.
Предположим, что функции регулятора выполняет микроконтроллер, при этом аналоговый сигнал е ограничен диапазоном [—1, 1] и преобразуется в цифровую форму аналого-цифровым преобразователем (АЦП) с дискретностью 0,25, а выходной сигнал регулятора ж формируется с помощью цифроаналогового преобразователя и имеет всего 5 уровней: —1, —0,5, 0, 0,5, 1.
Принимая во внимание данные уровни, введем лингвистические переменные:
Ai: большой положительный,
А?: малый положительный,
A3: нулевой,
А4: малый отрицательный,
А5: большой отрицательный, и на дискретном множестве возможных значений сигнала рассогласования е определим функции принадлежности так, как это приведено в табл. 1.4.
Предположим, далее, что функционирование регулятора определяется следующими правилами (надо сказать, типичными для задача управления):
П1:еслие=Лзи Ае =Аз,тож= О,
Г(2:еслие=Л2и Ае =А2,тож= —0,5,
Пз:еслие=Л4и Ае =А4,тож= 1,
П4:еслие=Л1и Ае =Ai,тож= —1,
где Ае — первая разность сигнала ошибки в текущий дискретный момент времени.
Таблица 1.4. Значения функций принадлежности
-1
-0,75
-0,5
-0,25
0
0,25
0,5
0,75
1
А1(е)
0
0
0
0
0
0
0,3
0,7
1
А2(е)
0
0
0
0
0,3
0,7
1
0,7
0,3
Аз(е)
0
0
0,3
0,7
1
0,7
0,3
0
0
А4(е)
0,3
0J
1
0J
0,3
0
0
0
0
As(e)
1
0,7
0,3
0
0
0
0
0
0
Заметим, что набор правил может быть, вообще говоря, и каким-то другим. Если, например, используется упрощенный алгоритм нечеткого вывода, то при значениях, скажем, е = 0,25 и Ае = 0,5 имеем:
и Ж1 = 0,и 化2 = —0,5,и 化з = 1,И 化4 = —1,и Ж1 = 0,и 化2 = —0,5,и 化з = 1,И 化4 = —1,= min (0,7; 0,3) = 0,3
и Ж1 = 0,
и 化2 = —0,5,
и 化з = 1,
И 化4 = —1,
и Ж1 = 0,
и 化2 = —0,5,
и 化з = 1,
И 化4 = —1,
&2 = min (0,7; 1) = 0,7
&з = min (0; 0) = 0
&4 = min (0; 0,3) = 0,3
и выход регулятора
0,3-0 + 0,7 • (-0,5) + 0 • 1 + 0,3 • (—1)-0,65х ==0,3-0 + 0,7 • (-0,5) + 0 • 1 + 0,3 • (—1)-0,65х ==0,3+ 0,7 +0+ 0,30,3+ 0,7 +0+ 0,31,31,3-0,5.-0,5.
0,3-0 + 0,7 • (-0,5) + 0 • 1 + 0,3 • (—1)-0,65
х ==
0,3-0 + 0,7 • (-0,5) + 0 • 1 + 0,3 • (—1)-0,65
х ==
0,3+ 0,7 +0+ 0,3
0,3+ 0,7 +0+ 0,3
1,3
1,3
-0,5.
-0,5.
Аналогичным образом значения выходного сигнала регулятора рассчитываются при других значениях е и Ае.
Отметим, что при проектировании подобных («нечетких») регуляторов основным (и не формализуемым) этапом является задание набора нечетких правил. Другие аспекты: выбор формы функций принадлежности, алгоритма приведения к четкости и т. п. представляются задачами более простыми.
4343Эффективность систем принятия решений
43
43
Эффективность систем принятия решений,использующих методы нечеткой логики
Возможность использования аппарата нечеткой логики базируется на следующих результатах.
В 1992 г. Wang показал, что нечеткая система, использующая набор правил
П1: если Xi есть А?・ и у?・ есть В高 тогда z?・ есть С高 г = 1, 2, ..., п, при:
гауссовских функциях принадлежности
композиции в виде произведения
(Аг(ж) and Вг(у)) = Аг(ж)Вг(у);
импликации в форме (Larsen)
(Аг(ж) andB8(y)) т а(2)= Аг(ж)Вг(у)Сг(г);
центроидном методе приведения к четкости
где ai — центры С?・; является универсальным аппроксиматором, т. е. может аппроксимировать любую непрерывную функцию на компакте U с произвольной точностью (естественно, при п —> сю).
Иначе говоря, Wang доказал теорему: дм каждой вещественной непрерывной функции д〉заданной на компакте U, и дм произвольного £ 〉0 существует нечеткая экспертная система^ формирующая выходную функцию /(ж) такую: что
sup ||g(z) - /(®)||
где II • II — символ принятого расстояния между функциями.
В 1995 г. Castro показал, что логический контроллер Мат- dani при:
симметричных треугольных функциях принадлежности:
Г 1 - \ai - х\II
a?(化)=《 -,если IW
j 1 一®一川в,3) = < дj 1 一®一川в,3) = < дt 0, в противном случае,
j 1 一®一川
в,3) = < д
j 1 一®一川
в,3) = < д
если 电—g| W
0, в противном случае,
1 - \ci -II
,если
0, в противном случае;
композиции с использованием операции min:
(Аг(ж) and Вг(у)) = min(Аг(ж)Вг(у));
импликации в форме Mamdani и центроидного метода приведения к четкости:
£ сг min(Аг(ж)Вг(у))
£ min(Аг(ж)Вг(у))
г = 1
где Ci — центры С?・; также является универсальным аппроксиматором.
Вообще говоря, системы с нечеткой логикой целесообразно применять для сложных процессов, когда нет простой математической модели; если экспертные знания об объекте или о процессе можно сформулировать только в лингвистической форме.
Данные системы применять нецелесообразно, когда требуемый результат может быть получен каким-либо другим (стандартным) путем, или когда для объекта или процесса уже найдена адекватная и легко исследуемая математическая модель.
Отметим, что основные недостатки систем с нечеткой логикой связаны с тем, что:
исходный набор постулируемых нечетких правил формулируется экспертом-человеком и может оказаться неполным или противоречивым;
вид и параметры функций принадлежности, описывающих входные и выходные переменные системы, выбираются субъективно и могут оказаться не вполне отражающими реальную действительность.
Глава 2
ОСНОВНЫЕ ПОЛОЖЕНИЯТЕОРИИ НЕЙРОННЫХ СЕТЕЙ
Под нейронными сетями (НС) подразумеваются вычислительные структуры, которые моделируют простые биологические процессы, обычно ассоциируемые с процессами человеческого мозга. Адаптируемые и обучаемые, они представляют собой распараллеленные системы, способные к обучению путем анализа положительных и отрицательных воздействий. Элементарным преобразователем в данных сетях является искусственный нейрон или просто нейрон, названный так по аналогии с биологическим прототипом.
К настоящему времени предложено и изучено большое количество моделей нейроподобных элементов и нейронных сетей, ряд из которых рассмотрен в настоящей главе.
Термин «нейронные сети» сформировался в 40-х годах XX века в среде исследователей, изучавших принципы организации и функционирования биологических нейронных сетей. Основные результаты, полученные в этой области, связаны с именами американских исследователей У. Маккалоха, Д. Хебба, Ф. Розенблатта, М. Минского, Дж. Хопфилда и др.
Представим некоторые проблемы, решаемые в контексте НС и представляющие интерес для пользователей.
Классификация образов. Задача состоит в указании принадлежности входного образа (например, речевого сигнала или рукописного символа), представленного вектором признаков, одному или нескольким предварительно определенным классам. К известным приложениям относятся распознавание букв, распознавание речи, классификация сигнала электрокардиограммы, классификация клеток крови.
Кластеризация / категоризация. При решении задачи кластеризации, которая известна также как классификация образов «без учителя», отсутствует обучающая выборка с метками классов. Алгоритм кластеризации основан на подобии образов и размещает близкие образы в один кластер. Известны случаи приме-
нения кластеризации для извлечения знаний, сжатия данных и исследования свойств данных.
Аппроксимация функций. Предположим, что имеется обучающая выборка ((化 1〉gi),(化2, У2),・• •〉(化n, Pn)) (пары данных вход-выход), которая генерируется неизвестной функцией Р(ж), искаженной шумом. Задача аппроксимации состоит в нахождении оценки неизвестной функции F(化).Аппроксимация функций необходима при решении многочисленных инженерных и научных задач моделирования.
Предсказание / прогноз. Пусть заданы п дискретных отсчетов {у(力 1)〉 У(力2)〉 . • •〉 У(力足)} в последовательные моменты времени ti,力2〉 . • •〉力足. Задача состоит в предсказании значения у(力足+i) в некоторый будущий момент времени 力足+丿 Предсказа- ние/прогноз имеет значительное влияние на принятие решений в бизнесе, науке и технике. Предсказание цен на фондовой бирже и прогноз погоды являются типичными приложениями техники предсказания/прогноза.
Оптимизация. Многочисленные проблемы в математике, статистике, технике, науке, медицине и экономике могут рассматриваться как проблемы оптимизации. Задачей алгоритма оптимизации является нахождение такого решения, которое удовлетворяет системе ограничений и максимизирует или минимизирует целевую функцию. Известная задача коммивояжера является классическим примером задачи оптимизации.
Память, адресуемая по содержанию. В модели вычислений фон Неймана обращение к памяти доступно только посредством адреса, который не зависит от содержания памяти. Более того, если допущена ошибка в вычислении адреса, то может быть найдена совершенно иная информация. Ассоциативная память, или память, адресуемая по содержанию, доступна по указанию заданного содержания. Содержимое памяти может быть вызвано даже по частичному входу или искаженному содержанию. Ассоциативная память чрезвычайно желательна при создании мультимедийных информационных баз данных.
Управление. Рассмотрим динамическую систему, заданную совокупностью {〃仕)〉У^) \ где &(力)является входным управляющим воздействием, а у(力)一выходом системы в момент времени t. В системах управления с эталонной моделью целью управления является расчет такого входного воздействия 〃(力)〉при котором система следует по желаемой траектории, диктуемой эталонной моделью. Примером является оптимальное управление двигателем.
Биологический нейрон
Нервная система и мозг человека состоят из нейронов, соединенных между собой нервными волокнами. Нервные волокна способны передавать электрические импульсы между нейронами. Все процессы передачи раздражений от нашей кожи, ушей и глаз к мозгу, процессы мышления и управления действиями — все это реализовано в живом организме как передача электрических импульсов между нейронами.
Нейрон (нервная клетка) является особой биологической клеткой, которая обрабатывает информацию (рис. 2.1). Он состоит из тела и отростков нервных волокон двух типов — дендритов, по
Рис. 2.1. Взаимосвязь биологических нейронов которым принимаются импульсы, и единственного аксона, по которому нейрон может передавать импульс. Тело нейрона включает ядро, которое содержит информацию о наследственных свойствах, и плазму, обладающую молекулярными средствами для производства необходимых нейрону материалов. Нейрон получает сигналы (импульсы) от аксонов других нейронов через дендриты (приемники) и передает сигналы, сгенерированные телом клетки, вдоль своего аксона (передатчик), который в конце разветвляется на волокна. На окончаниях этих волокон находятся специальные образования —синапсы, которые влияют на силу импульса.
Синапс является элементарной структурой и функциональным узлом между двумя нейронами (волокно аксона одного нейрона и
дендрит другого). Когда импульс достигает синаптического окончания, высвобождаются определенные химические вещества, называемые нейротрансмиттерами. Нейротрансмиттеры диффундируют через синаптическую щель, возбуждая или затормаживая, в зависимости от типа синапса, способность нейрона-приемника генерировать электрические импульсы. Результативность синапса может настраиваться проходящими через него сигналами, так что синапсы могут обучаться в зависимости от активности процессов, в которых они участвуют. Эта зависимость от предыстории действует как память, которая, возможно, ответственна за память человека. Важно отметить, что веса синапсов могут изменяться со временем, что изменяет и поведение соответствующего нейрона.
Структура и свойства искусственного нейрона
Нейрон — это составная часть нейронной сети. На рис. 2.2 показана его структура.
В состав нейрона входят умножители (синапсы), сумматор и нелинейный преобразователь. Синапсы осуществляют связь между нейронами и умножают входной сигнал на число, характеризую-
Рис. 2.2. Структура искусственного нейрона
щее силу связи, — вес синапса. Сумматор выполняет сложение сигналов, поступающих по синаптическим связям от других нейронов, и внешних входных сигналов. Нелинейный преобразователь реализует нелинейную функцию одного аргумента — выхода сумматора. Эта функция называется «функция активации» или «передаточная функция» нейрона. Нейрон в целом реализует скалярную функцию векторного аргумента. Математическая модель
нейрона описывается соотношениями
5 =£g吃+仇
где Wi — вес синапса (г = 1, ..., n); b — значение смещения; s — результат суммирования;化勿一компонента входного вектора (входной сигнал) (г = 1, ..., п); у — выходной сигнал нейрона; п — число входов нейрона; / — нелинейное преобразование (функция активации или передаточная функция).
Таблица 2.1. Перечень функций активации нейронов
Название
Формула
Область значений
Пороговая
s<6,
0, 1
Знаковая (сигнатурная)
-1, 1
Сигмоидальная (логистическая)
(0, 1)
Полулинейная
/ 6,6〉°,
(о, oo)
Линейная
/0) = s
(—oo, oo)
Радиальная базисная (гауссова)
/0) =
(0, 1)
Полулинейная с насыщением
о, $ w о,
f(5)= * S, 0 < S < 1,
(0, 1)
Линейная
с насыщением
,—1, s W —1, /(6)=,也-1 < s < 1,
(-1,1)
Гиперболический тангенс (сигмоидальная)
二
(-1,1)
Треугольная
"s) = i。,H>1
(0, 1)
В общем случае входной сигнал, весовые коэффициенты и значения смещения могут принимать действительные значения. Выход (у) определяется видом функции активации и может быть как
действительным, так и целым. Во многих практических задачах входы, веса и смещения могут принимать лишь некоторые фиксированные значения.
Синаптические связи с положительными весами называют возбуждающими, с отрицательными весами — тормозящими.
Таким образом, нейрон полностью описывается своими весами Wi и передаточной функцией /(§)• Получив набор чисел (вектор) Xi в качестве входов, нейрон выдает некоторое число у на выходе.
Описанный вычислительный элемент можно считать упрощенной математической моделью биологических нейронов — клеток, из которых состоит нервная система человека и животных.
Чтобы подчеркнуть различие нейронов биологических и математических, вторые иногда называют нейроноподобными элементами или формальными нейронами.
На входной сигнал (s) нелинейный преобразователь отвечает выходным сигналом /(s), который представляет собой выход ней-
Рис. 2.3. Примеры активационных функций: а ——функция единичного скачка; б— линейный порог (гистерезис); в — сигмоид (гиперболическийтангенс); г — сигмоид (логистическая)Рис. 2.3. Примеры активационных функций: а ——функция единичного скачка; б— линейный порог (гистерезис); в — сигмоид (гиперболическийтангенс); г — сигмоид (логистическая)
Рис. 2.3. Примеры активационных функций: а ——функция единичного скачка; б— линейный порог (гистерезис); в — сигмоид (гиперболическийтангенс); г — сигмоид (логистическая)
Рис. 2.3. Примеры активационных функций: а ——функция единичного скачка; б— линейный порог (гистерезис); в — сигмоид (гиперболическийтангенс); г — сигмоид (логистическая)
рона у. Примеры активационных функций представлены в табл. 2.1 и на рис. 2.3.
Одной из наиболее распространенных является нелинейная функция с насыщением, так называемая логистическая функция или сигмоид (т. е. функция S-образного вида)
/⑶=/⑶=11 +「S11 +「S
/⑶=
/⑶=
1
1 +「S
1
1 +「S
При уменьшении а сигмоид становится более пологим, в пределе при а = 0 вырождаясь в горизонтальную линию на уровне 0,5, при увеличении а сигмоид приближается по внешнему виду к функции единичного скачка с порогом J в точке s = 0. Из выражения для сигмоида очевидно, что выходное значение нейрона лежит в диапазоне [0, 1]. Одно из ценных свойств сигмоидной функции — простое выражение для ее производной, применение которого будет рассмотрено в дальнейшем:
/⑶=a/(s)(l - /⑶).
Следует отметить, что сигмоидная функция дифференцируема на всей оси абсцисс, что используется в некоторых алгоритмах обучения. Кроме того она обладает свойством усиливать слабые сигналы лучше, чем большие, и предотвращает насыщение от больших сигналов, так как они соответствуют областям аргументов, где сигмоид имеет пологий наклон.
Возвращаясь к общим чертам, присущим всем НС, отметим принцип параллельной обработки сигналов, который достигается путем объединения большого числа нейронов в так называемые слои и соединения определенным образом нейронов различных слоев, а также, в некоторых конфигурациях, и нейронов одного слоя между собой, причем обработка взаимодействия всех нейронов ведется послойно.
Классификация нейронных сетей и их свойства
Как отмечалось, искусственная нейронная сеть (ИНС, нейросеть) —это набор нейронов, соединенных между собой. Как правило, передаточные (активационные) функции всех нейронов в сети фиксированы, а веса являются параметрами сети и могут изменяться. Некоторые входы нейронов помечены как внешние входы сети, а некоторые выходы — как внешние выходы сети. Подавая любые числа на входы сети, мы получаем какой-то набор чисел на выходах сети. Таким образом, работа нейросети состоит в преобразовании входного вектора X в выходной вектор Y, причем это преобразование задается весами сети.
Практически любую задачу можно свести к задаче, решаемой нейросетью. В табл. 2.2 показано, каким образом следует сформулировать в терминах нейросети задачу распознавания рукописных букв.
Поясним, зачем требуется выбирать выход с максимальным уровнем сигнала. Дело в том, что уровень выходного сигнала, как правило, может принимать любые значения из какого-то отрезка.
Однако в данной задаче нас интересует не аналоговый ответ, а всего лишь номер категории (номер буквы в алфавите). Поэтому используется следующий подход — каждой категории сопоставляется свой выход, а ответом сети считается та категория, на чьем выходе уровень сигнала максимален. В определенном смысле уровень сигнала на выходе «А» — это достоверность того, что на вход была подана рукописная буква «А». Задачи, в которых нужно отнести входные данные к одной из известных категорий, называются задачами классификации. Изложенный подход — стандартный способ классификации с помощью нейронных сетей.
Т аблица 2.2. Задача распознавания рукописных букв в терминах нейросети
Задача распознавания рукописных букв
Дано: растровое черно-белое изображение буквы размером 30 х 30 пикселов
Надо: определить, какая это буква (в алфавите 33 буквы)
Формулировка для нейросети
Дано: входной вектор из 900 двоичных символов (900 = 30 х 30)
Надо: построить нейросеть с 900 входами и 33 выходами, которые помечены буквами. Если на входе сети — изображение буквы «А», то максимальное значение выходного сигнала достигается на выходе «А». Аналогично сеть работает для всех 33 букв
Теперь, когда стало ясно, что именно мы хотим построить, мы можем переходить к вопросу «как строить такую сеть». Этот вопрос решается в два этапа.
Выбор типа (архитектуры) сети.
Подбор весов (обучение) сети.
На первом этапе следует выбрать следующее:
какие нейроны мы хотим использовать (число входов, передаточные функции);
каким образом следует соединить их между собой;
что взять в качестве входов и выходов сети.
Эта задача на первый взгляд кажется необозримой, но, к счастью, нам необязательно придумывать нейросеть «с нуля» — существует несколько десятков различных нейросетевых архитектур, причем эффективность многих из них доказана математически. Наиболее популярные и изученные архитектуры — это многослойный персептрон, нейросеть с общей регрессией, сети Кохонена и другие, которые будут рассмотрены ниже.
На втором этапе нам следует «обучить» выбранную сеть, т. е. подобрать такие значения ее весов, чтобы сеть работала нужным образом. Необученная сеть подобна ребенку — ее можно научить чему угодно. В используемых на практике нейросетях количество весов может составлять несколько десятков тысяч, поэтому обучение —действительно сложный процесс. Для многих архитектур разработаны специальные алгоритмы обучения, которые позволяют настроить веса сети определенным образом.
В зависимости от функций, выполняемых нейронами в сети, можно выделить три их типа:
входные нейроны — это нейроны, на которые подается входной вектор, кодирующий входное воздействие или образ внешней среды; в них обычно не осуществляется вычислительных процедур, информация передается с входа на выход нейрона путем изменения его активации;
выходные нейроны — это нейроны, выходные значения которых представляют выход сети;
промежуточные нейроны — это нейроны, составляющие основу искусственных нейронных сетей.
В большинстве нейронных моделей тип нейрона связан с его расположением в сети. Если нейрон имеет только выходные связи, то это входной нейрон, если наоборот — выходной нейрон. Однако может встретиться случай, когда выход топологически внутреннего нейрона рассматривается как часть выхода сети. В процессе функционирования (эволюции состояния) сети осуществляется преобразование входного вектора в выходной, т. е. некоторая переработка информации. Конкретный вид выполняемого сетью преобразования информации обусловливается не только характеристиками нейроподобных элементов (функциями активации и т. п.), но и особенностями ее архитектуры, а именно, той или иной топологией межнейронных связей, выбором определенных подмножеств нейроподобных элементов для ввода и вывода информации, способами обучения сети, наличием или отсутствием конкуренции между нейронами, направлением и способами управления и синхронизации передачи информации между нейронами.
Топология нейронных сетей. С точки зрения топологии, среди нейронных сетей, сформированных на основе нейроподобных элементов, можно выделить три основных типа:
полносвязные сети (рис. 2.4а);
многослойные или слоистые сети (рис. 2.45);
слабосвязные сети (нейронные сети с локальными связями) (рис. 2.4б).
Полносвязные сети представляют собой ИНС, каждый нейрон которой передает свой выходной сигнал остальным нейронам, в том числе и самому себе. Все входные сигналы подаются всем ней-
Рис. 2.4. Архитектуры нейронных сетей: а ——полносвязная сеть; 6 ——многослойная сеть с последовательными связями; в —— слабосвязные сети
ронам. Выходными сигналами сети могут быть все или некоторые выходные сигналы нейронов после нескольких тактов функционирования сети.
В многослойных сетях нейроны объединяются в слои. Слой содержит совокупность нейронов с едиными входными сигналами. Число нейронов в каждом слое может быть любым и никак заранее не связано с количеством нейронов в других слоях. В общем случае сеть состоит из Q слоев, пронумерованных слева направо. Внешние входные сигналы подаются на входы нейронов первого слоя (входной слой часто нумеруют как нулевой), а выходами сети являются выходные сигналы последнего слоя. Вход нейронной сети можно рассматривать как выход «нулевого слоя» вырожденных нейронов, которые служат лишь в качестве распределительных точек, суммирования и преобразования сигналов здесь не производится. Кроме входного и выходного слоев в многослойной нейронной сети есть один или несколько промежуточных (скрытых) слоев. Связи от выходов нейронов некоторого слоя q к входам нейронов следующего слоя (g + 1) называются последовательными.
В свою очередь, среди слоистых сетей выделяют следующие типы.
Монотонные. Это специальный частный случай слоистых сетей с дополнительными условиями на связи и элементы. Каждый слой, кроме последнего (выходного), разбит на два блока: возбуждающий (В) и тормозящий (Т). Связи между блоками тоже разделяются на тормозящие и возбуждающие. Если от блока А к блоку С ведут только возбуждающие связи, то это означает, что любой выходной сигнал блока является монотонной неубывающей функцией любого выходного сигнала блока А. Если же эти связи только тормозящие, то любой выходной сигнал блока С является невозрастающей функцией любого выходного сигнала блока А. Для элементов монотонных сетей необходима монотонная зависимость выходного сигнала элемента от параметров входных сигналов.
Сети без обратных связей. В таких сетях нейроны входного слоя получают входные сигналы, преобразуют их и передают нейронам 1-го скрытого слоя, далее срабатывает 1-й скрытый слой и т. д. до Q-ro, который выдает выходные сигналы для интерпретатора и пользователя. Если не оговорено противное, то каждый
выходной сигнал г-го слоя подастся на вход всех нейронов (g+Z)-ro слон; однако возможен вариант соединения q-ro слоя с произвольным (д + р)-м слоем.
Следует отметить, что классическим вариантом слоистых сетей являются сети прямого распространения (рис. 2.5).
Сети с обратными связями. Это сети, у которых информация с последующих слоев передается на предыдущие.
В качестве примера сетей с обратными связями на рис. 2.6 представлены так называемые частично-рекуррентные сети Элмана и Жордана.
Известные сети можно разделить по принципу структуры нейронов в них на гомогенные или однородные и гетерогенные. Гомогенные сети состоят из нейронов одного типа с единой функцией
Рис. 2.6. Частично-рекуррентные сети: а — Элмана; б — Жордана активации. В гетерогенную сеть входят нейроны с различными функциями активации.Развивая дальше вопрос о возможной классификации НС, важно отметить существование бинарных и аналоговых сетей. Первые из них оперируют с двоичными сигналами, и выход каждого нейрона может принимать только два значения: логический ноль («заторможенное» состояние) и логическая единица («возбужденное» состояние).Еще одна классификация делит НС на асинхронные и синхронные. В первом случае в каждый момент времени свое состояниеРис. 2.6. Частично-рекуррентные сети: а — Элмана; б — Жордана активации. В гетерогенную сеть входят нейроны с различными функциями активации.Развивая дальше вопрос о возможной классификации НС, важно отметить существование бинарных и аналоговых сетей. Первые из них оперируют с двоичными сигналами, и выход каждого нейрона может принимать только два значения: логический ноль («заторможенное» состояние) и логическая единица («возбужденное» состояние).Еще одна классификация делит НС на асинхронные и синхронные. В первом случае в каждый момент времени свое состояние
Рис. 2.6. Частично-рекуррентные сети: а — Элмана; б — Жордана активации. В гетерогенную сеть входят нейроны с различными функциями активации.
Развивая дальше вопрос о возможной классификации НС, важно отметить существование бинарных и аналоговых сетей. Первые из них оперируют с двоичными сигналами, и выход каждого нейрона может принимать только два значения: логический ноль («заторможенное» состояние) и логическая единица («возбужденное» состояние).
Еще одна классификация делит НС на асинхронные и синхронные. В первом случае в каждый момент времени свое состояние
Рис. 2.6. Частично-рекуррентные сети: а — Элмана; б — Жордана активации. В гетерогенную сеть входят нейроны с различными функциями активации.
Развивая дальше вопрос о возможной классификации НС, важно отметить существование бинарных и аналоговых сетей. Первые из них оперируют с двоичными сигналами, и выход каждого нейрона может принимать только два значения: логический ноль («заторможенное» состояние) и логическая единица («возбужденное» состояние).
Еще одна классификация делит НС на асинхронные и синхронные. В первом случае в каждый момент времени свое состояние
меняет лишь один нейрон. Во втором — состояние меняется сразу у целой группы нейронов, как правило, у всего слоя. Алгоритмически ход времени в НС задается итерационным выполнением однотипных действий над нейронами. Далее будут рассматриваться только синхронные НС.
Сети можно классифицировать также по числу слоев.
Теоретически число слоев и число нейронов в каждом слое может быть произвольным, однако фактически оно ограничено ресурсами компьютера или специализированной микросхемы, на которых обычно реализуется ИНС. Чем сложнее ИНС, тем масштабнее задачи, подвластные ей.
Выбор структуры ИНС осуществляется в соответствии с особенностями и сложностью задачи. Для решения некоторых отдельных типов задач уже существуют оптимальные, на сегодняшний день, конфигурации, описанные в приложении. Если же задача не может быть сведена ни к одному из известных типов, разработчику приходится решать сложную проблему синтеза новой конфигурации. При этом он руководствуется несколькими основополагающими принципами:
возможности сети возрастают с увеличением числа слоев сети и числа нейронов в них;
введение обратных связей наряду с увеличением возможностей сети поднимает вопрос о так называемой динамической устойчивости сети;
сложность алгоритмов функционирования сети (в том числе, например, введение нескольких типов синапсов — возбуждающих, тормозящих и др.) также способствует усилению мощи ИНС.
Вопрос о необходимых и достаточных свойствах сети для решения того или иного рода задач представляет собой целое направление нейрокомпьютерной науки. Так как проблема синтеза ИНС сильно зависит от решаемой задачи, дать общие подробные рекомендации затруднительно. В большинстве случаев оптимальный вариант получается на основе интуитивного подбора, хотя в литературе приведены доказательства того, что для любого алгоритма существует нейронная сеть, которая может его реализовать. Остановимся на этом подробнее.
Многие задачи: распознавания образов (зрительных, речевых и т. д.), выполнения функциональных преобразований при обработке сигналов, управления, прогнозирования, идентификации сложных систем и т. д., сводятся к следующей математической постановке. Необходимо построить отображение X —> Y такое, чтобы на каждый возможный входной сигнал X формировался правильный выходной сигнал Y. Отображение задается конечным
набором пар ((вход), (известный выход)). Число таких пар (обучающих примеров) существенно меньше общего числа возможных сочетаний значений входных и выходных сигналов. Совокупность всех обучающих примеров носит название обучающей выборки.
В задачах распознавания образов X — некоторое представление образа (изображение, вектор чисел и т. д.), Y — номер класса, к которому принадлежит входной образ.
В задачах управления X — набор контролируемых параметров управляемого объекта, Y — код, определяющий управляющее воздействие, соответствующее текущим значениям контролируемых параметров.
В задачах прогнозирования в качестве входных сигналов используются временные ряды, представляющие значения контролируемых переменных на некотором интервале времени. Выходной сигнал — множество переменных, которое является подмножеством переменных входного сигнала.
При идентификации X и Y представляют входные и выходные сигналы системы соответственно.
Вообще говоря, большая часть прикладных задач может быть сведена к реализации некоторого сложного многомерного функционального преобразования.
В результате построения такого отображения (т. е. X —> Y) необходимо добиться того, чтобы:
обеспечивалось формирование правильных выходных сигналов в соответствии со всеми примерами обучающей выборки;
обеспечивалось формирование правильных выходных сигналов в соответствии со всеми возможными входными сигналами, которые не вошли в обучающую выборку.
Второе требование в значительной степени усложняет задачу формирования обучающей выборки. В общем виде эта задача в настоящее время еще не решена, однако во всех известных случаях было найдено частное решение. Дальнейшие рассуждения предполагают, что обучающая выборка уже сформирована.
Отметим, что теоретической основой для построения нейронных сетей является следующее
Утверждение. Дм любого множества пар входных-вы- ходных векторов произвольной размерности {(Хд;〉Y^), к = =1...N} существует двухслойная однородная нейронная сеть с последовательными связями^ с сигмоидальными передаточными функциями & с конечным числом нейронов^ которая дм каждого входного вектора X# формирует соответствующий ему выходной вектор Y#.
Таким образом, для представления многомерных функций многих переменных может быть использована однородная нейронная сеть, имеющая всего один скрытый слой, с сигмоидальными передаточными функциями нейронов.
Для оценки числа нейронов в скрытых слоях однородных нейронных сетей можно воспользоваться формулой для оценки необходимого числа синаптических весов Lw (в многослойной сети с сигмоидальными передаточными функциями):
mNmN1 + i°g2 n1 + i°g2 n^£w^ml—- + 1I (n + m + 1) +^£w^ml—- + 1I (n + m + 1) +
mN
mN
1 + i°g2 n
1 + i°g2 n
^£w^ml—- + 1I (n + m + 1) +
^£w^ml—- + 1I (n + m + 1) +
где п ——размерность входного сигнала, m ——размерность выходного сигнала, N — число элементов обучающей выборки.
Оценив необходимое число весов, можно рассчитать число нейронов в скрытых слоях. Например, число нейронов в двухслойной сети составит:
L =.
n m
Известны и другие подобные формулы, например, вида
2(£ + п + m) N 10(£ + п + ш),
п — т < L <п — 10、、2
Точно так же можно рассчитать число нейронов в сетях с большим числом слоев, которые иногда целесообразно использовать: такие многослойные нейронные сети могут иметь меньшие размерности матриц синаптических весов нейронов одного слоя, чем двухслойные сети, реализующие то же самое отображение. К сожалению, строгая методика построения данных сетей пока отсутствует.
Отметим, что отечественному читателю приведенные результаты обычно известны в виде так называемой теоремы о полноте.
Теорема о полноте. Любая непрерывная функция на замкнутом ограниченном множестве может быть равномерно приближена функциями^ вычисляемыми нейронными сетями^ если функция активации нейрона дважды непрерывно дифференцируема.
Таким образом, нейронные сети являются универсальными аппроксимирующими системами.
Очевидно, что процесс функционирования ИНС, т. е. сущность действий, которые она способна выполнять, зависит от величин
синаптических связей, поэтому, задавшись определенной структурой ИНС, отвечающей какой-либо задаче, разработчик сети должен найти оптимальные значения всех переменных весовых коэффициентов (некоторые синаптические связи могут быть постоянными).
Этот этап называется обучением ИНС, и от того, насколько качественно он будет выполнен, зависит способность сети решать поставленные перед ней проблемы во время функционирования.
2・4・ Обучение нейронных сетей
Обучить нейросеть — значит, сообщить ей, чего мы от нее добиваемся. Этот процесс очень похож на обучение ребенка алфавиту. Показав ребенку изображение буквы «А», мы спрашиваем его: «Какая это буква?» Если ответ неверен, мы сообщаем ребенку тот ответ, который мы хотели бы от него получить: «Это буква А». Ребенок запоминает этот пример вместе с верным ответом, т. е. в его памяти происходят некоторые изменения в нужном направлении. Мы будем повторять процесс предъявления букв снова и снова до тех пор, когда все буквы будут твердо запомнены. Такой процесс называют «обучение с учителем» (рис. 2.7).
При обучении сети мы действуем совершенно аналогично. У нас имеется некоторая база данных, содержащая примеры (набор ру-
Рис. 2.7. Иллюстрация процесса обучения НС
кописных изображений букв). Предъявляя изображение буквы «А» на вход сети, мы получаем от нее некоторый ответ, не обя-
зательно верный. Нам известен и верный (желаемый) ответ — в данном случае нам хотелось бы, чтобы на выходе с меткой «А» уровень сигнала был максимален. Обычно в качестве желаемого выхода в задаче классификации берут набор (1, 0, 0,...), где 1 стоит на выходе с меткой «А», а 0 — на всех остальных выходах. Вычисляя разность между желаемым ответом и реальным ответом сети, мы получаем (для букв русского алфавита) 33 числа — вектор ошибки. Алгоритм обучения — это набор формул, который позволяет по вектору ошибки вычислить требуемые поправки для весов сети. Одну и ту же букву (а также различные изображения одной и той же буквы) мы можем предъявлять сети много раз. В этом смысле обучение скорее напоминает повторение упражнений в спорте — тренировку.
Оказывается, что после многократного предъявления примеров веса сети стабилизируются, причем сеть дает правильные ответы на все (или почти все) примеры из базы данных. В таком случае говорят, что «сеть выучила все примеры», «сеть обучена», или «сеть натренирована». В программных реализациях можно видеть, что в процессе обучения функция ошибки (например, сумма квадратов ошибок по всем выходам) постепенно уменьшается. Когда функция ошибки достигает нуля или приемлемого малого уровня, тренировку останавливают, а полученную сеть считают натренированной и готовой к применению на новых данных.
Важно отметить, что вся информация, которую сеть имеет о задаче, содержится в наборе примеров. Поэтому качество обучения сети напрямую зависит от количества примеров в обучающей выборке, а также от того, насколько полно эти примеры описывают данную задачу. Так, например, бессмысленно использовать сеть для предсказания финансового кризиса, если в обучающей выборке кризисов не представлено. Считается, что для полноценной тренировки требуется хотя бы несколько десятков (а лучше сотен) примеров.
Математически процесс обучения можно описать следующим образом.
В процессе функционирования нейронная сеть формирует выходной сигнал Y в соответствии с входным сигналом X, реализуя некоторую функцию Y = G(X). Если архитектура сети задана, то вид функции G определяется значениями синаптических весов и смещений сети.
Пусть решением некоторой задачи является функция Y = =F(X), заданная парами входных-выходных данных (X1, Y1), (X2, Y2), (Х\ YN), для которых 丫足=F(X* (素=1, 2,...
Обучение состоит в поиске (синтезе) функции G, близкой к F в смысле некоторой функции ошибки Е (см. рис. 2.7).
Если выбраны множество обучающих примеров — пар (X* Y, (где к = 1,2,..., N) и способ вычисления функции ошибки £〉 то обучение нейронной сети превращается в задачу многомерной оптимизации, имеющую очень большую размерность, при этом, поскольку функция Е может иметь произвольный вид, обучение в общем случае — многоэкстремальная невыпуклая задача оптимизации.
Для решения этой задачи могут быть использованы следующие (итерационные) алгоритмы:
алгоритмы локальной оптимизации с вычислением частных производных первого порядка;
алгоритмы локальной оптимизации с вычислением частных производных первого и второго порядка;
стохастические алгоритмы оптимизации;
алгоритмы глобальной оптимизации.
К первой группе относятся: градиентный алгоритм (метод скорейшего спуска); методы с одномерной и двумерной оптимизацией целевой функции в направлении антиградиента; метод сопряженных градиентов; методы, учитывающие направление антиградиента на нескольких шагах алгоритма.
Ко второй группе относятся: метод Ньютона, методы оптимизации с разреженными матрицами Гессе, квазиньютоновские методы, метод Гаусса-Ньютона, метод Левенберга-Марквардта и др.
Стохастическими методами являются: поиск в случайном направлении, имитация отжига, метод Монте-Карло (численный метод статистических испытаний).
Задачи глобальной оптимизации решаются с помощью перебора значений переменных, от которых зависит целевая функция (функция ошибки £).
2.4.1. Алгоритм обратного распространения. Рассмотрим идею одного из самых распространенных алгоритмов обучения — алгоритм обратного распространения ошибки (back propagation). Это итеративный градиентный алгоритм обучения, который используется с целью минимизации среднеквадратичного отклонения текущего выхода и желаемого выхода многослойных нейронных сетей.
Алгоритм обратного распространения используется для обучения многослойных нейронных сетей с последовательными связями вида рис. 2.5. Как отмечено выше, нейроны в таких сетях делятся на группы с общим входным сигналом — слои, при этом на каждый нейрон первого слоя подаются все элементы внешнего
входного сигнала, а все выходы нейронов m-го слоя подаются на каждый нейрон слоя (д + 1). Нейроны выполняют взвешенное (с синаптическими весами) суммирование элементов входных сигналов; к данной сумме прибавляется смещение нейрона. Над полученным результатом выполняется активационной функцией затем нелинейное преобразование. Значение функции активации есть выход нейрона.
В многослойных сетях оптимальные выходные значения нейронов всех слоев, кроме последнего, как правило, неизвестны, и трех- или более слойный персептрон уже невозможно обучить, руководствуясь только величинами ошибок на выходах НС. Наиболее приемлемым вариантом обучения в таких условиях оказался градиентный метод поиска минимума функции ошибки с рассмотрением сигналов ошибки от выходов НС к ее входам, в направлении, обратном прямому распространению сигналов в обычном режиме работы. Этот алгоритм обучения НС получил название процедуры обратного распространения.
В данном алгоритме функция ошибки представляет собой сумму квадратов рассогласования (ошибки) желаемого выхода сети и реального. При вычислении элементов вектора-градиента использован своеобразный вид производных функций активации сигмоидального типа. Алгоритм действует циклически (итеративно), и его циклы принято называть эпохами. На каждой эпохе на вход сети поочередно подаются все обучающие наблюдения, выходные значения сети сравниваются с целевыми значениями и вычисляется ошибка. Значение ошибки, а также градиента поверхности ошибок используется для корректировки весов, после чего все действия повторяются. Начальная конфигурация сети выбирается случайным образом, и процесс обучения прекращается, либо когда пройдено определенное количество эпох, либо когда ошибка достигнет некоторого определенного уровня малости, либо когда ошибка перестанет уменьшаться (пользователь может сам выбрать нужное условие остановки).
Приведем словесное описание алгоритма.
Шаг 1. Весам сети присваиваются небольшие начальные значения.
Шаг 2. Выбирается очередная обучающая пара (X, Y) из обучающего множества; вектор X подается на вход сети.
Шаг 3. Вычисляется выход сети.
Шаг 4. Вычисляется разность между требуемым (целевым, Y) и реальным (вычисленным) выходом сети.
Шаг 5. Веса сети корректируются так, чтобы минимизировать ошибку.
Шаг 6. Шаги со 2-го по 5-й повторяются для каждой пары обучающего множества до тех пор, пока ошибка на всем множестве не достигнет приемлемой величины.
Шаги 2 и 3 подобны тем, которые выполняются в уже обученной сети.
Вычисления в сети выполняются послойно. На шаге 3 каждый из выходов сети вычитается из соответствующей компоненты целевого вектора с целью получения ошибки. Эта ошибка используется на шаге 5 для коррекции весов сети.
Шаги 2 и 3 можно рассматривать как «проход вперед», так как сигнал распространяется по сети от входа к выходу. Шаги 4 и 5 составляют «обратный проход», поскольку здесь вычисляемый сигнал ошибки распространяется обратно по сети и используется для подстройки весов.
Математическое представление алгоритма рассмотрим вначале на примере простейшей нейронной сети, содержащей только один нейрон (условно показанный кружком, см. рис. 2.8).
Рис. 2.8. НС из одного нейронаРис. 2.8. НС из одного нейрона
Рис. 2.8. НС из одного нейрона
Рис. 2.8. НС из одного нейрона
Будем полагать, что выход (output) сети о = /(net) определя
ется функцией активации сигмоидного (см. табл. 2.1) типа
о = o(wTx)=о = o(wTx)=11 + g-wTx11 + g-wTx
о = o(wTx)=
о = o(wTx)=
1
1 + g-wTx
1
1 + g-wTx
где хт =(Ж1, ..жп) — вектор входных сигналов, wT = (wi,... ...,wn) — вектор весов сети, «Т» — символ транспонирования.
Предположим, далее, что для обучения сети используется вы
борка
22
入—"2,• • •,"九丿, У ,
人—2,• • •,丿,У ,
где ук — значения желаемого (целевого) выхода.
В качестве функции ошибки для 素то образца (素то элемента обучающей выборки) примем величину, пропорциональную ква-
драту разности желаемого выхода и выхода сети:драту разности желаемого выхода и выхода сети:Соответственно, суммарная функция ошибки по всем элементам выборки:
драту разности желаемого выхода и выхода сети:
драту разности желаемого выхода и выхода сети:
e =工Е足.
к=1
Очевидно, как £足〉так и Е являются функциями вектора весов сети w. Задача обучения сети сводится в данном случае к подбору такого вектора w, при котором достигается минимум Е. Данную задачу (оптимизации) будем решать градиентным методом, используя соотношение
W := W — 〃矶(W),
где «:=» — оператор присвоения,司(w) — обозначение вектора- градиента, г/ — некоторая константа.
Представляя данный вектор в развернутом виде и учитывая приведенное выше (в § 2.2) выражение для производной сигмоидной функции, получим:
Это дает возможность записать алгоритм коррекции (подстройки) вектора весовых коэффициентов сети в формеЭто дает возможность записать алгоритм коррекции (подстройки) вектора весовых коэффициентов сети в формеW := W + п(ук - 0^)0^(1 - ок)^к = W + 哂&,
Это дает возможность записать алгоритм коррекции (подстройки) вектора весовых коэффициентов сети в форме
Это дает возможность записать алгоритм коррекции (подстройки) вектора весовых коэффициентов сети в форме
Полученные математические выражения полностью определяют алгоритм обучения рассматриваемой НС, который может быть представлен теперь в следующем виде.
Задаются некоторые 〃 (0 < т; < 1), Етах и некоторые малые случайные веса w?- сети.
Задаются 素=1 и £ = 0.
Вводится очередная обучающая пара (х^, у#). Производятся обозначения
X := X , у := у
и вычисляется величина выхода сети:
о = О W х = .
1 + e-w х
Обновляются (корректируются) веса:
w := W + Т]{у — о)о(1 — о)х.
Корректируется (наращивается) значение функции ошибки:
Е := Е+ ;(У — о)2.
Если к < N)тогда 素:=素 + 1 и переход к шагу 3, в противоположном случае — переход на шаг 7.
Завершение цикла обучения. Если Е < Emax〉то окончание всей процедуры обучения. Если Е》Ещах〉тогда начинается новый цикл обучения переходом к шагу 2.
Рассмотрим теперь более общий случай, полагая, что двухслойная НС содержит несколько (£) скрытых нейронов и один выходной (рис. 2.9).
Рис. 2.9. Двухслойная нейронная сеть
В данном случае функция ошибки зависит от векторов весов скрытого слоя и вектора весов, связанных с выходным нейроном.
Выход сети описывается выражением
—1 + &-W5
где W — вектор весов выходного нейрона, о^ — вектор выходов нейронов скрытого слоя с элементами
к 1
°г - 1,
w?・ обозначает вектор весов, связанных с г-м скрытым нейроном, 分2, ..L
Правило корректировки весов в рассматриваемой НС также основано на минимизации квадратичной функции ошибки градиентным методом на основе выражений:
w:= W-7;w:= W-7;.Ea(W, w)
w:= W-7;
w:= W-7;
' aw
w, := w, - г/w, := w, - г/@Ea(W, w)
w, := w, - г/
w, := w, - г/
Aw。
где п = const — коэффициент скорости обучения (0 < ту < 1), 分=2, ..L
Используя правило дифференцирования сложной функции и выражение для производной сигмоидной функции активации, получим:
@M(W, w) = 1 j 1 У =
aw _ 2 aw V i + e-wT°k 丿 ~
=-(/ - Ofc)Ofc(l - Ofc)o\ откуда следует
W := w + 77(/ - 0a)0a(1 - 0a)(? = w + n62к, или в скалярной форме
巾:=Ж + 桢足。公 г = 1, 2, ... , £, где
8к = (ук -Ok)Ok(\-OkY
Поступая аналогично, найдем
°": W)=_ 0,0,1 - 0,叫0貿1 - о,)х*
откуда получаем
W。:= W。+ Ту^ЖоН1 -。打Х〃,
или (в скалярной форме)
:= ^斎 + 〃方足^^。?* (1 —。勿)"「 1 — 1, 2,, L — 1, 2, ... , 71.
Алгоритм обучения может быть теперь представлен в виде следующих шагов.
Задаются некоторые т; (0 < т; < 1), Етах и некоторые малые случайные веса w?- сети.
Задаются 素=1 и £ = 0.
Вводится очередная обучающая пара (х^, /). Производятся обозначения
X := X , У := У
и вычисляется величина выхода сети:
—l + e-W—
где W — вектор весов выходного нейрона, о^ — вектор выходов нейронов скрытого слоя с элементами
5 =т~〉
w?・ обозначает вектор весов, связанных с г-м скрытым нейроном, 分2, ..L
Производится корректировка весов выходного нейрона:
W:= W + 776Q,
где 8 — (у — 0)0(1 — О).
Корректируются веса нейронов скрытого слоя:
w? := w? + 桢屮问。-о,)х, 5 =2, ..「L
Корректируется (наращивается) значение функции ошибки:
Е := Е+ ;(У — о)2.
Если к < N)тогда 素:=素 + 1 и переход к шагу 3, в противоположном случае переход на шаг 8.
Завершение цикла обучения. Если Е < Етах^ то окончание всей процедуры обучения. Если Е》Ещах〉тогда начинается новый цикл обучения переходом к шагу 2.
Рассмотренная процедура может быть легко обобщена на случай сети с произвольным количеством слоев и нейронов в каждом
слое. Обратим внимание, что в данной процедуре сначала происходит коррекция весов для выходного нейрона, а затем — для нейронов скрытого слоя, т. е. от конца сети к ее началу. Отсюда и название — обратное распространение ошибки. Ввиду использования для обозначений греческой буквы 5, эту процедуру обучения называют еще иногда обобщенным делъта-правилом.
Дадим изложенному геометрическую интерпретацию.
В алгоритме обратного распространения вычисляется вектор градиента поверхности ошибок. Этот вектор указывает направление кратчайшего спуска по поверхности из данной точки, поэтому, если мы «немного» продвинемся по нему, ошибка уменьшится. Последовательность таких шагов (замедляющаяся по мере приближения к дну) в конце концов приведет к минимуму того или иного типа. Определенную трудность здесь представляет вопрос о том, какую нужно брать длину шагов (что определяется величиной коэффициента скорости обучения 〃).
При большой длине шага сходимость будет более быстрой, но имеется опасность перепрыгнуть через решение или (если поверхность ошибок имеет особо вычурную форму) уйти в неправильном направлении. Классическим примером такого явления при обучении нейронной сети является ситуация, когда алгоритм очень медленно продвигается по узкому оврагу с крутыми склонами, прыгая с одной его стороны на другую. Напротив, при маленьком шаге, вероятно, будет схвачено верное направление, однако при этом потребуется очень много итераций. На практике величина шага берется пропорциональной крутизне склона (так что алгоритм замедляет ход вблизи минимума) с некоторой константой (〃)〉которая, как отмечалось, называется коэффициентом скорости обучения. Правильный выбор скорости обучения зависит от конкретной задачи и обычно осуществляется опытным путем; эта константа может также зависеть от времени, уменьшаясь по мере продвижения алгоритма.
Обычно этот алгоритм видоизменяется таким образом, чтобы включать слагаемое импульса (или инерции). Этот член способствует продвижению в фиксированном направлении, поэтому если было сделано несколько шагов в одном и том же направлении, то алгоритм «увеличивает скорость», что (иногда) позволяет избежать локального минимума, а также быстрее проходить плоские участки.
Таким образом, алгоритм действует итеративно, и его шаги принято называть эпохами. На каждой эпохе на вход сети поочередно подаются все обучающие наблюдения, выходные значения сети сравниваются с целевыми значениями и вычисляется
ошибка. Значение ошибки, а также градиента поверхности ошибок используется для корректировки весов, после чего все действия повторяются. Начальная конфигурация сети выбирается случайным образом, и процесс обучения прекращается, либо когда пройдено определенное количество эпох, либо когда ошибка достигнет некоторого определенного уровня малости, либо когда ошибка перестанет уменьшаться (пользователь может сам выбрать нужное условие остановки).
Классический метод обратного распространения относится к алгоритмам с линейной сходимостью и известными недостатками его являются: невысокая скорость сходимости (большое число требуемых итераций для достижения минимума функции ошибки), возможность сходиться не к глобальному, а к локальным решениям (локальным минимумам отмеченной функции), возможность паралича сети (при котором большинство нейронов функционирует при очень больших значениях аргумента функций активации, т. е. на ее пологом участке; поскольку ошибка пропорциональна производной, которая на данных участках мала, то процесс обучения практически замирает).
Для устранения этих недостатков были предложены многочисленные модификации алгоритма обратного распространения, которые связаны с использованием различных функций ошибки, различных процедур определения направления и величины шага и т. п.
Переобучение и обобщение. Одна из наиболее серьезных трудностей изложенного подхода заключается в том, что таким образом мы минимизируем не ту ошибку, которую на самом деле нужно минимизировать, — ошибку, которую можно ожидать от сети, когда ей будут подаваться совершенно новые наблюдения.
Иначе говоря, мы хотели бы, чтобы нейронная сеть обладала способностью обобщать результат на новые наблюдения. В действительности сеть обучается минимизировать ошибку на обучающем множестве, и в отсутствие идеального и бесконечно большого обучающего множества это совсем не то же самое, что минимизировать «настоящую» ошибку на поверхности ошибок в заранее неизвестной модели явления.
Сильнее всего это различие проявляется в проблеме переобучения, или слишком близкой подгонки. Это явление проще будет продемонстрировать не для нейронной сети, а на примере аппроксимации посредством полиномов, — при этом суть явления абсолютно та же.
Полином (или многочлен) — это выражение, содержащее только константы и целые степени независимой переменной. Примеры:
у = 2化 + 3〉 у = Зж2 + 4化 + 1.
Графики полиномов могут иметь различную форму, причем чем выше степень многочлена (и, тем самым, чем больше членов в него входит), тем более сложной может быть эта форма. Если у нас есть некоторые данные, мы можем поставить цель подогнать к ним полиномиальную кривую (модель) и получить таким образом объяснение для имеющейся зависимости. Наши данные могут быть зашумлены, поэтому нельзя считать, что самая лучшая модель задается кривой, которая в точности проходит через все имеющиеся точки. Полином низкого порядка может быть недостаточно гибким средством для аппроксимации данных, в то время как полином высокого порядка может оказаться чересчур гибким, и будет точно следовать данным, принимая при этом замысловатую форму, не имеющую никакого отношения к форме настоящей зависимости.
Нейронная сеть сталкивается с точно такой же трудностью. Сети с большим числом весов моделируют более сложные функции и, следовательно, склонны к переобучению. Сеть же с небольшим числом весов может оказаться недостаточно гибкой, чтобы смоделировать имеющуюся зависимость.
Как же выбрать «правильную» степень сложности для сети? Почти всегда более сложная сеть дает меньшую ошибку, но это может свидетельствовать не о хорошем качестве модели, а о переобучении.
Ответ состоит в том, чтобы использовать механизм контрольной кросс-проверки, при котором часть обучающих наблюдений резервируется и в обучении по алгоритму обратного распространения не используется. Вместо этого, по мере работы алгоритма, она используется для независимого контроля результата. В самом начале работы ошибки сети на обучающем и контрольном множествах будут одинаковыми (если они существенно отличаются, то, вероятно, разбиение всех наблюдений на два множества было неоднородно). По мере того как сеть обучается, ошибка обучения, естественно, убывает, и, пока обучение уменьшает действительную функцию ошибок, ошибка на контрольном множестве также будет убывать. Если же контрольная ошибка перестала убывать или даже стала расти, это указывает на то, что сеть начала слишком близко аппроксимировать данные и обучение следует остановить. Это явление чересчур точной аппроксимации в процессе обучения и называется переобучением. Если такое случилось, то обычно советуют уменьшить число скрытых элементов и/или слоев, ибо
сеть является слишком мощной для данной задачи. Если же сеть, наоборот, была взята недостаточно богатой для того, чтобы моделировать имеющуюся зависимость, то переобучения, скорее всего, не произойдет, и обе ошибки — обучения и проверки — не достигнут достаточного уровня малости.
Описанные проблемы с локальными минимумами и выбором размера сети приводят к тому, что при практической работе с нейронными сетями, как правило, приходится экспериментировать с большим числом различных сетей, порой обучая каждую из них по несколько раз (чтобы не быть введенным в заблуждение локальными минимумами) и сравнивая полученные результаты. Главным показателем качества результата является здесь контрольная ошибка. При этом в соответствии с общенаучным принципом, согласно которому при прочих равных следует предпочесть более простую модель, из двух сетей с приблизительно равными ошибками контроля имеет смысл выбрать ту, которая меньше.
Классический метод обратного распространения относится к алгоритмам с линейной сходимостью. Для увеличения скорости сходимости необходимо использовать матрицы вторых производных функции ошибки.
Были предложены многочисленные модификации алгоритма обратного распространения, которые связаны с использованием различных функций ошибки, различных процедур определения направления и величины шага.
Функции ошибки:
интегральные функций ошибки по всей совокупности обучающих примеров;
функции ошибки целых и дробных степеней.
Процедуры определения величины шага на каждой итерации:
дихотомия;
инерционные соотношения;
отжиг.
Процедуры определения направления шага:
с использованием матрицы производных второго порядка (метод Ньютона и др.);
с использованием направлений на нескольких шагах (партан метод и др.).
4.2. Обучение без учителя. Рассмотренный алгоритм обучения нейронной сети с помощью процедуры обратного распространения подразумевает наличие некоего внешнего звена, предоставляющего сети кроме входных также и целевые выходные образы.
Алгоритмы, пользующиеся подобной концепцией, называются алгоритмами обучения с учителем. Для их успешного функционирования необходимо наличие экспертов, создающих на предварительном этапе для каждого входного образа эталонный выходной. Так как создание искусственного интеллекта движется по пути копирования природных прообразов, ученые не прекращают спор на тему, можно ли считать алгоритмы обучения с учителем натуральными или же они полностью искусственны. Например, обучение человеческого мозга, на первый взгляд, происходит без учителя: на зрительные, слуховые, тактильные и прочие рецепторы поступает информация извне, и внутри нервной системы происходит некая самоорганизация. Однако нельзя отрицать и того, что в жизни человека не мало учителей — и в буквальном, и в переносном смысле, — которые координируют внешние воздействия. Вместе с тем, чем бы ни закончился спор приверженцев этих двух концепций обучения — с учителем и без учителя, они обе имеют право на существование.
Главная черта, делающая обучение без учителя привлекательным, —это его «самостоятельность». Процесс обучения, как и в случае обучения с учителем, заключается в подстраивании весов сети. Некоторые алгоритмы, правда, изменяют и структуру сети, т. е. количество нейронов и их взаимосвязи, но такие преобразования правильнее назвать более широким термином — самоорганизацией, и здесь они рассматриваться не будут. Очевидно, что подстройка весов может проводиться только на основании информации, доступной в нейроне, т. е. его состояния и уже имеющихся весовых коэффициентов. Исходя из этого соображения и, что более важно, по аналогии с известными принципами самоорганизации нервных клеток, построены алгоритмы обучения Хебба.
Сигнальный метод обучения Хебба заключается в изменении весов по следующему правилу:
где о?т)— выходное значение j-ro нейрона слоя (q — 1), о“)一 выходное значение г-го нейрона слоя q; Wij — весовой коэффициент синапса, соединяющего эти нейроны, 〃 一 коэффициент скорости обучения. Здесь и далее, для общности, под q подразумевается произвольный слой сети. При обучении по данному методу усиливаются связи между возбужденными нейронами.
Полный алгоритм обучения с применением вышеприведенной формулы будет выглядеть так:
На стадии инициализации всем весовым коэффициентам присваиваются небольшие случайные значения.
На входы сети подается входной образ, и сигналы возбуждения распространяются по всем слоям согласно принципам классических сетей прямого распространения (feedforward), т. е. для каждого нейрона рассчитывается взвешенная сумма его входов, к которой затем применяется активационная (передаточная) функция нейрона, в результате чего получается его выходное значение.
На основании полученных выходных значений нейронов по приведенной формуле производится изменение весовых коэффициентов.
Цикл с шага 2, пока выходные значения сети не застабили- зируются с заданной точностью. Применение этого нового способа определения завершения обучения, отличного от использовавшегося для сети обратного распространения, обусловлено тем, что подстраиваемые значения синапсов фактически не ограничены.
На втором шаге цикла попеременно предъявляются все образы из входного набора.
Следует отметить, что вид откликов на каждый класс входных образов неизвестен заранее и будет представлять собой произвольное сочетание состояний нейронов выходного слоя, обусловленное случайным распределением весов на стадии инициализации. Вместе с тем, сеть способна обобщать схожие образы, относя их к одному классу. Тестирование обученной сети позволяет определить
Рис. 2.10. Структура сети Кохонена
топологию классов в выходном слое. Для приведения откликов обученной сети к удобному представлению можно дополнить сеть одним слоем, который, например, по алгоритму обучения однослойного персептрона необходимо заставить отображать выходные реакции сети в требуемые образы.
Другой алгоритм обучения без учителя — алгоритм Кохонена (Kohonen) — предусматривает самообучение по правилу «победитель забирает все». Структура сети, реализующей данное правило, представлена на рис. 2.10.
Критерий подстройки весов сети (все векторы весов должны быть нормализованы, т. е. иметь единичную длину: ||w"| = 1, г = 1, 2, ..., m) выглядит следующим образом:
||x-wr|| = . min ||х- w8||,
где индекс г обозначает нейрон-победитель, соответствующий вектору весов wr, который ближе всех расположен к (текущему) входному вектору х.
Поскольку (с учетом того, что w[w?・=11w?-112 = 1)
||х - W,||2 = (х - w?)T(x - W?)=
=хтх — 2w[x + w[w?・=хтх — 2w^~ х + 1, процедура нахождения wr эквивалентна решению оптимизационной задачи
wr х = max wj х,
чему можно дать следующую геометрическую интерпретацию (см. рис. 2.11).
Так как скалярное произведение w[x с учетом ||w"| = 1 представляет собой просто проекцию вектора х на направление вектора w高 то нейрон-победитель определяется по тому вектору весов, чье
направление ближе всего к направлению х (на рис. 2.11 таким является вектор w?).
После выявления нейрона-победителя его выход устанавливается равным единице (у остальных нейронов устанавливаются нулевые выходы), а веса корректируются так, чтобы уменьшить квадрат величины рассогласования ||х — wr||2. При использовании градиентного подхода это приводит к следующей математической формулировке:
d||x - wr||2:=wr - 〃,
где, как и раньше, 〃 一 константа, определяющая скорость обучения.
Найдем производную в правой части последнего выражения:
d||x - wr||2 d((x - w『)T(x - wr))
rf(xTx - 2wTx + wTwr)、
=—=—— wj
При этом
Wr := Wr + 4(X — wr).
Заметим, что коррекции весов у других нейронов не производится.
Алгоритм обучения (без учителя) Кохонена может быть теперь описан следующим образом.
Задаются случайные нормализованные по длине векторы w?・.
Начало цикла обучения; ввод очередного вектора входов х.
Определение нейрона-победителя, корректировка вектора его весов и задание единичного выхода:
Wr := Wr + 4(Х — wr), or = 1.
Нормализация найденного вектора:
wr
:=л―и*
Задание значений для остальных нейронов:
W? := Wg 5 = 0, г ф г.
Проверка выполнения правила останова (в качестве такого правила можно принять, например, стабилизацию векторов весов
на каких-то значениях); если оно не выполнено — продолжение цикла обучения (переходом к шагу 2), в противоположном случае — переход к шагу 7.
Конец процедуры обучения.
Заметим, что выражение для коррекции вектора весовых коэффициентов нейрона-победителя может быть представлено в форме
Wr := Wr + 〃(х — wr) = (1 — 〃)w『+ тух,
т. е. новое (скорректированное) значение данного вектора является взвешенной суммой старого значения (до коррекции) и предъ-
Рис. 2.12. Иллюстрация к процедуре коррекции вектора весов нейрона-победителя
явленного вектора входов, чему соответствует геометрическая иллюстрация рис. 2.12.
Нетрудно показать, что итоговым результатом подобных коррекций (в условиях рассматриваемого примера для двумерного случая) являются векторы весов, показывающие на центры кластеров (центры группирования) входных образов (рис. 2.13).
Иначе говоря, алгоритм обучения Кохонена обеспечивает решение задачи автоматической классификации, т. е. отнесения предъявленного вектора входов к одному из классов (на рис. 2.13 таких классов 3). Правда, такая классификация возможна только в случае, когда кластеры являются линейно разделимыми (гиперплоскостями) относительно начала координат в пространстве входов НС.
Отметим, что число нейронов НС для успешного решения указанной задачи должно быть не меньше, чем число кластеров; поскольку точное число кластеров может быть заранее неизвестно, количество нейронов задают с определенным запасом. «Лишние»
Рис. 2.13. Векторы весов НС после окончания процесса обучения
нейроны, у которых в процессе обучения сети веса изменяются хаотически по завершении данного процесса могут быть удалены.
2・5・ Применение нейросети
После того как сеть обучена, мы можем применять ее для решения различных задач (рис. 2.14).
Важнейшая особенность человеческого мозга состоит в том, что, однажды обучившись определенному процессу, он может верно
Рис. 2.14. Этапы нейросетевого проекта действовать и в тех ситуациях, в которых он не бывал в процессе обучения. Например, мы можем читать почти любой почерк, даже
если видим его первый раз в жизни. Так же и нейросеть, грамотным образом обученная, может с большой вероятностью правильно реагировать на новые, не предъявленные ей ранее данные. Например, мы можем нарисовать букву «А» другим почерком, а затем предложить нашей сети классифицировать новое изображение.
Веса обученной сети хранят достаточно много информации о сходстве и различиях букв, поэтому можно рассчитывать на правильный ответ и для нового варианта изображения.
Области применения нейросетей: классификация. Отметим, что задачи классификации (типа распознавания букв) очень плохо алгоритмизуются. Если в случае распознавания букв верный ответ очевиден для нас заранее, то в более сложных практических задачах обученная нейросеть выступает как эксперт, обладающий большим опытом и способный дать ответ на трудный вопрос.
Примером такой задачи служит медицинская диагностика, где сеть может учитывать большое количество числовых параметров (энцефалограмма, давление, вес и т. д.). Конечно, «мнение» сети в этом случае нельзя считать окончательным. Классификация предприятий по степени их перспективности — это уже привычный способ использования нейросетей в практике западных компаний (деление компаний на перспективные и убыточные). При этом сеть также использует множество экономических показателей, сложным образом связанных между собой.
Нейросетевой подход особенно эффективен в задачах экспертной оценки по той причине, что он сочетает в себе способность компьютера к обработке чисел и способность мозга к обобщению и распознаванию. Говорят, что у хорошего врача способность к распознаванию в своей области столь велика, что он может провести приблизительную диагностику уже по внешнему виду пациента. Можно согласиться также, что опытный трейдер чувствует направление движения рынка по виду графика. Однако в первом случае все факторы наглядны, т. е. характеристики пациента мгновенно воспринимаются мозгом как «бледное лицо», «блеск в глазах» и т. д. Во втором же случае учитывается только один фактор, показанный на графике, — курс за определенный период времени. Нейросеть позволяет обрабатывать огромное количество факторов (до нескольких тысяч), независимо от их наглядности, — это универсальный «хороший врач», который может поставить свой диагноз в любой области.
Кластеризация и поиск зависимостей. Помимо задач классификации, нейросети широко используются для поиска зависимостей в данных и кластеризации.
Например, нейросеть на основе методики МГУА (метод группового учета аргументов) позволяет на основе обучающей выборки построить зависимость одного параметра от других в виде полинома. Такая сеть может не только мгновенно выучить таблицу умножения, но и найти сложные скрытые зависимости в данных (например, финансовых), которые не обнаруживаются стандартными статистическими методами.
Кластеризация — это разбиение набора примеров на несколько компактных областей (кластеров), причем число кластеров заранее неизвестно. Кластеризация позволяет представить неоднородные данные в более наглядном виде и использовать далее для исследования каждого кластера различные методы. Например, таким образом можно быстро выявить фальсифицированные страховые случаи или недобросовестные предприятия.
Прогнозирование. Задачи прогнозирования особенно важны для практики, в частности, для финансовых приложений, поэтому поясним способы применения нейросетей в этой области более подробно.
Рассмотрим практическую задачу, ответ в которой неочевиден, —задачу прогнозирования курса акций на 1 день вперед.
Пусть у нас имеется база данных, содержащая значения курса за последние 300 дней. Простейший вариант в данном случае — попытаться построить прогноз завтрашней цены на основе курсов за последние несколько дней. Понятно, что прогнозирующая сеть должна иметь всего один выход и столько входов, сколько предыдущих значений мы хотим использовать для прогноза — например, 4 последних значения. Составить обучающий пример очень просто: входными значениями будут курсы за 4 последовательных дня, а желаемым выходом — известный нам курс в следующий день за этими четырьмя, т. е. каждая строка таблицы с обучающей последовательностью (выборкой) представляет собой обучающий пример, где первые 4 числа — входные значения сети, а пятое число — желаемое значение выхода.
Заметим, что объем обучающей выборки зависит от выбранного количества входов. Если сделать 299 входов, то такая сеть потенциально могла бы строить лучший прогноз, чем сеть с 4 входами, однако в этом случае мы имеем дело с огромным массивом данных, что делает обучение и использование сети практически невозможным. При выборе числа входов следует учитывать это, выбирая разумный компромисс между глубиной предсказания (число входов) и качеством обучения (объем тренировочного набора).
Вообще говоря, в зависимости от типа решаемой задачи, целесообразно применять нейронную сеть наиболее подходящей для
такой задачи структуры. Рассмотрим некоторые, наиболее употребительные виды НС.
Персептроны. В качестве научного предмета искусственные нейронные сети впервые заявили о себе в 40-е годы. Стремясь воспроизвести функции человеческого мозга, исследователи создали простые аппаратные (а позже программные) модели биологического нейрона и системы его соединений. Когда нейрофизиологи достигли более глубокого понимания нервной системы человека, эти ранние попытки стали восприниматься как весьма грубые аппроксимации. Тем не менее на этом пути были достигнуты впечатляющие результаты, стимулировавшие дальнейшие исследования, приведшие к созданию более изощренных сетей.
Первое систематическое изучение искусственных нейронных сетей было предпринято Маккалохом и Питтсом в 1943 г. Позднее они исследовали сетевые парадигмы для распознавания изображений, подвергаемых сдвигам и поворотам, используя при этом простую нейронную модель, показанную на рис. 2.15. Элемент S умножает каждый вход 化勿 на вес w?- и суммирует взвешенные
Рис. 2.15. Персептронный нейрон
входы. Если эта сумма больше заданного порогового значения, выход равен единице, в противном случае — нулю. Эти системы (и множество им подобных) получили название персептронов. Они состоят из одного слоя искусственных нейронов, соединенных с помощью весовых коэффициентов с множеством входов (см. рис. 2.16), хотя в принципе описываются и более сложные системы.
В 60-е годы персептроны вызвали большой интерес и оптимизм. Розенблатт доказал замечательные теоремы об обучении персептронов, приводимые ниже. Уидроу дал ряд убедительных демонстраций систем персептронного типа, и исследователи во всем мире стремились изучить возможности этих систем. Первоначальная эйфория сменилась разочарованием, когда оказалось,
что персептроны не способны обучиться решению ряда простых задач. Минский строго проанализировал эту проблему и показал, что имеются жесткие ограничения на то, что могут выполнять однослойные персептроны, и, следовательно, на то, чему они могут обучаться. Так как в то время методы обучения многослойных сетей не были известны, исследователи перешли в более многообещающие области, и исследования в области нейронных сетей
Рис. 2.16. Персептрон со многими выходами
пришли в упадок. Недавнее открытие методов обучения многослойных сетей в большей степени, чем какой-либо иной фактор, повлияло на возрождение интереса и исследовательских усилий.
Работа Минского возможно и охладила пыл энтузиастов персептрона, но обеспечила время для необходимой консолидации и развития лежащей в основе теории. Важно отметить, что анализ Минского не был опровергнут. Он остается важным исследованием и должен изучаться, чтобы ошибки 60-х годов не повторились.
Несмотря на свои ограничения, персептроны широко изучались (хотя не слишком широко использовались). Теория персептронов является основой для многих других типов искусственных нейронных сетей, в силу чего они являются логической исходной точкой для изучения искусственных нейронных сетей.
Рассмотрим в качестве примера трехнейронный персептрон (рис. 2.16), нейроны которого имеют активационную функцию в виде единичного скачка.
На п входов поступают входные сигналы, проходящие по синапсам, на три нейрона, образующие единственный слой этой сети
и выдающие три выходных сигнала:
Очевидно, что все весовые коэффициенты синапсов одного слоя нейронов можно свести в матрицу W, в которой каждый элемент Wij задает величину г-й синаптической связи j-ro нейрона. Таким образом, процесс, происходящий в нейронной сети, может быть записан в матричной форме:
Y = f(XW),
где X и Y — соответственно входной и выходной сигнальные векторы (здесь и далее под вектором понимается вектор-строка), f (S) — активационная функция, применяемая поэлементно к компонентам вектора S.
На рис. 2.17 представлен двухслойный персептрон, полученный из персептрона с рис. 2.16 путем добавления второго слоя, состоящего из двух нейронов.
Здесь уместно отметить важную роль нелинейности активационной функции, так как, если бы она не обладала данным свойст-
Персептронные нейроны
Рис. 2.17. Двухслойный персептрон
вом или не входила в алгоритм работы каждого нейрона, результат функционирования любой Q-слойной нейронной сети с весовыми
матрицами W(°)для каждого слоя q = 1〉.. .〉Q сводился бы к перемножению входного вектора сигналов X на матрицу:
W(£)= W⑴… WW(Q).
Фактически такая Q-слойнан нейронная сеть эквивалентна сети с одним скрытым слоем и с весовой матрицей единственного слоя W(SJ:
Y = XW(S).
Работа персептрона сводится к классификации (обобщению) входных сигналов, принадлежащих n-мерному гиперпространству, по некоторому числу классов. С математической точки зрения это происходит путем разбиения гиперпространства гиперплоскостями. Для случая однослойного персептрона
〉:^i^ij = J 2)• • •)
Каждая полученная область является областью определения отдельного класса. Число таких классов для персептрона не превышает 2П, где п — число его входов. Однако не все из классов могут быть разделимы данной нейронной сетью. Например, однослойный персептрон, состоящий из одного нейрона с двумя входами, не может реализовать логическую функцию ИСКЛЮЧАЮЩЕЕ ИЛИ, т. е. не способен разделить плоскость (двумерное гиперпространство) на две полуплоскости так, чтобы осуществить классификацию входных сигналов по классам А и В (см. табл. 2.3).
Уравнение сети для этого случая
x^wi + 化 2^2 = J
является уравнением прямой (одномерной гиперплоскости), которая ни при каких условиях не может разделить плоскость так, чтобы точки из множества входных сигналов, принадлежащие разным классам, оказались по разные стороны от прямой (рис. 2.18). Невозможность реализации однослойным персептроном этой функции получила название проблемы ИСКЛЮЧАЮЩЕГО ИЛИ.
Отметим, что функции, которые не реализуются однослойным персептроном, называются линейно неразделимыми. Решение задач, подпадающих под это ограничение, заключается в применении двух- и более слойных сетей или сетей с нелинейными синапсами, однако и тогда существует вероятность, что корректное разделение некоторых входных сигналов на классы невозможно.
Обучение персептрона сводится к формированию весов связей между первым и вторым (см. рис. 2.17) слоями в соответствии со
следующим алгоритмом.следующим алгоритмом.Z2010ВА1АВZ2010ВА1АВТ аблица 2.3. Логическая функцияИСКЛЮЧАЮЩЕЕ ИЛИТ аблица 2.3. Логическая функцияИСКЛЮЧАЮЩЕЕ ИЛИРис. 2.18. Линейная неразделимо сть функции ИСКЛЮЧАЮЩЕЕ ИЛИРис. 2.18. Линейная неразделимо сть функции ИСКЛЮЧАЮЩЕЕ ИЛИ
следующим алгоритмом.
следующим алгоритмом.
Z2
0
1
0
В
А
1
А
В
Z2
0
1
0
В
А
1
А
В
Т аблица 2.3. Логическая функция
ИСКЛЮЧАЮЩЕЕ ИЛИ
Т аблица 2.3. Логическая функция
ИСКЛЮЧАЮЩЕЕ ИЛИ
Рис. 2.18. Линейная неразделимо сть функции ИСКЛЮЧАЮЩЕЕ ИЛИ
Рис. 2.18. Линейная неразделимо сть функции ИСКЛЮЧАЮЩЕЕ ИЛИ
Шаг 1. Проинициализировать элементы весовой матрицы (обычно небольшими случайными значениями).
Шаг 2. Подать на входы один из входных векторов, которые сеть должна научиться различать, и вычислить ее выход.
Шаг 3. Если выход правильный, перейти на шаг 4.
Иначе — вычислить разницу между идеальным d и полученным У значениями выхода:
8 — d — Y.
Модифицировать веса в соответствии с формулой
wv- (t + 1) = wv- (t) + 〃6吃,
где t и (t + 1) — номера соответственно текущей и следующей итераций; 〃 一 коэффициент скорости обучения, 0 < т; < 1; г — номер входа; — номер нейрона в слое.
Очевидно, что если d〉匕 то весовые коэффициенты будут увеличены и, тем самым, уменьшат ошибку. В противном случае они будут уменьшены, и У тоже уменьшится, приближаясь к d.
Шаг 4. Цикл с шага 2, пока сеть не перестанет ошибаться.
На втором шаге на разных итерациях поочередно в случайном порядке предъявляются все возможные входные векторы. К сожалению, нельзя заранее определить число итераций, которые потребуется выполнить, а в некоторых случаях и гарантировать полный успех.
Сходимость рассмотренной процедуры устанавливается теоремами, утверждающими, что для любой классификации обучающей последовательности можно подобрать такой набор (из бесконечного набора) элементарных нейронов, в котором будет осуществлено разделение обучающей последовательности при помощи линейного
решающего правила, и что, если относительно задуманной классификации можно найти набор элементов, в котором существует решение, то в рамках этого набора оно будет достигнуто в конечный промежуток времени.
Нейронные сети встречного распространения. Объединение разнотипных нейронных структур в единой архитектуре зачастую приводит к свойствам, которых нет у них по отдельности. Причем именно каскадные соединения нейронных структур, специализирующихся на решении различных задач, позволяют решить проблему комплексно.
Нейронные сети встречного распространения, состоящие из входного слоя нейронов и так называемых слоев нейронов Кохо- нена и Гроссберга, по своим характеристикам существенно превосходят возможности сетей с одним скрытым слоем нейронов. Так, время их обучения задачам распознавания и кластеризации более, чем в сто раз меньше времени обучения аналогичным задачам сетей с обратным распространением. Это может быть полезно в тех приложениях, где долгая обучающая процедура невозможна
Одними из определяющих характеристик сети встречного распространения являются ее хорошие способности к обобщению, позволяющие получать правильный выход даже при неполным или зашумленном входном векторе. Это позволяет эффективно использовать данную сеть для распознавания и восстановления образов, а также для усиления сигналов.
В процессе обучения сети встречного распространения входные векторы ассоциируются с соответствующими выходными векторами. Эти векторы могут быть двоичными или непрерывными. После обучения сеть формирует выходные сигналы, соответствующие входным сигналам. Обобщающая способность сети дает возможность получать правильный выход, когда входной вектор неполон или искажен.
Сеть встречного распространения имеет два слоя с последовательными связями. Первый слой — слой Кохонена, второй — слой Гроссберга. Каждый элемент входного сигнала подается на все нейроны слоя Кохонена. Каждый нейрон слоя Кохонена соединен со всеми нейронами слоя Гроссберга. Отличие сети встречного распространения от других многослойных сетей с последовательными связями состоит в операциях, выполняемых нейронами Кохонена и Гроссберга.
В режиме функционирования сети предъявляется входной сигнал X и формируется выходной сигнал У. В режиме обучения на вход сети подается входной сигнал и веса корректируются, чтобы сеть выдавала требуемый выходной сигнал.
①ункционирование сети
Слой Кохонена. В своей простейшей форме слой Кохонена функционирует по правилу «победитель получает все». Для данного входного вектора один и только один нейрон Кохонена выдает логическую единицу, все остальные выдают ноль. Выход каждого нейрона Кохонена является просто суммой взвешенных элементов входных сигналов:
Sj = Wi^i + w2^2 + - - - + Wn3xn =工吃
где Sj — выход J-го нейрона Кохонена, Wj = (wij, W2j,..., wnj)— вектор весов j-ro нейрона Кохонена, X =(化八 化2〉• • •〉化?г) — вектор входного сигнала, или в векторно-матричной форме:
S = XW,
где S — вектор выходов слоя Кохонена.
Нейрон Кохонена с максимальным значением Sj является «победителем». Его выход равен единице, у остальных он равен нулю.
Слой Гроссберга. Слой Гроссберга функционирует в сходной манере. Его выход является взвешенной суммой выходов слоя Кохонена (т. е. он является слоем нейронов с линейными активационными функциями).
Если слой Кохонена функционирует таким образом, что лишь один выход равен единице, а остальные равны нулю, то каждый нейрон слоя Гроссберга выдает величину веса, который связывает этот нейрон с единственным нейроном Кохонена, чей выход отличен от нуля.
Предварительная обработка входных сигналов. Рассматриваемая НС требует предварительной обработки входных векторов путем их нормализации. Такая нормализация выполняется путем деления каждой компоненты входного вектора на длину вектора (квадратный корень из суммы квадратов компонент вектора). Это превращает входной вектор в единичный вектор с тем же направлением, т. е. в вектор единичной длины в n-мерном пространстве.
Обучение слоя Кохонена. Слой Кохонена классифицирует входные векторы в группы схожих. Это достигается с помощью такой подстройки весов слоя Кохонена, что близкие входные векторы активируют один и тот же нейрон данного слоя (затем задачей слоя Гроссберга является получение требуемых выходов).
Слой Кохонена обучается без учителя (самообучается). В результате обучения слой приобретает способность разделять несхожие входные векторы. Какой именно нейрон будет активироваться при предъявлении конкретного входного сигнала, заранее трудно предсказать.
При обучении слоя Кохонена на вход подается входной вектор и вычисляются его скалярные произведения с векторами весов всех нейронов. Скалярное произведение является мерой сходства между входным вектором и вектором весов. Нейрон с максимальным значением скалярного произведения объявляется «победителем» и его веса подстраиваются (весовой вектор приближается к входному).
Уравнение, описывающее процесс обучения, имеет вид
WH = Wc + Т](х - wc),
где wH — новое значение веса, соединяющего входную компоненту ж с выигравшим нейроном, wc — предыдущее значение этого веса, 〃 一коэффициент скорости обучения.
Каждый вес, связанный с выигравшим нейроном Кохонена, изменяется пропорционально разности между его величиной и величиной входа, к которому он присоединен. Направление изменения минимизирует разность между весом и соответствующим элементом входного сигнала.
Коэффициент скорости обучения 〃 вначале обычно полагается равным 0,7 и может затем постепенно уменьшаться в процессе обучения. Это позволяет делать большие начальные шаги для быстрого грубого обучения и меньшие шаги при подходе к окончательной величине.
Если бы с каждым нейроном Кохонена ассоциировался один входной вектор, то слой Кохонена мог бы быть обучен с помощью одного вычисления на вес (〃 = 1). Как правило, обучающее множество включает много сходных между собой входных векторов, и сеть должна быть обучена активировать один и тот же нейрон Кохонена для каждого из них. Веса этого нейрона должны получаться усреднением входных векторов, которые должны его активировать.
Обучение слоя Гроссберга. Выходы слоя Кохонена подаются на входы нейронов слоя Гроссберга. Выходы нейронов вычисляются, как при обычном функционировании. Далее каждый вес корректируется лишь в том случае, если он соединен с нейроном Кохонена, имеющим ненулевой выход. Величина коррекции веса пропорциональна разности между весом и требуемым выходом нейрона Гроссберга.
Обучение слоя Гроссберга — это обучение с учителем, алгоритм использует заданные желаемые выходы.
В полной модели сети встречного распространения имеется возможность получать выходные сигналы по входным и наоборот. Этим двум действиям соответствуют прямое и обратное распространение сигналов.
Области применения: распознавание образов, восстановление образов (ассоциативная память), сжатие данных (с потерями).
Недостатки. Сеть не дает возможности строить точные аппроксимации (точные отображения). В этом сеть значительно уступает сетям с обратным распространением ошибки.
К недостаткам модели также следует отнести слабую теоретическую проработку модификаций сети встречного распространения.
Преимущества. Сеть встречного распространения проста. Она дает возможность извлекать статистические свойства из множеств входных сигналов. Кохоненом показано, что для полностью обученной сети вероятность того, что случайно выбранный входной вектор (в соответствии с функцией плотности вероятности входного множества) будет ближайшим к любому заданному весовому вектору, равна 1/р, р — число нейронов Кохонена.
Сеть быстро обучается. Время обучения по сравнению с обратным распространением может быть в 100 раз меньше. По своим возможностям строить отображения сеть встречного распространения значительно превосходит однослойные персептроны.
Сеть полезна для приложений, в которых требуется быстрая начальная аппроксимация.
Сеть дает возможность строить функцию и обратную к ней, что находит применение при решении практических задач.
Модификации. Сети встречного распространения могут различаться способами определения начальных значений синаптических весов. Так, кроме традиционных случайных значений из заданного диапазона, могут быть использованы значения в соответствии с известным методом выпуклой комбинации.
Для повышения эффективности обучения применяется добавление шума к входным векторам.
Еще один метод повышения эффективности обучения — наделение каждого нейрона «чувством справедливости». Если нейрон становится победителем чаще, чем 1/р 伪一число нейронов Кохонена), то ему временно увеличивают порог, давая тем самым обучаться и другим нейронам.
Кроме «метода аккредитации», при котором для каждого входного вектора активируется лишь один нейрон Кохонена, может быть использован «метод интерполяции», при использовании которого целая группа нейронов Кохонена, имеющих наибольшие выходы, может передавать свои выходные сигналы в слой Грос- сберга. Этот метод повышает точность отображений, реализуемых сетью, и реализован в так называемых самоорганизующихся картах.
Нейронные сети Хопфилда и Хэмминга. Среди различных конфигураций искусственных нейронных сетей (НС) встречаются такие, при классификации которых по принципу обучения, строго говоря, не подходят ни обучение с учителем, ни обучение без учителя. В таких сетях весовые коэффициенты синапсов рассчитываются только однажды перед началом функционирования сети на основе информации об обрабатываемых данных, и все обучение сети сводится именно к этому расчету. С одной стороны, предъявление априорной информации можно расценивать как помощь учителя, но с другой, — сеть фактически просто запоминает образцы до того, как на ее вход поступают реальные данные, и не может изменять свое поведение, поэтому говорить о звене обратной связи с «миром» (учителем) не приходится. Из сетей с подобной логикой работы наиболее известны сеть Хопфилда и сеть Хэмминга (представляющие собой разновидности сетей с обратными связями), которые обычно используются для организации ассоциативной памяти. Далее речь пойдет именно о них. Структурная схема сети Хопфилда приведена на рис. 2.19. Она состоит
Рис. 2.19. Структурная схема сети Хопфилда
из единственного слоя нейронов, число которых является одновременно числом входов и выходов сети. Каждый нейрон связан синапсами со всеми остальными нейронами, а также имеет один
входной синапс, через который осуществляется ввод сигнала. Выходные сигналы, как обычно, образуются на аксонах.
Задача, решаемая данной сетью в качестве ассоциативной памяти, как правило, формулируется следующим образом. Известен некоторый набор двоичных сигналов (изображений, звуковых оцифровок, прочих данных, описывающих некие объекты или характеристики процессов), которые считаются образцовыми. Сеть должна уметь из произвольного неидеального сигнала, поданного на ее вход, выделить («вспомнить» по частичной информации) соответствующий образец (если такой есть) или «дать заключение» о том, что входные данные не соответствуют ни одному из образцов. В общем случае, любой сигнал может быть описан вектором X = {xi : г = 1,2,..., n}, п — число нейронов в сети и размерность входных и выходных векторов. Каждый элемент Xi равен либо +1, либо —1. Обозначим вектор, описывающий к-й образец, через Х^, а его компоненты, соответственно,—化,〉 А; = 1, 2, ..., m, где m — в данном случае число образцов. Когда сеть распознает (или «вспомнит») какой-либо образец на основе предъявленных ей данных, ее выходы будут содержать именно его, т. е. Y = X* где Y — вектор выходных значений сети: Y = {yi: г = 1, 2, ..., п}. В противном случае, выходной вектор не совпадет ни с одним образцовым.
Если, например, сигналы представляют собой некие изображения, то, отобразив в графическом виде данные с выхода сети, можно будет увидеть картинку, полностью совпадающую с одной из образцовых (в случае успеха), или же «вольную импровизацию» сети (в случае неудачи).
На стадии инициализации сети весовые коэффициенты синапсов устанавливаются следующим образом:
Wig =к=1
o, i = j.
Здесь г и J — индексы, соответственно, предсинаптического и постсинаптического нейронов;化,〉化,一г-й и j-й элементы вектора 素то образца.
Алгоритм функционирования сети следующий (t — номер итерации):
На входы сети подается неизвестный сигнал. Фактически его ввод осуществляется непосредственной установкой значений аксонов:
де(О) = ©\ 2 =%
поэтому обозначение на схеме сети входных синапсов в явном виде носит чисто условный характер. Ноль в скобке справа от yi означает нулевую итерацию в цикле работы сети.
Рассчитывается новое состояние нейронов
Sj (力 + 1) =〉: VУз (力)〉32, ...)
и новые значения аксонов
у А1 +1) = /Е« + i)j,
где / — пороговая активационная функция с порогом 0 = 0 (см. табл. 2.1).
Проверка, изменились ли выходные значения аксонов за последнюю итерацию. Если да — переход к пункту 2, иначе (если выходы застабилизировались) — конец. При этом выходной вектор представляет собой образец, наилучшим образом сочетающийся с входными данными.
Таким образом, когда подается новый вектор, сеть переходит из вершины в вершину, пока не стабилизируется. Устойчивая вершина определяется сетевыми весами и текущими входами. Если входной вектор частично неправилен или неполон, сеть стабилизируется в вершине, ближайшей к желаемой.
Показано, что достаточным условием устойчивой работы такой сети является выполнение условий
^ij = ^ji ?^й' = 0*
Как говорилось выше, иногда сеть не может провести распознавание и выдает на выходе несуществующий образ. Это связано с проблемой ограниченности возможностей сети. Для сети Хопфилда число запоминаемых образов N не должно превышать величины, примерно равной 0,15п. Кроме того, если два образа А и В сильно похожи, они, возможно, будут вызывать у сети перекрестные ассоциации, т. е. предъявление на входы сети вектора А приведет к появлению на ее выходах вектора В и наоборот.
Когда нет необходимости, чтобы сеть в явном виде выдавала образец, т. е. достаточно, скажем, получать номер образца, ассоциативную память успешно реализует сеть Хэмминга. Данная сеть характеризуется, по сравнению с сетью Хопфилда, меньшими затратами на память и объемом вычислений, что становится очевидным из ее структуры (рис. 2.20).
Сеть состоит из двух слоев. Первый и второй слои имеют по m нейронов, где m — число образцов. Нейроны первого слоя
имеют по п синапсов, соединенных с входами сети (образующими фиктивный нулевой слой). Нейроны второго слоя связаны между собой ингибиторными (отрицательными обратными) синаптическими связями. Единственный синапс с положительной обратной связью для каждого нейрона соединен с его же аксоном.
Идея работы сети состоит в нахождении расстояния Хэмминга от тестируемого образа до всех образцов (расстоянием Хэмминга называется число отличающихся битов в двух бинарных векторах). Сеть должна выбрать образец с минимальным расстоянием
Рис. 2.20. Структурная схема сети ХэммингаРис. 2.20. Структурная схема сети Хэмминга
Рис. 2.20. Структурная схема сети Хэмминга
Рис. 2.20. Структурная схема сети Хэмминга
Хэмминга до неизвестного входного сигнала, в результате чего будет активизирован только один выход сети, соответствующий этому образцу.
На стадии инициализации весовым коэффициентам первого слоя и порогу активационной функции присваиваются следующие значения:
—\, г = 1, 2,= 1, 2,—\, г = 1, 2,= 1, 2,
—\, г = 1, 2,= 1, 2,
—\, г = 1, 2,= 1, 2,
Здесь 化,一 г-й элемент 素-го образца.
Весовые коэффициенты тормозящих синапсов во втором слое берут равными некоторой величине 0 < £ < 1/т. Синапс нейрона, связанный с его же аксоном, имеет вес +1.
Алгоритм функционирования сети Хэмминга следующий:
На входы сети подается неизвестный вектор X = {化勿:i = =1, ..., п}, исходя из которого рассчитываются состояния нейронов первого слоя (верхний индекс в скобках указывает номер слоя):
y'j ) = s[)=〉:工i + %〉 J = 1 ? 2, ... , 772.
После этого полученными значениями инициализируются значения аксонов второго слоя:
(2)(1)•1 Q
j = 1, 2, ... ,
Вычисляются новые состояния нейронов второго слоя:
(力 + 1)=力(力)-E仁応气),k/j, j = 1,2,
и значения их аксонов:
峭(力 + 1)=亢sf)(力 + 1)J, J = 1, 2, ... , m.
Проверяется, изменились ли выходы нейронов второго слоя за последнюю итерацию. Если да — перейди к шагу 2. Иначе — конец.
Из оценки алгоритма видно, что роль первого слоя весьма условна: воспользовавшись один раз на шаге 1 значениями его весовых коэффициентов, сеть больше не обращается к нему, поэтому первый слой может быть вообще исключен из сети (заменен на матрицу весовых коэффициентов).
В заключение можно сделать следующее обобщение. Сети Хоп- филда и Хэмминга позволяют просто и эффективно разрешить задачу воссоздания образов по неполной и искаженной информации. Невысокая емкость сетей (число запоминаемых образов) объясняется тем, что сети не просто запоминают образы, а позволяют проводить их обобщение например, с помощью сети Хэмминга возможна классификация по критерию максимального правдоподобия. Вместе с тем, легкость построения программных и аппаратных моделей делают эти сети привлекательными для многих применений.
5.4. Сеть с радиальными базисными элементами (RBF). В общем случае под термином Radial Basis Function Network (сеть
RBF) понимается двухслойная сеть без обратных связей, которая содержит скрытый слой радиально симметричных скрытых нейронов (шаблонный слой). Для того чтобы шаблонный слой был радиально-симметричным, необходимо выполнение следующих условий:
наличие центра, представленного в виде вектора во входном пространстве; обычно этот вектор сохраняется в пространстве весов от входного слоя к слою шаблонов;
наличие способа измерения расстояния входного вектора от центра; обычно это стандартное евклидово расстояние;
наличие специальной функции прохождения от одного аргумента, которая определяет выходной сигнал нейрона путем отображения функции расстояния; обычно используется функция Гаусса
^s) = e~s\
Другими словами, выходной сигнал шаблонного нейрона — это функция только от расстояния между входным вектором X и сохраненным центром С:
Выходной слой сети является линейным, так что выходы сети определяются выражением
где С?- — центры, о勿一отклонения радиальных элементов.
Обучение RBF-сети происходит в несколько этапов. Сначала определяются центры и отклонения для радиальных элементов; после этого оптимизируются параметры Wij линейного выходного слоя.
Расположение центров должно соответствовать кластерам, реально присутствующим в исходных данных. Рассмотрим два наиболее часто используемых метода.
Выборка и з выборки. В качестве центров радиальных элементов берутся несколько случайно выбранных точек обучающего множества. В силу случайности выбора они «представляют» распределение обучающих данных в статистическом смысле. Однако, если число радиальных элементов невелико, такое представление может быть неудовлетворительным.
Ал горит м К-с ре д н и х. Этот алгоритм стремится выбрать оптимальное множество точек, являющихся центроидами кластеров в обучающих данных. При К радиальных элементах их центры располагаются таким образом, чтобы:
каждая обучающая точка «относилась» к одному центру кластера и лежала к нему ближе, чем к любому другому центру;
каждый центр кластера был центроидом множества обучающих точек, относящихся к этому кластеру.
После того как определено расположение центров, нужно найти отклонения. Величина отклонения (ее также называют сглаживающим фактором) определяет, насколько «острой» будет гауссова функция. Если эти функции выбраны слишком острыми, сеть не будет интерполировать данные между известными точками и потеряет способность к обобщению. Если же гауссовы функции взяты чересчур широкими, сеть не будет воспринимать мелкие детали (на самом деле сказанное — еще одна форма проявления дилеммы пере/недообучения). Как правило, отклонения выбираются таким образом, чтобы «колпак» каждой гауссовой функций захватывал несколько соседних центров. Для этого имеется несколько методов:
Явный. Отклонения задаются пользователем.
Изотропный. Отклонение берется одинаковым для всех элементов и определяется эвристически с учетом количества радиальных элементов и объема покрываемого пространства.
К ближайших соседей. Отклонение каждого элемента устанавливается (индивидуально) равным среднему расстоянию до его К ближайших соседей. Тем самым отклонения будут меньше в тех частях пространства, где точки расположены густо, — здесь будут хорошо учитываться детали, — а там, где точек мало, отклонения будут большими (и будет производиться интерполяция).
После того как выбраны центры и отклонения, параметры выходного слоя оптимизируются с помощью стандартного метода линейной оптимизации — алгоритма псевдообратных матриц (сингулярного разложения).
Могут быть построены различные гибридные разновидности сетей с радиальными базисными функциями. Например, выходной слой может иметь нелинейные функции активации, и тогда для его обучения используется какой-либо из алгоритмов обучения многослойных сетей, например метод обратного распространения. Можно также обучать радиальный (скрытый) слой с помощью алгоритма обучения сети Кохонена — это еще один способ разместить центры так, чтобы они отражали расположение данных.
Сети RBF имеют ряд преимуществ перед рассмотренными многослойными сетями прямого распространения (хотя их структура и соответствует приведенной на рис. 2.5). Во-первых, они моделируют произвольную нелинейную функцию с помощью всего одного промежуточного слоя, тем самым избавляя нас от необходимости решать вопрос о числе слоев. Во-вторых, параметры линейной комбинации в выходном слое можно полностью оптимизировать с помощью хорошо известных методов линейной оптимизации, которые работают быстро и не испытывают трудностей с локальными минимумами, так мешающими при обучении с использованием алгоритма обратного распространения ошибки. Поэтому сеть RBF обучается очень быстро (на порядок быстрее, чем с использованием алгоритма обратного распространения).
Недостатки сетей RBF: данные сети обладают плохими экстраполирующими свойствами и получаются весьма громоздкими при большой размерности вектора входов.
Вероятностная нейронная сеть (PNN). Задача оценки плотности вероятности по имеющимся данным имеет давнюю историю в математической статистике.
Обычно при этом предполагается, что плотность имеет некоторый определенный вид (чаще всего, — что она имеет нормальное распределение). После этого оцениваются параметры модели. Нормальное распределение часто используется потому, что тогда параметры модели (среднее и стандартное отклонение) можно оценить аналитически.
Заметим, что предположение о нормальности далеко не всегда оправдано.
Другой подход к оценке плотности вероятности основан на так называемых ядерных оценках. Можно рассуждать так: тот факт, что наблюдение расположено в данной точке пространства, свидетельствует о том, что в этой точке имеется некоторая плотность вероятности. Кластеры из близко лежащих точек указывают на то, что в этом месте плотность вероятности большая. Вблизи наблюдения имеется большее доверие к уровню плотности, а по мере отдаления от него доверие убывает и стремится к нулю. В методе ядерных оценок в точке, соответствующей каждому наблюдению, помещается некоторая простая функция, затем все они складываются и в результате получается оценка для общей плотности вероятности. Чаще всего в качестве ядерных функций берутся гауссовы функции (с формой колокола). Если обучающих примеров достаточное количество, то такой метод дает достаточно хорошее приближение к истинной плотности вероятности.
Метод аппроксимации плотности вероятности с помощью ядер- ных функций во многом похож на метод радиальных базисных функций, и таким образом мы естественно приходим к понятиям вероятностной нейронной сети (PNN) и обобщенно-регрессионной нейронной сети (GRNN). PNN-сети предназначены для задач классификации, a GRNN — для задач регрессии. Сети этих двух типов представляют собой реализацию методов ядерной аппроксимации, оформленных в виде нейронной сети.
Сеть PNN имеет по меньшей мере три слоя: входной, радиальный и выходной. Радиальные элементы берутся по одному на каждое обучающее наблюдение. Каждый из них представляет гауссову функцию с центром в этом наблюдении. Каждому классу соответствует один выходной элемент. Каждый такой элемент соединен со всеми радиальными элементами, относящимися к его классу, а со всеми остальными радиальными элементами он имеет нулевое соединение. Таким образом, выходной элемент просто складывает отклики всех элементов, принадлежащих к его классу. Значения выходных сигналов получаются пропорциональными ядерным оценкам вероятности принадлежности соответствующим классам, и, пронормировав их на единицу, мы получаем окончательные оценки вероятности принадлежности классам.
Выход рассматриваемой сети, соответствующий какому-либо классу, описывается выражением
k=l '
где n — размерность входного вектора, N — объем обучающей выборки, X# — элемент (вектор) этой выборки, соответствующий отмеченному классу.
Базовая модель PNN-сети может иметь две модификации.
Вероятностная нейронная сеть имеет единственный управляющий параметр обучения, значение которого должно выбираться пользователем, — отклонение гауссовой функции а (параметр сглаживания). Как и в случае RBF-сетей, этот параметр выбирается из тех соображений, чтобы «шапки» определенное число раз перекрывались: выбор слишком маленьких отклонений приведет к «острым» аппроксимирующим функциям и неспособности сети к обобщению, а при слишком больших отклонениях будут теряться детали. Требуемое значение несложно найти опытным путем, подбирая его так, чтобы контрольная ошибка была как можно меньше. К счастью, PNN-сети не очень чувствительны к выбору параметра сглаживания.
Наиболее важные преимущества PNN-сетей состоят в том, что выходное значение имеет вероятностный смысл (и поэтому его легче интерпретировать), и в том, что сеть быстро обучается. При обучении такой сети время тратится практически только на то, чтобы подавать ей на вход обучающие наблюдения, и сеть работает настолько быстро, насколько это вообще возможно.
Существенным недостатком таких сетей является их объем. PNN-сеть фактически вмещает в себя все обучающие данные, поэтому она требует много памяти и может медленно работать.
PNN-сети особенно полезны при пробных экспериментах (например, когда нужно решить, какие из входных переменных использовать), так как благодаря короткому времени обучения можно быстро проделать большое количество пробных тестов.
Обобщенно-регрессионная нейронная сеть (GRNN). Данная сеть устроена аналогично вероятностной нейронной сети (PNN), но она предназначена для решения задач регрессии, а не классификации. Как и в случае PNN-сети, в точку расположения каждого обучающего наблюдения помещается гауссова ядерная функция. Мы считаем, что каждое наблюдение свидетельствует о некоторой нашей уверенности в том, что поверхность отклика в данной точке имеет определенную высоту, и эта уверенность убывает при отходе в сторону от точки. GRNN-сеть копирует внутрь себя все обучающие наблюдения и использует их для оценки отклика в произвольной точке. Окончательная выходная оценка сети получается как взвешенное среднее выходов по всем обучающим наблюдениям:
£/^(||X-Xfc||/a) k=l
£^(||Х-Х^||Я k=l
где Х^, ук — точки обучающей выборки.
Первый промежуточный слой сети GRNN состоит из радиальных элементов. Второй промежуточный слой содержит элементы, которые помогают оценить взвешенное среднее. Каждый выход имеет в этом слое свой элемент, формирующий для него взвешенную сумму. Чтобы получить из взвешенной суммы взвешенное среднее, эту сумму нужно поделить на сумму весовых коэффициентов. Последнюю сумму вычисляет специальный элемент второго слоя. После этого в выходном слое производится собственно деление (с помощью специальных элементов «деления»). Таким образом, число элементов во втором промежуточном слое на единицу больше, чем в выходном слое. Как правило, в задачах регрессии
требуется оценить одно выходное значение, и, соответственно, второй промежуточный слой содержит два элемента.
Можно модифицировать GRNN-сеть таким образом, чтобы радиальные элементы соответствовали не отдельным обучающим случаям, а их кластерам. Это уменьшает размеры сети и увеличивает скорость обучения. Центры для таких элементов можно выбирать с помощью любого предназначенного для этой цели алгоритма (выборки из выборки, К-средних или Кохонена).
Достоинства и недостатки у сетей GRNN в основном такие же, как и у сетей PNN, — единственное различие в том, что GRNN используются в задачах регрессии, a PNN — в задачах классификации. GRNN-сеть обучается почти мгновенно, но может получиться большой и медленной (хотя здесь, в отличие от PNN, не обязательно иметь по одному радиальному элементу на каждый обучающий пример, их число все равно будет большим). Как и сеть RBF, сеть GRNN не обладает способностью экстраполировать данные.
Линейные НС. Согласно общепринятому в науке принципу, если более сложная модель не дает лучших результатов, чем более простая, то из них следует предпочесть вторую. В терминах аппроксимации отображений самой простой моделью будет линейная, в которой аппроксимирующая (подгоночная) функция определяется гиперплоскостью. В задаче классификации гиперплоскость размещается таким образом, чтобы она разделяла собой два класса (линейная дискриминантная функция); в задаче регрессии гиперплоскость должна проходить через заданные точки. Линейная модель обычно задается уравнением
Y = XW + B,
где W — матрица весов сети, В — вектор смещений.
На языке нейронных сетей линейная модель представляется сетью без промежуточных слоев, которая в выходном слое содержит только линейные элементы (т. е. элементы с линейной функцией активацией). Веса соответствуют элементам матрицы, а пороги —компонентам вектора смещения. Во время работы сеть фактически умножает вектор входов на матрицу весов, а затем к полученному вектору прибавляет вектор смещения.
2.6. Эффективность нейронных сетей
Эффективность нейронных сетей устанавливается рядом так называемых теорем о полноте. Ранее в нестрогой формулировке была приведена одна из них. Рассмотрим еще одну подобную теорему.
В 1989 г. Funahashi показал, что бесконечно большая нейронная сеть с единственным скрытым слоем способна аппроксимировать любую непрерывную функцию, сформулировав данное утверждение в форме следующей теоремы.
Теорема. Пусть ф(х) —непостоянная^ ограниченная и монотонно б взрастающая непрерывная функция. 〃деть〉Э«лее, U G Кп — ограниченное множество и
f: U
—вещественная непрерывная функция^ определенная на U.
Тогда дм произвольного £〉0 существует целое £ и вещественные константы w^ Wij такие^ что аппроксимация
』 V=i / удовлетворяет неравенству
II/ - /Ik = sup |/(x) - /(x)|
Другими словами, любое непрерывное отображение может быть аппроксимировано в смысле однородной топологии на U двухслой
ной нейронной сетью с активационными функциями 0(化)для нейронов скрытого слоя и линейными активационными функциями
для нейронов выходного слоя. На рис. 2.21 представлена НС Funahashi для аппроксимации скалярной функции векторного аргумента.
Отметим еще раз, что приведенная теорема о полноте является далеко не единственной из известных.
Основными недостатками аппарата нейронных сетей являются:
отсутствие строгой теории по выбору структуры НС;
практическая невозможность извлечения приобретенных знаний из обученной НС (нейронная сеть практически всегда — «вещь в себе», черный ящик для исследователя).
* * *
Приведенный краткий материал о теории искусственных нейронных сетей является достаточным для перехода к следующей главе. Более подробная информация по структурам, алгоритмам обучения и использованию НС приведена, например, в рекомендуемой литературе.
Глава 3
ГИБРИДНЫЕ СЕТИ
Каждая разновидность систем искусственного интеллекта имеет свои особенности, например, по возможностям обучения, обобщения и выработки выводов, что делает ее наиболее пригодной для решения одного класса задач и менее пригодной — для другого.
Например, нейронные сети хороши для задач распознавания образов, но весьма неудобны для выяснения вопроса, как они такое распознавание осуществляют. Они могут автоматически приобретать знания, но процесс их обучения зачастую происходит достаточно медленно, а анализ обученной сети весьма сложен (обученная сеть обычно — черный ящик для пользователя). При этом какую-либо априорную информацию (знания эксперта) для ускорения процесса ее обучения в нейронную сеть ввести невозможно.
Системы с нечеткой логикой, напротив, хороши для объяснения получаемых с их помощью выводов, но они не могут автоматически приобретать знания для использования их в механизмах выводов. Необходимость разбиения универсальных множеств на отдельные области, как правило, ограничивает количество входных переменных в таких системах небольшим значением.
Вообще говоря, теоретически, системы с нечеткой логикой и искусственные нейронные сети эквивалентны друг другу, однако, в соответствии с изложенным выше, на практике у них имеются свои собственные достоинства и недостатки. Данное соображение легло в основу аппарата гибридных сетей, в которых выводы делаются на основе аппарата нечеткой логики, но соответствующие функции принадлежности подстраиваются с использованием алгоритмов обучения нейронных сетей, например, алгоритма обратного распространения ошибки. Такие системы не только используют априорную информацию, но могут приобретать новые знания и для пользователя являются логически прозрачными.
Основные понятия и определения гибридных сетей
Для пояснения сущности гибридных сетей, рассмотрим еще раз простую нейронную сеть, имеющую два входа и только один нейрон (рис. 3.1).
Здесь входные сигналы 化勿 «взаимодействуют» с весами Wi^ образуя произведения
Pi = ^i^ii 2 = 1〉2.
Такая частная информация (произведения) объединяются с использованием операции суммирования, образуя вход net нейрона:
net = 〃i + 〃2 = wi^i + w2^2.
Выход нейрона образуется в результате преобразования входа net некоторой активационной функцией:
У = /(net) = /(W1S1 + w2®2), например, сигмоидного типа
Приведенную однонейронную сеть, в которой используются операции умножения, суммирования и сигмоидная функция активации, будем называть стандартной нейронной сетью.
В случае применения других операций, таких как t-норма или t-конорма (см. гл. 1), придем к нейронной сети, которая будет называться гибридной.
Определение. Гибридная нейронная сеть — это нейронная сеть с четкими сигналами, весами и активационной функцией, но с объединением 化勿 и w為 〃i и 〃2 c использованием t-нормы^ t-конормы или некоторых других непрерывных операций.
Входы, выходы и веса гибридной нейронной сети — вещественные числа, принадлежащие отрезку [0, 1].
Рассмотрим следующие примеры элементарных гибридных нейронных сетей.
Нечеткий нейрон «И». Сигналы 化勿 и веса w?- в данном случае объединяются с помощью треугольной конормы:
Pi = S(w,:吃)〉1 — 1, 2,
а выход образуется с применением треугольной нормы (рис. 3.2):
У = AND(pi, Р2)= T(pi, Р2)= T(S(g, ®1), S(w2,才2))・
Если принять
Т = min, S = max,тогда нечеткий нейрон «И» реализует композицию min-max:g = min (wi V 化i〉W2 V 化2)・
Нечеткий нейрон «ИЛИ». Сигналы 化勿 и веса w?- здесь объединяются с помощью треугольной нормы:
Pi = Т?吃)〉1 — 1, 2,
а выход образуется с применением треугольной конормы (см. рис. 3.3):
У = OR(P1, Р2)= S(P1, Р2)= S(T(g, Si), T(w2,才2))・
Если принять
Т = min, S = max,тогда нечеткий нейрон «ИЛИ» реализует композицию max-min:g = max (wi A 化 1〉w2 Л 化2)・
Алгоритмы обучения и использованиягибридных сетей
Опишем типовой подход к построению алгоритмов обучения и использования гибридных нейронных сетей.
Предположим, что гибридной сетью должно быть реализовано (неизвестное) отображение
/ = /(xfc) = /(4, 4,k = l,2,...,N,
при наличии обучающего множества
{(X1, у1),,(X% D}.
Для моделирования неизвестного отображения / используем ранее рассмотренный упрощенный алгоритм нечеткого вывода, применяя следующую форму записи предикатных правил:
И?•: если 化 1 есть А订 и 化2 есть А?? и ... и 化九 есть А?-п, тогда
У ~2 = 1〉2, . . ., 771,
где А斎一нечеткие числа треугольной формы,引一вещественные числа, определяя степень истинности г-го правила с помощью операции умножения (Larsen):
а?=立 Aq‘(")
(здесь можно использовать и другие представления для моделирования логического оператора «И») и определяя выход нечеткой системы дискретным аналогом центроидного метода:
г = 1
Введение функции ошибки для 素то предъявленного образца вида
现=;(。一产
позволяет, далее, как в обычных (стандартных) нейронных сетях использовать градиентный метод для подстройки параметров заданных предикатных правил. Так, величины 引 можно корректировать по соотношению
дЕкдЕкzi := zi 一 〃^-zi := zi 一 〃^-
дЕк
дЕк
zi := zi 一 〃^-
zi := zi 一 〃^-
г = 1, 2, ... ,
где 〃〉как и раньше, — константа, характеризующая скорость обучения.
Более детально алгоритм настройки рассмотрим на примере системы, включающей два правила:
П1: если ж есть Ai, тогда g =刁〉
出:если ж есть А2, тогда g =遡〉
при этом предполагается, что нечеткие понятия Ai («малый») и А?
(«большой») имеют сигмоидные функции принадлежности
1 + eb1(x-a1) 7厶2(化)-1 + eb2(x-a2) 7
характеризующиеся параметрами «1, «2,仇〉b&
Степени истинности правил определяются в данном случае соотношениями
m=Ai(z)= ] + e:(_aJ °2 = A2(z)= ] + 二(一。2),
а выход системы — выражением
_ &1刁 + &2迎 _ Ai(^)^i + А2(ж)г2
&i + &2А1(ж) + А2(ж) •
Предположим, что имеется обучающее множество {(化ь 91)〉• • • ..(化\ gN)}〉отображающее неизвестную функцию /.
Требуется: осуществить такую настройку параметров системы «1, «2, 61,办 刁〉^2, при которой обеспечивается наилучшая аппроксимация данной функции.
Решение. В данном случае функция ошибки может быть записана в форме
ek=£k("1)ь1)。2)ь2)刁)72)=ek=£k("1)ь1)。2)ь2)刁)72)=$(。"(a1)仇)a2)ь2)^1,n2)- ук)2$(。"(a1)仇)a2)ь2)^1,n2)- ук)2
ek=£k("1)ь1)。2)ь2)刁)72)=
ek=£k("1)ь1)。2)ь2)刁)72)=
$(。"(a1)仇)a2)ь2)^1,n2)- ук)2
$(。"(a1)仇)a2)ь2)^1,n2)- ук)2
Используя далее тот же подход, что и при выводе алгоритма обратного распространения ошибки (см. § 2.5), запишем:
дЕ^
刁:=刁-〃^-=刁 一 〃(0 - у ) =
Z2 := Z2 - 4^— = Z2 - 4(0一 g )|=
。z2a1 + a2
=22 一 〃(。А一尤)帀*长可.
Аналогичным путем могут быть получены развернутые выражения для коррекции коэффициентов «1, «2,仇〉b?. Исходные
Рис. 3.4. Симметричные функции принадлежностиРис. 3.4. Симметричные функции принадлежности
Рис. 3.4. Симметричные функции принадлежности
Рис. 3.4. Симметричные функции принадлежности
соотношения таковы:
_ дЕкQ]:=例一〃^-, octi_ дЕкQ]:=例一〃^-, octibl :=仇bl :=仇дЕкдЕк_ дЕкa2 := a2 一 〃^,0 a2,, дЕк02 := 02 -•_ дЕкa2 := a2 一 〃^,0 a2,, дЕк02 := 02 -•
_ дЕк
Q]:=例一〃^-, octi
_ дЕк
Q]:=例一〃^-, octi
bl :=仇
bl :=仇
дЕк
дЕк
_ дЕк
a2 := a2 一 〃^,
0 a2
,, дЕк
02 := 02 -•
_ дЕк
a2 := a2 一 〃^,
0 a2
,, дЕк
02 := 02 -•
Конечные выражения являются достаточно громоздкими, но могут быть упрощены в случае, если функции принадлежности имеют вид
А1@)= 1 + е-ь(_а),A2(z)= ] + 决(吁。)・
Данные функции характеризуются всего двумя параметрами (« и 6), в определенном смысле являются симметричными (см. рис. 3.4) и удовлетворяют уравнению
А1(ж) + А2(ж) = 1.
Заметим, что из последнего и ранее полученных уравнений следует:
дЕ^ 刁:=刁-〃^-=刁 一 〃(0 - у ) =
= 2] — 〃(% —QAi(M),
z2 :=遡-4^—=遡 一 4(0一9 )——,——=
= 22 — 〃时―J)A2(/)・
Последующие выкладки таковы:
где
8现(a,6) (к А、а。"
=(% — Q 五(2]А1(М) + 22A2(М))=
=(% —沙А)五(2]А1(М) + 22(1 — Ai(M)))=
=(°" - g*)(zi -z2)^- 9*)(刁一遡州х
b(xk-a)
х(1 + з(m一叫2 =(0к-- 遡)以1(/)(1 - A1(/))=
= (E —gk)(zi —Z2)bAi(/)Ai(/),
ииb \—b — т]b \—b — т]BEk" b)dbBEk" b)db
и
и
b \—b — т]
b \—b — т]
BEk" b)db
BEk" b)db
где
@矶(。,°) _ м —_ z)а 1_
=(У _ /)(^1- 22)(М _ а)А1(М)(1 — А1(М))
=(°* - Q(zi -乞2)(丿—a)Ai(/)Ai(/).
Приведенные выкладки, как представляется, полностью иллюстрируют идеи алгоритмов обучения и использования гибридной сети.
Другим примером может служить система, имеющая следующую базу знаний:
П1: если 化 1 есть Liи化2естьL? и 化з есть L3, тогда g есть Н,
Г(2: если 化 1 есть Hiи化2естьН2 и 化3 есть L3, тогда g есть М,
Пз: если 化 1 есть Hiи化2естьН2 и 化3 есть Н3, тогда g есть S,
где Ж1,化2〉化з — входныепеременные, g — выход системы,
Li, L2, L3, Hi, Н2, Н3, Н, М, S — некоторые нечеткие множества с функциями принадлежности сигмоидного типа:
L.(t)=丄——г, H.(t)=二^ J = 1, 2, 3,
-64 (大一C4+C5"e _ 64(力 一%),
1
',1 + 决4(力一。4)
Для определения выходной переменной используется алгоритм вывода Tsukamoto (см. выше), т.е.
подсчитываются значения истинности предпосылок для каждого правила:
@1 = L1 («I)Л 匕2(&2)Л Ьз(«з),
@2 = Н1(«1) Л Н2(&2)Л Ьз(«з),
@3 = Н1(«1) Л Н2(&2)Л Нз(«з), где в данном случае «1, ” &з — текущие значения входов системы;
刁=В_1(а;1) = с4 +刁=В_1(а;1) = с4 +1 一641 一 1 -+ 1Ш 1Ш1 一641 一 1 -+ 1Ш 1Шдля каждого правила определяются частные выходы:
刁=В_1(а;1) = с4 +
刁=В_1(а;1) = с4 +
1 一641 一 1 -+ 1Ш 1Ш
1 一641 一 1 -+ 1Ш 1Ш
乞2 = В-1(О!2)= С4 +
2з = В~1(аз) = с4 +
находится общий выход системы:
@1刁 + a272 + a373Qi + &2 + &3
Изложенный процесс иллюстрируется рис. 3.5.
Гибридная нейронная сеть, отражающая приведенный механизм вывода, представлена на рис. 3.6. Заметим, что сети с подоб
ной архитектурой в англоязычной литературе получили название ANFIS (Adaptive Neuro-Fuzzy Inference System).
Данная сеть может быть описана следующим образом.
Слой 1 (Layer 1). Выходы узлов этого слоя представляют собой значения функций принадлежности при конкретных (заданных) значениях входов.
Слой 2 (Layer 2). Выходами нейронов этого слоя являются степени истинности предпосылок каждого правила базы знаний системы, вычисляемые по формулам:
= L1 («I)Л 匕2(&2)Л Ьз(«з),@2 = Н1(«1) Л Н2(&2)Л Ьз(«з),@3 = Н1(«1) Л Н2(&2)Л Нз(«з).
Все нейроны этого слоя обозначены буквой Т, что означает, что они могут реализовывать произвольную t-норму для моделирования операции «И».
Слой 3 (Layer 3). Нейроны этого слоя (обозначены буквой N) вычисляют величины:
A = -3—,饱=-上—,/э3 =—"—•
Q1 + a2 + a3a1 + a2 + a3a1 + a2 + a3
Слой 4 (Layer 4). Нейроны данного слоя выполняют операции:
0121 = OiHT(ai), 02乞2 = 02М-1 (tt2),/З323 =/Зз$т(аз)・
Слой 5 (Layer 5). Единственный нейрон этого слоя вычисляет выход сети:
No = /31^1 + 仇迎 + /Зз^з-
Корректировка параметров системы здесь производится в соответствии с ранее рассмотренным подходом. Так, например, на-
Рис. 3.6. Структура гибридной нейронной сети (архитектура ANFIS)Рис. 3.6. Структура гибридной нейронной сети (архитектура ANFIS)
Рис. 3.6. Структура гибридной нейронной сети (архитектура ANFIS)
Рис. 3.6. Структура гибридной нейронной сети (архитектура ANFIS)
@1 + a2 一 a3@1 + @2 + @3@1 + a2 一 a3@1 + @2 + @33£足@1 + @2 + @33£足@1 + @2 + @3=D4 + 〃6足)=D4 + 〃6足)
@1 + a2 一 a3
@1 + @2 + @3
@1 + a2 一 a3
@1 + @2 + @3
3£足@1 + @2 + @3
3£足@1 + @2 + @3
=D4 + 〃6足)
=D4 + 〃6足)
стройка коэффициентов 64, С4 и С5 — по формулам:
切4
9Ekm
d5 := c5 - 〃^— = c5 + г|дк|
где 6k = ук - Qk.
Соответствующие выражения могут быть получены и для остальных коэффициентов.
Нечеткий гибридный классификатор
Рассмотрим теперь, как с помощью гибридной системы решается задача классификации, т. е. отнесение объекта, характеризующегося набором признаков, к некоторому классу.
Одна из возможных структур для решения подобной задачи приведена на рис. 3.7.
Предполагается, что здесь объект характеризуется двумя количественными признаками 化i и 化2 n относится к одному из двух
классов — ci или с】. Каждый вход представляется двумя лингвистическими понятиями, что позволяет ограничиться всего четырьмя правилами.
Сеть может быть описана следующим образом.
Слой 1 (Layer 1). Выходы узлов данного слоя — это степени принадлежности входных переменных определенным для них нечетким множествам Ai, А2, Bi, В2.
В данном случае выбраны функции принадлежности колоколообразного вида
Ас«) = ехр (—(力一 &i/,])2/2)
с набором параметров «п, &勿2〉 &й7 &«2-
Значения данных параметров корректируются в процессе обучения сети (основанном на градиентном методе).
Слой 2 {Layer 2]. Каждый нейрон этого слоя является нейроном типа рассмотренного выше гибридного (нечеткого) нейрона «И».
Слой 3 (Layer 3). Нейроны данного слоя являются обычными (стандартными) нейронами, входами которых являются линейные (взвешенные) комбинации выходов нейронов предыдущего
слоя, а выходы формируются с использованием активационных функций сигмоидного типа. Эти выходы трактуются как степени принадлежности предъявленного объекта первому или второму классу.
Алгоритм обучения данной сети, в принципе, не отличается от рассмотренных.
Программная реализация моделей нечеткой логики,нейросетевых и гибридных
В настоящее время существует огромное количество программных продуктов, позволяющих реализовывать нейросетевые структуры (так называемых программ-нейроимитаторов). Значительно меньше программ, работающих с моделями нечеткой логики (и они пока практически недоступны отечественным специалистам). Отметим в этой связи, что для целей проектирования и использования как нейросетевых моделей, так и нечетких и гибридных крайне удобной является достаточно распространенная в нашей стране математическая система MATLAB (версии 5.2 и 5.3), точнее два инструментальных средства этой системы: пакеты Neural Networks Toolbox (нейронные сети) и Fuzzy Logic Toolbox (пакет нечеткой логики), которые и будут ниже подробно рассмотрены.
Глава 4
ПАКЕТ NEURAL NETWORKS TOOLBOX
4.1. Назначение пакета Neural Networks Toolbox
Пакет Neural Networks Toolbox (нейронные сети) содержит средства для проектирования, моделирования, обучения и использования множества известных парадигм аппарата искусственных нейронных сетей (ИНС), от базовых моделей персептрона до самых современных ассоциативных и самоорганизующихся сетей. Пакет может быть использован для решения множества разнообразных задача, таких как обработка сигналов, нелинейное управление, финансовое моделирование и т. п.
Для каждого типа архитектуры и обучающего алгоритма ИНС имеются функции инициализации, обучения, адаптации, создания и моделирования, демонстрации и примеры применения.
4・2・ Обзор функций пакета Neural Networks Toolbox
В состав пакета Neural Networks входят более 150 различных функций, образуя собой своеобразный макроязык программирования и позволяя пользователю создавать, обучать и использовать самые различные НС. С помощью команды
» help nnet
можно получить перечень входящих в пакет функций. Для получения справки по любой функции можно использовать команду
» help имя функции
Данные функции по своему назначению делятся на ряд групп. Рассмотрим основные из них.
Функции активации (передаточные функции) и связанные с ними функции
compet(X) — функция конкуренции — в качестве аргумента использует матрицу X, столбцы которой ассоциируются с векторами входов. Возвращает разреженную матрицу с единичными элементами, индексы которых соответствуют индексам наибольших элементов каждого столбца.
Пример
» X = [0.9 -0.6;0.1 0.4;0.2 -0.5;0 0.5];
» compet(X)
ans =
(1,1) 1
(4,2)1
В форме compet(code), где переменная code может принимать значения ,deriv, (имя производной функции), ,name, (полное имя), ,output, (диапазон выхода), ,active, (возможный диапазон входов).
Примеры
» compet (,deriv,)
ans =
» compet (,name,)
ans =
Competitive
» compet (,output,)
ans =
01
» compet (,active,)
ans =
-Inf Inf
Данная функция используется при создании НС со слоем «соревнующихся» нейронов (как, например, в сетях встречного распространения).
hardlim(X) —пороговая функция активации с порогом J = 0; аргумент имеет тот же смысл, что и для предыдущей команды. Возвращает матрицу, размер которой равен размеру матрицы X, а элементы имеют значения 0 или 1 — в зависимости от знака соответствующего элемента X.
Пример
» X = [0.9 -0.6;0.1 0.4;0.2 -0.5;0 0.5];
» hardlim(X)
ans =
111111110
1
1
1
1
1
1
1
1
1
0
1
В форме hardlim(code) возвращает информацию, аналогичную рассмотренной для команды compet.
hardlims(X) — знаковая или сигнатурная функция активации; действует так же, как функция hardlim(X), но возвращает значения —1 или +1.
logsig(X) — сигмоидальная логистическая функция. Возвращает матрицу, элементы которой являются значениями логистической функции (см. табл. 2.1) от аргументов — элементов матрицы X.
poslin(X) —возвращает матрицу значений полулинейной функции (табл. 2.1).
purelin(X) — возвращает матрицу значений линейной функции активации (табл. 2.1).
radbas(X) — возвращает матрицу значений радиальной базисной функции (табл. 2.1).
satlin(X) —возвращает матрицу значений полулинейной функции с насыщением (табл. 2.1).
satlins(X) —возвращает матрицу значений линейной функции с насыщением (табл. 2.1).
softmax(X) — возвращает матрицу, элементы которой вычисляются по формуле
ехр (吃力
е ехр (吃力
где N — число строк матрицы-аргумента X.
tansig(X) — возвращает матрицу значений сигмоидальной (гиперболический тангенс) функции (см. табл. 2.1).
tribas(X) —возвращает матрицу значений треугольной функции принадлежности (см. табл. 2.1).
dhardlim(X,Y) —производная пороговой функции активации. Аргументами являются матрица входов X и матрица выходов Y; матрицы имеют одинаковый размер. Возвращается матрица того же размера с нулевыми элементами.
dhardlms(X,Y) —производная знаковой функции активации (см. табл. 2.1). Возвращается матрица с нулевыми элементами.
dlogsig(X,Y) —производная сигмоидальной логистической функции. Возвращается матрица с элементами yij (1 —筑7).
Примеры
»Х = [0.1; 0.8; -0.7];
» Y = logsig(X)
Y =
0.5250
0.6900
» dY_dX = dlogsig(X,Y)
dY_dX =
0.2494
0.2139
0.2217
dposlin(X,Y) — производная полулинейной функции. Возвращается матрица с элементами, равными единице для соответственных положительных элементов матрицы-аргумента Y и равными нулю в противоположном случае.
dpurelin(X,Y) —производная линейной функции активации. Возвращается матрица с единичными элементами.
dradbas(X,Y) — производная радиальной базисной функции (см. табл. 2.1). Возвращается матрица с элементами —2化斎筑加
dsatlin(X,Y) —возвращает матрицу значений производной полулинейной функции с насыщением (табл. 2.1). Элементы такой матрицы — единицы, если соответственные элементы матрицы Y принадлежат интервалу (0,1), и нули в противоположном случае.
dsatlins(X,Y) —возвращает матрицу значений производной линейной функции с насыщением (табл. 2.1). Элементы такой матрицы — единицы, если соответственные элементы матрицы Y принадлежат интервалу ( —1, 1), и нули в противоположном случае.
dtansig(X,Y) —возвращает матрицу значений производной сигмоидальной функции — гиперболического тангенса (табл. 2.1). Элементы этой матрицы определяются выражением 1 —嗚.
dtribas(X,Y) —возвращает матрицу значений производной треугольной функции активации (табл. 2.1). Элементы этой матрицы определяются выражением: 1, если —1 < yij < 0; —1, если 0 W yij < 1; 0 в противоположном случае.
Функции обучения нейронных сетей. Позволяют устанавливать алгоритм и параметры обучения НС заданной конфигурации по желанию пользователя. В группу входит следующие функции.
[net,tr] = trainbfg(net,Pd,Tl,Ai,Q,TS,VV,TV) —функция обучения, реализующая разновидность квазиньютоновского алгоритма обратного распространения ошибки (BFGS). Аргументы функции:
net — имя обучаемой НС,
Pd — наименование массива задержанных входов обучающей выборки,
TI — массив целевых значений выходов,
Ai — матрица начальных условий входных задержек,
Q — количество обучающих пар в одном цикле обучения (размер «пачки»),
TS — вектор временных интервалов,
VV — пустой ([]) массив или массив проверочных данных, TV — пустой ([]) массив или массив тестовых данных.
Функция возвращает обученную нейронную сеть net и набор записей tr для каждого цикла обучения (tr.epoch — номер цикла, tr.perf— текущая ошибка обучения, tr.vperf— текущая ошибка для проверочной выборки, tr.tperf— текущая ошибка для тестовой выборки).
Процесс обучения происходит в соответствии со значениями следующих параметров (в скобках приведены значения по умолчанию):
net.trainParam.epochs (100) — заданное количество циклов обучения,
net.trainParam.show (25) — количество циклов для показа промежуточных результатов,
net.trainParam.goal (0) — целевая ошибка обучения,
net.trainParam.time (сю) — максимальное время обучения в секундах,
net.trainParam.min_grad (10-6) — целевое значение градиента,
net.trainParam.max_fail (5) — максимально допустимая кратность превышения ошибки проверочной выборки по сравнению с достигнутым минимальным значением,
net.trainParam.searchFcn (,srchcha,) — имя используемого одномерного алгоритма оптимизации.
Структуры и размеры массивов:
Pd — NoxNixTS— клеточный массив, каждый элемент которого P{i,j,ts} есть матрица DijxQ,
TI — NIxTS — клеточный массив, каждый элемент которого P{i,ts} есть матрица VixQ,
Ai — NIxLD — клеточный массив, каждый элемент которого Ai{i,k} есть матрица SixQ, где
Ni = net.numinputs (количество входов сети),
NI = net.numLayers (количество ее слоев),
LD = net.numLayerDelays (количество слоев задержки),
Ri = net.inputsi.size (размер г-го входа),
Si = net.layersi.size (размер г-го слоя),
Vi = net.targetsi.size (размер целевого вектора),
Dij = Ri * length (net.inputWeightsij.delays).
Если массив VV — не пустой, то он должен иметь структуру, определяемую следующими компонентами:
VV.PD — задержанные значения входов проверочной выборки,
VV.TI — целевые значения,
VV.Ai — начальные входные условия,
VV.Q — количество проверочных пар в одном цикле обучения,
VV.TS — временные интервалы проверочной выборки.
Эти параметры используются для задания останова процесса обучения в случаях, когда ошибка для проверочной выборки не уменьшается или начинает возрастать.
Структуру, аналогичную структуре массива VV, имеет массив TV.
Рассматриваемая функция, заданная в форме trainbfg(code), возвращает для значений аргумента, соответственно, ,pnames, и ,pdefaults,, имена параметров обучения и их значения по умолчанию.
Для использования функции в НС, определяемых пользователем, необходимо:
установить параметр net.trainFcn = ,trainbfg, (при этом параметры алгоритма будут заданы по умолчанию);
установить требуемые значения параметров (net.trainParam).
Процесс обучения останавливается в случае выполнения любого из следующих условий:
превышено заданное количество циклов обучения
(net.trainParam.epochs),
превышено заданное время обучения
(net.trainParam.time),
ошибка обучения стала меньше заданной
(net.trainParam.goal),
градиент стал меньше заданного
(net.trainParam.min grad),
• возрастание ошибки проверочной выборки по сравнению с достигнутым минимальным превысило заданное значение (net.trainParam.max fail).
Пример
» P = [0 1 2 3 4 5]; % Задание входного вектора
» Т = [0 0 0 1 1 1]; % Задание целевого вектора
» % Создание и тестирование сети
»net = newff([0 5],[2 1],{,tansig,,,logsig/}/traincgf*);
» a = sim(net,P) a =
0.05860.07720.08220.08700.13260.5901
» % Обучение с новыми параметрами и повторное тестирование
net .trainParam.searchFcn = ,srchcha,;
net. trainParam.epochs = 50;
net. trainPar am.show =10;
net. trainParam.goal = 0.1;
net = train(net,P,T);
TRAINCGF-srchcha, Epoch 0/50, MSE 0.295008/0.1,
Gradient 0.623241/le-006
TRAINCGF-srchcha, Epoch 1/50, MSE 0.00824365/0.1,
Gradient 0.0173555/le-006
TRAINCGF, Performance goal met.
a = sim(net,P)
a =
0.07060.10240.14740.90090.96470.9655
В данном примере созданная многослойная НС, обученная с установками по умолчанию, вначале показала плохой результат отображения обучающей выборки, но после изменения параметров и повторного обучения сети результат стал вполне приемлемым.
[net,tr] = trainbr(net,Pd,Tl,Ai,Q,TS,VV) —функция, реализующая так называемый Байесовский метод обучения, сущность которого заключается в подстройке весов и смещений сети на основе алгоритма Левенберга-Марквардта. Данный алгоритм минимизирует комбинацию квадратов ошибок и весов с выбором наилучшей такой (для получения наилучших обобщающих свойств сети). Эта процедура известна как Байесовская регуляризация, откуда следует название метода.
Аргументы, параметры, возвращаемые величины и использование — такие же, как у предыдущей функции. Сказанное остается в силе для всех остальных функций данной группы.
[net,tr] = traincgb(net,Pd,TI,Ai,Q,TS,VV) —функция обучения НС, реализующая разновидность алгоритма сопряженных градиентов (так называемый метод Powell-Beale).
[net,tr] = traincgf(net,Pd,TI,Ai,Q,TS,VV) —функция обучения НС, реализующая разновидность алгоритма обратного распространения ошибки в сочетании с методом оптимизации Флетчера- Поуэлла.
[net,tr] = traincgp(net,Pd,TI,Ai,Q,TS,VV) —то же, что в предыдущем случае, но с использованием метода Polak-Ribiere.
[net,tr] = traingd(net,Pd,TI,Ai,Q,TS,VV) —функция, реализующая «классический» алгоритм обратного распространения ошибки.
[net,tr] = traingda(net,Pd,TI,Ai,Q,TS,VV) —то же, что в предыдущем случае, но с адаптацией коэффициента скорости обучения.
[net,tr] = traingdm(net,Pd,TI,Ai,Q,TS,VV) —функция,реализующая модифицированный алгоритм обратного распространения ошибки с введенной «инерционностью» коррекции весов и смещений.
[net,tr] = traingdx(net,Pd,TI,Ai,Q,TS,VV) —функция, реализующая комбинированный алгоритм обучения, объединяющий особенности двух вышеприведенных.
[net,tr] = trainlm(net,Pd,TI,Ai,Q,TS,VV) —данная функция возвращает веса и смещения НС, используя алгоритм оптимизации Левенберга-Марквардта.
[net,tr] = trainoss(net,Pd,TI,Ai,Q,TS,VV) —функция, реализующая разновидность алгоритма обратного распространения ошибки с использованием метода секущих.
[net,tr] = trainrp(net,Pd,TI,Ai,Q,TS,VV) —функция, реализующая разновидность алгоритма обратного распространения ошибки, так называемый упругий алгоритм обратного распространения (resilient backpropagation algorithm, RPROP).
[net,tr] = trainscg(net,Pd,TI,Ai,Q,TS,VV) —данная функция возвращает веса и смещения НС, используя алгоритм масштабируемых сопряженных градиентов.
[net,tr] = trainwb(net,Pd,TI,Ai,Q,TS,VV) —данная функция корректирует веса и смещения сети в соответствии с заданной функцией обучения нейронов.
[net,tr] = trainwbl(net,Pd,TI,Ai,Q,TS,VV) —то же, что и предыдущая функция, но одновременно на вход сети предъявляется только один вектор входа.
[net,Ac,El] = adaptwb(net,Pd,TI,Ai,Q,TS) —функция адаптации весов и смещений НС. Используется совместно с функциями (см. ниже) newp и newlin. Возвращает массив выходов слоев Ас и массив ошибок слоев EI.
Функции настройки слоев нейронов. Функции данной группы являются вспомогательными при работе с некоторыми рассмотренными функциями обучения НС (например, trainwb, trainwbl, adaptwb), а также используются при настройках однослойных нейросетевых структур (персептронов, слоев Кохонена и т. п.).
[dB,LS] = learncon(B,P,Z,N,A,T,E,gW,gA,D,LP,LS) — функция настройки весов с введением «чувства справедливости» (см. выше) Аргументы:
В — Sx 1 вектор смещений,
Р — IxQ входной вектор,
Z — SxQ матрица взвешенных входов,
N — SxQ матрица входов,
А — SxQ матрица выходных векторов,
Т — SxQ матрица целевых векторов слоя,
Е — SxQ матрица ошибок,
gW — SxR градиент критерия эффективности по отношению к вектору весов,
gA — SxQ градиент критерия эффективности по отношению к вектору выхода,
D — SxS матрица расстояний между нейронами,
LP — параметр обучения, LP =[],
LS — состояние обучения, в начале —[].
Возвращаемые величины:
dB — Sx 1 вектор изменений весов (или смещений),
LS — новое состояние обучения.
Функция в форме learncon(code) возвращает следующую информацию:
при аргументе ,pnames, — имена параметров обучения,
при ,pdefaults, — значения параметров по умолчанию,
при ,needg, — 1, если эта функция использует gW или gA.
Алгоритм выполнения функции сначала вычисляет «чувство справедливости» нейрона по выражению с = (1-1г)*с+1г*а, а уже затем корректирует вес в соответствии с формулой
b = exp(l-log(c))-b.
Пример
а = rand(3,l);
b = rand(3,l);
»1р.1г=0.5; % Задание параметра обучения
»dW = learncon(b,[],[],[],а,[],[],[],[],[],1р,[])
dW =
0.3449
0.7657
0.5405
learngd — функция коррекции весов и смещений, реализующая градиентный алгоритм оптимизации.
Запись:
[dW,LS] = learngd(W,P,Z,N,A,T,E,gW,gA,D,LP,LS)
[db,LS] = learngd(b,ones(l,Q),Z,N,A,T,E,gW,gA,D,LP,LS)
info = learngd(code)
Описание. Аргументы функции: W — матрица весов или вектор смещения, остальные аргументы — как у предыдущей функции.
Возвращаемые параметры — как у предыдущей функции.
learngdm — функция практически аналогична предыдущей, но используемый алгоритм оптимизации — градиентный метод с инерционной составляющей.
[dW,LS] = learnh(W,P,Z,N,A,T,E,gW,gA,D,LP,LS) —функция коррекции весов, использующая правило Хебба, в соответствии с которым веса корректируются по выражению dw =1г*а*р,.
[dW,LS] = learnhd(W,P,Z,N,A,T,E,gW,gA,D,LP,LS) —функция реализует модификацию правила Хебба, при котором корректировка весов осуществляется по соотношению: dw = lr*a*p,-dr*w.
[dW,LS] = learnis(W,P,Z,N,A,T,E,gW,gA,D,LP,LS) —функция подстройки весов «входной звезды» (нейрона слоя Гроссберга), реализующая выражение: dw = lr*a*(p,-w).
[dW,LS] = learnk(W,P,Z,N,A,T,E,gW,gA,D,LP,LS) —функция подстройки весов слоя Кохонена, реализующая выражение dw = =lr*(p,-w),если aWO, и 0 в противоположном случае.
[dW,LS] = learnlvl(W,P,Z,N,A,T,E,gW,gA,D,LP,LS) и
[dW,LS]二 learnlv2(W,P,Z,N,A,T,E,gW,gA,D,LP,LS) —функции настройки сетей встречного распространения.
[dW,LS] = learnos(W,P,Z,N,A,T,E,gW,gA,D,LP,LS) —функция настройки нейрона типа «выходная звезда», реализующая выражение: dw = Ir* (a-w)*p‘.
[dW,LS] = learnp(W,P,Z,N,A,T,E,gW,gA,D,LP,LS) —функция, реализующая алгоритм обучения персептрона.
[dW,LS] = learnpn(W,P,Z,N,A,T,E,gW,gA,D,LP,LS) — то же, что и предыдущая функция, но с нормализацией входов. Более эффективна при больших изменениях входных сигналов.
[dW,LS] = learnsom(W,P,Z,N,A,T,E,gW,gA,D,LP,LS) —функция обучения самоорганизующихся карт.
[dW,LS] = learnwh(W,P,Z,N,A,T,E,gW,gA,D,LP,LS) —функция обучения, реализующая так называемый алгоритм Видрова- Хоффа (Widrow-Hoff), основанный на соотношении
dw = lr*e*pn, и известный также, как дельта-правило или правило наименьших квадратов.
Функции одномерной оптимизации. Функции данной группы можно рассматривать как вспомогательные для функций обучения нейронных сетей. Реализуют различные алгоритмы одномерного поиска.
srchbac — функция реализует так называемый алгоритм перебора с возвратами (backtracking).
srchbre — функция реализует комбинированный метод оптимизации, объединяющий метод золотого сечения и квадратичную интерполяцию.
srchcha — функция реализует разновидность метода оптимизации с применением кубической интерполяции.
srchgol — функция реализует метод золотого сечения.
srchhyb — функция реализует комбинированный метод оптимизации, объединяющий метод дихотомии и кубическую интерполяцию.
Функции инициализации слоев и смещений. Для многих нейронных сетей этапом, предваряющим процедуру их обучения, является этап инициализации (задания некоторых — обычно выбираемых случайным образом) весов и смещений сети. Такая инициализация выполняется с помощью функций данной группы.
initcon(S,PR) —функция, устанавливающая смещения нейронов в зависимости от среднего выхода нейрона. Аргументы: s — количество нейронов, PR= [Pmin Ртах] — матрица (с двумя столбцами) минимальных и максимальных значений входов, по умолчанию [1 1]. Возвращает вектор смещений. Используется совместно с командой learncon.
Пример
» b = initcon(3)
b =
8.1548
8.1548
8.1548
initzero — функция задания нулевых начальных значений весам или смещениям. Аргументы те же, что и у предыдущей команды.
midpoint (S, Р R) —функция инициализации, устанавливающая веса в соответствии со средними значениями входов.
randnc(S,R) —функция задания матрицы весов. Возвращает матрицу размера SxR со случайными элементами, нормализованную по столбцам (векторы-столбцы имеют единичную длину).
randnr(S,R) —то же, что предыдущая функция, но возвращает матрицу весов, нормализованную по строкам.
rands — функция инициализации весов/смещений заданием их случайных значений из диапазона [—1, 1].
Запись:
W = rands(S,PR)
М = rands(S,R)
V = rands(S)
Описание. Аргументы те же, что и для функции initcon; значение R по умолчанию —1. Возвращается матрица соответствующего размера.
Функции создания нейронных сетей
network — функция создания нейронной сети пользователя.
Запись:
net = network
net =
network(numInputs,numLayers,biasConnect,inputConnect, layerConnect,outputConnect,targetConnect)
Описание. Функция возвращает созданную нейронную сеть с именем net и со следующими характеристиками (в скобках даны значения по умолчанию):
numinputs — количество входов (0).
numLayers — количество слоев (0),
biasConnect — булевский вектор с числом элементов, равным количеству слоев (нули),
inputConnect — булевская матрица с числом строк, равным количеству слоев, и числом столбцов, равным количеству входов (нули),
layerConnect — булевская матрица с числом строк и столбцов, равным количеству слоев (нули),
outputConnect — булевский вектор-строка с числом элементов, равным количеству слоев (нули).
targetConnect — вектор-строка, такая же, как предыдущая (нули).
net = newc(PR,S,KLR,CLR) — функция создания слоя Кохо- нена. Функция использует аргументы:
PR — Rx2 матрицу минимальных и максимальных значений для R входных элементов,
S — число нейронов,
KLR— коэффициент обучения Кохонена (по умолчанию 0.01), CLR — коэффициент «справедливости» (по умолчанию 0.001) и возвращает слой Кохонена с заданным именем.
net = newcf(PR,[Sl S2...SNI],TF1 TF2...TFNI,BTF,BLF,PF)— функция создания разновидности многослойной НС с обратным распространением ошибки — так называемой каскадной НС. Такая сеть содержит скрытых NI слоев, использует входные функции типа dotprod и netsum, инициализация сети осуществляется функцией initnw.
Аргументы функции:
PR— Rx2 матрица минимальных и максимальных значений R входных элементов,
Si — размер i-ro скрытого слоя, для NI слоев,
TFi — функция активации нейронов i-ro слоя, по умолчанию ,tansig,.
BTF — функция обучения сети, по умолчанию ,traingd,.
BLF — функция настройки весов и смещений, по умолчанию ,learngdm,.
PF — функция ошибки, по умолчанию ,mse,.
Пример
»Р = [0 123456789 10];
»Т = [0 1 2 3 4 3 2 1 2 3 4];
» net = newcf([0 10],[5 l],'tansig' ^игеНп7); % Создание новой сети
» net.trainParam.epochs = 50; % Задание количества циклов обучения
» net = train(net,P,T); % Обучение НС
TRAINLM, Epoch 0/50, MSE 7.77493/0,
Gradient 138.282/le-010
TRAINLM, Epoch 25/50, MSE 4.01014e-010/0,
Gradient 0.00028557/le-010
TRAINLM, Epoch 50/50, MSE 1.13636e-011/0,
Gradient 1.76513e-006/le-010
TRAINLM, Maximum epoch reached, performance goal was not met.
» Y = sim(net,P); % Использование НС
» plot(P,T,P,Y/o^f) % Графическая иллюстрация работы сети
Рис. 4.1. Иллюстрация работы сети
На рис. 4.1 точками отображены элементы обучающей выборки, линией — выход сети.
net = newelm(PR,[Sl S2...SNI],TF1 TF2...TFNI,BTF,BLF,PF) функция создания сети Элмана. Аргументы — такие же, как и у предыдущей функции.
net = newff(PR,[Sl S2...SNI],TF1 TF2...TFNI,BTF,BLF,PF)— функция создания «классической» многослойной НС с обучением по методу обратного распространения ошибки.
net = newfftd(PR,ID,[Sl S2...SNI],TF1 TF2...TFNI,BTF,BLF, PF) —то же, что и предыдущая функция, но с наличием задержек по входам. Дополнительный аргумент ID — вектор входных задержек.
net = newgrnn(P,T,spread) — функция создания обобщенно-регрессионной сети. Аргументы:
Р — RxQ матрица Q входных векторов,
Т — SxQ матрица Q целевых векторов, spread — отклонение (по умолчанию 1.0).
net = newhop(T) — функция создания сети Хопфилда. Использует только один аргумент.
Т — RxQ матрица Q целевых векторов (значения элементов должны быть +1 или —1).
net = newlin(PR,S,ID,LR) — функция создания слоя линейных нейронов. Аргументы:
PR— Rx2 матрица минимальных и максимальных значений для R входных элементов,
S — число элементов в выходном векторе,
ID — вектор входной задержки (по умолчанию [0]),
LR — коэффициент обучения (по умолчанию 0.01).
Возвращается новый линейный слой.
При записи в форме net = newlin(PR,S,0,P) используется аргумент
Р — матрица входных векторов,
возвращается линейный слой с максимально возможным коэффициентом обучения при заданной Р.
net = newlind(P,T) —функция проектирования нового линейного слоя. Данная функция по матрицам входных и выходных векторов методом наименьших квадратов определяет веса и смещения линейной НС.
net = newlvq(PR,Sl,PC,LR,LF) —функция создания сети встречного распространения.
Аргументы:
PR— Rx2 матрица минимальных и максимальных значений R входных элементов,
S1 — число скрытых нейронов,
PC — S2 элементов вектора, задающих доли принадлежности к различным классам,
LR — коэффициент обучения, по умолчанию 0.01,
LF — функция обучения, по умолчанию ,learnlv2,.
net = newp(PR,S,TF,LF) — функция создания персептрона.
Аргументы:
PR— Rx2 матрица минимальных и максимальных значений R входных элементов,
S — число нейронов,
TF — функция активации, по умолчанию ,hardlim,,
LF — функция обучения, по умолчанию ,1еагпр,.
net = newpnn(P,T,spread) — функция создания вероятностной НС. Аргументы — как у функции newgrnn.
net = newrb(P,T,goal,spread) — функция создания сети с радиальными базисными элементами. Аргументы Р, Т, spread — такие же, как у функции newgrnn; аргумент goal— заданная среднеквадратичная ошибка.
net = newrbe(P,T,spread) — функция создания сети с радиальными базисными элементами с нулевой ошибкой на обучающей выборке.
net = newsom(PR,[Dl,D2,...],TFCN,DFCN,OLR,OSTEPS,TLR, TND) —функция создания самообучающейся карты с аргументами:
PR— Rx2 матрица минимальных и максимальных значений R входных элементов,
I — размеры г-го слоя, по умолчанию [5 8],
TFCN —топологическая функция, по умолчанию ,hextop,,
DFCN — функция расстояния, по умолчанию ,linkdist,,
OLR — коэффициент обучения фазы упорядочивания, по умолчанию 0.9,
OSTEPS —число шагов фазы упорядочивания, по умолчанию 1000,
TLR— коэффициент обучения фазы настройки, по умолчанию 0.02,
TND — расстояние для фазы настройки, по умолчанию 1.
Функции преобразования входов сети. Функции данной группы преобразуют значения входов с использованием операций умножения или суммирования.
netprod(Zl,Z2,...) —возвращает матрицу, элементы которой определяются как произведения элементов входных векторов и смещений. Аргументы Z1,Z2,... — матрицы, чьи столбцы ассоциированы с входами или смещениями.
Примеры
»zl = [l 2 4;3 4 1];
»z2 = [-l 2 2; -5 -6 1];
» л = netprod(zl,z2)
n =
-148
-15-241
»b = [o; -1];
» n = netprod(zl,z2,concur(b,3)) % Функция concur(b,3) создает 3 копии вектора смещения
n =
ООО 1524-1
netsum(Zl,Z2,...) — то же, что в предыдущем случае, но вместо умножения используется суммирование.
dnetprod(Z,N) — возвращает матрицу значений первой производной входов, преобразованных функцией N = netprod(Zl,Z2,...).
Пример
» Z1 = [0; 1; -1];
»Z2 = [1; 0.5; 1.2];
» N = netprod(Zl,Z2)
N =
0
0.5000
-1.2000
» dN dZ2 = dnetprod(Z2,N)
dN_dZ2 =
0
1 -1
dnetsum(Z,N) — то же, что и в предыдущем случае, но по отношению к функции netsum(Zl,Z2,...).
Функции весов и расстояний
boxdist(pos) — функция определения box-расстояния между нейронами в слое. Имеет один аргумент pos-матрицу размера NxS, элементы которой определяют координаты нейронов, возвращает матрицу размера SxS расстояний. Расстояния (элементы возвращаемой матрицы) вычисляются по выражению:
Dij = max(abs(Pi — Pj))^ где Pi и Pj — векторы, содержащие координаты нейронов i и j.
Пример
» pos = га
ind(3,4) % Случайное размещение 4-х нейронов в 3-мерном
пространстве
! (генерация случайной матрицы 3x4)
pos =
0.8600
0.4966
0.6449
0.3420
0.8537
0.8998
0.8180
0.2897
0.5936
0.8216
0.6602
0.3412
» d = boxdist(pos)
0
0.3635
0.2151
0.5639
0.3635
0
0.1614
0.6100
0.2151
0.1614
0
0.5282
0.5639
0.6100
0.5282
0
dist — функция вычисления евклидова расстояния.
Запись:
Z = dist(W,P) —возвращает матрицу, элементы которой являются евклидовыми расстояниями между строками (векторами) матрицы W и столбцами матрицы Р (матрицы должны иметь соответствующие размеры).
D = dist(pos) — в такой форме функция аналогична функции boxdist(pos) за тем исключением, что возвращается матрица евклидовых расстояний.
negdist(W,P) —функция идентична предыдущей, но элементы возвращаемой матрицы являются евклидовыми расстояниями, взятыми со знаком минус.
mandist(W,P) —функция аналогична предыдущей, но элементы возвращаемой матрицы являются расстояниями по Манхэттену, которое для векторов х и у определяется соотношением: D = sum(abs(x — у)).
linkdist(pos) —функция определения линейного расстояния между нейронами в слое. Аналогична функции boxdist, отличаясь от последней алгоритмом определения расстояния:
Dij = 0, если 5 =力
Dij = 1, если евклидово расстояние между £• и Pj меньше или равно 1;
Dij = 2, если существует к такое, что D^ = D^j = 1;
Dij = 3, если существуют kl и k2 такие, что D^ = D^^ = =О 足 2/ = 1;
Dij = N> если существуют kl, k2, ..., kN такие, что =
—°足1足2 = • • • = DkNj — 1;
Dij = 5, если не выполнено ни одно из предыдущих условий.
dotprod(W,P) —функция придания входам Р некоторых весов W. Возвращает матрицу Z = W*P.
normprod(W,P) — функция аналогична предыдущий, но каждый элемент возвращаемой матрицы дополнительно делится на сумму элементов соответствующего столбца-сомножителя матрицы Р.
Функции размещения нейронов (топологические функции). Функции данной группы используются при создании самоорганизующихся карт.
gridtop(diml,dim2,...,dimN) — функция размещения N слоев нейронов в узлах регулярной прямоугольной N-мерной решетки. diml,dim2,...,dimN — число нейронов в слоях. Возвращает матрицу, содержащую N строк и (dimlxdim2x.. .xdimN) столбцов с координатами нейронов.
Пример
» pos = gridtop(2,3)
pos =
010101
001122
hextop(diml,dim2,...,dimN) — функция аналогична предыдущей, но размещение нейронов производится в узлах гексагональной (шестиугольной) решетки.
Пример
» pos = hextop(8,5); plotsom(pos)
(см. рис. 4.2).
randtop(diml,dim2,...,dimN) — аналогична функции
gridtop(diml,dim2,...,dimN), но координаты нейронов выбираются случайным образом.
Пример
pos = randtop(16,12); plotsom(pos)
(см. рис. 4.3).
Функции использования нейронных сетей
[Y,Pf,Af] = sim(net,P,Pi,Ai) —функция, моделирующая работу нейронной сети. Аргументы: net — имя сети, Р — ее входы, Pi — массив начальных условий входных задержек (по умолчанию они нулевые), Ai — массив начальных условий задержек слоя нейронов (по умолчанию они нулевые). Функция возвращает значения выходов Y и массивы конечных условий задержек.
Рис. 4.2. Результат выполнения команды hextop(8,5)
Рис. 4.3. Результат выполнения команды randtop(16,12)
Аргументы Pi,Ai, Pf,Af используются только в случаях, когда сеть имеет задержки по входам или по слоям нейронов.
Структура данных аргументов:
Р — массив размера NixTS, каждый элемент которого P{i,ts} является матрицей размера RixQ.
Pi — массив размера NixID, каждый элемент которого Pi{i,k} (г-й вход в момент ts = к — ID) является матрицей размера RixQ (по умолчанию — ноль).
Ai —массив размера NlxLD, каждый элемент которого Ai{i,k} (выход г-го слоя в момент ts = k —LD) является матрицей размера SixQ (по умолчанию — ноль).
Y — массив размера NOxTS, каждый элемент которого Y{i,ts} является матрицей размера UixQ.
Pf— массив размера NixID, каждый элемент которого Pf{i,k} (г-й вход в момент ts = TS + k — ID) является матрицей размера RixQ.
Af—массив размера NIxLD, каждый элемент которого Af{i,k} (выход г-го слоя в момент ts = TS + k — LD) является матрицей размера SixQ, при этом
Ni = net.numinputs — количество входов сети,
Nl = net.numLayers — количество ее слоев,
No = net.numOutputs — количество выходов сети,
ID = net.numlnputDelays — входные задержки,
LD = net.numLayerDelays — задержки слоя,
TS = Number of time steps — число временных интервалов,
Q = Batch size — размер набора подаваемых векторов,
Ri= net.inputs{ i }.size — размер г-го вектора входа,
Si = net.layers{ i }.size — размер г-го слоя,
Ui = net.outputs{ i }.size — размер г-го вектора выхода.
net = init(net) — функция инициализирует нейронную сеть с именем net, устанавливая веса и смещения сети в соответствии с установками net.initFcn и net.initParam.
[net,Y,E,Pf,Af] = adapt (net,Р,Т,Pi, Ai) —функция адаптации НС. Выполняет адаптацию сети в соответствии с установками net.adaptFcn и net.adaptParam. Здесь Е — ошибки сети, Т — целевые значения выходов (по умолчанию — ноль); остальные аргументы — как у команды sim.
[net,tr] = train(net,P,T,Pi,Ai) —функция осуществляет обучение НС в соответствии с установками net.trainFcn и net.trainParam Здесь tr — информация о выполнении процесса обучения (количество циклов и соответствующая ошибка обучения).
disp(net) — функция возвращает развернутую информацию о структуре и свойствах НС.
Пример
»net = newp([-l 1; 0 2],3); % Создание НС типа персептрон
» disp(net)
Neural Network object:
architecture:
numinputs: 1
numLayers: 1
biasConnect: [1]
inputConnect: [1]
layer Connect: [0]
outputConnect: [1]
targetConnect: [1]
numOutputs: 1 (read-only)
numTargets: 1 (read-only)
numinputDelays: 0 (read-only)
numLayerDelays: 0 (read-only)
subobject structures:
inputs: {1X1 cell} of inputs
layers: {1X1 cell} of layers
outputs: {1X1 cell} containing 1 output
targets: {1X1 cell} containing 1 target
biases: {1X1 cell} containing 1 bias
inputWeights: {1X1 cell} containing 1 input weight
layerWeights: {1X1 cell} containing no layer weights functions:
adaptFcn: ,adaptwb,
initFcn: ,initlay, performFcn: 'mae' trainFcn: ,trainwb,
parameters:
adaptParam: .passes
initParam: (none)
performParam: (none)
trainParam: .epochs, .goal, .maxjail, .show, .time
weight and bias values:
IW: {1X1 cell} containing 1 input weight matrix
LW: {1X1 cell} containing no layer weight matrices
b: {1X1 cell} containing 1 bias vector
other:
userdata: (user stuff)
display (net) — то же, что предыдущая команда, но дополнительно возвращает имя нейронной сети.
Графические функции
hintonw(W,maxw,minw) — функция возвращает так называемый хинтоновский график матрицы весов, при котором каждый весовой коэффициент отображается квадратом с площадью, пропорциональной величине данного коэффициента. Знак отображается цветом квадрата.
Аргументы:
W — матрица весов, maxw и minw — минимальное и максимальные значения ее коэффициентов (могут не задаваться).
Пример
» W = rands(2,3)
W =
-0.88420.6263-0.7222
-0.2943-0.9803-0.5945
» hintonw(W)
(см. рис. 4.4).
Рис. 4.4. Иллюстрация к выполнению функции hintonw
hintonwbM(W,b,maxw,minw) — то же, что и предыдущая функция, но на графике отображаются не только веса, но и смещения.
plotbr(tr,name,epoch) — функция возвращает графики изменения критерия качества НС в процессе обучения при использовании Байесовского метода (см. выше).
Аргументы:
tr — запись процесса обучения, name — имя НС, epoch — количество циклов обучения (по умолчанию — длина записи обучения).
Пример
» р = [-1:.05:1];
»t = sin(2*pi*p)+0.1*randn(size(p));
»net = newff([-l l],[20,l],{,tansig,,,purelin,},,trainbr/);
% Создание новой сети
» [net,tr] = train(net,p,t); % Обучение сети
TRAINBR, Epoch 0/100, SSE 228.933/0, SSW 21461.7,
Grad 2.33e+002/1.00e-010, #Par 6.10e+001/61
TRAINBR, Epoch 25/100, SSE 0.235423/0, SSW 211.044,
Grad 9.43e-002/1.00e-010, #Par 1.35e+001/61
TRAINBR, Epoch 50/100, SSE 0.240881/0, SSW 121.647,
Grad 1.87e-001/1.00e-010, #Par 1.23e+001/61
TRAINBR, Epoch 75/100, SSE 0.239867/0, SSW 116.884,
Grad 1.62e-002/1.00e-010, #Par 1.22e+001/61
TRAINBR, Epoch 100/100, SSE 0.239762/0, SSW 116.871,
Grad 9.60e-003/1.00e-010, #Par 1.22e+001/61
TRAINBR, Maximum epoch reached.
» plotbr(tr)
(см. рис. 4.5).
plotep(w,b,e) — функция отображает позиции весов и смещений на поверхности ошибки НС.
Аргументы:
w, Ь, е — соответственно, матрицы весов, смещений и ошибок. Возвращается вектор, используемый для продолжения графика, созданного функцией plotes (см. ниже).
plotes(wv,bv,e,v) — функция возвращает график поверхности ошибки одновходового нейрона.
Аргументы:
wv, bv —соответственно, наборы значений веса и смещения нейрона, е — матрица значений ошибки, v — опция вида изображения (по умолчанию, [—37.5, 30]). Использование функции иллюстрирует рис. 4.8 (см. ниже).
plotpc(W,b) —функция возвращает график линии решения для персептрона.
Аргументы:
W — матрица весов, b — вектор смещений. Используется совместно с функцией plotpv (см. ниже).
plotperf(tr,goal,name,epoch) — возвращает график изменения критерия качества НС в процессе обучения. Аргументы: tr — за-
Squared TraEtiEtig Еrroг = 0,239762
Рис. 4.5. Результат выполнения функции plotbr(tr)
пись процесса обучения, goal — целевое значение критерия, name — имя НС, epoch — количество циклов обучения.
plotpv(p,t) — функция возвращает графическое отображение входных р и целевых t векторов персептрона.
Пример
»р = [0 0 1 1; 0 1 0 1];
»t = [0 0 0 1];
» plotpv(p,t)
(см. рис. 4.6).
plotsom(pos) — функция возвращает графическое представление расположения нейронов в самоорганизующихся картах (см.
Функции размещения нейронов, рис. 4.2, 4.3).
plotv(M,t) —функция графического изображения векторов.
Рис. 4.7. Результат использования функции plotv(M,t)
Аргументы:
M — матрица с двумя строками, столбцы которой ассоциированы с векторами, t — опция, задающая тип линии.
Пример
»plotv([-.4 0.7 .2; -0.5 .1 0.5];')
(см. рис. 4.7).
plotvec(M,C,m) — функция графического изображения векторов разными цветами.
Аргументы:
М — матрица с двумя строками, столбцы которой ассоциированы с векторами, С — строка задания цветов, m — тип точек, указывающих концы векторов (по умолчанию +).
Прочие функции
errsurf(p,t,wv,bv,f) — функция, возвращающая матрицу значений поверхности ошибок нейрона с одним входом и одним выходом в зависимости от значений веса и смещения. Аргументы:
р — вектор значений входа,.
t — вектор значений выхода,.
wv — набор значений веса нейрона,.
bv — набор значений смещения.
f— название реализуемой функции активации (строка).
Размер возвращаемой матрицы = (количество значений bv) X X(количество значений wv).
Пример
»р = [-6.0 -6.1 -4.1 -4.0 +4.0 +4.1 +6.0 +6.1];
»t = [+0.0 +0.0 +.97 +.99 +.01 +.03 +1.0 +1.0];
» wv = -1:.1:1; bv = -2.5:.25:2.5;
» es = errsurf(p,t,wv,bv,/logsig/);
» plotes(wv,bv,es,[60 30])
(см. рис. 4.8)
maxlinlr(P) —возвращает максимальную величину коэффициента обучения для линейного слоя нейронов. Здесь Р — матрица входов.
При записи в форме maxlinlr(P/bias,) функция возвращает максимальную величину коэффициента обучения для линейного слоя нейронов со смещением.
gensim(net,st) — функция генерирует нейросетевой блок Simulink (см. рис. 4.9) для последующего моделирования НС средствами этого пакета.
uijsuaS ииПчнХф винэнпошчэ leiqnXeaj *6干 PHd
整篇顛黛
鏡無轡蜜
{I•抓
EH-
俨叫沖|епан
|'■•|I|I,ИI
jjnsjja ииПчнХф винэнпошчэ XdawHdn ч виПейтэошпд %干-dhj
(рЦ)Ш18ЦЭ§ «
ЭН иояон эине1Г£оэ % ♦([【引[【о])豆маи =押u«
d з w и d u
仰I仰Ixoq/oq£ 8斗工0m?9\[ /?/"呎 ?工3x?и ии^ян^ф docgQ z,什
仰I
仰I
initlay(net) — функция инициализации слоев нейронной сети. В качестве аргумента использует имя (идентификатор) net НС. Возвращает нейронную сеть, слои нейронов в которой инициализированы в соответствии с функцией net.layers{ i }.initFcn. В форме initlay(code), где строковая переменная code может принимать значения ,pnames, или ,pdefaults, функция возвращает информацию о именах или о значениях по умолчанию параметров инициализации.
initnw(net,i) — функция инициализации слоя i. Возвращает НС, веса и смещения в г-м слое которой обновлены в соответствии с алгоритмом инициализации Nguyen-Widrow (так, что зоны «влияния» каждого нейрона в слое распределены равномерно).
initwb(net,i) — почти то же, что в предыдущем случае, но веса и смещения г-го слоя инициализируются в соответствии с их собственными функциями инициализации.
ddotprod — функция определения производной от результата Z умножения матрицы весов W на матрицу входов Р.
Запись:
dZ dP = ddotprod(,p,,W,P,Z)
dZ dW = ddotprod(,w,,W,P,Z)
Примеры
» W = [0 -1 0.2; -1.1 1 0];
»P = [0.1; 0.6; -0.2];
» Z = dotprod(W,P) % Вычисление произведения Z=W*P
Z =
-0.6400 0.4900
» dZ dP = ddotprod('p',W,P,Z)
dZ_dP =
0-1.00000.2000
-1.10001.00000
» dZ dW = ddotprod(,w,,W,P,Z)
dZ_dW =
6.1000 0.6000 -0.2000
4.3. Примеры создания и использования нейронных сетей
Нейронные сети для аппроксимации функций. Создадим обобщенно-регрессионную НС с именем а для аппроксимации функции вида
у =化2 ^ отрезке [—1, 1], используя следующие экспериментальные данные:
ж = [-1 - 0.8 - 0.5 - 0.2 0 0.1 0.3 0.6 0.9 1],
У = [1 0.64 0.25 0.04 0 0.01 0.09 0.36 0.81 1].
Процедура создания и использования данной НС описывается следующим образом:
» Р = [-1 -0.8 -0.5 -0.2 0 0.1 0.3 0.6 0.9 1]; % Задание входных значений
» Т = [1 0.64 0.25 0.04 0 0.01 0.09 0.36 0.81 1]; % Задание выходных значений
» а = newgrnn(P,T,0.01); % Создание НС с отклонением 0.01
» У = sim(a,[-0.9 -0.7 -0.3 0.4 0.8]) % Опрос НС
Y =
0.82000.64000.04000.09000.8100
Как видно, точность аппроксимации в данном случае получилась не очень высокой.
Можно попытаться улучшить качество аппроксимации за счет подбора величины отклонения, но в условиях примера приемлемый результат легко достигается путем применения сети с радиальными базисными элементами:
» а = newrbe(P,T);
» У = sim(a,[-0.9 -0.7 -0.3 0.4 0.8]) % Опрос НС
Y =
0.81000.49000.09000.16000.6400
Созданную сеть можно сохранить для последующего использования набором в командной строке save(,a,); при этом будет создан файл a.mat, т. е. файл с именем НС и расширением mat. В последующих сеансах работы сохраненную сеть можно загрузить, используя функцию load(,a,). Естественно, допустимы все другие формы записи операторов save и load.
Рассмотрим теперь аналогичную задачу, но с использованием линейной НС.
Пусть экспериментальная информация задана значениями:
ж = [+1.0 + 1.5 +3.0 - 1.2],
у = [+0.5 + 1.1 +3.0 - 1.0].
Процесс создания, обучения и использования линейной НС с именем b иллюстрируется приведенными функциями и рис. 4.10.
»Р = [+1.0 +1.5 +3.0 -1.2];
»Т = [+0.5 +1.1 +3.0 -1.0];
» maxlr = maxlinlr (P^ias7); % Определение величины коэффициента обучения
»b = newlin([-2 2],l,[0],maxlr); % Создание линейной НС с именем b
» b.trainParam.epochs = 15; % Задание количества циклов обучения
» b = train(b,P,T); % Обучение НС
TRAINWB, Epoch 0/15, MSE 2.865/0.
TRAIN WB, Epoch 15/15, MSE 0.0730734/0.
TRAINWB, Maximum epoch reached.
» p = -1.2;
» у = sim(b,p) % Опрос сети
у =
-1.1803
扌PErfatrnanEe es 0.0730734^0 31 is: □
簽黛 liiiiiiiiiiiiiiiiiiiiiiiiii 羅鬟 liiiiiiBitiiiiliiiiiiiiiiiiiiii^^
Рис. 4.10. Изменение ошибки сети в процессе ее обучения
Прогнозирование значений процесса. Рассмотрим теперь такой пример. Предположим, что имеется сигнал (функция времени), описываемый соотношением 化(力)=sin (4汗力)〉который подвергается дискретизации с интервалом 0.025с.
Построим линейную нейронную сеть, позволяющую прогнозировать будущее значение подобного сигнала по 5 предыдущим. Решение данной задачи иллюстрируется ниже.
»t = 0:0.025:5; % Задание диапазона времени от 0 до 5 секунд
» х = sin(t*4*pi); % Предсказываемый сигнал
» Q = length(x);
» % Создание входных векторов
» Р = zeros(5,Q); % Создание нулевой матрицы Р
»P(l,2:Q)=x(l,l:(Q-l));
» P(2,3:Q) =x(l,l:(Q-2));
» P(3,4:Q) =x(1,1:(Q-3));
» P(4,5:Q) =x(l,l:(Q-4));
» P(5,6:Q) =x(l,l:(Q-5));
Рис. 4.11. Исходный сигнал и прогноз
» s = newlind(P,x); % Создание новой НС с именем s
»y = sim(s,P); % Расчет прогнозируемых значений
» % Создание графиков исходного сигнала и прогноза »plot(t,y,t,x,/*/)
» xlab el (zBp емях);
» у1аЬе1(,Прогноз - Сигнал +');
» title (,Выход сети и действительные значения7);
» % Расчет и создание графика ошибки прогноза
» е = х-у;
» plot(t,e)
» hold on
»plot([min(t) max(t)],[0 0],/:r/)
» hold off
» xlab el (zBp емях);
» у1аЬе1(,0шибка,);
»title(,Сигнал ошибки');
В данном случае сеть создавалась с помощью функции newlind, при которой не требуется дополнительного обучения. Судя по графикам результатов, приведенных на рис. 4.11 и 4.12, точность прогноза с использованием линейной НС можно считать хорошей.
Использование слоя Кохонена. Рассмотрим задачу автоматического выявления (в режиме обучения без учителя) центров кластеров входов для двумерного случая с использованием слоя Кохонена (слоя «соревнующихся» нейронов). Решение данной задачи приведено ниже.
» X = [0 1; 0 1]; % Задание диапазонов возможного положения центров кластеров
» % Задание параметров для моделирования исходных данных,
» % принадлежащих 8 классам (кластерам)
» clusters = 8;
» points = 10;
» std dev = 0.05;
» P = nngenc(X,clusters,points,std dev); % Моделирование входных данных
»h = newc([0 l;0 l],8,.l); % Создание слоя Кохонена
» h.trainParam.epochs = 500; % Задание количества циклов обучения
» h = init (h); % Инициализация сети
» h = train(h,P); % Обучение сети
»w = h.IW{l};
» % Вывод графика исходных данных и выявленных центров кластеров
AploMPa,:)^?,:),」!7);
»hold on; plot(w(:,l),w(:,2),/ob/);
» xlabelf^fl)7);
»ylabel(/p(2)/);»р = [0; 0.2]; % Задание нового входного вектора» у = sim(h,p) % Опрос сети»У =(3,1) 1Работу обученной сети иллюстрирует рис. 4.13 и результат ее опроса (который выдается в форме разреженной матрицы). В усло-〔,1IIIIIIIII%0,9 -+ + +- + ,++ + + +;■I++D.2 - ±»ylabel(/p(2)/);»р = [0; 0.2]; % Задание нового входного вектора» у = sim(h,p) % Опрос сети»У =(3,1) 1Работу обученной сети иллюстрирует рис. 4.13 и результат ее опроса (который выдается в форме разреженной матрицы). В усло-〔,1IIIIIIIII%0,9 -+ + +- + ,++ + + +;■I++D.2 - ±++¥+ ■++¥+ ■.++ +.++ +++++号+号++++++++ +++ +++++++++ ++^# 专?# ++ 0++++1+ ++^# 专?# ++ 0++++1
»ylabel(/p(2)/);
»р = [0; 0.2]; % Задание нового входного вектора
» у = sim(h,p) % Опрос сети
»У =
(3,1) 1
Работу обученной сети иллюстрирует рис. 4.13 и результат ее опроса (который выдается в форме разреженной матрицы). В усло-
〔,1IIIIIIIII
%
0,9 -+ + +
- + ,+
+ + + +;
■I++
D.2 - ±
»ylabel(/p(2)/);
»р = [0; 0.2]; % Задание нового входного вектора
» у = sim(h,p) % Опрос сети
»У =
(3,1) 1
Работу обученной сети иллюстрирует рис. 4.13 и результат ее опроса (который выдается в форме разреженной матрицы). В усло-
〔,1IIIIIIIII
%
0,9 -+ + +
- + ,+
+ + + +;
■I++
D.2 - ±
++¥
+ ■
++¥
+ ■
.+
+ +
.+
+ +
+
+
+
+
号+
号+
++
++
+
+
+ +
+
+ +
+
++
+
++
+
+ ++^
# 专?# +
+ 0++
++1
+ ++^
# 专?# +
+ 0++
++1
III
Рис. 4.13. Исходные данные и выявленные центры кластеров
виях примера предъявленный вектор отнесен к третьему классу (кластеру).
Сеть Хопфилда с двумя нейронами. Рассмотрим сеть Хоп- филда, имеющую два нейрона и два устойчивых состояния, отображаемых векторами [1 — 1] и [—1 1]. Представим эти векторы с помощью рис. 4.14, выводимого программой
»Т = [+1-1;-1 +1];
»plot(T(l,:),T(2,:)/r*0
» axis([-l.l 1.1 -1.1 1.1]);
»title(,IIpocTpaHCTBO векторов НС Хопфилда7);
» xlabel(,a(l)/);
» ylabel(,a(2)/);
Создадим сеть Хопфилда (с именем Н) и проверим ее работу, подав на вход векторы, соответствующие устойчивым точкам. Если
Рис. 4.14. Устойчивые точки сети Хопфилда
Рис. 4.15. Результат работы сети Хопфилда
4.3. Примеры создания л использования нейронных сетей 149 сеть работает правильно, она должна выработать эти же векторы без каких-либо изменений.
» Н = newhop(T); % Создание НС Хопфилда
» [Y,Pf,Af] = sim(H,2,[],T);Y % Опрос сети Хопфилда
Y =
1 -1
-11
Как видно из результата опроса, сеть работает правильно. Подадим теперь на ее вход произвольный вектор.
»а = {rands(2,l)}; % Задание случайного вектора
»[y,Pf,Af] = sim(H,l 50,{},а);
»plot(T(l,:),T(2,:)/r*0
» axis([-l.l 1.1 -1.1 1.1]);
» record = [cell2mat(a) cell2mat(y)];
» start = cell2mat(a);
» hold on;
» plot (start (1,1),start (2, l)/bx,,record(l,:),record(2,:))
»xlabel(,a(l)/); ylabel(,a(2)/);
» title ('Результат работы сети Хопфилда7);
Результат иллюстрируется рис. 4.15.
Классификация с помощью персептрона. Следующий пример иллюстрирует решение задачи классификации с помощью персептрона. Исходные входные векторы (с указанием их принадлежности к одному из двух классов) и результат настройки персептрона (с именем Му net) представлены на рис. 4.16.
» % Задание входных векторов с указанием их принадлежности
» % одному из двух классов
» Р = [-0.5 -0.5 +0.3 -0.1;-0.5 +0.5 -0.5 +1.0];
» Т = [1 1 0 0];
» plotpv(P,T); % Графическое представление исходных векторов
» % Создание персептрона с указанием границ изменений входов и 1 нейроном
» Му net = newp([-l 1;-1 1],1);
» Е = 1;
» Му net = init(My net); % Инициализация персептрона
» % Организация цикла адаптивной настройки персептрона
» % с выводом графика разделяющей линии
» while (sse(E))
[My_net,Y,E] = adapt (My net ,P,T);
linehandle = plotpc(My net.IW{1},My net.b{ 1}); drawnow;
end;
Рис. 4.16. Исходные входные векторы и разделяющая линия
Адаптивный линейный прогноз. В предыдущем примере настройка НС производилась адаптивно. Отличие такой настройки от выполняемой, например, с помощью метода обратного распространения ошибки, заключается в том, что векторы обучающей выборки поступают на вход сети не все «одновременно», а последовательно, по одному, при этом после предъявления очередного вектора производится корректировка весов и смещений и может быть произведен опрос сети, затем все повторяется. Адаптивная настройка особенно удобна при работе НС в «реальном» масштабе времени.
Рассмотрим пример задачи с прогнозированием значений сигнала (по 5 предыдущим значениям) с использованием указанной настройки.
Предположим, что исходный сигнал определен на интервале времени от 0 до 6с, при этом при 0 ^ t < 4с он описывается соотношением 化⑴=sin(47rt), а при 4 W 力 W 6с — соотношением 化(力)=sin (87ft). График такого сигнала приведен на рис. 4.17.
»timel = 0:0.05:4; % от 0 до 4 секунд
»time2 = 4.05:0.024:6; % от 4 до 6 секунд
Рис. 4.18. Исходный сигнал и прогноз
» time = [timel time2];
» % T определяет исходный сигнал:
» T = con2seq([sin(timel*4*pi) sin(time2*8*pi)]);
» % График исходного сигнала:
» plot (time,cat (2,Т{:}))
» xlab el (zBp емях);
» у1аЬе1(,Исходный сигнал7);
»1111е(,Прогнозируемый сигнал7);
Для прогноза значений сигнала создадим линейную НС.
» % Входной и целевой прогнозируемый сигнал одинаковы:
» Р = Т;
» % Задание коэффициента обучения
»1г = 0.1;
» % Для прогноза используются 5 предыдущих значений
» delays = [1 2 3 4 5];
» % Создание и настройка линейной НС
»net = newlin(minmax(cat(2,P{:})),l,delays?lr); % Создание НС
» [net,y,e] = adapt (net,Р,Т); % Адаптивная настройка сети
» % Графики исходного сигнала и прогноза
» plot (time,cat (2,у{:}),time,cat (2,Т{:})/- -z)
» xlab el (zBp емях);
» у lab el (,Пр огнозируемый сигнал7);
» title(,Исходный сигнал и прогноз7);
Исходный сигнал и прогноз для этого примера приведены на рис. 4.18. Как видно из рис. 4.18, полученный результат можно считать удовлетворительным.
Использование сети Элмана. Рассмотрим задачу восстановления формы сигнала с использованием рекуррентной сети Элмана. Пусть имеется два синусоидальных сигнала — один с единичной амплитудой, другой — с амплитудой, равной двум:
pl = sin(l:20);
p2 = sin(l:20)*2.
Пусть целевым сигналом будет сигнал, составленный из их амплитудных значений
tl = ones(l,20);
t2 = ones(l,20)*2
при этом данные амплитуды чередуются, так что входные и целевые значения могут быть представлены в форме
P = [pl Р2 pl р2];
t = [tl t2 tl t2].
Преобразуем эти значения в последовательности:
Pseq = con2seq(p);
Tseq = con2seq(t).
После этого можно непосредственно перейти с проектированию НС. В рассматриваемой случае имеем, очевидно, один вход и один выход, т. е. в сети должны присутствовать один входной элемент и один выходной нейрон. Число нейронов в скрытом слое может быть, вообще говоря, любым (оно зависит от сложности задачи); примем, что этот слой содержит 10 нейронов. Дальнейшее решение задачи иллюстрируется ниже, при этом на рис. 4.19 приведен график изменения ошибки сети в процессе ее обучения, а на рис. 4.20 — результаты тестирования сети.
» % Задание исходных данных
» pl = sin(l:20);
»tl = ones(l,20);
»p2 = sin(l:20)*2;
»t2 = ones(l,20)*2;
» P = [pl P2 pl p2];
»t = [tl t2 tl t2];
» Pseq = con2seq(p);
» Tseq = con2seq(t);
» % Создание сети Элмана с диапазоном входа [-2, 2], 10 нейронами
» % скрытого слоя, одним выходным нейроном,
» % функцией активации в виде гиперболического тангенса
» % для нейронов скрытого слоя, линейной функцией активации
» % для выходного нейрона, функцией обучения с адаптацией
» % коэффициента обучения
»net = newelm([-2 2],[10 1],{^ansig7/ригеНп7},/traingdx/);
» % Задание параметров обучения:
» net.trainParam.epochs = 500; % Число циклов обучения
» net.trainParam.goal = 0.01; % Целевое значение функции ошибки
» net .performFcn = ,sse,; % Задание вида функции ошибки
» % Обучение сети. По умолчанию промежуточные результаты обучения
» % выводятся через 25 циклов
» [net,tr] = train(net,Pseq,Tseq);
TRAINGDX, Epoch 0/500, SSE 443.798/0.01,
Gradient 387.439/le-006
TRAINGDX, Epoch 25/500, SSE 22.1356/0.01,
Gradient 7.76533/le-006
TRAINGDX, Epoch 50/500, SSE 20.0141/0.01,
Gradient 2.17503/le-006
Рис. 4.19. Изменение ошибки сети в процессе обучения
TRAINGDX, Epoch 75/500, SSE 18.9825/0.01,
Gradient 1.26454/le-006
TRAINGDX, Epoch 100/500, SSE 15.8484/0.01,
Gradient 9.11439/le-006
TRAINGDX, Epoch 125/500, SSE 15.1932/0.01,
Gradient 2.92454/le-006
TRAINGDX, Epoch 150/500, SSE 15.1337/0.01,
Gradient 2.72534/le-006
TRAINGDX, Epoch 175/500, SSE 14.9634/0.01,
Gradient 2.75817/le-006
TRAINGDX, Epoch 200/500, SSE 14.3391/0.01,
Gradient 3.06463/le-006
TRAINGDX, Epoch 225/500, SSE 14.2136/0.01,
Gradient 3.24916/le-006
TRAINGDX, Epoch 250/500, SSE 14.1567/0.01,
Gradient 3.26074/le-006
TRAINGDX, Epoch 275/500, SSE 14.0799/0.01,
Gradient 3.1542/le-006
TRAINGDX, Epoch 300/500, SSE 13.7704/0.01,
Gradient 3.27526/le-006
TRAINGDX, Epoch 325/500, SSE 12.6771/0.01,
Gradient 3.72479/le-006
TRAINGDX, Epoch 350/500, SSE 12.1381/0.01,
Gradient 5.86736/le-006
TRAINGDX, Epoch 375/500, SSE 12.315/0.01,
Gradient 3.92575/le-006
TRAINGDX, Epoch 400/500, SSE 12.1414/0.01,
Gradient 3.89053/le-006
TRAINGDX, Epoch 425/500, SSE 11.1606/0.01,
Gradient 3.93421/le-006
TRAINGDX, Epoch 450/500, SSE 8.91345/0.01,
Gradient 5.55002/le-006
TRAINGDX, Epoch 475/500, SSE 8.56053/0.01,
Gradient 3.87387/le-006
TRAINGDX, Epoch 500/500, SSE 8.34089/0.01,
Gradient 3.7055/le-006
TRAINGDX, Maximum epoch reached, performance goal was not met.
» % Построение графика функции ошибки
» semilogy(tr.epoch,tr.perf);
» title(хСумма квадратов ошибок сети Злмана');
» х1аЬе1(/Циклы/);
» у1аЬе1(гСумма квадратов ошибок');
» % Тестирование сети
» a = sim(net,Pseq);
» time = l:length(p);
» time = l:length(p);
» plot (time,t/- -,,time,cat(2,a{:}))
» title ('Результаты тестирования сети7);
» xlab el (zBp емях);
» у1аЬе1(,Заданные значения - - Выход сети ——')
Задача классификации: применение сети встречного распространения. Предположим, поставлена следующая задача классификации: задан набор из 10 векторов, представленных в виде столбцов матрицы
_ Г-3-2-2000022З-
Р = [ 01-121-1-21-1о] 7
а также задан вектор-строка, указывающий принадлежность каждого вектора к одному из двух классов:
Тс=[1 1 1 2 2 2 2 1 1 1].
Требуется: построить автоматический классификатор подобных векторов, используя приведенные данные как обучающую выборку.
Решение подобной задачи проведем с применением сети встречного распространения так, как это показано ниже.
»Р = [-3 -2 -2 0 0 0 0 +2 +2 +3; 0 +1 -1 +2 +1 -1 -2 +1 -1 0];
»С = [1 1 1 2 2 2 2 1 1 1];
» Т = ind2vec(C); % Преобразование вектора С в матрицу Т с двумя строками
» % Создание новой сети встречного распространения требует 4-х параметров:
» % 1) матрицы минимальных и максимальных значений входных элементов,
» % 2) числа скрытых нейронов,
» % 3) вектор с элементами, указывающими долю каждого из классов,
» % 4) величины коэффициента обучения
»net = newlvq(minmax(P),4?[*6 .4],0.1); % Создание сети
» net.trainParam.epochs = 150; % Задание числа циклов обучения
» net.trainParam.show = Inf; % Запрет на выдачу промежуточных результатов
» net = train(net,P,T); % Обучение НС
TRAINWB1, Epoch 150/150
TRAINWB1, Maximum epoch reached.
» Y = sim(net,P) % Тестирование сети
Y =
1110000111
0001111000
Как видно из результатов тестирования, классификация элементов обучающей выборки произведена точно (три первых и три последних вектора отнесены к первому классу, остальные — ко второму).
Создание и использование само организующейся карты. Как отмечалось, самоорганизующиеся карты можно рассматривать как усовершенствованную модификацию слоя конкурирующих нейронов (слоя Кохонена). От последнего данный вид НС отличается тем, что:
нейроны распределяются некоторым пространственным образом (по одному из трех возможных вариантов: в узлах прямоугольной решетки, гексагональной решетки или случайно);
на этапе самообучения корректируются веса не только нейро- на-«победителя», но и группы нейронов в его некоторой пространственной окрестности.
Назначения самоорганизующихся карт такое же, как и у слоя Кохонена — выявление в режиме самообучения центров кластеров входных векторов.
Создание и использование самоорганизующейся карты рассмотрим на примере кластеризации двумерных векторов (исходные данные приведены на рис. 4.21).
» Р = rands(2,1000); % Задание случайных двумерных входных векторов
»plot(P(l,:),P(2,:),/+r/) % Визуальное изображение входных векторов
» Создание НС с 5x6 = 30 нейронами; все установки — по умолчанию
»net = newsom([0 1; 0 1],[5 6]);
» net.trainParam.epochs = 1000; % Задание числа циклов настройки
» net.trainParam.show = 200; % Задание периодичности вывода информации
» net = train(net,P); % Настройка сети
TRAINWB1, Epoch 0/1000
TRAINWB1, Epoch 200/1000
TRAINWB1, Epoch 400/1000
TRAINWB1, Epoch 600/1000
TRAINWB1, Epoch 800/1000
TRAINWB1, Epoch 1000/1000
TRAINWB1, Maximum epoch reached.
J +' 4wtf+*
:f品审+?
•飞+扌志2*
+
三%+
Рис. 4.21. Исходные данные
Рис. 4.22. Выявленные центры кластеров
» plotsom(net.iw{ 1,1},net.layers{ 1}.distances); % Выявленные центры кластеров
»р = [0.5; 0.3];
» а = sim(net,p) % Опрос сети
%,1) 1
Предъявленный на этапе тестирования вектор отнесен НС к 11-му классу.
Выявленные центры кластеров представлены на рис. 4.22.
Другие примеры доступны через главное меню MATLAB (пункт Help/Examples and Demos, раздел Toolboxes/Neural Networks).
Использование Simulink при построении нейронных сетей. Пакет Neural Network Toolbox содержит ряд блоков, которые либо могут быть непосредственно использованы для построения нейронных сетей в среде Simulink, либо применяться вместе с рассмотренной выше функцией gensim.
Для вызова отмеченной набора блоков, в командной строке необходимо набрать команду neural, после выполнения который появляется окно вида рис. 4.23. Каждый из представленных на
Тranker Functions Net Input Functions Weight Functions
Neural Network Toolbox Block Library Copyright ⑹ 1992-9S by The Math Works, Inc.
Рис. 4.23. Основные нейросетевые блоки Simulink
рис. 4.23 блоков в свою очередь является набором (библиотекой) некоторых блоков. Рассмотрим их.
Блоки функций активации (Тгansfer Functions). Двойной щелчок левой кнопки мыши на блоке Transfer Functions приводит к появлению библиотеки функций активации (рис. 4.24). Каждый из этих блоков данной библиотеки преобразует подаваемый на него вектор в соответствующий вектор той же размерности (табл. 2.1).
Блоки преобразования входов сети. Проводя аналогичную рассмотренной операцию, но с блоком Net Input Functions, придем к библиотеке блоков вида рис. 4.25.
Блоки данной библиотеки реализуют рассмотренные выше функции преобразования входов сети.
I I ll■l>ll^■ ПС1Л,||/| l.irblfl I Ijni'linri^Г "
卷倒液魄歪懒g翩曝再傩證歪歪歪歪歪歪歪歪歪歪歪歪歪歪歪歪歪歪歪歪歪歪歪歪歪歪歪歪
Ш Ш ffi Ш Ш 0 compet hardlim hardlims logsig poslin purelin ш ш а о а ш radbas satlin satlins softmax tansig tribas
Рис. 4.24. Библиотека функций активации
Блоки весовых коэффициентов. Точно так же (но щелкая левой кнопкой мыши по иконке с надписью Weight Func-
ОоnetsumnetprodОоnetsumnetprodРис. 4.25. Библиотека блоков преобразований сигналовРис. 4.25. Библиотека блоков преобразований сигналовПОППdotprod dist negdist normprod
Оо
netsumnetprod
Оо
netsumnetprod
Рис. 4.25. Библиотека блоков преобразований сигналов
Рис. 4.25. Библиотека блоков преобразований сигналов
Рис. 4.26. Библиотека блоков весовых коэф фициентов
tions) придем к библиотеке блоков (рис. 4.26), реализующих некоторые функции весов и расстояний.
Отметим, что при задании конкретных числовых значений, при операции со всеми приведенными блоками ввиду особенностей Simulink векторы необходимо представлять как столбцы, а не как строки (как это было до сих пор).
① ормирование нейросетевых моделей. Основной функцией для формирование нейросетевых моделей в Simulink является функция gensim, записываемая в форме
gensim(net,st),
где net — имя созданной НС, st — интервал дискретизации (если НС не имеет задержек, ассоциированных с ее входами или слоями, значение данного аргумента устанавливается равным —1).
В качестве примера использования средств Simulink рассмотрим следующий.
Пусть входной и целевой векторы имеют вид
р = [1 2 3 4 5];
t = [l 3 5 7 9].
Создадим линейную НС и протестируем ее:
» р = [1 2 3 4 5];
»t = [l 3 5 7 9];
» net = newlind(p,t);
» у = sim(net,p)
У =
1.00003.00005.00007.00009.0000
Затем запустим Simulink командой
» gensim(net,-l)
Это приведет к открытию блок-диаграммы (рис. 4.27).
Рис. 4.27. Созданная нейросетевая модель Simulink
Для проведения тестирования модели щелкнем дважды по левой иконке (с надписью Input 1, т. е. Вход 1), что приведет к открытию диалогового окна (рис. 4.28).
|!|«гГ I'.n.imrh'i- pll}
Рис. 4.28. Диалоговое окно задания входа НС
В данном случае блок Input 1 является стандартным блоком задания константы (Constant). Изменим значение по умолчанию на 2 и нажмем кнопку ОК. Затем нажмем кнопку Start в меню моделирования. Расчет нового значения сетью производится практически мгновенно. Для его вывода необходимо дважды щелкнуть
мышью по правой иконке (блоку у(1))・ Результат вычислений отображается рис. 4.29 — он равен 3, как и требуется.
Рис. 4.29. Окно с выходом НС
Отметим, что, дважды щелкая левой кнопкой мыши по блоку Neural Network, затем — по блоку Layer 1, можно получить детальную графическую информацию о структуре сети (рис. 4.30).
С созданной сетью можно проводить различные эксперименты, возможные в среде Simulink; вообще с помощью команды gensim осуществляется интеграция созданных нейросетей в блок-диаграм-
Рис. 4.30. Структура созданной НС
мы этого пакета ——с использованием имеющихся при этом инструментов моделирования раз- личных систем (например, встраивание нейросетевого регулятора в систему управления и моделирование последней и т. п.).
Глава 5
ПАКЕТ FUZZY LOGIC TOOLBOX
Назначение и возможностипакета Fuzzy Logic Toolbox
Пакет Fuzzy Logic Toolbox (пакет нечеткой логики) — это совокупность прикладных программ, относящихся к теории размытых или нечетких множеств и позволяющих конструировать так называемые нечеткие экспертные и/или управляющие системы.
Основные возможности пакета:
построение систем нечеткого вывода (экспертных систем, регуляторов, аппроксиматоров зависимостей);
построение адаптивных нечетких систем (гибридных нейронных сетей);
интерактивное динамическое моделирование в Simulink.
Пакет позволяет работу:
в режиме графического интерфейса;
в режиме командной строки;
с использованием блоков и примеров пакета Simulink.
5・2・ Графический интерфейс Fuzzy Logic Toolbox
Состав графического интерфейса. В состав программных средств Fuzzy Logic Toolbox входят следующие основные программы, позволяющие работать в режиме графического интерфейса:
редактор нечеткой системы вывода Fuzzy Inference System Editor (FIS Editor или FIS-редактор) вместе co вспомогательными программами — редактором функций принадлежности (Membership Function Editor), редактором правил (Rule Editor), просмотр- щиком правил (Rule Viewer) и просмотрщиком поверхности отклика (Surface Viewer);
редактор гибридных систем (ANFIS Editor, ANFIS-редактор);
программа нахождения центров кластеров (программа Clustering —кластеризация).
Набор данных программ предоставляет пользователю максимальные удобства для создания, редактирования и использования различных систем нечеткого вывода.
Построение нечеткой аппроксимирующей системы. Командой (функцией) Fuzzy из режима командной строки запускается основная интерфейсная программа пакета Fuzzy Logic — редактор нечеткой системы вывода (Fuzzy Inference System Editor,
Рис. 5.1. Вид окна FIS Editor
FIS Editor, FIS-редактор). Вид открывающегося при этом окна приведен на рис. 5.1.
Главное меню редактора содержит позиции:
File — работа с файлами моделей (их создание, сохранение, считывание и печать);
Edit — операции редактирования (добавление и исключение входных и выходных переменных);
View — переход к дополнительному инструментарию.
Как говорят англичане, чтобы узнать вкус пудинга, надо его съесть, поэтому представляется целесообразным выяснение различных опций и возможностей данного редактора и связанных с ним других программ изучить на каком-либо конкретном примере.
Попробуем сконструировать нечеткую систему, отображающую зависимость между переменными 化 и % заданную с помощью табл. 5.1 (легко видеть, что представленные в таблице данные отражают зависимость у = ж2).
Таблица 5.1. Значения х и у
X
1
0.6
0
0.4
1
У
-1
0.36
0
0.16
1
Требуемые действия отобразим следующими пунктами.
В позиции меню File выбираем опцию New Sugeno FIS (новая система типа Sugeno), при этом в блоке, отображаемом белым квадратом, в верхней части окна редактора появится надпись Un- titled2 (sugeno).
Щелкнем левой кнопкой мыши по блоку, озаглавленному inputl (вход1). Затем в правой части редактора в поле, озаглавленном Name (Имя), вместо inputl введем обозначение нашего аргумента, т. е. х. Обратим внимание, что если теперь сделать где-нибудь (вне блоков редактора) однократный щелчок мыши, то имя отмеченного блока изменится на 化;то же достигается нажатием после ввода клавиши Enter.
Дважды щелкнем по этому блоку. Перед нами откроется окно редактора функций принадлежности — Membership Function Editor (см. рис. 5.2). Войдем в позицию меню Edit данного редактора и выберем в нем опцию Add MFs (Add Membership Funcions — Добавить функций принадлежности). При этом появится диалоговое окно (рис. 5.3), позволяющее задать тип (MF type) и количество (Number of MFs) функций принадлежности (в данном случае все относится к входному сигналу, т. е. к переменной 化).Выберем гауссовы функции принадлежности (gaussmf), а их количество зададим равным пяти — по числу значений аргумента в табл. 5.1. Подтвердим ввод информации нажатием кнопки ОК, после чего произойдет возврат к окну редактора функций принадлежности.
В поле Range (Диапазон) установим диапазон изменения 化 от —1 до 1, т. е. диапазон, соответствующий табл. 5.1. Щелкнем затем левой кнопкой мыши где-нибудь в поле редактора (или нажмем клавишу ввода Enter). Обратим внимание, что после этого произойдет соответствующее изменение диапазона в поле Display Range (Диапазон дисплея).
Обратимся к графикам заданных нами функций принадлежности, изображенным в верхней части окна редактора функ-
ций принадлежности. Заметим, что для успешного решения поставленной задачи необходимо, чтобы ординаты максимумов этих
FISVarEabksFISVarEabksMember^tp function 汨侬 口或 pointe:;^ TsTMember^tp function 汨侬 口或 pointe:;^ TsT
FISVarEabks
FISVarEabks
Member^tp function 汨侬 口或 pointe:;^ TsT
Member^tp function 汨侬 口或 pointe:;^ TsT
outputl
Рис. 5.2. Окно редактора функций принадлежности
функций совпадали с заданными значениями аргумента х. Для левой, центральной и правой функций такое условие выполнено, но две другие необходимо «подвинуть» вдоль оси абсцисс. «Пере-
Рис. 5.3. Диалоговое окно задания типа и количества функций принадлежности движка» делается весьма просто: подводим курсор к нужной кривой и щелкаем левой кнопкой мыши. Кривая выбирается, окрашиваясь в красный цвет, после чего с помощью курсора ее и можно
подвинуть в нужную сторону (более точную установку можно провести, изменяя числовые значения в поле Params (Параметры)— в данном случае каждой функции принадлежности соответствуют два параметра, при этом первый определяет размах кривой, а второй —положение ее центра). Для выбранной кривой, кроме этого, в поле Name можно изменять имя (завершая ввод каждого имени нажатием клавиши Enter). Проделаем требуемые перемещения кривых и зададим всем пяти кривым новые имена, например:
самой левой — bn,
следующей — n,
центральной — z,
следующей за ней справа — р,
самой левой — bp.
Нажмем кнопку Close и выйдем из редактора функций принадлежности, возвратившись при этом в окно редактора нечеткой системы (FIS Editor).
Сделаем однократный щелчок левой кнопкой мыши по голубому квадрату (блоку), озаглавленному outputl (выход1). В окошке Name заменим имя outputl на у (как в пункте 2).
Дважды щелкнем по отмеченному блоку и перейдем к программе — редактору функций принадлежности. В позиции меню Edit выберем опцию Add MFs. Появляющееся диалоговое окно вида рис. 5.3 позволяет задать теперь в качестве функций принадлежности только линейные (linear) или постоянные (constant)— в зависимости от того, какой алгоритм Sugeno (1-го или 0-го порядка) мы выбираем. В рассматриваемой задаче необходимо выбрать постоянные функции принадлежности с общим числом 4 (по числу различных значений у в табл. 5.1). Подтвердим введенные данные нажатием кнопки ОК, после чего произойдет возврат в окно редактора функций принадлежности.
Обратим внимание, что здесь диапазон (Range) изменения, устанавливаемый по умолчанию — [0, 1], менять не нужно. Изменим лишь имена функций принадлежности (их графики при использовании алгоритма Sugeno для выходных переменных не приводятся), например, задав их как соответствующие числовые значения % т. е. О, 0.16, 0.36, 1; одновременно эти же числовые значение введем в поле Params (рис. 5.4). Затем закроем окно нажатием кнопки Close и вернемся в окно FIS-редактора.
Дважды щелкнем левой кнопкой мыши по среднему (белому) блоку, при этом раскроется окно еще одной программы — редактора правил (Rule Editor). Введем соответствующие правила. При вводе каждого правила необходимо обозначить соот-
ветствие между каждой функцией принадлежности аргумента 化 и числовым значением у. Кривая, обозначенная нами bn, соответствует х = —1, т. е. у = 1. Выберем, поэтому в левом поле
・ Mi-iiiln-1 hip I urn linn I ililni llnlitlfil.1F""' Г" i
円W VariablesMember^tp -functton 汨侬 而t pointe: |131
lllllllllllllllllllllllllilllllillllll
iiiiiiiiiiiiiiiiiiiiiiiiiiiiBiiiBiiiBii
Рис. 5.4. Параметры функций принадлежности переменной у
(с заголовком х is) bn, а в правом 1 и нажмем кнопку Add rule (Добавить правило). Введенное правило появится в окне правил и будет представлять собой запись: 1. If (化 is bn) then (g is 1) (1). Аналогично поступим для всех других значений ж, в результате чего сформируется набор из 5 правил (см. рис. 5.5). Закроем окно редактора правил и возвратимся в окно FIS-редактора. Построение системы закончено и можно начать эксперименты по ее исследованию. Заметим, что большинство опций выбиралось нами по умолчанию.
Предварительно сохраним на диске (используя пункты меню File/Save to disk as...) созданную систему под каким-либо именем, например, Proba.
Выберем позицию меню View. Как видно из выпадающего при этом подменю, с помощью пунктов Edit membership functions и Edit rules можно совершить переход к двум выше рассмотренным программам — редакторам функций принадлежности и пра-
вил (то же можно сделать и нажатием клавиш Ctrl+2 или Ctrl+3), но сейчас нас будут интересовать два других пункта — View rules
Рис. 5.5. Окно редактора правил
(Просмотр правил) и View surface (Просмотр поверхности). Выберем пункт View rules, при этом откроется окно (см. рис. 5.6) еще одной программы — просмотра правил (Rule Viewer).
В правой части окна в графической форме представлены функции принадлежности аргумента ж, в левой — переменной выхода у с пояснением механизма принятия решения. Красная вертикальная черта, пересекающая графики в правой части окна, которую можно перемещать с помощью курсора, позволяет изменять значения переменной входа (это же можно делать, задавая числовые значения в поле Input (Вход)), при этом соответственно изменяются значения у в правой верхней части окна. Зададим, например, х = 0.5 в поле Input и нажмем затем клавишу ввода (Enter). Значение у сразу изменится и станет равным 0.202. Таким образом, с помощью построенной модели и окна просмотра правил можно решать задачу интерполяции, т. е. задачу, решение которой и требовалось найти. Изменение аргумента путем
перемещения красной вертикальной линии очень наглядно демонстрирует, как система определяет значения выхода.
Рис. 5.6. Окно просмотра правил
Закроем окно просмотра правил и выбором пункта меню View/View surface перейдем к окну просмотра поверхности отклика (выхода), в нашем случае — к просмотру кривой у(化)(см. рис. 5.7). Видно, что смоделированное системой по таблице данных (табл. 5.1) отображение не очень-то напоминает функцию ж2. Ну что ж, ничего удивительного в этом нет: число экспериментальных точек невелико, да и параметры функций принадлежности (для 化)выбраны, скорее всего, неоптимальным образом. Ниже мы рассмотрим возможность улучшения качества подобной модели.
В заключение рассмотрения примера отметим, что с помощью вышеуказанных программ-редакторов на любом этапе проектирования нечеткой модели в нее можно внести необходимые коррективы, вплоть до задания какой-либо особенной пользовательской функции принадлежности. Из опций, устанавливаемых в FIS- редакторе по умолчанию при использовании алгоритма Sugeno, можно отметить:
логический вывод организуется с помощью операции умножения (prod);
композиция — с помощью операции логической суммы (вероятностного ИЛИ, probor);
приведение к четкости — дискретным вариантом центроид- ного метода (взвешенным средним, wtaver).
Рис. 5.7. Окно просмотра поверхности отклика
Используя соответствующие поля в левой нижней части окна FIS-редактора, данные опции можно, при желании, изменить.
5.2.3. Построение экспертной системы: сколько дать «на чай»? Рассмотрим теперь методику построения нечеткой экспертной системы, которая должна помочь пользователю с ответом на вопрос: сколько дать «на чай» официанту за обслуживание в ресторане? (Предположим, речь идет о местах, где такие чаевые принято давать, например, в ресторанах Парижа или Рио-де-Жанейро.)
Основываясь на каких-то устоявшихся обычаях и интуитивных представлениях, примем, что задача о чаевых может быть описана следующими предложениями.
Если обслуживание плохое или еда подгоревшая, то чаевые малые.
Если обслуживание хорошее, то чаевые — средние.
Если обслуживание отличное или еда превосходная, то чаевые —щедрые.
Качество обслуживания и еды будем оценивать по 10-балльной системе (0 — наихудшая оценка, 10 — наилучшая).
Будем предполагать, далее, что малые чаевые составляют около 5% от стоимости обеда, средние — около 15% и щедрые — примерно 25%.
Заметим, что представленной информации, в принципе, достаточно для проектирования нечеткой экспертной системы. Такая система будет иметь 2 входа (которые условно можно назвать «сервис» и «еда»), один выход («чаевые»), три правила типа «если... то» (в соответствии с тремя приведенными предложениями) и по три значения (соответственно, 0 баллов, 5 баллов, 10 баллов и 5%, 15%, 25%) для центров функций принадлежности входов и выхода. Построим данную систему, используя алгоритм вывода Mamdani и, как в предыдущем примере, описывая требуемые действия по пунктам.
Командой fuzzy запускаем FIS-редактор. По умолчанию, исходный алгоритм вывода — типа Mamdani (о чем говорит надпись в центральном белом блоке) и здесь никаких изменений не требуется, но в системе должно быть два входа, поэтому через пункт меню Edit/Add input добавляем в систему этот второй вход (в окне редактора появляется второй желтый блок с именем input2). Делая далее однократный щелчок левой кнопкой мыши по блоку inputl, меняем в поле имени его имя на «сервис», завершая ввод нового имени нажатием клавиши Enter. Аналогичным образом устанавливаем имя «еда» блоку input2 и «чаевые» — выходному блоку (справа вверху) outputl. Присвоим сразу же и имя всей системе, например, «tip» (по-английски это и есть чаевые), выполнив это через пункт меню File/Save to workspace as... (Сохранить в рабочем пространстве как...). Вид окна редактора после указанных действий приведен на рис. 5.8.
Зададим теперь функции принадлежности переменных. Напомним еще раз, что программу-редактор функций принадлежности можно открыть тремя способами:
через пункт меню View/Edit membership functions...,
двойным щелчком левой кнопки мыши по иконке, отображающей соответствующую переменную,
нажатием клавиш Ctrl+2.
Любым из приведенных способов перейдем к данной программе.
Задание и редактирование функций принадлежности начнем с переменной «сервис». Сначала в полях Range и Display Range
установим диапазон изменения и отображения этой переменной — от 0 до 10 (баллов), подтверждая ввод нажатием клавиши Enter. Затем через пункт меню Edit/Add MFs перейдем к диалоговому окну вида рис. 5.3 и зададим в нем функции принадлежности гауссова типа (gaussmf) с общим числом 3. Нажмем кнопку ОК и возвратимся в окно редактора функций принадлежности. Не изменяя размах и положение заданных функций, заменим только их имена на «плохой», «хороший» и «отличный» (как в пункте 5 предыдущего примера).
Щелчком левой кнопки мыши по иконке «еда» войдем в окно редактирования функций принадлежности для этой переменной. Зададим сначала диапазон ее изменения от 0 до 10, а затем, по-
Рис. 5.8. Вид окна FIS-редактора после задания структуры системы
ступая как ранее, зададим две функции принадлежности трапецеидальной формы с параметрами, соответственно, [0 0 1 3] и [7 9 10 10] и именами «подгоревшая» и «превосходная».
Для выходной переменной «чаевые» укажем сначала диапазон изменения — от 0 до 30, потом зададим три функции принадлежности треугольной формы с именами «малые», «средние», «щедрые» так, как это представлено на рис. 5.9. Заметим, что можно,
разумеется, задать и какие-либо другие функции или выбрать их другие параметры.
瀨簸議舞獗@漆岁螢芻纖质缠圈
Рис. 5.9. Функции принадлежности переменной «чаевые»
Перейдем к конструированию правил. Для этого выберем пункт меню View/Edit rules... Далее ввод правил производится так же, как в п. 9 предыдущего примера, и в соответствии с предложениями, описывающими задачу. Заметим, что в первом и третьем правилах в качестве «связки» в предпосылках правила необходимо использовать не «И» (and), а «ИЛИ» (or); при вводе второго правила, где отсутствует переменная «еда», для нее выбирается опция попе. Итоговый набор правил отображен рис. 5.10 и выглядит следующим образом:
If (сервис is плохой) or (еда is подгоревшая) then (чаевые is малые) (1)
If (сервис is хороший) then (чаевые is средние) (1)
If (сервис is отличный) или (еда is превосходная) then (чаевые is щедрые) (1)
Такая (подробная, verbose) запись представляется достаточно понятной; единица в скобках после каждого правила указывает его «вес» (Weight), т. е. значимость правила. Данный вес можно
менять, используя соответствующее поле в левой нижней части окна редактора правил. Правила представимы и в других формах: символической (symbolic) и индексной (indexed), при этом пере-
Рис. 5.10. Итоговый набор правил в задаче о чаевых
ход от одной формы к другой происходит через опции пункта меню редактора правил Options/Format. Вот как выглядят рассмотренные правила в символической форме:
(сервис==плохой)|(еда==подгоревшая)=>
今(qaeBbie=M^bie) (1)
(сервис==хороший)=>(чаевые=средние) (1)
(сервис==отличный)|(еда==превосходная)=>
=^> (чаевые=щедрые) (1)
По-видимому, здесь тоже понятно все.
Наконец, самый сжатый формат представления правил — индексный —является тем форматом, который в действительности используется программой. В этом формате приведенные правила выглядят так:
1, 1 (1): 2
0, 2 (1): 2
2, 3 (1): 2
Здесь первая колонка относится к первой входной переменной (соответственно, первое, второе или третье возможное значение), вторая — ко второй, третья (после запятой) — к выходной переменной, цифра в скобках показывает вес правила и последняя цифра (после двоеточия) — на тип «связки» (1 для «И», 2 для «ИЛИ»).
На этом, собственно, конструирование экспертной системы закончено. Сохраним ее на диске под выбранном именем (tip).
Самое время теперь проверить систему в действии. Откроем (через пункт меню View/View rules...) окно просмотра правил и установим значения переменных: сервис=0 (т. е. никуда не годный), еда=10 (т.е. превосходная). Увидим ответ: чаевые=15 (т.е. средние). Ну что ж, с системой не поспоришь, надо платить (рис. 5.11). Можно проверить и другие варианты. В частности (может быть, не без удивления), выяснится, что нашей системой обслуживание ценится больше, чем качество еды: при наборе
♦ liuli- Virwi lipF""' Г"♦ liuli- Virwi lipF""' Г"Рис. 5.11. Окно просмотра правил в задаче о чаевыхРис. 5.11. Окно просмотра правил в задаче о чаевых
♦ liuli- Virwi lipF""' Г"
♦ liuli- Virwi lipF""' Г"
Рис. 5.11. Окно просмотра правил в задаче о чаевых
Рис. 5.11. Окно просмотра правил в задаче о чаевых
«сервис=10, еда=3» система советует определить размер чаевых в 23.9%, в то время как набору «сервис=3, еда=10» размер чаевых по рекомендации системы — 16.6% (от стоимости обеда). Впро-
чем, ничего удивительного здесь нет: это мы сами (не особенно подозревая об этом) заложили в систему соответствующие знания в виде совокупности приведенных правил.
Подтверждением отмеченной зависимости выходной переменной от входных может служить вид поверхности отклика, который представляется при выборе пункта меню View/View surface
Рис. 5.12. Графический вид зависимости выходной переменной от входных
(рис. 5.12); обратите внимание, что с помощью мышки график можно поворачивать во все стороны.
В открывшемся окне, меняя имена переменных в полях ввода (X(input) и Y(input)), можно задать и просмотр одномерных зависимостей, например «чаевых» от «еды» (рис. 5.13).
2.4. Экспорт и импорт результатов. Когда вы сохраняете созданную вами нечеткую систему, используя пункты меню File/Save to disk или File/Save to disk as..., на диске создается текстовый (ASCII) файл достаточно простого формата с расширением .fis, который можно просматривать, при необходимости — редактировать вне системы MATLAB, а также использовать повторно при последующих сеансах работы с системой. Однако сохранение с
использованием пунктов File/Save to workspace или File/Save to workspace as... на самом деле только «легализует» созданную вами систему (под каким-либо именем) в среде MATLAB в течение те-
Рис. 5.13. Одномерная зависимость размера чаевых от качества еды
кущего сеанса работы и не допускает ее повторного использования в других сеансах.
2・5. Создание пользовательских функций принадлежности. Если по каким-либо причинам вас не устраивает ни одна из встроенных функций принадлежности, вы можете создать и использовать собственную подходящую функцию. Такая функция должна быть создана как М-файл со значениями от 0 до 1 и с числом аргументов не более 16. Приведем этапы создания данной функции под некоторым именем custmf.
Создается соответствующий М-файл с именем custmf.m.
Выбирается пункт Edit/Add custom MF (Редактирование/ Добавить пользовательскую функцию принадлежности) в меню редактора функций принадлежности.
В поле М-File function name появляющегося диалогового окна Add customized membership function вводится имя созданного М-файла (custmf).
В поле Parameter list данного окна вводятся необходимые числовые параметры.
Наконец, в поле MF name (Имя функции принадлежности) вводится какое-либо (уникальное) имя задаваемой функции (например, custmf).
Указанный ввод подтверждается нажатием кнопки ОК (см. рис. 5.14).
Ниже приведен пример М-файла некоторой пользовательской функции принадлежности дискретного типа, имеющей имя testmfl
Рис. 5.14. Окно задания функции принадлежности пользователя
и зависящей от 8 числовых параметров (каждый — из диапазона [0, 10]):
function out = testmfl (х, params)
for i = l:length(x) if x(i) <params(l) y(i) = params(l);
elseif x(i)<params(2)
y(i) = params (2);
elseif x(i)<params(3)
y(i) = params (3);
elseif x(i) <params(4)
y(i) = params (4);
elseif x(i)<params(5)
y(i) =params(5);
elseif x(i)<params(6)
y(i) = params (6);
elseif x(i)<params(7)
y(i) = params (7);
elseif x(i)<params(8)
y(i) = params (8);
else
У⑴=0;
end
end
out =.l*y,
5.3. Графический интерфейс гибридных систем
Графический интерфейс гибридных (нечетких) нейронных систем вызывается функцией (из режима командной строки) ап- fisedit. Исполнение функции приводит к появлению окна редактора гибридных систем (ANFIS Editor, ANFIS-редактор), вид которого приведен на рис. 5.15.
С помощью данного редактора осуществляется создание или загрузка структуры гибридной системы, просмотр структуры,
♦ Anh I ■lilni llnlillcil
Рис. 5.15. Окно редактора гибридных систем
настройка ее параметров, проверка качества функционирования такой системы. Создание структуры и настройка параметров и проверка осуществляются по выборкам (наборам данных) — обучающей (Training data), проверочной (Checking data) и тестирующей (Testing data), которые предварительно должны быть представлены в виде текстовых фалов (с расширением .dat и раздели-
телями-табуляциями), первые колонки которых соответствуют входным переменным, а последняя (левая) — единственной выходной переменной; количество строк в таких файлах равно количеству образцов (примеров). Так, обучающая выборка, сформированная по табл. 5.1, представляется в виде
-11
-0.6 0.36
0.00.00
0.40.16
Строгих рекомендаций по объемам указанных выборок не существует, по-видимому, лучше всего исходить из принципа «чем больше, тем лучше». Обучающая и проверочная выборки непосредственно задействуются в процессе настройки параметров гибридной сети (проверочная — для выяснения ситуации: нет ли так называемого переобучения сети, при котором ошибка для обучающей последовательности стремится к нулю, а для проверочной — возрастает; впрочем, наличие проверочной выборки не является строго необходимым, оно лишь крайне желательно). Тестовая (или тестирующая выборка) применяется для проверки качества функционирования настроенной (обученной) сети.
Поясним пункты меню и опции редактора.
Пункты меню File и View, в общем идентичны аналогичным пунктам FIS-редактора, за тем исключением, что здесь работа может происходить только с алгоритмом нечеткого вывода Sugeno. Пункт меню Edit содержит единственный подпункт — Undo (Отменить выполненное действие).
Набор опций Load data (Загрузить данные) в нижней левой части окна редактора включает в себя:
тип (Туре) загружаемых данных (для обучения — Training, для тестирования — Testing, для проверки — Checking, демонстрационные —Demo);
место, откуда должны загружаться данные (с диска — disk или из рабочей области MATLAB-workspace).
К данным опциям относятся две кнопки, нажатие на которых приводит к требуемым действиям — Load Data... (Загрузить данные) и Clear Data (очистить, т. е. стереть введенные данные).
Следующая группа опций (в середине нижней части окна ANFIS-редактора) объединена под именем Generate FIS (Создание нечеткой системы вывода). Данная группа включает в себя опции:
загрузку структуры системы с диска (Load from disk);
загрузку структуры системы из рабочей области MATLAB (Load from worksp.);
разбиение (деление) областей определения входных переменных (аргументов) на подобласти — независимо для каждого аргумента (Grid partition);
разбиение всей области определения аргументов (входных переменных) на подобласти — в комплексе для всех аргументов (Subtract clustering или Sub. clustering), а также кнопку Generate FIS, нажатие которой приводит к процессу создания гибридной системы с точностью до ряда параметров.
Следующая группа опций — Train FIS (Обучение нечеткой системы вывода) — позволяет определить метод «обучения» (Optim. Method) системы (т. е. метод настройки ее параметров) — гибридный (hybrid) или обратного распространения ошибки (back- ргора), установить уровень текущей суммарной (по всем образцам) ошибки обучения (Error Tolerance), при достижении которого процесс обучения заканчивается и количество циклов обучения (Epochs), т. е. количество «прогонов» всех образцов (или примеров) обучающей выборки; процесс обучения, таким образом заканчивается либо при достижении отмеченного уровня ошибки обучения, либо при проведении заданного количество циклов.
Кнопка Train Now (Начать обучение) процесс обучения, т. е. процесс настройки параметров гибридной сети.
В правом верхнем углу окна ANFIS-редактора выдается информация (ANFIS Info.) о проектируемой системе: о количестве входов, выходов, функций принадлежности входов; нажатие кнопки Structure (Структура) позволяет увидеть структуру сети. Кнопка Clear (Очистить) позволяет стереть все результаты.
Опции Test FIS в правом нижнем углу окна позволяют провести проверку и тестирование созданной и обученной системы с выводом результатов в виде графиков (соответствующие графики для обучающей выборки — Training data, тестирующей выборки — Testing data и проверочной выборки — Checking data. Кнопка Test Now позволяет запустить указанные процессы.
Работу с редактором рассмотрим на примере восстановления зависимости у = х2 по данным табл. 5.1. Предположим, что эти данные сохранены в файле Proba.dat. Создание и проверку системы, как и раньше, проведем по этапам.
В окне ANFIS-редактора выберем тип загружаемых данных Training и нажмем кнопку Load data. В последующем стандартном окне диалога укажем местоположение и имя файла. Его открытие приводит к появлению в графической части окна редактора набора точек, соответствующих введенным данным (рис. 5.16).
g2
И1°он 史。UHBHSdn йкяик^о винвнвт OHM。・2д・д -ик^
^S3 ^^щ^лю^^ u^^^s^ ^s^^^^ -^ ю
184
「л・ 5・ Накет FUZZY LOGIC TOOLBOX
рис・ 5・18・ Структура созданной гибридной сети
рис・ 5・19・ Результат обучения сети
В группе опций Generate FIS по умолчанию активизирована опция Grid partition. Не будем ее изменять и нажмем кнопку Generate FIS, после чего появится диалоговое окно (рис. 5.17) для задания числа и типов функций принадлежности. Сохраним все установки по умолчанию, согласившись с ними нажатием кнопки ОК. Произойдет возврат в основное окно ANFIS-редактора. Теперь структура гибридной сети создана, и ее графический вид можно просмотреть с помощью кнопки Structure (рис. 5.18).
Перейдем к опциям Train FIS. Не будем менять задаваемые по умолчанию метод настройки параметров (hybrid — гибридный) и уровень ошибки (0), но количество циклов обучения изменим на 40, после чего нажмем кнопку начала процесса обучения (Train Now). Получившийся результат в виде графика ошибки сети в зависимости от числа проведенных циклов обучения (из которого следует, что фактически обучение закончилось после пятого цикла) представлен на рис. 5.19.
Теперь нажатием кнопки Test Now можно начать процесс тестирования обученной сети, но, поскольку использовалась только одна — обучающая — выборка, ничего особенно интересного ожидать не приходится. Действительно, выход обученной системы практически совпадает с точками обучающей выборки (рис. 5.20).
Сохраним разработанную систему в файл на диске с именем Probal (с расширением .fis) и для исследования разработанной системы средствами FIS-редактора из командной строки MATLAB выполним команду fuzzy, а затем через пункты меню File/Open FIS from disk... откроем созданный файл. С созданной системой можно теперь выполнять все приемы редактирования (изменение имен переменных и т. п.) и исследования, которые были рассмотрены выше. Здесь нетрудно, кстати, убедиться, что качество аппроксимации данных существенно не улучшилось — слишком мало данных.
Что можно сказать про эффективность использования гибридных систем (и ANFIS-редактора)?
В данном случае используется только один алгоритм нечеткого вывода — Sugeno (нулевого или первого порядков), может быть только одна выходная переменная, всем правилам приписывается один и тот же единичный вес. Вообще говоря, возникают значительные проблемы при большом (более 5-6) количестве входных переменных. Это — ограничения и недостатки подхода.
Его несомненные достоинства: практически полная автоматизация процесса создания нечеткой (гибридной) системы, возможность просмотра сформированных правил и придания им содержа-
тельной (лингвистической) интерпретации, что позволяет, кстати говоря, рассматривать аппарат гибридных сетей как средство извлечения знаний из баз данных и существенно отличает данные сети от классических нейронных.
Рекомендуемая область применения: построение аппроксиматоров зависимостей по экспериментальным данным, построение
Рис. 5.20. Результат тестирования обученной системы систем классификации (в случае бинарной или дискретной выходной переменной), изучение механизма явлений.
5・4・ Графический интерфейс программы кластеризации
В пакет Fuzzy Logic Toolbox входит еще одна программа, позволяющая работу в режиме графического интерфейса, — программа Clustering (Кластеризация) выявления центров кластеров, т. е. точек в многомерном пространстве данных, около которых группируются (скапливаются) экспериментальные данные. Выявление подобных центров, надо сказать, является значимым этапом при предварительной обработке данных, поскольку позволяет сопоставить с этими центрами функции принадлежности переменных при последующем проектировании системы нечеткого вывода.
Запуск программы Clustering осуществляется командой (функцией) findcluster. В появляющемся окне программы имеется (вверху) главное меню, содержащее достаточно стандартный набор пунктов (File, Edit, Window, Help) и набор управляющих кнопок и опций (справа). К этим кнопкам относятся:
кнопка загрузки фала данных Load Data,
кнопка выбора алгоритма кластеризации — Method,
четыре расположенные ниже кнопки опций алгоритма (их названия меняются в зависимости от выбранного алгоритма),
кнопка начала итеративного процесса нахождения центров кластеров (кластеризации) — Start,
кнопка сохранения результатов кластеризации (SaveCenter),
кнопка очистки (стирания) графиков (Clear Plot),
кнопка справочной информации (Info),
кнопка завершения работы с программой (Close).
В программе используются два алгоритма выявления центров кластеров: Fuzzy c-means (который можно перевести как «Алгоритм нечетких центров») и Subtractive clustering («Вычитающая
・ I lu;L НГИ)
Рис. 5.21. Результат работы программы Clustering (центры кластеров окрашены в черный цвет)
кластеризация»). Если не вдаваться в их детальное теоретическое изложение, а ограничиться выявлением различий на уровне пользователя, то можно отметить, что алгоритм Fuzzy c-means, являясь, пожалуй, более точным (если понятие точности вообще здесь применимо), для своей работы требует задания таких опций, как число кластеров (кнопка Cluster num.) и число итераций (кнопка Max Iteration#). Ну, если число итераций еще можно задать как-то наугад, то ошибка в задании числа кластеров может привести к неприятным последствиям. Алгоритм Subtractive clustering менее точен, но и менее требователен к априорной информации; при работе с ним можно сохранить опции, заданные в программе по умолчанию. На рис. 5.21 приведен пример использования программы для фала данных clusterdemo.dat из директории Matlab/toolbox/fuzzy/fuzdemos/ при использовании алгоритма Subtractive clustering. Заметим, что выводится только двумерное поле рассеяния, но изменяя переменные в соответствующих полях (X-axis и Y-axis), можно «просмотреть» все многомерное пространство переменных.
Работа с Fuzzy Logic Toolboxв режиме командной строки
Возможности работы в режиме командной строки. Пакет Fuzzy Logic располагает большим набором функций, исполняемых из командной строки MATLAB и позволяющих, в принципе, не использовать при работе с системами нечеткого вывода рассмотренные программы графического интерфейса. Все функции делятся на группы:
вызова программ графического интерфейса;
задания функций принадлежности;
создания, редактирования, просмотра, открытия и сохранения систем нечеткого вывода;
дополнительные;
различные;
вызова диалоговых окон интерфейса;
блоков Simulink;
демонстрации возможностей пакета.
Функции вызова программ графического интерфейса.
К этой группе относятся функции:
fuzzy — вызов FIS-редактора;
mfedit — вызов редактора функций принадлежности;
ruleedit — вызов редактора правил;
ruleview — вызов программы просмотра правил;
surfview — вызов программы просмотра поверхности отклика;
anfisedit — вызов ANFIS-редактора (только для систем, использующих алгоритм Sugeno и имеющих одну выходную переменную);
findcluster — вызов программы кластеризации.
Использование первых шести функций с аргументом (например, fuzzy (а), где а — имя переменной рабочего пространства, присвоенное системе нечеткого вывода), открывает соответствующую программу с одновременной загрузкой в нее рассматриваемой системы.
Функция findcluster (имя файла) открывает программу кластеризации с одновременной загрузкой указанного файла данных.
Задание функций принадлежности. В данную группу включены 11 функций(по числу функций принадлежности, используемых в пакете Fuzzy Logic).
Функция dsigmf.
Запись: у = dsigmf(x,[al cl а2 с2])
Описание. Задается функция принадлежности, определяемая как разность двух сигмоидальных функций. Сигмоидальная функция, как известно, описывается выражением
〉'1 + ехр ( — а(х — с))
и зависит от двух числовых параметров а и с. Описываемая функция, как отмечено, является разностью двух сигмоидальных:
/1(®, «1, С1) - /2 (®, «2, С2),
и зависит от четырех параметров а】〉cj, ” с2 (вектора параметров [al cl а2 с2]).
Пример
» х = 0:0.1:10;
»у = dsigmf(х,[5 2 5 7]);
»plot(x,y)
» xlabel(,dsigmf, Р = [5 2 5 7]z)
Функция gauss2mf.
Запись: у = gauss2mf(x,[sigl cl sig2 c2])
Описание. Задается функция принадлежности, являющаяся разностью двух гауссовых функций, определяемая соотношением
/(®, q, С2, С2)= ехр (-(ж - q)2/d) - ехр (-(ж - с2)2/ст^
и зависящую от четырех параметров (%5〉。2〉仃2)или вектора параметров [sigl cl sig2 с2].
Рис. 5.22. Вид функции dsigmf(x,[5 2 5 7])
Пример
» х = (0:0.1:10)/;
» yl = gauss2mf(x, [2 4 1 8]);
»у2 = gauss2mf(x, [2 5 1 7]);
» уЗ = gauss2mf(x, [2 6 1 6]);
»у4 = gauss2mf(x, [2 7 1 5]);
» у5 = gauss2mf(x, [2 8 1 4]);
»plot(x, [yl у2 уЗ у4 у5]);.
» set(gcf, ,name,, ,gauss2mf,, ,numbertitle,, ,off,);
Функция gaussmf.
Запись: у = gaussmf(x,[sig с])
Описание. Задается функция принадлежности гауссова типа, зависящая от двух параметров ([sig с]).
Пример
» х = 0:0.1:10;
» у = gaussmf(х,[2 5]);
»plot(x,y)
» xlabel(,gaussmf, Р=[2 5]z)
Рис. 5.25. Семейство кривых, определяемых функцией gauss2mf
iiiiiiiiiii
ciau^mmi Р=[2 Е
Рис. 5.24. Функция принадлежности типа гауссовой кривой
ю
2
「л・ 5・ Накет FUZZY LOGIC TOOLBOX
рис・ 5.26・「рафик обобщенной копокопообразной функции
рис・ 5.26・「рафик 7Г—О6разной функции
Функция gbellmf.
Запись: у = gbellmf(x,params)
Описание. Задается функция принадлежности так называемого обобщенного колоколообразного типа с аналитическим описанием, зависящим от трех числовых параметров:
二 1 + |(Гс)/а叫
Пример
» х = 0:0.1:10;
» у = gbellmf(х,[2 4 6]);
»plot(x,y)
» xlabel(,gbellmf, Р = [2 4 6]z)
Функция pimf.
Запись: у = pimf(x,[a b с d])
Описание. Задается так называемую тг-образная функция принадлежности, получившая свое название из-за своеобразной формы. Функция вычисляется с использованием сплайн аппроксимации по четырем точкам, задаваемым вектором параметров. Параметры and определяют основание кривой, а параметры b и с — положение плоской вершины.
Пример
» х = 0:0.1:10;
»у = pimf(x,[l 4 5 10]);
»plot(x,y)
» xlabel(,pimf, P=[l 4 5 10]z)
Функция psigmf.
Запись: у = psigmf(x,[al cl а2 с2])
Описание. Задается функция принадлежности, определяемая как произведение двух сигмоидальных функций
/1(®, «1, С1) - /2 (®, «2, С2),
и зависящая от четырех параметров а» “ ” с2 (вектора параметров [al cl а2 с2]).
Пример
» х = 0:0.1:10;
»у = psigmf(х,[2 3 -5 8]);
»plot(x,y)
» xlabel('psigmf, Р = [2 3 -5 8]')
Рис. 5.27. Пример использования функции psigmf
Функция smf.
Запись: у = smf(x,[a b])
Описание. Задается зависящая от двух параметров так называемая S-образная функция принадлежности. Параметры а и b определяют диапазон значений аргумента, где функция возрастает.
Пример
» х = 0:0.1:10;
»y = smf(x,[l 8]);
»plot(x,y)
» xlabel(,smf, Р = [1 8]z)
Функция sigmf.
Запись: у = sigmf(x,[a с])
Описание. Задается так называемая сигмоидальная функция принадлежности, определяемая выражением, приведенным выше и зависящим от двух параметров.
Пример
» х = 0:0.1:10;
»у = sigmf(x,[2 4]);
»plot(x,y)
» xlabel(,sigmf, Р = [2 4]')
Рис. 5.29. График сигмоидальной функции
Функция trapmf.
Запись: у = trapmf(x,[a b c d])
Рис. 5.30. Трапецеидальная функция принадлежности
Описание. Задается так называемая трапецеидальная функция принадлежности, зависящая от четырех параметров и определяемая формулой
/(ж, а,仇 & d)= <
'0, 化 W'
x — a b — a
bxc〉,
d — x
—,cxd
d — c
0,dx
при этом параметры and определяют основание кривой, а, 6 и с — положение вершины.
Пример
» х = 0:0.1:10;
»у = trapmf(х,[1 5 7 8]);
»plot(x,y)
» xlabel(,trapmf, Р = [1 5 7 8]')
Функция trimf.
Запись: у = trimf(x,params) или у = trimf(x,[a b с])
Описание. Задается зависящая от трех параметров функция принадлежности треугольной формы, при этом параметры а и с определяют основание треугольника, а параметр b — координату его вершины.
Пример
» х = 0:0.1:10;
» у = trimf(х,[3 6 8]);
»plot(x,y)
» xlabel(,trimf, Р=[3 6 8]')
Функция zmf.
Запись: у = zmf(x,[a b])
Описание. Задается зависящая от двух параметров функция принадлежности так называемой Z-образной формы. Параметры определяют диапазон убывания функции.
Пример
» х = 0:0.1:10;
»y = zmf(x,[3 7]);
»plot(x,y)
» xlabel(zzmf, Р = [3 7]z)
5・5・4・ Функции сохранения, открытия и использования созданной системы. Чтение, использование и сохранение на диске созданной системы нечеткого вывода в режиме командной строки осуществляется функциями
readfis(,имя файла7),
evalfis(вектор параметров, имя),
writefis(HMH)или writefis( имя, химя файла7)
Здесь имя файла — наименование файла с записанной системой (без указания расширения), имя — идентификатор, который определен системе в рабочей среде MATLAB, вектор параметров — набор значений входов, для которых требуется рассчитать выход (возможна и матрица параметров, тогда результат расчетов — вектор в случае одной выходной переменной или матрица при нескольких таких переменных).
Примеры (применительно к ранее созданной и сохраненной на диске в виде файла с именем tip экспертной системе для задачи о чаевых):
» readfis(,tip,);
» evalfis([1 2],а)
Рис. 5.31. График функции принадлежности треугольной формы
Рис. 5.32. Функция принадлежности Z-образной формы
ans = 7.3949
» writefis(a) ans = tip
5・5・5. Функции использования графического окна. Следующие три функции позволяют использовать элементы графических изображений вне программ с графическим интерфейсом.
Команда (функция) plotfis(a) вызовет появление графического окна MATLAB с мнемоническим представлением разработанной системы (рис. 5.33).
Рис. 5.33. Мнемоническое представление системы нечеткого вывода
Команда (функция) plotmf выполняет аналогичную операцию, но по отношению к графикам функций принадлежности. На рис. 5.34 приведен результат выполнения функции plotmf(a/input, ,1).
Наконец, команда (функция) gensurf(a) также делает то же самое, но применительно к поверхности отклика (рис. 5.35).
Рис. 5.34. Результат выполнения функции plotmf(a,'input',l)
5.5・6. Функции создания, просмотра структуры и редактирования систем нечеткого вывода. Вообще, при желании можно совсем обойтись без программ графического интерфейса и, используя функции newfis (новая система), addvar (добавить переменную), addmf (добавить функцию принадлежности) и addrule (добавить правило), сконструировать систему нечеткого вывода целиком в режиме командной строки MATLAB. Процесс этот, надо сказать, значительно более трудоемкий, чем с применением указанных программ, поэтому, не вдаваясь особенно в детали, приведем лишь пример построения такой системы в задаче о чаевых:
а = newfis(,tip,);
а = addmf (а, zinputz, 1, Сервис7, [0 10]);
а = addmf(a,^nput7,1,Плохой7,,gaussmf,,[1.5 0]);
а = addmf(а,zinputz, 1,zxopоший7,,gaussmfz,[ 1.5 5]);
a = addmf (a, zinputz, 1, ,отличный,, ,gaussmfz, [ 1.5 10]);
a = addvar (а,,шри1,,,еда,,[0 10]);
a = addmf(a,^nput7,2,Подгоревшая7,,trapmf,,[-2 0 1 3]);
a = addmf(a,^nput7,2,Превосходная7,,trapmf,,[7 9 10 12]);
a = addvar(a,,output,,,tip,,[0 30]);
a = addmf(a,Output7,1,,малые,,,1г1тГ/,[0 5 10]);
a = addmf(a,Output7,1,Средние7,,trimf/,,[10 15 20]);
a = addmf(a,Output7,1,Щедрые7,^НтГ7,[20 25 30]);
ruleList =[…
11112
2 0 2 1 1
3 2 3 1 2];
a = addrule(a,ruleList);
При необходимости после просмотра элементов структуры (системы с идентификатором а) в режиме командной строки следует ввести команду вида а.метка, например,
» a.type
Получим ответ:
ans =
mamdani
Получение информации по всем элементам структуры обеспечивается функцией getfis(a).
Результат ее выполнения:
Name = tip
Type = mamdani
Numinputs = 2
InLabels =
сервис еда NumOutputs = 1 OutLabels =
чаевые
NumRules = 3
AndMethod = min OrMethod = max ImpMethod = min AggMethod = max DeftizzMethod = centroid ans = tip
Функция setfis в определенном смысле противоположна функции getfis и позволяет изменять метки. Пример выполнения функции:
» а = setfis(a,/name/,Паевые7) а =
name: ,чаевые, type: ,mamdani, andMethod: ,min, orMethod: 'max' defuzzMethod: ,centroid, impMethod: ,min, aggMethod: 'max' input: [1x2 struct] output: [1X1 struct] rule: [1x3 struct]
Полный просмотр структуры системы нечеткого вывода осуществляется функцией showfis(a).
Просмотр правил, включенных в систему нечеткого вывода, осуществляется с помощью функции showrule.
Запись:
showrule(HMH)
showrule(HMH,номера правил) showrule(fis,номера правил,формат) showrule(fis,номера правил,формат,язык)
Описание. В функции имя — это идентификатор рассматриваемой системы в среде MATLAB,
номера правил — список правил, которые нужно показать, формат — строковая переменная, имеющая 3Ha4eHHHzverbose7, ,symbolic, или ,indexed,, язык — строковая переменная со значениями ,english,, ,francais, или ,deutsch, (установки по умолчанию — 'verbose' и ,english,).
Примеры
» а = readfis(,tip,);
» showrule (а, 1) ans =
If (сервис is плохой) or (еда is подгоревшая) then (чаевые is малые) (1)
» showrule (а, [3 1],'symbolic')
ans =
(сервис==отличный) | (еда==превосходная)=> (чаевые=щедрые) (1)
(сервис==плохой) | (еда==подгоревшая)=> (чаевые=малые) (1)
Функция rmmf используется для удаления функции принадлежности из состава системы.
Запись:
имя = rmmf(HMH,,varType,,varIndex/mf,,mfIndex)
Описание. Параметры функции: имя — идентификатор системы в среде MATLAB, varType — строковая переменная со значениями ,input, или ,output,, varlndex — порядковый номер переменной (по списку переменных входа или выхода), mf— строковая переменная, задающая функцию принадлежности, mflndex — порядковый данной функции.
Функция rmvar удаляет переменную из состава системы.
Запись:
[новое имя,errorStr] = rmvar(имя,,varType,,varlndex) новое имя = rmvar(имя,zvarType7,varlndex)
Описание. Здесь переменные varType и varlndex имеют тот же смысл, что и в предыдущей функции, переменная errorStr позволяет записать любое сообщение об ошибке, новое имя — новое имя системы с исключенной переменной.
Функция приведения к четкости (дефазификации) defuzz позволяет по заданной функции принадлежности определить соответствующее четкое значение.
Запись: out = defuzz(x,mf,type)
Описание. Здесь х — обозначение числового аргумента, mf — тип функции принадлежности, type — задаваемый метод приведения к четкости — строковая переменная, имеющая возможные значения:
centroid;
bisector;
mom;
som;
lom.
Смысл этих значений был рассмотрен ранее.
Пример
» х = -10:0.1:10;
»mf = trapmf(x,[-10 -8 -4 7]);
» xx = defuzz(x,mf,'centroid') xx =
-3.2857
Функция evalmf вычисляет значения заданной функции принадлежности.
Запись: у = evalmf(x,mfParams,mfType)
Описание. Здесь х — обозначение числового аргумента, mf- Params — вектор необходимых числовых параметров, mfType — тип функции принадлежности.
Пример (см. рис. 5.36)
» х = 0:0.1:10;
» mfparams = [2 4 6];
» mftype = 'gbellmf';
» у = evalmf(x,mfparams,mftype);
» plot(x,y)
» xlabel^gbellmf, P = [2 4 6]z)
Рис. 5.36. Графическое представление результата выполнения команды у 二 =evalmf(x,mffarams,mfType)
Функция mf2mf позволяет заменять одну функцию принадлежности близкой ей по форме другой с некоторым «эквивалентным» набором числовых параметров.
Запись: outParams = mf2mf(inParams,inType,outType)
Описание. inParams — набор параметров исходной функции, inType — тип исходной функции принадлежности, outType — тип эквивалентной функции принадлежности, outParams — набор преобразованных параметров.
Пример
» х = 0:0.1:5;
» mfpl = [1 2 3];
» mfp2 = mf2mf(mfp 1 /gb ellmfz /trimfz)
mfp2 二
135
» plot (x,gbellmf(x,mfpl),x,trimf(x,mfp2))
Функцию parsrule можно отнести к числу сервисных.
Запись:
новое имя = рагзги1е(имя,текст правил)
новое имя = рагзги1е(имя, текст правил,формат)
новое имя = рагзги1е(имя, текст правил,формат,язык)
Описание. В данной функции идентификаторы имя и новое имя относятся к исходной и модернизированной системам
Рис. 5.37. Графики исходной (колоколообразной) и эквивалентной (треугольной) функций принадлежно сти
с нечетким выводом, строковые переменные формат и язык имеют тот же смысл, что и в рассмотренной ранее функции showrule,
текст правил — заданный в текстовой форме набор правил системы (на языке, определенной переменной язык; по умолчанию — английский, что допускает использование, в частности, русских имен для переменных, но требует английских связующих слов if, and, or, then, is). Функция выполняет грамматический разбор исходного текста и выдает набор нечетких правил в указанном формате (по умолчанию — подробный).
5.5.7. Функция создания и/или обучения гибридных сетей с архитектурой ANFIS. Функция anfis записывается в виде:
[имя,ошибка о,шаг] = anfis(trnData)
[имя,ошибка о,шаг] = anfis(trnData,HMH)
[имя1,ошибка о,шаг]=...
anfis(trnData,HMH,trnOpt,dispOpt)
[имя1,ошибка о,шаг,имя2,ошибка п]=... anfis(trnData,trnOpt,dispOpt,chkData) [имя1,ошибка о,шаг,имя2,ошибка п]=... anfis(trnData,trnOpt,dispOpt,chkData,optMethod)
Функция предназначена для создания и/или обучения гибридных сетей с архитектурой ANFIS. Значения аргументов функции:
trnData — матрица данных для обучения сети (обучающая выборка); последний столбец соответствует (единственной) выходной переменной, остальные столбцы — входным переменным;
имя — идентификатор создаваемой гибридной сети; если структура системы нечеткого вывода с таким идентификатором уже создана, то она будет использована для настройки числовых параметров, в противном случае структура будет создана при выполнении функции с опциями, по умолчанию соответствующими выполнению функции genfisl (см. ниже);
trnOpt — вектор опций обучения с элементами:
trnOpt(l): количество циклов обучения (по умолчанию 10), trnOpt(2): целевой уровень ошибки обучения (по умолчанию 0), trnOpt(3): начальный шаг алгоритма обучения (по умолчанию 0.01),
trnOpt(4): коэффициент уменьшения шага (по умолчанию 0.9), trnOpt(5): коэффициент увеличения шага (по умолчанию 1.1); • dispOpt — вектор опций вида выводимой информации (по умолчанию все элементы — единичные, что означает вывод всех видов возможной информации в процессе выполнения функции) с элементами:
dispOpt(l): ANFIS-информация, такая, как число входов, функции принадлежности и т. п.,
dispOpt(2): ошибка,
dispOpt(3): шаг обновления (корректировки) по каждому параметру,
dispOpt(4): конечные результаты;
chkData — матрица проверочных данных (проверочная выборка), имеющая такой же набор столбцов, что и матрица данных для обучения сети, но, вообще говоря, другое число строк;
optMethod — параметр, определяющий вид алгоритма обучения гибридной системы (1 — гибридный алгоритм, 0 — алгоритм обратного распространения ошибки; по умолчанию — 1).
Процесс обучения сети заканчивается, когда выполнено заданное число циклов обучения или ошибка обучения уменьшилась до заданного уровня. При отсутствии некоторых аргументов их значения принимаются по умолчанию.
Выходные параметры функции:
ошибка о — массив (вектор) значений ошибок для обучающей выборки;
ошибка п — массив (вектор) значений ошибок для проверочной выборки;
шаг — массив значений шага в алгоритме обучения;
имя1 — идентификатор (имя) сети, образованной исходя из минимальной ошибки обучения;
имя2 — идентификатор (имя) сети, образованной исходя из минимальной ошибки для проверочной выборки.
Пример 1
» х = (0:0.1:10)/;
» у = sin(2*x)./exp(x/5);
» trnData = [х у];
» а = anfis(trnData);
ANFIS info:
Number of nodes: 12
Number of linear parameters: 4
Number of nonlinear parameters: 6
Total number of parameters: 10
Number of training data pairs: 101
Number of checking data pairs: 0
Number of fuzzy rules: 2
Start training ANFIS …
10.313942
20.31388
30.313817
40.313753
50.313689
Step size increases to 0.011000 after epoch 5.
60.313624
70.313552
80.313479
90.313406
Step size increases to 0.012100 after epoch 9.
10 0.313332
Designated epoch number reached —> ANFIS training completed at epoch 10.
» plot(x,y,x,evalfis(x,a),/-./);
»legend(,Oбyчaющaя выборка7,гВыход ANFIS');
Пример 2
» х = (0:0.1:10)/;
» у = sin(2*x)./exp(x/5);
» trnData = [х у];
numMF s = 5;
mfType = ,gbellmf,;
epoch п = 20;
»in fismat = genfisl (trnData,numMFs,mfType);
out fismat = anfis(trnData,in fismat,20):
ANFIS info:~
Number of nodes: 24
Number of linear parameters: 10
Number of nonlinear parameters: 15
Total number of parameters: 25
Number of training data pairs: 101
Number of checking data pairs: 0
Number of fuzzy rules: 5
Start training ANFIS ...
1
0.0694086
2
0.0680259
3
0.066663
4
0.0653198
5
0.0639961
Step
size increases to 0.011000 after epoch 5.
6
0.0626917
7
0.0612787
8
0.0598881
9
0.0585193
Step
size increases to 0.012100 after epoch 9.
10
0.0571712
11
0.0557113
12
0.0542741
13
0.052858
Step
size increases to 0.013310 after epoch 13.
14
0.0514612
15
0.0499449
16
0.0484475
17
0.0469667
Рис. 5.38. Обучающая выборка и выход системы а
Рис. 5.39. Обучающая выборка и выход системы fismat
Step size increases to 0.014641 after epoch 17.
180.0455003
190.0439022
200.0423184
Designated epoch number reached —> ANFIS training completed at epoch 20.
» plot(x,y,x,evalfis(x,out jismat)/-/);
»legend(,Training Data,/ANFIS Output');
В примере 2 при проектировании гибридной системы заранее были заданы некоторые значения (количество и тип функций принадлежности, количество циклов обучения), в примере 1 для той же обучающей выборки все установки при проектировании системы выбраны по умолчанию. Отличие в качестве функционирования двух систем наглядно иллюстрируются рис. 5.38 и 5.39.
.5・8. Функция кластеризации. Функция fem осуществляет кластеризацию с использованием алгоритма Fuzzy c-means (см. выше). Она записывается в виде:
[center,U,obj fen] = fcm(data,cluster n)
[center,U,obj fen] = fcm(data,cluster n,options)
Описание. Аргументы функции:
data — матрица данных, каждый столбец которой соответствует одной из переменных, а каждая строка — одному из опытов;
cluster п — число задаваемых кластеров (должно быть больше 1);
options — вектор опций функции с элементами:
options(l): показатель для матрицы U (по умолчанию 2.0), options(2): максимальное число итераций при определении центров кластеров (по умолчанию 100),
options(3): минимальная сумма улучшения (по умолчанию
options(4): вывод информации в процессе итераций (по умолчанию 1).
Выходные параметры функции:
center — матрица, элементы которой (по столбцам) являются координатами найденных центров кластеров, число строк равно числу центров;
U — матрица значений принадлежности данных к выявленным кластерам;
obj fen —значения целевой функции в процессе итераций.
Пример
»load clusterdemo.dat;
» data = clusterdemo;
» [center,U,obj fen] =fcm(data, 3);
Iteration count = 1, obj. fen = 55.941585
Iteration count = 2, obj. fen = 42.971277
Iteration count = 3, obj. fen = 42.764109
Iteration count = 4, obj. fen = 41.688335
Iteration count = 5, obj. fen = 37.070571
Iteration count = 6, obj. fen = 29.262573
Iteration count = 7, obj. fen = 22.996848
Iteration count = 8, obj. fen = 16.162985
Iteration count = 9, obj. fen = 15.443897
Iteration count = 10, obj. fen = 15.430759
Iteration count = 11, obj. fen = 15.430533
Iteration count = 12, obj. fen = 15.430528 » center center =
0.20510.59600.8090
0.79390.78920.1968
0.59630.19230.5057
5.5・9. Функция генерации FIS-структуры. Функция genfisl генерирует FIS-структуру по экспериментальным данным без проведения их кластеризации:
имя = genfisl (data)
имя = genfisl (data,numMFs,inmftype, outmftype)
Описание. Функцией генерируется структура системы нечеткого вывода типа Sugeno, являющая исходной для последующего формирования и обучения гибридной системы с помощью функции anfis. Аргументы функции:
data — матрица данных (обучающая выборка), последний столбец которой соответствует выходной переменной, а остальные —входным переменным и число строк в которой равно числу наборов экспериментальных данных (образцов);
numMFs — вектор, элементы которого определяют число функций принадлежности, задаваемых для каждого входа; если для всех входов задается одно и то число таких функций, данный аргумент задается как скаляр (один элемент);
inmftype — строковый массив, элементы которого — типы функций принадлежности, задаваемые для входных переменных;
outmftype — строковая переменная, определяющая тип функций принадлежности выходной переменной (возможны только значения ,linear, или ,constant,).
Число функций принадлежности выходной переменной равно числу нечетких правил, генерируемых genfisl, и зависит от элементов вектора numMFs. По умолчанию numMFs = 2, inmftype = =,gbellmf. Значения по умолчанию устанавливаются, если функция применяется без трех последних аргументов.
Применение функции ограничено размерностью задачи: так, при N входных переменных с минимальным разбиением области определения каждой переменной на две подобласти будет генерироваться 2N правил, что при числе входов больше 5-6 делает анализ этих правил практически невозможным. Более экономной в этом плане является функция genfis2 (см. ниже).
Пример
» data = [rand(10,l) 10*rand(10,l)-5 rand(10,l)];
»numMFs = [3 7];
» mfType = str2mat (^imf ,/trimfz);
» fismat = genfisl (data,numMFs,mfType);
»[x,mf] = plotmf(fismat,,input,,l);
» subplot(2,l,l), plot(x,mf);
» xlab 叫,input 1 (pimf,);
» [x,mf] = plotmf(fismat /input7,2);
» subplot(2,l,2), plot(x,mf);
»xlab叫,input 2 (trimf)z);
См. также пример 2 для функции anfis.
Функция генерации структуры нечеткого вывода. Функция genfis2 генерирует структуру системы нечеткого вывода (типа Sugeno) с использованием алгоритма Subtractive clustering кластеризации данных:
имя = genfis2 (Xin,Xout,radii)
имя = genfis2 (Xin,Xout,radii,xBounds)
имя = genfis2 (Xin,Xout,radii,xBounds,options)
Аргументами рассматриваемой функции являются:
Xin —матрица (массив) входных данных обучающей выборки, столбцы которой ассоциированы с входными переменными, а каждая строка — с отдельным опытом;
Xout — матрица выходных переменных обучающей выборки, столбцы которой представляют значения данных переменных, а число строк равно числу строк матрицы Xin;
radii (радиусы) — вектор, определяющий «области влияния» центров кластеров по каждой входной переменной (в предположении, что область определения данных переменных — многомерный параллелепипед) с неотрицательными элементами, меньшими единицы; пусть, например, число входов — 3, тогда radii =
=[0.5 0.4 0.3] означает, что по первой переменной «область влияния» составляет 0.5 от диапазона изменения этой переменной, а по второй и третьей — соответственно 0.4 и 0.3 (эти диапазоны определяются по элементам столбцов матрицы Xin). Если рассматриваемый аргумент задан как скаляр, то по всем переменным устанавливается один и тот же размер «области влияния» кластеров. Параметр имеет важное значение для проведения разбиения области определения входов на подобласти с последующим установлением числа нечетких правил;
XBounds — матрица с 2 строками и N столбцами (N — число столбцов в матрице Xin, т. е. число входных переменных), устанавливающая границы областей определения входных переменных. Данные этой матрицы используются для преобразования (масштабирования) входов к диапазону [—1, 1]. Например, Xbounds = [—10 0 — 1; 10 50 1] задает диапазон [—10, 10] для первой переменной, [0, 50] — для второй и [—1, 1] — для третьей. Если рассматриваемый аргумент опущен, границы областей определяются как максимальные и минимальные элементы по столбцам матрицы Xin;
options — вектор опций, устанавливающий параметры алгоритма кластеризации (подробней см. при описании функции sub- clust).
Функция genfis2, так же как genfisl, может применяться в комплекте с функцией anfis (для настройки параметров системы нечеткого вывода), но, в отличие от последней, genfis2 возвращает уже полностью определенную, готовую к использованию систему, не требующую, вообще говоря, дополнительной оптимизации.
Функция genfis2 производит более экономное, чем genfisl разбиение пространства входов на подобласти и может, поэтому, являться эффективным инструментов для выявления правил из набора экспериментальных данных.
Примеры
а = genfis2(Xin,Xout,0.5)
а = genfis2(Xin,Xout,[0.5 0.25 0.3])
Функция возврата центров кластеров. Функция subclust возвращает центры кластеров.
Запись: [C,S] = subclust(X,radii,xBounds,options)
Функцией определяются центры кластеров набора экспериментальных данных, отражаемых матрицей X (столбцы матрицы соответствуют переменным, строки — экспериментальным «точкам» или опытам) на основе реализации «вычитающего» алгоритма кластеризации (Subtractive clustering). В его основе лежит пред-
положение, что каждая экспериментальная точка может быть центром кластера, при этом вначале для каждой точки вычисляется
Рис. 5.40. Функции принадлежности, определенные genfisl мера правдоподобия данного предположения («потенциал точки»), основанная на плотности точек в заданной окрестности рассматриваемой. Дальнейшие вычисления происходят итеративно:
точка с наибольшим потенциалом объявляется центром первого кластера;
из отмеченной окрестности этой точки удаляются все остальные точки;
из оставшихся точек объявляется центр следующего кластера и т. д., пока не будут рассмотрены (исключены или объявлены центрами кластеров) все точки.
Размеры окрестностей задаются элементами вектора radii, который (как и аргумент xBounds) аналогичен рассмотренному при описании функции Genfis2.
Аргумент options является вектором со следующими элементами:
options(l) = quashFactor (фактор подавления): используется для расширения «сферы влияния» выделенного центра кластера для «подавления» (уменьшения) потенциала точек, относящихся к данному кластеру; по умолчанию равен 1.25;
options(2) = acceptRatio (коэффициент принятия): устанавливает, больше какого значения по отношению к потенциалу принятого центра кластера должен быть потенциал точки, чтобы эту точку можно было объявить центром нового кластера; по умолчанию 0.5;
options(3) =rejectRatio (коэффициент отклонения): устанавливает, меньше какого значения по отношению к потенциалу принятого центра кластера должен быть потенциал точки, чтобы эту точку нельзя было объявить центром нового кластера; по умолчанию 0.15;
options(4) = verbose (подробности): если этот элемент ненулевой, то выдается подробная информация и процессе нахождения центров кластеров; по умолчанию — 0.
Функция возвращает центры кластеров в виде матрицы С; каждая строка этой матрицы содержит координаты одного из найденных центров. Вектор S содержит элементы, определяющие диапазоны влияния центров кластеров по каждой переменной (для всех центров эти диапазоны одинаковы).
Пример
» X = load(,clusterdemo.dat,);
» [C,S] = subclust(X,0.5)
0.2220
0.5937
0.8113
0.7797
0.8191
0.1801
0.5914
0.1721
0.4872
0.1904
0.1988
0.2251
Различные другие функции. К этой группе относятся 10 функций:
convertfis — обеспечивает конвертацию FIS-матрицы пакета Fuzzy Logic версии 1.0 в FIS-структуру пакета Fuzzy Logic версии 2.0:
имя новое = convertfis(HMH старое)
discfis — преобразует непрерывные функции принадлежности системы нечеткого вывода в дискретные (задаваемые наборами точек).
evalmmf — вычисляет значения одновременной нескольких функций принадлежности. Является многомерным аналогом функции evalmf.
fstrvcat — объединяет заданные векторы и матрицы в одну матрицу:
Y = fstrvcat(yl,y2,y3,..)
Функция возвращает матрицу Y, представляющую собой объединение матриц-аргументов у1,у2,уЗ,.., при этом для выравнивания размеров итоговой матрицы она дополняется нулями. Элементы аргументов могут быть строкового типа, при этом их символы преобразуются в числовую форму.
fuzarith — выполняет алгебраические операции над нечеткими множествами:
С = fuzarith(X, А, В, operator)
Здесь X — вектор, выполняющий роль универсального множества, А и В — векторы, определяющие нечеткие подмножества- операнды, С — вектор, определяющий нечеткое подмножество —
1
Рис. 5.41. Результаты выполнения функции fuzarith
результат операции, operator — строковая переменная, задающая вид операции и имеющая одно из возможных значений ,sum, (сумма), ,sub, (вычитание), zprod7 (умножение), ,div, (деление).
Пример
» point п =101; % Задание количества точек универсального
множества
» х = linspace(min х, maxjc, point n)z;
» A = trapmf(x, [-10 -2 1 3]); % Tpапецеидальная функция принадлежности подмножества А
» В = gaussmf(x, [2 5]); % Гауссова функция принадлежности подмножества В
» Cl = fuzarith(x, А, В, ,sum,);
» subplot(2,l,l);
»plot(x, А, ,b--/, х, В, ,m:/, х, Cl, ,c,);
» title ('Нечетная сумма A+B');
» C2 = fuzarith(x, A, B, trod7);
» subplot(2,l,2);
»plot(x, A, zb--z, x, B, ,m:/, x, C2, ,c,);
» title ('Нечетное произведение A*B‘);
findrow — возвращает номера аргументов функции fstrvcat по их именам.
genparam — возвращает параметры заданных функций принадлежности, определяя их по набору входных экспериментальных данных. Данные результаты могут быть использованы как начальные приближения при последующем применении команды anfis.
mam2sug — преобразует систему нечеткого вывода с алгоритмом Mamdani в систему, использующую алгоритм Sugeno:
имя sug = mam2sug(HMH mam)
Рис. 5.42. Иллюстрация к выполнению функции mam2sug
Функция возвращает систему нечеткого вывода (с именем имя sug), использующую алгоритм вывода Sugeno, по заданной
системе имя mam, использующей алгоритм Mamdani. Возвращаемая система имеет постоянные функции принадлежности выходных переменных (допускается их число больше 1), определяемые как центроиды функций принадлежности следствий нечетких правил алгоритма Mamdani. Предпосылки правил при преобразовании не изменяются.
Пример
» а = readfis(,tip,);
» b = mam2sug(a);
» subplot(2,l,l); gensurf(a);
» title(,Выход системы Mamdani (чаевые)');
»subplot(2,l,2); gensurf(b);
» title ('выход системы Sugeno (чаевые)');
Замечание. Проверка, проведенная авторами, показала, что рассмотренная функция выполняется некорректно и приводит к неработающей системе вывода (попытки использования системы Sugeno вызывают сообщение об ошибке). Данный недостаток можно устранить, изменив в предпоследней строке файла mam2sug.m (в директории Matlab/toolbox/fuzzy/fuzzy/ ) defuzzmethod на defuzzMethod.
probor — выполняет операцию вероятностного ИЛИ над столбцами матрицы-аргумента:
Y = probor(X)
Если матрица-аргумент X имеет два столбца, А и В, то функция возвращает матрицу Y = A+B-АВ;если аргумент содержит только один столбец, то Y = X.
sugmax — позволяет определить максимально возможные диапазоны изменения выходных переменных в заданной системе нечеткого вывода, использующей алгоритм Sugeno.
Функции вызова диалоговых окон интерфейса. Данную группу образуют 12 функций:
cmfUlg —вызывает диалоговое окно для задания функции принадлежности пользователя,
cmthdlg — вызывает диалоговое окно для задания пользовательского алгоритма нечеткого вывода,
fisgui — позволяет генерировать элементы графического интерфейса пользователя,
gfmfUlg —вызывает диалоговое окно для задания числа и типа функций принадлежности при проектировании системы типа Sugeno (с последующим применением функции anfis),
mfUlg — вызывает диалоговое окно для задания дополнительной функции принадлежности,
mfUrag — обеспечивает «перетаскивание» функции принадлежности с использованием мыши,
popundo — возвращает из стека результаты отмены предыдущего действия,
pushundo — помещает в стек данные по отменяемому действию,
savedig — вызывает диалоговое окно, выдающее запрос на сохранение результатов,
Рис. 5.43. Результат выполнения команды gftnfdlg
statmsg — помещает сообщения в поле состояния окна,
updtfis — обновляет элементы графического интерфейса пользователя,
wsdlg — вызывает диалоговое окно для выполнения операции сохранения в рабочем пространстве.
В качестве примера приведем выполнение функции gfmfUlg:
» а = readfis(,tip,);
» gfmfUlg('#init',a)
ans =
‘3 2’ ,gaussmf, 'linear'
5・6・ Работа Fuzzy Logic с блоками Simulink
Системы нечеткого вывода, созданные тем или иным образом с помощью пакета Fuzzy Logic Toolbox, допускают интеграцию с инструментами пакета Simulink, что позволяет выполнять моделирование систем в рамках последнего.
Пример: контроль уровня воды в баке. На рис. 5.44 изображен объект управления в виде бака с водой, к которому подходят две трубы: через одну трубу, снабженную краном, вода втекает в бак, через другую — вытекает.
Подачу воды в бак можно регулировать, больше или меньше открывая кран. Расход воды является неконтролируемым и зависит от диаметра выходной трубы (он фиксирован) и от текущего
Рис. 5.44. Схематическое представление объекта управления (бака с водой)
уровня воды в баке. Если понимать под выходной (регулируемой) переменной уровень воды, а под регулирующим элементом — кран, то можно отметить, что подобный объект регулирования, с точки зрения его математического описания, является динамическим и существенно нелинейным.
Определим цель управления здесь как установление уровня воды в баке на требуемом (изменяющемся) уровне и попробуем решить соответствующую задачу управления средствами нечеткой логики.
Очевидно, в регулятор, обеспечивающий достижение цели управления, должна поступать информация о несоответствии (разности) требуемого и фактического уровней воды, при этом данный
регулятор должен вырабатывать управляющий сигнал на регулирующий элемент (кран).
В первом приближении функционирование регулятора можно описать набором из следующих правил:
If (level is okay) then (valve is no change) (1)
If(level is low) then (valve is open fast) (1)
If (level is high) then (valve is close fast) (1)
If (level is okay) and (rate is positive) then
(valve is close slow) (1)
If (level is okay and (rate is negative) then
(valve is open slow) (1),
что в переводе означает:
Если (уровень соответствует заданному), то (кран без изме
нения) (1)
Если (уровень низкий), то (кран быстро_открыть) (1)
Если (уровень высокий), то (кран быстро_закрыть) (1)
Если (уровень соответствует заданному) и (его прирост —
положительный), то (кран надо медленно_закрывать) (1)
Если (уровень соответствует заданному) и (его прирост — отрицательный), то (кран надо медленно_открывать) (1)
Рис. 5.45. Блок-диаграмма модели системы управления уровнем воды в баке с нечетким регулятором
Модель системы управления уровнем воды в баке с нечетким регулятором, основанным на приведенных правилах, является одной из демонстрационных моделей пакетов Fuzzy Logic и Simulink.
Ее можно вызвать из командной строки командой sltank, что приведет к открытию окна Simulink с блок-диаграммой указанной модели (рис. 5.45).
Одновременно блок Fuzzy Logic Controller будет сопоставлен с системой нечеткого вывода, записанной в файле tank.fs.
Для изучения процесса функционирования системы необходимо нажать кнопку Start панели инструментов блок-диаграммы модели и дважды щелкнуть левой кнопкой мыши по блоку Comparison (Сравнение). В появившемся окне этого блока будут показаны изменяющиеся во времени сигналы заданного (последовательность импульсов прямоугольной формы) и фактического уровней воды (рис. 5.46). Как видно, переходный процесс в системе имеет апериодическую форму и заканчивается достаточно быстро, т. е. качество регулирования следует признать хорошим.
Рис. 5.46. Результаты моделирования системы управления с нечетким регуляторомРис. 5.46. Результаты моделирования системы управления с нечетким регуляторомFuzzjf Logic ControllerFuzzjf Logic ControllerРис. 5.47. Структура блока Fuzzy Logic Controller with RuleviewerРис. 5.47. Структура блока Fuzzy Logic Controller with RuleviewerМожно попытаться изменить характер функционирования системы, внося ——например, с помощью рассмотренных программ с графическим интерфейсом (типа FIS-редактора и т. п.), определенные изменения в систему, задаваемую файлом tank.fs (изменяя правила, функции принадлежности, метод приведения к четкости и т. д.). Разумеется, все это лучше делать, остановив процесс моделирования.
Рис. 5.46. Результаты моделирования системы управления с нечетким регулятором
Рис. 5.46. Результаты моделирования системы управления с нечетким регулятором
Fuzzjf Logic Controller
Fuzzjf Logic Controller
Рис. 5.47. Структура блока Fuzzy Logic Controller with Ruleviewer
Рис. 5.47. Структура блока Fuzzy Logic Controller with Ruleviewer
Выполнив (в режиме командной строки) команду sltankrule, перейдем к блок диаграмме той же системы управления, но с нечетким регулятором с просмотрщиком правил (Fuzzy Logic Controller with Ruleviewer). Структура такого регулятора представляется в отдельном окне (рис. 5.47), если дважды щелкнуть левой кнопкой мыши по указанному блоку.
Построение нечеткой модели с использованием блоков Simulink. Для построения какой-то собственной моделирующей системы с использованием средств нечеткой логики и блоков Simulink рекомендуется просто скопировать блок Fuzzy Logic Controller из рассмотренной системы sltank (или какого-либо другого демонстрационного примера MATLAB) и поместить его в блок- диаграмму разрабатываемой системы. Из командной строки командой fuzblock можно также открыть библиотеку нечетких блоков пакета Simulink (в версии MATLAB 5.3, содержащей два блока: нечеткий регулятор — Fuzzy Logic Controller и нечеткий регулятор с просмотрщиком правил — Fuzzy Logic Controller with Ruleviewer, а в версии 5.2 — еще и несколько демонстрационных блоков), которые могут быть использованы точно так же, при необходимости —с дополнительным редактированием.
Отметим, что функционирование указанных блоков осуществляется с использованием системной S-функции sffis.mex. Запись этой функции такова:
output = sffls(t,x,u,flag,flsmat),
где output — выход нечеткого регулятора, t, х и flag — стандартные аргументы системной функции Simulink, fismat — идентификатор (имя) нечеткой системы вывода, и — входной сигнал (вектор входных сигналов) регулятора.
По смыслу данная функция аналогична рассмотренной выше функции evalfis, но она оптимизирована для работы в среде Simulink.
Демонстрационные примеры работы с пакетом Fuzzy Logic Toolbox. Для ознакомления с пакетом Fuzzy Logic Toolbox можно использовать следующие функции (команды) в режиме командной строки:
defuzzdm — обзор методов приведения к четкости (дефазификации),
femdemo — демонстрация алгоритма кластеризации Fuzzy с- means (2-D графика),
fuzdemos — демонстрация графического интерфейса пакета Fuzzy Logic,
gasdemo — демонстрация использования аппарата гибридных сетей для решения задачи о выборе автомобиля, наиболее экономичного по расходу топлива,
juggler — демонстрация системы жонглирования мячом с использованием нечеткого регулятора,
invkine — демонстрация нечеткого управления движением робота-манипулятора,
irisfem — демонстрация алгоритма кластеризации Fuzzy c-means,
noisedm — демонстрация решения задачи фильтрации на основе методов нечеткой логики,
slbb — демонстрация задачи «шар на качелях»,
slcp — демонстрация нечеткой системы управления перевернутым маятником,
sltank — демонстрация системы управления уровнем воды в баке с нечетким регулятором,
sltankrule — то же, что в предыдущем случае, но с дополнительным просмотром нечетких правил,
sltbu — демонстрация функционирования нечеткой системы управления грузовиком.
С каждым из этих примеров связан М-файл, fis-файл или/и блок-диаграмма Simulink, запуск которых производится с помощью одной из указанных команд. Текст пояснений в примерах — на английском языке. Данные примеры доступны и через главное меню MATLAB (пункт Help/Examples and Demos, раздел Tool- boxes/Fuzzy Logic). Дополнительную информацию можно получить, используя команду help fuzzy.
СПИСОК ЛИТЕРАТУРЫ
Прикладные нечеткие системы / Под ред. Т. Тэрано, К. М.: Мир, 1993. 368 с.
Змитрович А. И. Интеллектуальные информацио Минск: НТООО ,?TeтpaCиcтeмc^^, 1997. 367 с.
Уоссермен Ф. Нейрокомпьютерная техника.—М.: Ми
Горбань А. Н., Р о с с и е в Д. А. Нейронные сети компьютере.—Новосибирск: Наука, 1996. 275 с.
Круглов В. В., Борисов В. В. Искусственные нейро и практика.—М.: Горячая линия—Телеком, 2001. 382 с.
Аверин А. Н., и др. Нечеткие множества в моделях yi ственного интелекта / Под ред. Д. А Поспелова.—М.: Нау
К о ф м а н А., А л у х а X. Хил. Введение теории нечетки:
вление предприятием.—Минск: Высшая школа, 1992. 2:
Дли М. И. Локально-аппроксимационные модели сложе
СПИСОК ЛИТЕРАТУРЫ
Прикладные нечеткие системы / Под ред. Т. Тэрано, К. Асаи, М. Сугэно.—— М.: Мир, 1993. 368 с.
Змитрович А. И. Интеллектуальные информационные системы.—— Минск: НТООО TeтpaCиcтeмc^^, 1997. 367 с.
У оссермен Ф. Нейрокомпьютерная техника.——М.: Мир, 1992. 127 с.
Г орбань А. Н., Р оссиев Д. А. Нейронные сети на персональном компьютере.——Новосибирск: Наука, 1996. 275 с.
Круглов В. В., Б орисов В. В. Искусственные нейронные сети. Теория и практика.——М.: Горячая линия——Телеком, 2001. 382 с.
Аверин А. Н., и др. Нечеткие множества в моделях управления и искусственного интелекта / Под ред. Д. А Поспелова.—М.: Наука, 1986. 312 с.
К о ф м ан А., А л у х а X. Хил. Введение теории нечетких множеств в упра
вление предприятием.——Минск: Высшая школа, 1992. 223 с.
Д ли М. И. Локально-аппроксимационные модели сложных объектов.——М.: Наука, Физматлит, 1999. 112 с.
Д ли М. И., Круглов В. В., Осокин М. В. Локально-аппроксимационные модели социально-экономических систем и процессов.——М.: Наука, Физматлит, 2000. 224 с.
Корнеев В. В., Греев А. Ф., В асютин С.В., Райх В. В. Базы данных. Интеллектуальная обработка информации.——М.: Нолидж, 2000. 352 с.