Нейросетевые технологии в обработке и защите данных Защита информации иммунными нейронными сетями Лекция 13. Структура и обучение гибридных сетей. 1 Структура и обучение гибридных сетей Системы нечеткого вывода позволяют решать задачи автоматического управления, классификации данных, распознавания образов, принятия решений, защиты данных и многие другие. Построение базы нечетких лингвистических правил, фаззификацию входных переменных, использование алгоритмов Мамдани и Сугено для нечеткого вывода проанализируем на конкретном примере в пакете Fuzzy Logic Toolbox системы MATLAB. 2 Характеристика пакета Fuzzy Logic Toolbox Пакет Fuzzy Logic Toolbox (пакет нечеткой логики) системы MATLAB – это совокупность прикладных программ, реализующих операции над нечеткими множествами и позволяющих конструировать так называемые нечеткие экспертные и / или управляющие системы. В пакете Fuzzy Logic Toolbox системы MATLAB гибридные нейронные сети реализованы в форме адаптивных систем нейро-нечеткого вывода ANFIS. 3 ANFIS – адаптивная система нечеткого вывода (Adaptive-Network-Based Fuzzy Inference System) реализована в пакете расширения Fuzzy Logic Toolbox (пакете нечеткой логики) системы MATLAB . ANFIS является одним из первых вариантов средств создания гибридных нейро-нечетких сетей. В пакете Fuzzy Logic Toolbox реализованы две системы нечеткого вывода Mamdani – типа Мамдани – Заде, задаваемая по умолчанию, и Sugeno – типа Такаги – Сугено – Канга. 4 Характеристика пакета Fuzzy Logic Toolbox Разработка и исследование гибридных сетей оказываются возможными двояко : • в интерактивном режиме с помощью специального графического редактора адаптивных сетей ANFIS, позволяющего создавать и загружать конкретную модель адаптивной системы нейро-нечеткого вывода, выполнять ее обучение, визуализировать ее структуру, изменять и настраивать ее параметры, а также использовать настроенную сеть для получения результатов нечеткого вывода; • в режиме командной строки с помощью ввода имен соответствующих функций с необходимыми аргументами непосредственно в окно команд системы MATLAB. 5 Адаптивная система нечеткого вывода ANFIS Редактор ANFIS позволяет создавать или загружать конкретную модель адаптивной системы нейро-нечеткого вывода, выполнять ее обучение, визуализировать ее структуру, изменять и настраивать ее параметры, а также использовать настроенную сеть для получения результатов нечеткого вывода. Графический интерфейс редактора ANFIS вызывается функций anfisedit из командной строки. 6 Адаптивная система нечеткого вывода ANFIS Создание и обучение нечеткой нейронной сети, как отмечалось ранее, можно производить не только с помощью графического интерфейса ANFIS. Существует пригодный для использования в командной строке MATLAB набор функций, с помощью которых можно загружать данные, создавать и редактировать нечеткие правила, задавать функции принадлежности, производить обучение, представлять графически полученные результаты. 7 Адаптивная система нечеткого вывода ANFIS Главное меню редактора ANFIS предназначено для работы с предварительно созданной системой нечеткого вывода. Основную часть графического интерфейса занимает окно визуализации данных, которое расположено ниже главного меню. Для вновь создаваемой гибридной сети это окно не содержит никаких данных. Для создания сети необходимо загрузить данные либо из файла, либо из рабочей области (Workspace). 8 Адаптивная система нечеткого вывода ANFIS Исходные данные представляет собой обычную числовую матрицу размерности m×( n+1), в которой количество строк m соответствует объему выборки, первые n столбцов – значениям входных переменных модели, а последний столбец – значению выходной переменной. Отдельные значения матрицы отделяются пробелами, а каждая строка завершается нажатием клавиши “Enter”. 9 Адаптивная система нечеткого вывода ANFIS После загрузки обучающих данных их структура отображается в рабочем окне редактора ANFIS. При этом каждой строке данных соответствует отдельная точка графика, которая для обучающих данных отображается кружком. На горизонтальной оси указываются порядковые номера отдельных строк данных, а вертикальная ось служит для указания значений выходной переменной. 10 Адаптивная система нечеткого вывода ANFIS После подготовки и загрузки обучающих данных можно сгенерировать структуру системы нечеткого вывода FIS типа Сугено, которая является моделью гибридной сети в системе MATLAB. Для этого следует воспользоваться кнопкой Generate FIS в нижней части рабочего окна редактора, после чего вызывается рабочее окно с указанием числа и типа функций принадлежности для отдельных термов входных и выходной переменных. 11 Адаптивная система нечеткого вывода ANFIS После генерации структуры гибридной сети можно визуализировать ее структуру, нажав кнопку Structure в правой части графического окна. Перед обучением необходимо задать параметры обучения, используя группу опций в правой нижней части рабочего окна (выбрать метод обучения, установить уровень ошибки, задать количество циклов обучения). 12 Редактор ANFIS Для обучения сети необходимо нажать кнопку Train Now. Ход процесса обучения иллюстрируется в окне визуализации в форме графика зависимости ошибки от количества циклов обучения. На верхнем графике окна отображается зависимость ошибки проверки от количества циклов обучения, а на нижнем – зависимость ошибки обучения от количества циклов обучения. Созданную систему нечеткого вывода сохраняют в файле с расширением fis, после чего файл можно загрузить в редактор систем нечеткого вывода для настройки ее параметров. 13 Редактор ANFIS В редакторе системы нечеткого вывода становятся доступными: 1) редактор функций принадлежности (Membership Function Editor); 2) Редактор правил системы нечеткого вывода (Rule Editor); 3) Программа просмотра правил нечеткого вывода (Rule Viewer); 4) Программа просмотра поверхности системы нечеткого вывода (Surface Viewer ) 14 Пример решения задачи нейро нечеткого вывода Величина суммы чаевых согласно традиции в США не является постоянной и зависит, например, от качества обслуживания и качества приготовления заказанных блюд. Необходимо разработать некоторую экспертную систему, позволяющую определять величину чаевых на основе субъективных оценок посетителей ресторана качества обслуживания и качества приготовления блюд. 15 Пример решения задачи нейронечеткого вывода Проведем анализ работы систем нечеткого вывода Мамдани и Сугено на примере задачи о чаевых (tipper, tippersg) с помощью графических средств Fuzzy Logic Toolbox, используя команды соответственно fuzzy tipper и fuzzy tippersg в командной строке системы MATLAB. Для задачи о чаевых в системе нечеткой логики выбрано две входные переменные и одна выходная соответственно: service - обслуживание, food - еда, tip - чаевые. 16 Пример решения задачи нейро - нечеткого вывода Эмпирические знания о рассматриваемой предметной области могут быть представлены в форме следующих правил продукций: 1. Если обслуживание плохое или еда подгоревшая, то чаевые – малые; 2. Если обслуживание хорошее, то чаевые – средние; 3. Если обслуживание отличное или еда превосходная, то чаевые – щедрые. В программе tipper правила заданы так: 1. If (service is poor) or (food is rancid) then (tip is cheap) 2. If (service is good) then (tip is average) 3. If (service is excellent ) or (food is delicious) then (tip is generous) 17 Пример решения задачи нейро - нечеткого вывода В качестве входных переменных выбраны две лингвистические переменные «качество обслуживания» и «качество приготовления заказанных блюд», а в качестве выходного параметра - нечеткая лингвистическая переменная «величина чаевых». В качестве терм-множеств : T1={‘poor’, ‘good’, excellent} T2={‘rancid’, ‘delicious’} T3={‘cheap’, ‘average’, ‘generous’} 18 Пример решения задачи нейро - нечеткого вывода Каждый из термов первой и второй входной переменной оценивается по десятибалльной порядковой шкале, при которой цифре 0 соответствует наихудшая оценка, а цифре 10 – наилучшая оценка. Для термов выходной переменной принято, что малые чаевые составляют около 5% от стоимости заказанных блюд, средние чаевые – около 15%, а щедрые чаевые – около 25%. 19 Пример решения задачи нейро - нечеткого вывода Процесс разработки системы нечеткого вывода в интерактивном режиме включает ряд последовательных действий. 1. Вызвать редактор систем нечеткого вывода FIS, для чего в окне команд набрать имя соответствующей функции fuzzy (fuzzy tipper ). После выполнения этой команды на экране появляется графический интерфейс редактора FIS с именем системы нечеткого вывода и типом системы нечеткого вывода (Мамдани, по умолчанию). 20 Вид диаграммы системы нечеткого вывода в редакторе FIS 21 Пример решения задачи нейро - нечеткого вывода 2. Определить все переменные, выполнив команду: Edit>Add Variable…>Input. 3. Задать имена входных и выходных переменных. Для этого необходимо выделить прямоугольник с именем соответствующей переменной, кликнув на его изображении на диаграмме (стороны выделенного прямоугольника отмечаются красным цветом). В поле ввода Name в правой части редактора FIS указывается необходимое имя переменной. 22 Графический интерфейс редактора функций принадлежности 23 Пример решения задачи нейро - нечеткого вывода 4. Создаваемая структура системы нечеткого вывода с выбранным именем сохраняется во внешнем файле или в рабочей области Workspace . File>Export>To Disk… File>Export> Workspace … 5. Для того, чтобы определить термы и функции принадлежности , необходимо вызвать редактор функций принадлежности , что можно сделать одним из трех способов: • Двойным щелчком на значке прямоугольника; • Командой Edit>Membership Functions… • Нажатием клавиш <Ctrl>+<2> 24 Графический интерфейс программы просмотра правил нечеткого вывода 25 Пример решения задачи нейро - нечеткого вывода 6. Редактор правил нечеткого вывода для разрабатываемой экспертной системы вызывается одним из способов: • Двойным щелчком на значке квадрата в центре с именем создаваемой системы нечеткого вывода; • Командой меню Edit>Rules…; • Нажатием клавиш <Ctrl>+<3>. Для изменения операции можно использовать переключатель Connection и нажать на кнопку Add Rules. 26 Пример решения задачи нейро - нечеткого вывода В поле ввода Weight отображается вес каждого правила, меняющегося в пределах интервала [0, 1] и который по умолчанию задан единичным. Этот вес правил записывается в круглых скобках в окне правил нечеткого вывода после каждого из них. В редакторе функций принадлежности имеется возможность в интерактивном режиме вносить различные изменения в создаваемой системе нечеткого вывода. 27 • • • • 7. Программа просмотра правил, позволяющая получить значение выходной переменной нечеткого вывода, вызывается одним из способов: Командой меню View>Rules редактора FIS; Командой меню View>Rules редактора функций принадлежности; Командой меню View>Rules редактора правил; Нажатием клавиш <Ctrl>+<5>. Для процесса нечеткого моделирования необходимо провести анализ результатов нечеткого вывода при различных значениях входных переменных. 28 • • • • • Для окончательного анализа разработанной нечеткой модели используется программа просмотра поверхности нечеткого вывода, которая вызывается одним из способов: Командой меню View>Surface редактора FIS; Командой меню View>Surface редактора функций принадлежности; Командой меню View>Surface редактора правил; Командой меню View>Surface программы просмотра правил; Нажатием клавиш <Ctrl>+<6>. 29 Графический интерфейс программы просмотра поверхности 30 В случае необходимости можно получить график зависимости выходной переменной от одной из входных переменных. Для этого выбирается нужная переменная в раскрывающемся списке X , а в раскрывающемся списке Z выбрать значение “none”. Получаемый график, соответствующий среднему значению 5 второй входной переменной, представлен далее. В поле Ref.Input можно ввести нужное значение второй входной переменной вместо выбранного ранее значения 5. Значение NaN для второй входной переменной соответствует ее изменению во всем интервале определения [0, 10]. 31 График зависимости выходной переменной от второй переменной 32 Процесс разработки системы нечеткого вывода в режиме команд может дополнить или заменить процесс разработки системы в интерактивном режиме, предоставляя пользователю полный контроль над всеми переменными рабочей области системы MATLAB. 33