Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

5336

.pdf
Скачиваний:
1
Добавлен:
13.11.2022
Размер:
1.25 Mб
Скачать

31

DFGS алгоритм Бройдена, Флетчера, Гольдфарба и Шанно;

OSS одношаговый алгоритм метода секущих плоскостей (алгоритм Баттини);

LM алгоритм ЛевенбергаМарквардта;

BR алгоритм ЛевенбергаМарквардта с регуляризацией по Байесу.

В процессе работы алгоритмов минимизации функционала ошибки часто возникает задача одномерного поиска минимума вдоль заданного направления.

Для этих целей используется метод золотого сечения GOL, алгоритм Брента BRE,

метод половинного деления и кубической интерполяции HYB, алгоритм Чараламбуса CHA и алгоритм перебора с возвратом BAC.

Линейная сеть – это один слой из S нейронов и R входов, каждый из которых может состоять из нескольких элементов. Передаточной функцией каждого нейрона слоя является линейная функция purelin. Это является единственным отличием линейной сети от персептрона. Благодаря линейной передаточной функции каждый выход сети может принимать любое значение, в то время как выход персептрона ограничен значениями 1 и 0.

Линейные сети, как и персептроны, способны решать только линейно отделимые задачи классификации, однако в них используется правило обучения по методу Вудроу–Хоффа, основанное на использовании функции наименьших квадратов, которое является более мощным, чем правило обучения персептрона.

Помимо основных входов нейроны линейной сети имеют вход для постоянного смещения, равного единице. Элементы входов и смещения взвешиваются с помощью функции скалярного произведения dotprod и

суммируются с помощью функции накопления netsum.

Линейная нейронная сеть может быть создана одним из следующих способов:

net=newlin(PR, S, id, lr),

net=newlin(PR, S, 0, P), net=newlind(P, T),

где PR – массив размера R*2 минимальных и максимальных значений для R

векторов входа;

32

S – число нейронов;

id – описание линии задержки на входе сети, по умолчанию [0]; lr – параметр скорости настройки, по умолчанию 0,01;

P – обучающие последовательности входов размера R*Q, причем

Q – количество последовательностей;

Т – последовательность целей для Р размера S*Q;

0 – нуль. .

Первый способ применяется, когда в сеть включаются задержки, т. е. для создания динамических адаптивных линейных нейронных сетей ADALIN (ADApture Linear Neuron networks), которые позволяют корректировать веса и смещения при поступлении на вход каждого элемента обучающего множества.

Такие сети широко применяются при решении задач обработки сигналов и в системах управления.

Второй способ формирует линейный слой с параметром скорости настройки,

гарантирующим максимальную степень устойчивости для данного входа Р. В этом случае линии задержки не используются и сеть является статической.

Для первого и второго способа инициализация сети проводится при её создании с помощью функции initzero. Адаптация и обучение сети затем осуществляется с помощью функции adaptwb, которая модифицирует веса и смещения, используя функцию Видроу – Хоффа hearnwh до тех пор, пока не будет достигнуто требуемое значение критерия качества обучения в виде средней квадратичной ошибки, вычисляемой функцией mse.

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

[W b]*[P;ones]=T,

при этом должно выполняться условие

33

S*R + S = Q.

Функция learnwh вычисляет приращение весов входов и смещений по следующим векторным формулам:

pn = p/(sqrt(1+P(1)^2)+… +P(R)^2);

dW = lr*e*pn;

db = lr*e.

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

этом случае сеть считается переопределённой. Если число параметров слишком велико, сеть считается не доопределённой. И в том и в другом случае метод наименьших квадратов осуществляет настройку, стремясь минимизировать ошибку сети.

Архитектура однослойной линейной сети полностью определяется задачей,

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

 

Самостоятельная работа

 

 

Задание

1.

Для функции

активации

с жёсткими ограничениями

hardlim

и

её

производной

dhardlim,

определяемыми следующими

соотношениями:

0, n 0; hard lim(n)

1, n 0;

0, n 0; dhard lim(n)

0, n 0,

выполнить следующие действия:

1. Выдать на экран информацию об этих функциях с помощью следующих команд:

name=hardlim(′name′)

– полное название функции;

dname=hardlim(′deriv′)

– название производной;

inrange=hardlim(′active′)

– диапазон входа;

outrange=hardlim(′output′)

– диапазон выхода;

34

2. Построить графики функций:

n=-5:0,1:5; a=hardlim(n);

da=dhardlim(n);

plot(n,a,′r′) – график функции активации – красный;

hard on

plot (n,da,′c′) – график производной – голубой;

Задание 2. Для гиперболической тангенциальной функции активации tansig и

её производной dtansig определяемыми соотношениями tansig(n) = 2 / (1 + e-2n) – 1;

dtansig(n) = 1 – tansig2(n),

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

Новый скрипт записать в файл под именем tansigfile.

Задание 3. Для конкурирующей функции активации compet, используемой для формирования вероятных и самоорганизующихся нейронных сетей, выполнить

следующие действия:

1. Выдать на экран информацию об этой функции с помощью

следующего скрипта:

 

Name = compet(′name′)

– cometitive;

Dname = compet(′dеriv′)

– ″;

Inrange = compet(′active′)

– -in : inf;

Outrange = compet(′outrut′)

– 0 1.

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

35

N = [0; 1; - 0.5; 0.5];

A = compet(n);

subplot(2, 1, 1), – подокна 2 ×1; вывод в 1-е;

bar(n),

– столбцовая диаграмма;

ylabet(‘n’)

– метка оси ординат;

subplot(2, 1, 2), bar(a), ylabet(‘a’) – во 2-м подокне.

3. Рассмотренную последовательность команд оформить в виде скрипта в М-

файл с именем competlile.

Задание 4. Для нейрона с двумя непрерывными входами р1 и р2 и функции активации hardlim построить график разделяющей линии, определяемой уравнением

W11p1 + W12p2 + b = 0,

считая, что значения весовых коэффициентов W11 W12 и смещения b заданы.

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

Задание 5. Используя блоки имитационного моделирования инструментального пакета Simulink системы MATLAB (блоки источников и регистраторов сигналов, математические и нелинейные блоки) построить рассмотренные в заданиях модели нейронов, провести исследования моделей нейронов и оформить в электронном виде отчёт с помощью генератора отчётов

Simulink.

Задание 6. Адаптировать параметры однослойной статической линейной сети с двумя входами для аппроксимации линейной зависимости вида t 2 p1 p2 ,

выполнив следующие действия:

36

1. С помощью конструктора линейного слоя

net = newlin(PR, s, id, lr),

где PR – массив размера Rx2 минимальных и максимальных значений для R

векторов входа; s – число нейронов в слое; id – описание линий задержек на входе слоя; lr – параметр скорости настройки, сформировать линейную сеть:

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

Задание 7. Создать и инициализировать трёхслойную сеть с двумя входами для последующего обучения сети методом обратного распространения ошибки,

выполнив следующие действия:

1. Создать шаблон сети:

net5 = network(2, ... – число входов;

3, ... – число слоёв сети; [1; 1; 1], ... – связь смещений; [1 1 ; 0 0; 0 0], ... – связь входов;

[ 0 0 0 ; 1 0 0 ; 0 1 0], ... – связь слоёв; [0 0 1], ... – связь выходов; [0 0 1] ); – связь целей.

Задание 8. Создать и инициализировать трёхслойную сеть с двумя входами для последующего обучения различными методами, выполнив следующие действия:

1. Создать шаблон сети, воспользовавшись шаблоном net5:

net6 = net5; – создание новой копии сети;

net6 = revert(net5); – возврат к настройке параметров по умолчанию.

2. Настроить параметры сети с помощью функции инициализации

нулевых значений весов и смещений initzero:

net6.initFcn = ′initlay′;

net6.layers{1}.initFcn = ′initnw′;

net6.layers{2}.initFcn = ′initnw′;

37

net6.layers{3}.initFcn = ′initnw′; net6.inputWeights{1 ,1}.initFcn = ′initzero′; net6.inputWeights{1 ,2}.initFcn = ′initzero′; net6.layerWeights{2 ,1}.initFcn = ′initzero′; net6.layerWeights{3 ,2}.initFcn = ′initzero′; net6.biases{1}.initFcn = ′initzero′; net6.biases{2}.initFcn = ′initzero′; net6.biases{3}.initFcn = ′initzero′; net6.init(net6); – инициализация сети.

3.Выдать на экран матрицы весов и смещения, используя команды 3-го пункта 5-го задания.

4.Промоделировать сеть и возвратить её к исходным значениям весов и смещений:

Ynet6 = sim(net6);

net6 = revert(net6).

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

Правила приёма таковы:

1.Проходной балл для абитуриентов, не имеющих льгот, должен быть

равен 11.

2.Удовлетворительные оценки по математике и физике для этой категории абитуриентов недопустимы.

3.Абитуриенты, которые имеют льготы, зачисляются при любых положительных оценках по всем трём предметам.

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

38

тестового множества построить дискретную имитационную модель, используя инструментальный пакет Simulink.

Пример выполнения Лабораторной работы 3

1. Создание нейрона, выполняющего функцию логического И

net=newp([1 3; -4 8], 1); % создание нейрона с одним двухэлементным входом

(интервал первого элемента [1; 3] и интервал второго элемента [-4; 8])

P1={[1; 1] [1; 2] [2; 1] [2; 2]}; % создание последовательности значений входа

Y=sim(net, P1); % имитация работы нейрона net на последовательность входов P1

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

T1={1, 1, 1, 2}; % создаётся последовательность выхода. net.adaptParam.passes=15; % установка количества проходов (циклов) адаптаций net=adapt(net, P1, T1); % адаптация нейрона net для обучения выборки <P1; T1>

Y=sim(net, P1); % симулируем работу нейрона net на последовательность входов

P1.

2.Обучение нейрона выполнению функции логического ИЛИ

P2=[0 0 1 1; 0 1 1 1]; % создание последовательности входов

T2=[0, 0, 1, 1]; % создание последовательности выходов для нейрона,

выполняющего функцию логического ИЛИ Инициализируем нейрон, обучим его на 15 эпохах net=init(net); % инициализация нейрона

Y=sim(net, P2); % имитация работы нейрона net на последовательности входов P2 net.trainParam.epochs=15; % установка количества эпох

net=train(net, P2, T2); % обучение нейрона net на обучающей выборке <P2, T2> Y=sim(net, P2); % имитация работы нейрона net на последовательности входов P2

(см. рисунок 17)

39

Performance is 0, Goal is 0

 

1

 

 

 

 

 

 

 

 

 

 

0.9

 

 

 

 

 

 

 

 

 

 

0.8

 

 

 

 

 

 

 

 

 

-Black

0.7

 

 

 

 

 

 

 

 

 

0.6

 

 

 

 

 

 

 

 

 

Goal

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Training-Blue

0.5

 

 

 

 

 

 

 

 

 

0.4

 

 

 

 

 

 

 

 

 

0.3

 

 

 

 

 

 

 

 

 

 

0.2

 

 

 

 

 

 

 

 

 

 

0.1

 

 

 

 

 

 

 

 

 

 

0

0

0.5

1

1.5

2

2.5

3

3.5

4

 

 

 

 

 

 

4 Epochs

 

 

 

 

Рисунок 17 – График изменения значений целевой функции

Другой вариант обучения нейрона (см. рисунок 18)

P2=[0 0 1 1; 0 1 1 1]; T2=[0, 0, 0, 1]; net=init(net); Y=sim(net, P2);

net.trainParam.epochs=15; net=train(net, P2, T2); Y=sim(net, P2);

100

Performance is 0.5, Goal is 0

 

 

 

 

Training-Blue

 

 

 

10-1

 

 

 

0

5

10

15

15 Epochs

Рисунок 18 – График изменения значений целевой функции

3.Определение входов со случайными значениями

P=rand(2, 1); определение входа p как вектора двух случайных чисел из интервала

[0; 1]

e=rand(1, 1); определение входа e как случайного числа из интервала [0, 1]

40

4.Получение графика функции активации hardlim

Получим график функции активации для интервала [-2; 2] с шагом 0,2.

n= -2 : 0.2 : 2;

b=hardlim(n); % вычисление пороговой функции от переменной n plot(n, b) см. рисунок 19.

1

0.9

0.8

0.7

0.6

0.5

0.4

0.3

0.2

0.1

0

 

 

 

 

 

 

 

 

-2

-1.5

-1

-0.5

0

0.5

1

1.5

2

Рисунок 19 − Функция активации hardlim

5.Имитация работы линейного нейрона

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

p1=[.3; .7]; % определение двухэлементного вектора

a1=sim(net, p1); % имитация работы нейрона net на входном векторе результат имитации – вектор a1

p2=[.3 .5 .2; .8 .5 .4]; % определение матрицы входов размерностью 3 на 2 (три двухэлементных вектора)

a2=sim(net, p2); % имитация работы нейрона net на входном векторе p2, результат имитации – вектор a2

6.Обучение нейрона классификации векторов на две категории

P=[-0.2 -0.2 +0.7 -0.3; -0.3 +0.1 -0.5 +1.0]; % определение четырёх двухэлементных

входов

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]