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

В этом примере показано, как создать, обучайтесь и протестируйте 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

Нажать ОК. 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. Чтобы задать структуру модели, вы выполняете одну из следующих задач:

  • Загрузите ранее сохраненный объект FIS Sugeno-типа одно выхода из файла или рабочего пространства MATLAB.

  • Сгенерируйте первоначальную модель FIS с помощью разделения сетки.

  • Сгенерируйте первоначальную модель FIS с помощью отнимающей кластеризации.

В данном примере сгенерируйте начальный FIS использование разделения сетки. В Neuro-Fuzzy Designer, в разделе Generate FIS, выбирают Grid partition.

Нажмите Generate FIS.

В диалоговом окне Add Membership Functions:

  • В разделе 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. Затем в окне Rule Editor задайте правила.

Эти инструменты совпадают с используемыми приложением Fuzzy Logic Designer. Для получения дополнительной информации смотрите Сборку Нечеткие Системы Используя Fuzzy Logic Designer.

Просмотрите структуру FIS

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

Dialog box showing the structure of the ANFIS model

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

Кроме того, чтобы просмотреть 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. Затем нажмите 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

Приложение строит выходные значения набора данных тестирования (использующий синий + 's) и выход обученного FIS для соответствующих значений ввода данных тестирования (использующий красный *). Выходные значения 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 выход.

Смотрите также

Похожие темы