Нейронные сети и нейро нечеткие системы фирмы SIEMENS. Краткий обзор ПО.

Для управления плохо изученных процессов фирма SIEMENS предлагает программный пакет NeuroSystem.

Точность перевода гарантировать не могу, а излагаю то, как сам понял этот пакет ПО, так что буду очень рад, если кто ни будь чего ни будь, добавит.

 

Преимущества и неудобства нейронных сетей

☺ большое преимущество нейронных сетей в решение проблемы, это использование данных из примера. Это данные могут быть в форме ряда измерений.

☺ Другое преимущество нейронных сетей – это их адаптируемость, то есть они могут приспосабливаться к новой ситуации, изменяя свое поведение.

☺ нейронная сеть особенно подходит для моделирования нелинейной зависимости.

? Одно неудобство нейронных сетей — то, что вообще невозможно понять как они решили проблему.

? сеть — не умнее чем данные, которыми Вы «обучили», эту сеть, то есть в примере должно быть адекватное представление проблемы.

 

neuro_1

На рисунке изображен  MP нейрон разработанный У.Маккалоком и У.Питтсом, еще в 1943 году. Нейрон I имеет несколько входов х (к), и один выход Yi (к), где к время, от которого функция нейрона рассматривается.
Из линий входов и выходов видно, что выходное значение зависит только от входных значений, а не наоборот.
(Выход может быть «подаваться обратно» на «дополнительный вход». Этот «нейрон с внутренней обратной связью «не обсуждается здесь.)
На поведение нейронов большое влияние имеет функция веса(Wij)  и функция активации f(U).

Нейрон считается активным, если его выход имеет определенное значение, например, превышает пороговое значение.
Эта деятельность является результатом стимуляции входов и весов нейрона. Весовые коэффициенты  могут способствовать стимуляции, если они больше нуля — или подавлять её, если они меньше нуля. Если весовой коэффициент равен нулю, то вход  не влияет на деятельность нейрона.

  • Наиболее общие функции активации:

 

 

(a)Функция Выключателя:

(b)Сигмойндная функция:

(c)Гиперболический тангенс:

(d)Линейная функция:

 

Следующие диаграммы показывают кривую для каждой функции.

neuro_2

(a) Функция выключателя                                  (b) Сигмойндная функция

 

neuro_3

(с) Гиперболический тангенс                                 (d) Линейная функция
 Статические сети и их свойства
Статические сети достаточно хорошо изучены и уже используются для широкого спектра применений.
Динамические сети возникают потому, что внутренняя обратная связь была внедрена так, что выход нейрона в момент времени к зависит от его собственного выхода в момент к-1 (выход — дополнительный вход). Динамические сети все еще находятся на стадии исследования и редко используются в практике, потому что большая трудность убедиться в их устойчивости и комплексе обучения.

В этом ПО используются три типа нейронных сетей, это: MLP, RBF и NeuroFuzzy.

Многослойный персептрон (MLP Network)
Наверное, самый известный тип нейронной сети является многослойный персептрон. В этом случае, несколько нейронов соединены между собой прямыми связями. В сети MLP, нейроны расположены в несколько слоев. Два слоя, которые соединены с внешним миром называют входной и выходной слои. Слои между входным и выходным слоем, называют скрытые слои. Следующая диаграмма иллюстрирует эту структуру.

neuro_4

Входной слой                                       Скрытые слои                                        Выходной слой

Нейроны входного слоя используются только для распределения входов к нейронам первого, скрытого слоя и поэтому каждый имеет только один вход. Вес входного соединения можно использовать для масштабирования входного сигнала. Входные нейроны являются частным случаем нейрона. Некоторые авторы, не включает входной слой в число слоев в сети. В NEUROSYSTEMS, входной слой учитывается.

Радиально базисные функции  (RBF сети)
Метод, используемый в RBF сети немного отличается от используемого для многослойного персептрона.
Они всегда состоят из трех слоев:
• Входной слой,
• Второй слой RBF нейронов, функция активации которых является функцией Гаусса (как
показано на рисунке ниже),
• И выходного слоя.
neuro_5

Входной слой                       слой RBF                     Выходной слой

( Здесь: j=1 … 3)              (здесь: i=1 … 4)                (здесь: k=1 … 3)

 

 

 NeuroFuzzy сетей (NFN)
Для того, чтобы воспользоваться преимуществами нейронных сетей и нечетких систем в одном проекте, вам потребуется система, которая обрабатывает нечеткие функции принадлежности и правила базы знаний нечеткой модели и может определить знания из выборки данных с использованием нейронных способов обучения.
Вы можете решить эту проблему с помощью специальной нейронной сетью, называемой neurofuzzy сеть (NFN). Она состоит из трех нейронных подсетей (NSN), имитирующие три подзадачи — fuzzification, обработка правил и defuzzification.
 

 

НЕЧЕТКАЯ СИСТЕМА

neuro_6

 

НЕЙРОННАЯ СЕТЬ

 

1) Fuzzification в 1-й слой NSN подсети.
Fuzzification – перевод входных переменных в нечеткий формат, реализует слой нейронов с функцией активации, аналогичной как  в сети RBF. Один нейрон присваивается каждой функции принадлежности входных переменных.

 

 neuro_7

 2) Вывод во 2-ом NSN слое подсети.

Основные правила базы знаний нечеткой системы находится в 2-ом NSN слое, и один нейрон назначен на каждое правило.

3) Defuzzification в 3-ем NSN слое подсети. Преобразование нечетких множеств в четкое число производиться одним из стандартных методов —  центра тяжести.

Получается такая схема.

neuro_8

 

У системы иллюстрированной выше, есть входные сигналы  x1 и x2. Три функции: (Nnegative, Z-ноль, P-positive), распределенные на каждый входной сигнал. Три функции ( N-negative, Z-ноль, P-positive) также приняты для выходного сигнала Y.

 

Демонстрация  программного пакета NEUROSYSTEMS.

Создание сети.
Для демонстрации работы с NEUROSYSTEMS, приводиться очень простой пример: Предположим, контроллер должен выполнить операцию, исключающую ИЛИ, т. е. функцию XOR, для двух входных сигналов. Данные для обучения берутся из таблицы истинности функции XOR:

neuro_9

После запуска программы, создаем новый проект, где указываем, сколько входов и выходов нам нужно, то есть два входа и один выход.

neuro_10

После начальных настроек, открывается блок схема нейронной сети, по умолчанию MLP. Заходим в настройку входа Input01. Нормализуем его, установив верхнюю — один, и нижнюю границу – ноль, для входного сигнала. Тоже проделаем и со вторым входом и выходом.

neuro_11

Еще нужно выбрать тип сети.

NEUROSYSTEMS предоставляет следующие типы сетей:
• MLP сеть (многослойный персептрон)
Этот тип сети подходит, если только относительно небольшой объем обучающих данных.
• RBF сеть (радиально базисные функции)
Этот тип сети должен использоваться, если много данных для  обучения сети.
• NFN сеть (neurofuzzy )
Сети этого типа обрабатывают функции принадлежности и базу знаний нечеткой логики.
По умолчанию устанавливается нейронная сеть MLP (многослойный персептрон).

neuro_13

Далее настраиваем структуру нейронной сети. Структура сети определяется количеством слоев и число нейронов в слоях (для MLP и RBF), или числом функций принадлежности у входов и выходов (для NFN). Входной и выходной слои сети подключаются к внешним устройствам, поэтому число нейронов в этих слоях обязательно совпадает с числом входов и выходов, определенных в проекте.
Количество скрытых слоев может быть выбрано в зависимости от типа сети. Для сети MLP, вы можете выбрать один или два слоя. Для каждого скрытого слоя, вы можете назначить от 1 до 50 нейронов.
Для выбора структуры сети полезна следующая информация:
• Чем меньше  данных для обучения, тем меньше нейронов, вы должны выбрать.
• Начните с малого количества нейронов, и увеличивайте их количество, пока не получите удовлетворительный результат.

  • По мере усложненияфункции, которая будетмоделироватьнейронныесети, число слоевнейроновтакже должна увеличиваться.

neuro_14

 

Процесс обучения

Обучение сети означает выполнение шагов обучения до получения удовлетворяющего результата.
Каждый шаг обучения включает в себя:
• Расчет текущей, фактической на выходе от входного образца;
• Определение текущей разницы между фактической и заданной модели;
• Сравнение с отличием от предыдущего шага;
• Изменение подключение весов нейронов таким образом, что разница между
двумя отличиями становилась  меньше.
Набор связанных данных входной и выходной модели называют обучающим набором данных. Здесь, сеть должна научиться поведению логической функции  XOR с помощью таблицы истинности.
neuro_15

В блокноте составим таблицу истинности и сохраним с расширением .DAT.

Теперь подключим его к проекту.

neuro_17

Посмотрим на учебный набор данных в графическом виде. На рисунке два нижних графика – входные данные, а верхний график – выходные данные.

Четыре значения каждой переменной (входа или выхода) могут быть соединены прямой линией, и отображается в виде кривой сигнала на оси времени. Это интерпретирует изучения данных таким образом, что четыре этапа обучения появится в сети один за другим  к раз.
neuro_18

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

neuro_19

Откроем 3-D дисплей. Выходной сигнал – ось Z, входные сигналы – ось X, Y. На рисунке изображен график зависимости выхода Z от входов X,Y у не обученной сети.

Теперь обучим сеть с помощью таблицы в файле xor.DAT.

При запуске обучения нужно установить предел погрешности и время обучения.

Проверку данных оставим RANDOM(случайный выбор).

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

neuro_21

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

neuro_22

Процесс обучения достигает предела ошибки и завершается успешно после сорока шагов обучения.

А теперь ради эксперимента я увеличил размер обучающих данных простым копированием и при запуске обучения установил опять  проверку данных RANDOM(случайный выбор).

neuro_23
Обучение прошло успешно. Поменяв сеть на RBF, получил похожий результат.

neuro_24

Успешное обучение. Из левого нижнего графика видно, что эта сеть RBF обучается за шесть шагов.

neuro_25

И не успешное обучение.

neuro_26

С большим количеством обучающих данных сеть RBF так же обучилась за меньшее количество шагов.

neuro_27

Сеть NFN еще быстрее обучается, почти за два шага.

neuro_28

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

neuro_29

neuro_30

Только сеть NFN не захотела обучаться с этими данными.

Статья в PDF:Нейронные сети и нейро нечеткие системы фирмы SIEMENS

Оригинал: NEUROSYSTEMS

 

Скачать ПО можно с сайта  фирмы SIEMENS.