3.11.6. Применение нечетких нейронных сетей для аппроксимации функций.

Нечеткие системы являются универсальными аппроксиматорами функций.

Нечеткие нейронные системы можно рассматривать как трехслойную нейронную НС прямого действия. Первый слой здесь представляет входные переменные, средний (скрытый) слой – нечеткие правила и третий – выходные переменные. (Иногда используется 5-слойная архитектура, где нечеткие множества представлены в нейронах 2 – 4 уровней).

Нечеткие нейронные системы аппроксимируют n-мерные неизвестные функции, которые частично определены обучающими данными.

Аппроксимация функций, основанная на локальных обучающих стратегиях, является одной из областей применения НС и в частности нечетких НС. Однако нечеткие НС имеют преимущества перед обычными НС, т.к. могут использовать предыдущие знания в форме нечетких правил, в то время как последние обучаются с нуля.

Ниже будет рассмотрена модель, названная NEFPROX (Neuro-Fuzzy function approximator), основанная на нечетком перцептроне.

Определение. Трехслойным нечетким перцептроном называется прямая нейронная сеть (U,w,Net,A,O,ex), где:

  1. -непустое множество нейронов, - множество индексов. Для всех , и . - входной слой, - слой правил, - выходной слой;
  2. структура НС определена как , где возможно введение соединения , причем , , - множество всех нечетких подмножеств R.
  3. A - определяет активационную функцию для каждого для вычисления активации :
    1. для входных нейронов и нейронов правил:

    2. для выходных нейронов

  4. O определяет для каждого функцию выхода для вычисления выхода
    1. для входных нейронов и нейронов правил ( ):

    2. для выходного нейрона :

      где - удобная функция дефаззификации

  5. NET определяет для каждого нейрона распределение функции для вычисления входа сети :
    1. для входного нейрона :

    2. для нейрона правила :

      ,

      где Т-функция t-нормы (пересечение)

    3. для выходного нейрона :

      ,

      ,

      где t - функция t-нормы (например max)

  6. определяет для каждого нейрона его внешний вход.Для всех других нейронов () ex не определено.

Нечеткий перцептрон можно рассматривать как трехслойную нейронную сеть

со специальными функциями активации и распространения и нечеткими множествами в качестве весов. С другой стороны перцептрон можно рассматривать как нечеткую систему, представленную в виде архитектуры НС.

Система NEFPROX - это специальный трехслойный нечеткий перцептрон со следующей спецификацией:

  1. Входные нейроны, обозначенные как , нейроны скрытого слоя как , нейроны выходного слоя - .
  2. Каждое соединение между нейронами и помечается лингвистическим термом
  3. Каждое лингвистическое соединение между нейронами и помечается лингвистическим термом
  4. Соединения, выходящие из одного нейрона имеют одинаковую пометку и один и тот же вес на протяжении всего времени. Такому же условию удовлетворяют соединения, входящие в выходной нейрон
  5. Пусть - маркированное соединение между входным нейроном x и нейроном R ( нейроном правил – rule neuron). Тогда выполняется следующее следствие:

    Для всех нейронов , таких, что

Это определение дает возможность интерпретировать NEFPROX как простую нечеткую систему. Каждый скрытый нейрон реализует нечеткое правило вида: ЕСЛИ-ТО. Если бы это следствие не выполнялось, то существовала бы возможность нечетким правилам, представляющим одинаковые лингвистические термы развиваться по-разному в процессе обучения.

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

На рис. 4 представлена архитектура NEFPROX.

Рис.4. Архитектура NEFPROX.

Алгоритм обучения системы NEFPROX.

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

Если же у нас нет априорных знаний, то начинаем с системы NEFPROX без скрытого слоя и обучаем все без исключения правила.

Для обучения будем использовать ФП, описываемую тремя параметрами.

Для обучения можно использовать также и любую другую форму ФП. Чтобы начать процедуру обучения мы должны точно определить начальное нечеткое деление каждой входной переменной. Это не требуется для выходных величин, для которых нечеткие множества будут созданы в процессе обучения. Если нечеткие множества не заданы, то тогда нужно четко определить начальный диапазон для функций принадлежности (т.е.).

Рассмотрим структуру алгоритма.

Имеем систему NEFPROX с n входными нейронами , k нейронами скрытого слоя и m нейронами выходного слоя . Задана также цель обучения , состоящая из r образцов, каждый из которых состоит из входного образца и образца (цель обучения), и множества ограничений Ф. Алгоритм обучения, цель которого создать k нейронов правил NEFPROX, состоит из следующих шагов:

  1. Выбираем следующий образец из L.
  2. Для каждого входного нейрона находим ФП такую, что .
  3. Если не существует узла правила R с , то надо создать такой узел и соединить его со всеми узлами выхода.
  4. Для каждого соединения из нового узла правил надо найти удобный нечеткий вес согласно следующей процедуре: для функции принадлежности, связанной с нейроном выхода находим ФП такую, что и . Если не существует такого нечеткого множества, тогда создаем такое, что и добавляем его к нечетким множествам, связанным с переменной выхода и множеством .
  5. Если остались еще не обработанные образцы , тогда идем на шаг (i), иначе заканчиваем создание правил.
  6. Мы вычислили базу правил. Определяем значение выхода для каждой переменной выхода каждого правила, заданного таким образом, чтобы его правило имело степень выполнения больше, чем 0.

Алгоритм обучения с учителем для нечетких множеств системы NEFPROX происходит циклически путем обучения множества L, продолжая следующие шаги, пока не выполнится критерий останова алгоритма обучения.

  1. Выбираем следующий образец из L, пропускаем его через систему NEFPROX и определяем вектор выхода.
  2. Для каждого нейрона выхода определяем разницу между желаемым и действительным значением выхода:
  3. Для каждого нейрона правил R с
    1. Для всех , определяем изменение для параметров a,b и c нечеткого множества , используя скорость обучения . Если , то

      Если , то

      .

      Применяем изменения к , если это не нарушает заданное множество ограничений Ф (вес применяется и к другим связям и значит, он должен быть изменен более 1 раза).

    2. Определяем ошибку правила

    3. Для каждого с определяем изменения для его параметров a, b и c, используя скорость обучения .

      Применяем изменения к весам , если это не нарушает заданное множество ограничений Ф (вес применяется и к другим связям и значит, он должен быть изменен более 1 раза).

  4. Процедура заканчивается, если будет выполнен критерий останова, иначе идем на шаг (i).

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

Каждое правило описывает определенное количество образцов неизвестной функции.

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

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

Ограничения, накладываемые на нечеткие множества:

  1. Нечеткое множество не должно пересекаться со своим соседом, как справа, так и слева во время обучения. Проверить это можно сравнением: остались ли все параметры треугольной ФП меньше (больше) своего правого (левого) соседа. Если мы этого не предусмотрим, то нечеткие множества могут пересекаться, что приведёт к неразберихе в интерпретации, хотя при отсутствии этого ограничения можно добиться определенных улучшений
  2. Асимметричное обучение. В случае если обучение проходит асимметрично, то во время обучения изменяется только та часть функций принадлежности (левая или правая), в которой расположены значения входных переменных
  3. ФП пересекаются в точке 0,5. Если мы примем это допущение, то две соседние ФП будут пересекаться в точке 0,5 и сумма функций принадлежности для выхода будет равна 1. Если мы этого не принимаем, то сумма не будет равна 1.
  4. Фиксированные веса следствий. Применение этого правила означает, что веса следствий фиксируются и равны 1.0. Отсутствие ограничения означает, что мы должны обучить веса следствий
  5. Веса следствий в интервале . Это означает, что веса во время обучения всегда находятся в интервале . В противном случае, веса могут принимать любые значения

Предсказание временных рядов

В качестве примера, показывающего возможности системы NEFPROX, мы рассмотрим хаотические временные ряды, заданные дифференциальным уравнением Макки-Гласса (Mackey-Glass).

Мы будем использовать значения x(t-18), x(t-12), x(t-6) и x(t), чтобы предсказать значения x(t+6). Обучение данных производилось с использованием процедуры Рунге-Кутта с шагом =0.1. В качестве начального состояния временного ряда было взято х(0)=1.2 и . Было создано 1000 значений между t =118 и 1117, где первые 500 использовались уже в обученном виде, а остальные 500 будут настроены в процессе обучения.

Система NEFPROX, которая должна была аппроксимировать временной ряд, имела 4 входных и 1 выходную переменную. Каждая переменная была изначально разделена на 7 одинаковых треугольных нечетких множеств, где соседние функции принадлежности пересекались на уровне 0.5. Мы использовали процесс дефаззификации МОМ (mean-of-maximum) так как система NEFPROX представляет обычную систему Мамдани.

Рис.1. Аппроксимация временных рядов Макки-Гласса с системы NEFPROX.

Эта система имела 105 регулируемых параметров. Также вводилось понятие скорости обучения , начальное значение которой =0.01, которое затем умножалось на 1.1, если ошибка уменьшалась на протяжении 4 последовательных шагов. Если ошибка не изменялась или возрастала, то скорость обучения умножалась на 0.9. Обучение прекращалось, если ошибка правила не уменьшалась на протяжении 100 итераций. Система NEFPROX с наименьшей ошибкой сохранялась во время процесса обучения и восстанавливалась после обучения.

Рис.1. представляет аппроксимацию данной системы после 216 итераций. Значения 1 – 500 представляют собой оттренированные данные до процесса обучения (данные, полученные ранее), а значения 500 – 1000 представляют собой множества, полученные в результате обучения. Процедура процесса обучения создала 129 правил (в данной конфигурации максимально возможное количество правил ). Значение ошибки в ранее полученных данных = 0.0315, и соответственно 0.0332 в данных, полученных во время обучения. Время обучения при использовании пакета SUN UltraSparc составило 75 секунд.