В этом примере показано, как создать, обучить и протестировать нечеткие системы Sugeno-типа с помощью приложения Neuro-Fuzzy Designer. Для получения дополнительной информации о:
Нейроадаптивные нечеткие системы, см. Нейроадаптивное Обучение и ANFIS.
Обучение нейроадаптивных нечетких систем в командной строке, см. anfis
.
Обучение и валидация систем с помощью приложения Neuro-Fuzzy Designer требуют данных. Импортируйте обучающие данные (fuzex1trnData
) и данные валидации (fuzex1chkData
) в MATLAB® рабочей области.
load fuzex1trnData.dat load fuzex1chkData.dat
Откройте приложение Neuro-Fuzzy Designer.
neuroFuzzyDesigner
Загрузите набор обучающих данных из рабочей области. В Load data разделе выберите Training и worksp.
Нажмите Load Data. В диалоговом окне Загрузка из рабочей области введите имя переменной fuzex1trnData
.
Нажмите OK. Neuro-Fuzzy Designer отображает обучающие данные на графике как набор кругов.
Загрузите данные проверки из рабочего пространства MATLAB в Neuro-Fuzzy Designer. В Load data разделе выберите Checking.
Загрузите проверочные данные так же, как и обучающие данные, задав имя переменной fuzex1chkData
. Neuro-Fuzzy Designer отображает данные проверки с помощью знаков плюс, наложенных на обучающие данные.
Чтобы удалить определенный набор данных из приложения, в области Load data выберите Type данных и нажмите Clear Data.
Перед началом обучения FIS необходимо задать начальную структуру модели FIS. Чтобы задать структуру модели, вы выполняете одну из следующих задач:
Загрузите ранее сохраненный объект single-output Sugeno-type FIS из файла или рабочего пространства MATLAB.
Сгенерируйте исходную модель FIS с помощью разделения сетки.
Сгенерируйте исходную модель FIS с помощью вычитающей кластеризации.
В данном примере сгенерируйте исходную FIS с помощью секционирования сетки. В Neuro-Fuzzy Designer в Generate FIS разделе выберите Grid partition.
Нажмите Generate FIS.
В диалоговом окне «Добавление функций принадлежности» выполните следующие действия.
В Input разделе, в Number of MFs, укажите количество входных функций принадлежности. В данном примере используйте 4
функции принадлежности для всех входных переменных.
В MF Type выберите gbellmf
как тип функции входа принадлежности.
В Output разделе, в MF Type, выберите linear
как тип функции выхода принадлежности.
Кроме того, вы можете в интерактивном режиме задать свою собственную структуру FIS с указанными функциями и правилами членства. Заданная система должна быть системой Sugeno со следующими свойствами:
Один выход
Средневзвешенная дефаззификация
Система первого или нулевого порядка; то есть все выходные функции членства должны быть одного и того же типа 'linear'
или 'constant'
.
Нет совместного использования правил. Различные правила не могут использовать одну и ту же функцию выхода принадлежности; то есть количество выходных функций членства должно равняться количеству правил.
Вес единицы для каждого правила.
Нет пользовательских функций членства или методов дефаззификации.
Чтобы определить:
Функции принадлежности для каждой переменной, в Neuro-Fuzzy Designer, выберите Edit > Membership Functions. Затем в окне Membership Function Editor определите функции членства.
Правила, в Neuro-Fuzzy Designer, выберите Edit > Rules. Затем в окне Редактор задайте правила.
Эти инструменты те же, что и используемые Fuzzy Logic Designer приложения. Для получения дополнительной информации смотрите Создайте Нечеткие Системы Используя Fuzzy Logic Designer.
После загрузки или генерации FIS можно просмотреть структуру модели. Для этого, в Neuro-Fuzzy Designer, нажмите Structure.
Ветви в этом графике закодированы по цвету. Расцветка ветвей характеризует правила и указывает, используются ли в правилах И, НЕ ИЛИ. Вход представлен самым левым узлом, а выход самым правым узлом. Узел представляет коэффициент нормализации для правил. Чтобы просмотреть информацию о структуре, щелкните по каждому узлу.
Кроме того, для просмотра FIS:
Функции членства, в Neuro-Fuzzy Designer, выберите Edit > Membership Functions.
Правила, в Neuro-Fuzzy Designer, выберите Edit > Rules.
После загрузки обучающих данных и генерации исходной структуры FIS можно обучить FIS. Для этого, в Neuro-Fuzzy Designer, в разделе Train FIS, задайте следующие параметры.
Optim. Method - Метод оптимизации. В данном примере выберите hybrid
метод, который использует комбинацию обратного распространения и регрессии методом наименьших квадратов для настройки параметров FIS.
Epochs - Количество циклов обучения. В данном примере задайте 40
эпох.
Error Tolerance - ошибка допуска остановке условия. В данном примере задайте значение 0
, что указывает на то, что обучение прекратится при достижении количества циклов обучения.
Чтобы обучить FIS, нажмите Train Now.
Приложение обучает FIS и строит график ошибки обучения (как звезды) и ошибки проверки (как точки) для каждой эпохи обучения.
Ошибка проверки уменьшается до определенной точки в обучении, а затем увеличивается. Это увеличение происходит в точке, где обучение начинает избыточно подгонять обучающие данные. Приложение выбирает FIS, связанный с этой избыточной точкой, в качестве обученной модели ANFIS.
После обучения FIS проверьте модель с помощью Testing или Checking набора данных, который отличается от обучающих данных. В данном примере используйте ранее загруженные данные проверки.
Чтобы проверить FIS на соответствие данным проверки, в разделе Test FIS выберите Checking data. Затем нажмите Test Now.
Приложение строит графики выходных значений набора тестовых данных (с использованием blue +'s) и выходов обученного FIS для соответствующих входных значений тестовых данных (с использованием red *'s). Выходные значения FIS хорошо коррелируют с ожидаемым выходом.
Важно иметь данные проверки, которые полностью представляют функции данных, для моделирования которых предназначена FIS. Если ваши проверяющие данные значительно отличаются от обучающих данных и не охватывают те же функции данных, что и обучающие данные, то результаты обучения будут плохими.
Например, загрузите новое обучение и проверку данных в Neuro-Fuzzy Designer. Эти данные имеют значительно отличающиеся наборы обучения и проверки.
В командной строке MATLAB загрузите обучающие и проверяющие данные.
load fuzex2trnData.dat load fuzex2chkData.dat
Очистить ранее загруженные данные обучения и проверки. В Load data разделе выберите каждый тип данных, нажмите Clear Data.
Загрузите обучающие данные (fuzex2trnData
) и проверка данных (fuzex2chkData
), как и раньше.
Сгенерируйте структуру FIS и обучите FIS, как вы это делали ранее, за исключением того, что теперь выбираете 60
эпохи обучения.
В этом случае ошибка проверки велика, при этом минимум происходит в первую эпоху. Поскольку приложение выбирает обученные параметры FIS, сопоставленные с минимальной ошибкой проверки, обученная FIS недостаточно улавливает функции этого набора данных. Важно хорошо знать функции вашего набора данных, когда вы выбираете свои обучающие и проверяющие данные. Когда вы не знаете функций своих данных, можно проанализировать графики ошибок проверки, чтобы увидеть, выполняются ли данные проверки достаточно хорошо с обученной моделью.
В этом примере ошибка проверки достаточно велика, чтобы указать, что либо необходимо выбрать больше данных для обучения, либо изменить выбор функции принадлежности (количество функций принадлежности и тип). В противном случае, если вы считаете, что обучающие данные в достаточной степени захватывают функции, которые вы пытаетесь представлять, система может быть переобучена без данных проверки.
Чтобы проверить плохие результаты обучения, проверьте обученную модель FIS на соответствие проверяющим данным.
Как ожидалось, существуют значительные различия между выходными значениями проверяющих данных и выходными данными FIS.