Предположим, что вы хотите применить нечеткий вывод к системе, для которой у вас уже есть набор входных/выходных данных, которые вы хотели бы использовать для моделирования, следования модели или некоторого подобного сценария. Кроме того, предположим, что у вас не обязательно есть предопределенная структура модели, основанная на характеристиках переменных в вашей системе. В некоторых ситуациях моделирования различение параметров функций принадлежности при рассмотрении данных может быть трудным или невозможным. В этих случаях, вместо произвольного выбора параметров, связанных с заданной функцией принадлежности, можно настроить параметры функции принадлежности к входным/выходным данным. Используя программное обеспечение Fuzzy Logic Toolbox™, можно настроить системы нечеткого вывода Sugeno с помощью нейроадаптивных методов обучения, аналогичных тем, которые используются для настройки нейронных сетей.
Программное обеспечение Fuzzy Logic Toolbox обеспечивает функцию командной строки (anfis
) и интерактивное приложение (Neuro-Fuzzy Designer) для настройки адаптивной нейро-нечеткой системы вывода (ANFIS).
Используя методы обучения ANFIS, можно обучить системы Sugeno со следующими свойствами:
Один выход
Средневзвешенная дефаззификация
Система первого или нулевого порядка; то есть все выходные функции членства должны быть одного и того же типа 'linear'
или 'constant'
.
Нет совместного использования правил. Различные правила не могут использовать одну и ту же функцию выхода принадлежности; то есть количество выходных функций членства должно равняться количеству правил.
Вес единицы для каждого правила.
Нет пользовательских функций членства или методов дефаззификации.
Создать такую нечеткую систему в MATLAB® рабочая область, можно:
Используйте genfis
функция. При использовании этого метода можно создать систему с помощью секционирования сетки или вычитания кластеризации. Разделение сетки может привести к большому количеству правил, когда количество входов достигает четырех или пяти. Чтобы уменьшить количество правил, рассмотрите использование метода вычитающей кластеризации.
Используйте приложение Fuzzy Logic Designer и экспортируйте FIS в рабочее пространство MATLAB.
Используйте sugfis
функция.
Загрузите систему из файла, используя readfis
функция.
При обучении вашей системы с помощью anfis
function, задайте начальную структуру путем создания anfisOptions
набор опций и установка InitialFIS
свойство. Если вы не задаете это свойство, anfis
функция выводит структуру FIS с помощью разделения сетки.
При использовании Neuro-Fuzzy Designer, в разделе Generate FIS, можно создать FIS путем:
Загрузка из файла (выберите Load from file)
Загрузка из рабочего пространства MATLAB (выберите Load from worksp)
Использование разделения сетки (выбор Grid partition)
Использование вычитающей кластеризации (выбор Sub. clustering)
Чтобы обучить нечеткую систему с помощью нейроадаптивных методов, вы должны собрать входные/выходные обучающие данные с помощью экспериментов или симуляций системы, которую вы хотите смоделировать. В целом обучение ANFIS работает хорошо, если обучающие данные полностью отражают функции данных, которые предназначены для моделирования обученной FIS.
Чтобы указать свои обучающие данные, вы можете:
Создайте массив в рабочем пространстве MATLAB. Каждая строка содержит точку данных с конечным столбцом, содержащим выходное значение и оставшиеся столбцы, содержащие входные значения. Затем можно передать эти данные в trainingData
входной параметр anfis
функцию или загрузить ее в приложение Neuro-Fuzzy Designer.
Загрузка данных из .dat
файл. Каждая линия файла содержит точку данных со значениями, разделенными пустым пространством. Конечное значение в каждой линии является выходом, а остальные значения являются входами.
При использовании anfis
функция, создайте или загрузите входные данные и передайте их в trainingData
входной параметр.
При использовании Neuro-Fuzzy Designer, в Load data разделе, выберите Training, а затем:
Чтобы загрузить данные из файла, выберите file.
Чтобы загрузить данные из рабочего пространства MATLAB, выберите worksp.
Оба anfis
и Neuro-Fuzzy Designer позволяют вам настроить метод оптимизации, количество циклов обучения и цель ошибки обучения. Однако, anfis
предоставляет дополнительные опции обучения для управления размером шага обучения.
Опция | anfisOptions Свойство | Neuro-Fuzzy Designer настройки |
---|---|---|
Метод оптимизации | OptimizationMethod | В Train FIS разделе задайте Optim. Method. |
Количество циклов обучения | EpochNumber | В Train FIS разделе задайте Epochs. |
Цель ошибки обучения | ErrorGoal | В Train FIS разделе задайте Error Tolerance. |
Начальный размер шага | InitialStepSize | Недоступно |
Скорость уменьшения размера шага | StepSizeDecreaseRate | |
Скорость увеличения размера шага | StepSizeIncreaseRate |
Чтобы обучить нечеткую систему с помощью ANFIS, программное обеспечение Fuzzy Logic Toolbox использует алгоритм обратного распространения либо отдельно, либо в сочетании с алгоритмом наименьших квадратов. Этот процесс обучения настраивает параметры функции принадлежности FIS таким образом, чтобы система моделировала ваши входные/выходные данные.
В следующей таблице показаны два метода, которые оба anfis
и Neuro-Fuzzy Designer использования для обновления параметров функции принадлежности.
Метод оптимизации | anfisOptions Настройка | Neuro-Fuzzy Designer настройки |
---|---|---|
Обратное распространение для всех параметров (метод наискорейшего спуска) | OprimizationMethod = 'backpropagation' | В Train FIS разделе под Optim. Method выберите backpropa . |
Гибридный метод, состоящий из обратного распространения параметров, связанных с функциями принадлежности входа, и оценки методом наименьших квадратов для параметров, связанных с функциями принадлежности выхода | OprimizationMethod = 'hybrid' | В Train FIS разделе под Optim. Method выберите hybrid . |
При обучении с использованием anfis
функция, вы можете настроить опции размера шага обучения. Во время обучения программное обеспечение обновляет размер шага согласно следующим правилам:
Если ошибка претерпевает четыре последовательных сокращения, увеличьте размер шага, умножив его на константу (StepSizeIncreaseRate
) больше единицы.
Если ошибка претерпевает две последовательные комбинации из одного увеличения и одного сокращения, уменьшите размер шага, умножив его на константу (StepSizeDecreaseRate
) меньше единицы.
В идеале размер шага увеличивается в начале обучения, достигает максимума, а затем уменьшается на оставшуюся часть обучения. Чтобы достичь этого профиля размера шага, настройте начальный размер шага (InitialStepSize
), скорость увеличения размера шага и скорость уменьшения шага размера шага.
При обучении с использованием anfis
можно задать, какую информацию о процессе обучения отображать в Командном окне MATLAB. Использование anfisOptions
набор опций, можно задать следующие параметры отображения.
DisplayANFISInformation
- Отображение информации ANFIS в начале обучения
DisplayErrorValues
- Отображение ошибки обучения в каждую эпоху
DisplayStepSize
- Отображать размер шага каждый раз, когда он изменяется.
DisplayFinalResults
- Отображение окончательной ошибки обучения и ошибки валидации
Neuro-Fuzzy Designer не задает пользовательские параметры отображения. Вместо этого он отображает процесс обучения как график.
Данные валидации позволяют вам проверить возможность обобщения обученной системы нечеткого вывода. Данные валидации должны полностью представлять функции данных, для моделирования которых предназначена FIS, при этом достаточно отличаются от обучающих данных для тестирования обобщения обучения. Программное обеспечение использует этот набор данных для перекрестной проверки модели нечеткого вывода путем применения данных валидации к модели и просмотра того, насколько хорошо модель реагирует на эти данные.
Валидация модели полезна в следующих ситуациях:
Зашумленные данные - В некоторых случаях данные собираются с помощью шумных измерений, и обучающие данные не могут представлять все функции данных, для моделирования которых предназначена FIS.
Overfitting - Поскольку структура модели, используемая для ANFIS, фиксирована с большим количеством параметров, существует тенденция к тому, чтобы модель перевыполняла данные, на которых она обучается, особенно при использовании большого количества циклов обучения. Если сверхподбор кривой все же происходит, обученная FIS может плохо обобщаться к другим независимым наборам данных.
Идея, лежащая в основе использования набора данных проверки для валидации модели, заключается в том, что после определенной точки в процессе обучения модель начинает избыточно подгонять набор обучающих данных. В принципе, ошибка модели для набора данных проверки уменьшается до точка, когда начинается сверхподбор кривой. После этой точки ошибка модели для данных проверки увеличивается. Сверхподбор кривой учитывается путем тестирования обученной FIS по данным проверки и выбора параметров функции принадлежности, которые будут связаны с минимальной ошибкой проверки, если эти ошибки указывают на сверхподбор кривой модели.
Обычно наборы обучающих и проверяющих данных собираются на основе наблюдений целевой системы и затем хранятся в отдельных файлах. Чтобы задать данные валидации при использовании:
anfis
function, создать anfisOptions
Объекту и установите ValidationData
опция.
Neuro-Fuzzy Designer в Load data разделе выберите Checking.
Массивы и форматы файлов для проверяющих данных те же, что и для обучающих данных.
Когда вы обучаете свою нечеткую систему, используя anfis
функция, можно получить следующие обученные нечеткие системы:
The fis
выходной аргумент является нечеткой системой, для которой ошибка обучения минимальна. Эта система всегда возвращается anfis
функция, и соответствует FIS, возвращенной по Neuro-Fuzzy Designer, когда вы не задаете данные проверки.
The chkFIS
выходной аргумент является нечеткой системой, для которой ошибка валидации минимальна. Эта система возвращается только тогда, когда вы задаете данные валидации используя anfisOptions
, и соответствует FIS, возвращенной по Neuro-Fuzzy Designer при задании данных проверки. Этот объект FIS является объектом, который следует использовать для последующего вычисления, если данные проверки используются для перекрестной проверки.
Можно получить ошибку, связанную с каждой из обученных нечетких систем. В каждом случае возвращенная ошибка является корневой средней квадратичной невязкой (RMSE) и возвращается как вектор. Каждый элемент вектора является значением ошибки RMSE в каждую эпоху обучения.
Ошибка обучения - Различие между выходным значением обучающих данных и выходом системы нечеткого вывода для соответствующих входных значений обучающих данных.
Ошибка валидации - Различие между выходным значением проверяющих данных и выходом системы нечеткого вывода для соответствующих входных значений проверяющих данных. Эта ошибка возвращается только, когда вы задаете данные валидации используя anfisOptions
.
Во время обучения приложение Neuro-Fuzzy Designer строит графики обучения и проверки ошибки для каждой эпохи обучения. Экспорт обучения и проверка ошибки из приложения не поддерживается. Чтобы получить ошибку обучения, необходимо переобучить систему из командной строки. Например, см. «пример обучающих данных об ошибках в рабочем пространстве MATLAB».
Для дальнейшего тестирования вашей обученной нечеткой системы можно использовать дополнительный набор данных проверки, которые вы не использовали для обучения или валидации. Для этого:
При обучении системы в командной строке используйте evalfis
функция.
При использовании Neuro-Fuzzy Designer в Load data разделе выберите Testing и нажмите Load Data. Чтобы оценить обученную систему для любого загруженного набора данных, в разделе Test FIS выберите набор данных и нажмите Test Now.
Приложение Neuro-Fuzzy Designer управляет эпохами обучения способом, отличным от anfis
функция. Это различие создает изменения в результатах обучения.
Чтобы обучить систему для N эпох в командной строке, вы вызываете anfis
один раз, задавая количество эпох как N. Однако приложение Neuro-Fuzzy Designer вызывает anfis
N функции, задающие количество эпох как 2
каждый раз.
Пример командной строки, который демонстрирует Neuro-Fuzzy Designer алгоритма настройки, см. в разделе Сохранение обучающих данных об ошибках в рабочей области MATLAB.
[1] Джанг, Ж.-С. R., «Fuzzy Modeling Using Generalized Neural Networks and Фильтр Калмана Algorithm», Proc. of the Ith National Conference on Artificial Intelligence (AAAI-91), pp. 762-767, July 1991.
[2] Джанг, Ж.-С. R., «ANFIS: Adaptive-Network Based Fuzzy Inference Systems», Транзакции IEEE по системам, человеку и кибернетике, том 23, № 3, стр. 665-685, май 1993 года.
[3] Jang, J.-S.R., and N. Gulley. «Табличное Управление Based Fuzzy Controller Design». В NAFIPS/IFIS/NASA "94. Материалы Первой международной совместной конференции Североамериканского общества нечеткой обработки информации Industrial Fuzzy Control and Intelligent Systems Conference, and the NASA Joint Technology Wo, 101-5. Сан-Антонио, Техас, США: IEEE, 1994.
[4] Джанг, Ж.-С.Р. и Chuen-Tsai Sun. «Нейро-нечеткое моделирование и управление». Материалы IEEE 83, № 3 (март 1995 года): 378-406.
[5] Jang, Jyh-Shing Roger, Chuen-Tsai Sun, and Eiji Mizutani. Нейро-нечеткие и мягкие вычисления: вычислительный подход к обучению и машинному интеллекту. Серия учебных программ MATLAB. Верхняя Седл-Ривер, Нью-Джерси: Prentice Hall, 1997.
[6] Ван, Ли-Синь. Адаптивные нечеткие системы и управление: Проект и анализ устойчивости. Englewood Cliffs, NJ: PTR Prentice Hall, 1994.
[7] Widrow, B. and D. Stearns, Adaptive Signal Processing, Prentice Hall, 1985.