Файл: Нечеткая логика и нейронные сети.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 14.06.2023

Просмотров: 75

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

5.2. Обучение без учителя

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

  • Обучение с подкреплением, или нейродинамическое программирование.
  • Собственно обучение без учителя.

5.2.1. Обучение с подкреплением

В обучении с подкреплением формирование отображения входных сигналов в выходные выполняется в процессе взаимодействия с внешней средой с целью минимизации скалярного индекса производительности. На рис. 5.2 показана блок-схема одной из форм системы обучения с подкреплением, включающей блок "критики", который преобразовывает первичный сигнал подкреп­ления, полученный из внешней среды, в сигнал более высокого качества, называемый эвристическим сигналом подкрепления. Оба этих сигнала являются скалярными [10]..

Рис. 5.2

Такая система предполагает обучение с «отложенным подкреплением». Это значит, что система получает из внешней среды последовательность сигналов возбуждения (т.е. векторов состояния), которые приводят к генерации эври­стического сигнала подкрепления. Целью обучения является минимизация функции стоимости перехода, определенной как математическое ожидание кумулятивной сто­имости действий, предпринятых в течение нескольких шагов, а не просто текущей стоимости. Может оказаться, что некоторые предпринятые ранее в данной последовательности действия были определяющими в формировании общего поведения всей системы. Функция обучаемой машины (learning machine), составляющая второй ком­понент системы, определяет эти действия и формирует на их основе сигнал обратной связи, направляемый во внешнюю среду.

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


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

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

5.2.2. Обучение без учителя

Обучение без учителя (или обучение на основе самоорганизации) осуществляется без вмешательства внешнего учителя, или корректора, контролирующего процесс обучения (рис. 5.3). Существует лишь независимая от задачи мера качества представления, которому должна научиться нейронная сеть, и свободные параметры сети оптимизируются по отноше­нию к этой мере.

Рис. 5.3

После обучения сети на статистические закономерности входного сигнала она способна формировать внутреннее представление кодируемых признаков входных данных и, таким образом, автоматически создавать новые классы [3].

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

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

Выводы по главе


После выбора структуры нейронной сети встает важнейшая задача – обучение сети. Методов обучения достаточно много и каждый из них может быть оптимален для определенного класса задач.

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

Глава 6. Решение задачи нечеткой логики

Данная глава является практической частью, это - решение задачи с использованием аппарата нечеткой логики.

При выполнении этой задачи используется программный комплекс MATLABFuzzyLogicToolbox.

Вариант, согласно заданного критерия, даты рождения, № 9.

6.1. Условие задачи

Задача на определение затрат на свадьбу:

Требуется определить, сколько денег будет потрачено на свадьбу.

Входные сигналы: а) количество гостей (маленькое, среднее, большое);

б) наличие приглашенных артистов (много артистов, мало артистов);

в) количество блюд на праздничном столе (много блюд, среднее количество блюд, мало блюд).

Выходной сигнал: затраты на свадьбу (богатая свадьба, средняя, бедная).

Правила: 1. Если количество гостей маленькое, мало приглашенных артистов, мало блюд на столе, то свадьба бедная. 2. Если среднее количество гостей, мало артистов, среднее количество блюд, то свадьба средняя. 3. Если много приглашенных гостей, много приглашенных артистов, много блюд на столе, то свадьба богатая.

6.2. Решение задачи

Таким образом, имеем объект с тремя входнымии переменными и одной выходной переменной.

Для входа в систему FuzzyLogicToolbox [11] вводим в командной строке Матлаба команду ‘fuzzy’. В результате появляется окно редактора FIS Editor (рис. 6.1). Т.к. по умолчанию в окне появляется только один вход, добавляем входные переменные, дважды нажимая ‘Edit/Add Variable’. В окне редактора теперь – 3 входа (рис. 6.2). По умолчанию используем нечеткий логический вывод по Мамдани. Метод дефаззификации переключаем на ‘bisector’.

Рис. 6.1

Рис. 6.2

Следующий шаг – настройка входных переменных, сначала меняем их имена. Для этого выделяем блок Input1, в окне Name вводим х1 и нажимаем Enter. То же проделываем с Input2 (меняем имя на х2) и Input3 (меняем имя на х3). Аналогично меняем имя выходной переменной на у [11].


Задаем имя системы, для чего в меню File выбираем подменю Export и команду ‘To Disk’ (имя ‘mariage13’).

Затем поочередно настраиваем функции принадлежности переменных, для чего используем редактор функций принадлежности, дважды щелкая левой клавишей мыши на соответствующий блок. Так, для переменной х1 получаем окно, изображенное на рис. 6.3. Здесь в окне Range введен диапазон изменения данной переменной х1: число гостей от 20 («мало») до 60 («много»). Здесь же настриваем вид функций принадлежности и 3 лингвистических уровня: маленькое, среднее и большое количество гостей.

Рис. 6.3.

Здесь надо заметить, что использованная в данной работе версия Matlab v6.5 не позволяет вводить кириллические символы, поэтому использованы следующие лингвистические значения входных переменных:

Большое или много – much, для х1 числовое значение равно 60 человек;

Среднее – middle, для х1 числовое значение равно 40 человек;

Маленькое или мало – notmuch, для х1 числовое значение равно 20 человек.

Следующим важным действием является настройка типа функции принадлежности. Для этого в окне Type выбираем из раскрывающегося списка тип “trimpf”, т. е треугольной формы. Это действие выполняем для всез трех значений (notmuch, middle, much).

Для переменной х2 приняты следующие значения: мало – notmuch, 2 артиста; много – much, 10 артистов. Тип функции принадлежности – также “trimpf”. Т.к. для этой переменной заданы два уровня (мало и много), то график функции принадлежности отличается от случая х1 (рис. 6.4).

Рис. 6.4

Для переменной х3 приняты следующие значения: мало – notmuch, 10 блюд; среднее – middle, 20 блюд; много – much, 30 блюд. Тип функции принадлежности – также “trimpf”.

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

Бедная свадьба – poor, 50 тыс. руб.;

Средняя – middle, 125 тыс. руб.;

Богатая – Rich, 200 тыс. руб.

Тип функции принадлежности для у принят gaussmf - кривая Гаусса, или нормальное распределение. Выбор этого типа функции обоснован на желании получить численные результаты после фаззификации результатов нечеткого логического вывода.

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

Рис. 6.5.

Следующий этап настройки системы нечеткой логики – задание правил. Для этого переходим в редактор базы знаний RuleEditor, выбирая в меню Edit команду ‘Rules’. В редакторе базы знаний нажимаем кнопку ‘Add rule’, затем отмечаем нужные лингвистические значения для х1, х2, х3, у. Эту операцию повторяем для всех трех заданных правил, составленных по форме: «если …, и …, и … , то». Соединительный союз (Connection) – “и” (and).


Редактор базы знаний изображен на рис. 6.6. В окне ‘Weight’ (весовой коэффициент) для всех правил оставлено значение по умолчанию 1.

Рис. 6.6.

После окончания всех настроек можно посмотреть результаты вычислений:

На рис 6.7 - результат выбора команды ‘Rules’ после нажатия кнопки ‘View’ в окне Rule Editor, при этом появляется окно с рисунком, символизирующем входные и выходные переменные (рис. 6.7). Передвигая красные тонкие линии, показывающие значение соответствующей переменной, в соответствующее положение, получаем результат для у. На рис. 6.7. входные переменные соответствуют 1-му правилу задания. В результате получено: у=66,5 тыс. руб, что близко к «бедной свадьбе», смещение чилового результата внутрь диапазона изменения у связано с принятым методом дефаззификации – медиана (bisector) в окне FIS Editor.

Для второго правила видим результат на рис. 6.8, а для третьего правила – на рис. 6.9.

Рис. 6.7.

Рис. 6.8

Рис. 6.9

Наглядное представление о влиянии двух входных переменных на выходной параметр получается при выводе поверхности отклика. Для этого в окне Rule Viewer после выбора опции View кликаем на Surfase Viewer, На рис. 6.10 дана поверхность у(х1,х3) при х2 = «мало» (2 артиста), а на рис 6.11 - поверхность у(х1,х3) при х2 = «много» (10 артистов). Задание значения переменной х2 производится в окне Surfase Viewer в строке RefInput – число в середине вектора: соответственно [Nan 2 NaN] и [Nan 10 NaN].

При «малом» количестве (2) артистов на свадьбе увеличение х1 и х3 от «малого» значения до «среднего» приводит к увеличению затрат от уровня «бедная» до уровня «средняя», а при дальнейшем увеличении х1 и х3 до уровней «большое» («много») не вызывает увеличения затрат выше среднего уровня (рис. 6.10). При «большом» количестве (10) артистов увеличение х1 и х3 от «среднего» до верхнего уровня приводит к увеличению затрат от среднего уровня до верхнего (до «богатой» свадьбы).

Рис. 6.10. Поверхность при х2=2

Рис. 6.11. Поверхность при х2=10

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