Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Моделирование в АГРОИНЖЕНЕРИИ00.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
4.03 Mб
Скачать

8.5. Типы сетей, реализуемых в ппп Neural Network Toolbox

Рассмотрим следующие типы сетей, наиболее известных в литературе и реализуемых в ППП Neural Network Toolbox :

1. Перспетроны;

2. Линейные сети;

3. Радиальные базисные сети;

4. Сети кластеризации и классификации данных;

5. Рекурентные сети.

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

Архитектура персептрона. Нейрон, используемый в модели персептрона, имеет ступенчатую функцию активации hardlim с жесткими ограничениями (рис. 8.10). Каждый элемент вектора входа персептрона взвешен с соответствующим весом w1j, и их сумма является входом функции активации. Нейрон персептрона возвращает 1, если вход функции активации n > 0, и 0, если n < 0.

Рис.8.10. Нейрон персептрона.

Функция активации с жесткими ограничениями придает персептрону способ-ность классифицировать векторы входа, разделяя пространство входов на 2 облас-ти, как это показано на рис. 8.11. для персептрона с двумя входами и смещением.

Рис.8.11. Разделение пространства персептроном на 2 области.

Пространство входов делится на 2 области разделяющей линией L, которая для двумерного случая задается уравнением wTp + b = 0. (8.10.)

Эта линия перпендикулярна к векто-ру весов w и смещена на величину b. Век-торы входа выше линии L соответствуют положительному потенциалу нейрона, и, следовательно, выход персептрона для этих векторов будет равен 1; векторы входа ниже линии L соответствуют выходу персептрона, равному 0. При изменении значений смещения и весов граница линии L изменяет свое положение. Персептрон без смещения всегда формирует разделяю-щую линию, проходящую через начало координат; добавление смещения форми-рует линию, которая не проходит через начало координат, как это показано на рис. 8.11. В случае, когда размерность вектора входа превышает 2, разделяющей границей будет служить гиперплоскость.

Архитектура сети. Персептронная сеть состоит из единственного слоя, включающего S нейронов. Уравнение однослойного персептрона имеет вид:

a = f(Wp + b). (8.11.)

Модель персептрона. Для формирования модели однослойного персептрона предназначена функция newp:

net = newp(PR, S)

со следующими входными аргументами:

PR- массив минимальных и максимальных значений для R элементов входа размера Rx2;

S - число нейронов в слое.

В качестве функции активации персептрона по умолчанию используется функция hardlim.

Пример:

Функция

net = newp([0 2],1);

создает персептрон с одноэлементным входом и одним нейроном; диапазон значений входа - [0 2].

Моделирование персептрона. Рассмотрим однослойный персептрон с одним двухэлементным вектором входа, значения элементов которого изменяются в диапазоне от -2 до 2:

net = newp([-2 2;-2 2],1); % Создание персептрона net

По умолчанию веса и смещение равны 0, и для того, чтобы установить желаемые значения, необходимо применить следующие операторы:

net.IW{l,l}= [-1 1] ; net.b{l} = [1].

В этом случае разделяющая линия имеет вид:

L: -р12+1 = 0. (8.12)

Теперь определим, как откликается сеть на входные векторы р1и р2, располо-женные по разные стороны от разделяющей линии, рис.8.11, и введем:

p1 = [1; 1];

a1 = sim(net, pl) % Моделирование сети net с входным вектором pi;

получим: a1=1;

р2 = [1; -1];

а2 = sim(net, p2) % Моделирование сети net с входным вектором р2

и получим:

а2 = 0.

Персептрон правильно классифицировал эти два вектора.

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

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

Весовая матрица W в этом случае имеет только одну строку и выход сети определяется выражением:

a = purelin(n) = purelin(Wp + b) = Wp + p = w11p1 + w12p2 +b. (8.13)

Подобно персептрону, линейная сеть задает в пространстве входов разделяю-щую линию, на которой функция активации n=0 (рис. 8.13.). Векторы входа, распо-ложенные выше этой линии, соответствуют положительным значениям выхода, а расположенные ниже - отрицательным. Это означает, что линейная сеть может быть применена для решения задач классификации. Однако такая классификация может быть выполнена только для класса линейно разделимых объектов. Таким образом, линейные сети имеют то же самое ограничение, что и персептрон.

Рис.8.12. Линейный нейрон с двумя входами.

Архитектура сети. Архитектура линейной сети аналогична архитектуре персептрона: она включает S нейронов, размещенных в одном слое и связанных с R входами через матрицу весов W.

Создание модели линейной сети. Линейную сеть с одним нейроном, показан-ную на рис. 8.12., можно создать следующим образом:

net = newlin([-1 1; -1 1],1);

Р ис.8.13. Линейная функция активации.

Первый входной аргумент задает диапазон изменения элементов вектора входа; вто­рой аргумент указывает, что сеть имеет единственный выход. Начальные веса и смещение по умолчанию равны 0. Присвоим весам и смещению следующие значения:

net.IW{l,l} = [2 3];

net.b{l> =[-4].

Теперь можно промоделировать линейную сеть для следующего предъявлен-ного вектора входа:

Р = [5;6];

а = sim(net,p);

и получим:

а = 24.

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

Определим линейную сеть с начальными значениями веса и смещения, испо-льзуемыми по умолчанию, т. е. нулевыми; зададим допустимую погрешность обучения, равную 0.1:

р = [2 1 -2 -1;2 -2 2 1];

t = [0 1 0 l]

net = newlin( [-2 2; -2 2],1);

% Инициализация линейной сети с двумя входами и одним выходом

net.trainParam.goal= 0.1;

[net, tr] = train(net,p,t);

После прогона и достижения порогового значения функции качества соответ-ствующие параметры сети принимают значения:

weights =-net.iw{l,1}

bias = net.b(l)

или для данного примера:

weights = -0.061482 -0.21938;

bias = [0.5888].

Mоделирование созданной сети с векторами входа из обучающего множества и вычисление ошибки осуществляется следующим образом:

А = sim(net, p)

err = t - sim(net,P),

равные для данного примера:

А = 0.028173 0.86719 0.2741 0.432

err = -0.028173 0.03282 0.2741 0.568.

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

Модель нейрона и архитектура сети. На рис. 8.14. показана радиальная базис-ная сеть с R входами. Функция активации для радиального базисного нейрона имеет вид:

radbas(n) = e^(n2). (8.14.)

В ход функции активации определяется как модуль разнос-ти вектора весов w и вектора входа р, умноженный на смещение b.

Рис.8.14. Радиальная базисная сеть с R входами.

Радиальная базисная сеть состоит из двух слоев: скрытого радиального базисного слоя, име-ющего S1 нейронов, и выходного линейного слоя, имеющего S2 нейронов (рис.8.15).

В ходами блока ||dist|| на этом рисунке являются вектор входа р и матрица весов IW1,1, выходом - вектор, состоящий из S1 элементов, которые определяются рассто-яниями между i-ым вектором входа р и i-ой вектор-строкой iIW1,1 матрицы весов. Это вектор весов i-го нейрона. Выход блока ||dist|| умножается поэлементно на вектор смещения b1 и формирует вход функции активации. Тогда выход первого слоя может быть записан в следующей форме:

a{l}=radbas (net.prod (dist (net.IW{l, 1} ,p) ,net.b{l}))).

Рис.8.15. Слои радиальной базисной сети.

Создание сети. Для построения радиальных базисных сетей предназначены М-функции newrbe и niewrb. Для построения радиальных базисных сетей с нулевой ошибкой предназначена функция newrbe, которая вызывается следующим образом:

net = newrbe(P, T, SPREAD).

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

Разновидностью радиальной базисной сети является сеть GRNN, предназна-ченная для решения задач обобщенной регрессии, анализа временных рядов и аппроксимации функций, которая вызывается оператором newgrnn.

В качестве примера приведем пример обучения и моделирования следующей радиальной сети:

P = [1 2 3 4 5 6 7 8];% Входной вектор

T = [0 1 2 3 2 1 2 1];выходной вектор

% Аппроксимировать, т.е.найти весовые коэффициенты W и b, позволяющие по входной величине p найти величину a.

Определим первоначально параметр влияния:

spread = 0.7;

Сформируем сеть:

net = newgrnn(P,T,spread);

Смоделируем сеть по входному вектору P:

A = sim(net,P)

Зададим входную величину p, по которой необходимо найти выходную величину а:

p = 3.5;

a = sim(net,p)

Результат:

а=2.5.

или по последовательности, например,

P2 = 3: 7; % входная величина изменяется от 0 до 8 с шагом 0.1

Результат:

A2 = sim(net,P2)

А2=2, 3, 2, 1, 2,

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

М-функция newrb позволяет управлять коичеством нейронов скрытого слоя.

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

Самоорганизующиеся нейронные сети. Свойство самоорганизации является одним из наиболее привлекательных свойств нейронных сетей. Таким свойством обладают самоорганизующиеся нейронные сети Кохонена. Нейроны самооргани-зующейся сети могут быть обучены выявлению групп (кластеров) векторов входа, обладающих некоторыми общими свойствами.

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

Архитектура слоя Кохонена показана на рис. 8.16. Здесь использован блок ndist для вычисления отрицательного евклидова расстояния между вектором входа р и строками матрицы весов IW'. Вход функции активации n' - это результат суммирования вычисленного расстояния с вектором смещения b.

Р ис.8.16. Архитектура слоя Кохонена.

Конкурирующая функция активации анализирует значения элементов вектора n' и формирует выходы нейронов, равные 0, для всех нейронов, кроме одного нейрона - победителя, имеющего на входе максимальное значение. Таким образом, вектор выхода слоя а' имеет единственный элемент, равный 1, который соответствует нейрону-победителю, а остальные равны 0.

Номер активного нейрона С определяет ту группу (кластер), к которой наиболее близок входной вектор.

Создание сети. Для формирования слоя Кохонена предназначена М-функция newc.

Предположим, что задан массив из четырех двухэлементных векторов, которые надо разделить на 2 класса:

р = [0.1 0.8 0.1 0.8; 0.2 0.8 0.1 0.8].

В этом примере 2 вектора расположены вблизи точки (0,0) и 2 вектора - вблизи точки (1,1). Сформируем слой Кохонена с двумя нейронами для анализа двухэле-ментных векторов входа с диапазоном значений от 0 до 1:

net = newc([0 1; 0 l],2);

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

Рекурентные сети. Характерной особенностью архитектуры рекурентной сети является наличие блоков динамической задержки и обратных связей. Это позволяет таким сетям обрабатывать динамические модели. К подобным сетям относятся сети Элмана.

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

Создание сети. В ППП NNT для создания сети Элмана предусмотрена М-функция newelm

Архитектура сети Элмана - это, как правило, двухслойная сеть с обратной связью от выхода ко входу первого слоя (рис. 8.17). В качестве функций активации в сети Элмана часто используются: в скрытом, рекурентном слое - функция гиперболического тангенса tansig, в линейном слое - функция purelin.

Рис.8.17. Архитектура сети Элмана.