Обучите адаптивные нейро-нечеткие системы вывода

В этом примере показано, как создать, обучить и протестировать нечеткие системы Sugeno-типа с помощью приложения Neuro-Fuzzy Designer. Для получения дополнительной информации о:

Загрузка обучающих данных

Обучение и валидация систем с помощью приложения Neuro-Fuzzy Designer требуют данных. Импортируйте обучающие данные (fuzex1trnData) и данные валидации (fuzex1chkData) в MATLAB® рабочей области.

load fuzex1trnData.dat
load fuzex1chkData.dat

Откройте приложение Neuro-Fuzzy Designer.

neuroFuzzyDesigner

Default Neuro-Fuzzy Designer app dialog with an empty plot and a load data section in the bottom left corner.

Загрузите набор обучающих данных из рабочей области. В Load data разделе выберите Training и worksp.

Нажмите Load Data. В диалоговом окне Загрузка из рабочей области введите имя переменной fuzex1trnData.

Load from workspace dialog box with fuzex1trdData entered as the input variable name

Нажмите OK. Neuro-Fuzzy Designer отображает обучающие данные на графике как набор кругов.

Neuro-Fuzzy Designer app showing a plot of the imported training data

Загрузите данные проверки из рабочего пространства MATLAB в Neuro-Fuzzy Designer. В Load data разделе выберите Checking.

Загрузите проверочные данные так же, как и обучающие данные, задав имя переменной fuzex1chkData. Neuro-Fuzzy Designer отображает данные проверки с помощью знаков плюс, наложенных на обучающие данные.

Neuro-Fuzzy Designer app showing a plot with the imported checking data together with the training data

Чтобы удалить определенный набор данных из приложения, в области Load data выберите Type данных и нажмите Clear Data.

Сгенерируйте или загрузите структуру FIS

Перед началом обучения 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 как тип функции выхода принадлежности.

Add membership functions dialog box showing the selected number and type of input membership functions and the selected output membership function type.

Интерактивная настройка структуры FIS

Кроме того, вы можете в интерактивном режиме задать свою собственную структуру 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

После загрузки или генерации FIS можно просмотреть структуру модели. Для этого, в Neuro-Fuzzy Designer, нажмите Structure.

Dialog box showing the structure of the ANFIS model

Ветви в этом графике закодированы по цвету. Расцветка ветвей характеризует правила и указывает, используются ли в правилах И, НЕ ИЛИ. Вход представлен самым левым узлом, а выход самым правым узлом. Узел представляет коэффициент нормализации для правил. Чтобы просмотреть информацию о структуре, щелкните по каждому узлу.

Кроме того, для просмотра FIS:

  • Функции членства, в Neuro-Fuzzy Designer, выберите Edit > Membership Functions.

  • Правила, в Neuro-Fuzzy Designer, выберите Edit > Rules.

Обучите FIS

После загрузки обучающих данных и генерации исходной структуры FIS можно обучить FIS. Для этого, в Neuro-Fuzzy Designer, в разделе Train FIS, задайте следующие параметры.

  • Optim. Method - Метод оптимизации. В данном примере выберите hybrid метод, который использует комбинацию обратного распространения и регрессии методом наименьших квадратов для настройки параметров FIS.

  • Epochs - Количество циклов обучения. В данном примере задайте 40 эпох.

  • Error Tolerance - ошибка допуска остановке условия. В данном примере задайте значение 0, что указывает на то, что обучение прекратится при достижении количества циклов обучения.

Чтобы обучить FIS, нажмите Train Now.

Neuro-Fuzzy Designer app showing a plot of the training error and testing error for the entire training session.

Приложение обучает FIS и строит график ошибки обучения (как звезды) и ошибки проверки (как точки) для каждой эпохи обучения.

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

Валидация обученной FIS

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

Чтобы проверить FIS на соответствие данным проверки, в разделе Test FIS выберите Checking data. Затем нажмите Test Now.

Neuro-Fuzzy Designer app showing the checking output data together with the output generated by the ANFIS system for the checking input data

Приложение строит графики выходных значений набора тестовых данных (с использованием blue +'s) и выходов обученного FIS для соответствующих входных значений тестовых данных (с использованием red *'s). Выходные значения FIS хорошо коррелируют с ожидаемым выходом.

Важность проверки данных

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

Например, загрузите новое обучение и проверку данных в Neuro-Fuzzy Designer. Эти данные имеют значительно отличающиеся наборы обучения и проверки.

  1. В командной строке MATLAB загрузите обучающие и проверяющие данные.

    load fuzex2trnData.dat
    load fuzex2chkData.dat

  2. Очистить ранее загруженные данные обучения и проверки. В Load data разделе выберите каждый тип данных, нажмите Clear Data.

  3. Загрузите обучающие данные (fuzex2trnData) и проверка данных (fuzex2chkData), как и раньше.

Neuro-Fuzzy Designer app showing training and checking data that is not well-correlated

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

Neuro-Fuzzy Designer app showing large checking error

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

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

Чтобы проверить плохие результаты обучения, проверьте обученную модель FIS на соответствие проверяющим данным.

Neuro-Fuzzy Designer app showing that the output of the fuzzy system for the checking data does not match the expected output.

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

См. также

Похожие темы