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

1911

.pdf
Скачиваний:
11
Добавлен:
07.01.2021
Размер:
2.18 Mб
Скачать

% Цикл вычисления весов и смещения для одной эпохи for i = 2:50,

[net, tr] = train(net,P,T);

x(i) = net.IW{1}; СибАДИy(i) = net.b{1};

end

TRAINB, Epoch 0/1, MSE 5.245/0.001.

TRAINB, Epoch 1/1, MSE 2.049/0.001.

TRAINB, Maximum epoch reached.

TRAINB, Epoch 0/1, MSE 2.049/0.001.

TRAINB, Epoch 1/1, MSE 0.815178/0.001.

TRAINB, Maximum epoch reached.

TRAINB, Epoch 0/1, MSE 0.815178/0.001.

TRAINB, Epoch 1/1, MSE 0.330857/0.001.

TRAINB, Maximum epoch reached.

TRAINB, Epoch 0/1, MSE 0.330857/0.001.

TRAINB, Epoch 1/1, MSE 0.137142/0.001.

TRAINB, Maximum epoch reached.

TRAINB, Epoch 0/1, MSE 0.137142/0.001.

TRAINB, Epoch 1/1, MSE 0.0580689/0.001.

TRAINB, Maximum epoch reached.

TRAINB, Epoch 0/1, MSE 0.0580689/0.001.

TRAINB, Epoch 1/1, MSE 0.0250998/0.001.

TRAINB, Maximum epoch reached.

TRAINB, Epoch 0/1, MSE 0.0250998/0.001.

TRAINB, Epoch 1/1, MSE 0.0110593/0.001.

TRAINB, Maximum epoch reached.

TRAINB, Epoch 0/1, MSE 0.0110593/0.001.

TRAINB, Epoch 1/1, MSE 0.00495725/0.001.

TRAINB, Maximum epoch reached.

TRAINB, Epoch 0/1, MSE 0.00495725/0.001.

TRAINB, Epoch 1/1, MSE 0.00225533/0.001.

41

net.trainParam.goal = 0.001; [net, tr] = train(net,P,T); net.IW, net.b
net.trainParam.epochs = 50;
net.IW{1}=1; net.b{1}= -1;

TRAINB, Maximum epoch reached.

TRAINB, Epoch 0/1, MSE 0.00225533/0.001.

TRAINB, Epoch 1/1, MSE 0.00103897/0.001.

TRAINB, Maximum epoch reached.

СTRAINB, Epoch 0/1, MSE 0.00103897/0.001.

TRAINB, Epoch 1/1, MSE 0.000483544/0.001.

TRAINB, Maximum epoch reached.

TRAINB, Epoch 0/1, MSE 0.000483544/0.001. иTRAINB, Performance goal met.

TRAINB, Epoch 0/1, MSE 0.000483544/0.001.

TRAINB, Performance goal met.

TRAINB, Epoch 0/1, MSE 0.000483544/0.001.

TRAINB, Performance goal met.

% Построен е л н й уровня и траектории обучении

clf, contour(w range,Аb range, ES, 20), hold on plot(x, y,'-*'), grid on, hold off, % Рис.1,

б

На рисунке, вид , символами "*" отмечены значения веса и смещения на каждом шаге обученияД; видно, что примерно за 10 шагов при заданной точности 0.001 получим w = –0.22893, b = 0.70519. Это согласуется с решением, полученным с использованием процедуры адаптации.

Если не строить траектории процесса обучения, то можно выполнить обучение, обратившись к функцииИtrain только один раз:

TRAINB, Epoch 0/50, MSE 5.245/0.001.

TRAINB, Epoch 11/50, MSE 0.000483544/0.001.

TRAINB, Performance goal met.

42

ans = [-0.2289]

ans = [0.7052]

Если повысить точность обучения до значения 0.00001, то получим следующие результаты:

net.trainParam.goal = 0.00001;

[net, tr] = train(net,P,T);

net.IW, net.b

TRAINB, Epoch 0/50, MSE 0.000483544/1e-005.

СTRAINB, Epoch 6/50, MSE 5.55043e-006/1e-005.

TRAINB, Performance goal met.

ans =

б

 

[-0.2279]

иans =

[0.7249]

1.

Для заданного преподавателем варианта задания (таблица)

создать линейную сеть с помощью функции newlin и осуществить ее

 

А

настройку при помощи функции train.

 

2.

Построить график функции ошибки и график траектории

обучения в системе MATLAB аналогично рис. 1.

3.

Сделать ручной расчет значений функции ошибки в процессе

обучения сети для первых пяти точек.

 

4.

Д

Сравнить результаты ручных расчетов и расчетов,

выполненных в системе MATLAB.

 

5.

Распечатать текст программы.

 

6.

Составить отчет, который должен содержать:

цель работы;

И

структурную схему нейронной сети;

 

алгоритм, текст программы и графики;

ручной расчет значений функции ошибки и результаты

расчета в системе MATLAB;

 

выводы.

 

43

 

Номер

Количество входов – 1; количество нейронов – 1

 

 

 

Диапазон

Значения входа

 

Целевой

 

 

варианта

 

 

 

 

значений входа

персептрона

 

выход

 

 

1

 

–4…+4

{–2 1}

 

{1 –2}

 

 

2

 

–3…+3

{–2 0}

 

{1 1}

 

 

3

 

–2…+2

{–1 0}

 

{–1 0}

 

 

4

 

–4…+4

{0 2}

 

{0 –2}

 

 

5

 

–4…+4

{–3 2}

 

{1 –1}

 

 

6

 

–4…+4

{–2 1}

 

{–1 –1}

 

 

7

 

–2…+2

{0 1}

 

{0 1}

 

 

8

 

–4…+4

{–2 1}

 

{2 2}

 

 

9

 

–3…+3

{–1 –2}

 

{1 –1}

 

С

 

 

 

 

 

 

 

10

 

–2…+2

{0 –1}

 

{0 1}

 

 

 

 

Практическое занятие № 8

 

 

и

 

 

 

 

Применен е л нейных сетей. Задача классификации векторов

Цель

 

: решение задачи классификации с использованием

моделей линейной и персептронной нейронных сетей в системе

MATLAB.работы

 

 

 

 

 

О щие сведения

 

 

Линейные сети могут быть применены для решения задач

классификации. Если используется процедура обучения train, то

 

 

 

А

 

 

 

 

Д

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

Если достигнута допустимая погрешность или превышено

максимальное число циклов (эпох) обучения, то процедура настройки

прекращается.

И

Алгоритм обучения и настройки сходится, если задача классификации разрешима.

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

44

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

 

2

 

1

 

 

2

 

1

 

.(1)

p1

,t1

0 p2

 

,t2

1 p3

 

2

,t3

0 p4

 

1

,t4

1

 

2

 

2

 

 

 

 

 

 

 

 

СибАДИОпределим линейную сеть с начальными значениями веса и смещен я, спользуемыми по умолчанию, т. е. нулевыми; зададим допуст мую погрешность обучения, равную 0,1:

clear, p = [2 1 -2 -1;2 -2 2 1]; t = [0 1 0 1]; net = newlin( [-2 2; -2 2],1);

Рис. 1. Линейная сеть нейронов

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

net.trainParam.goal= 0.1; [net, tr] = train(net,p,t);

TRAINB, Epoch 0/100, MSE 0.5/0.1.

TRAINB, Epoch 25/100, MSE 0.181122/0.1.

TRAINB, Epoch 50/100, MSE 0.111233/0.1.

TRAINB, Epoch 64/100, MSE 0.0999066/0.1.

TRAINB, Performance goal met.

45

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

weights = net.iw{1,1}, bias = net.b(1)

weights =

 

 

 

 

 

 

 

 

С

-0.2194

 

 

 

 

 

 

 

-0.0615

 

 

 

 

 

 

 

bias =

 

 

 

 

 

 

 

 

 

[0.5899]

 

 

 

 

 

 

 

 

рование

созданной сети с векторами входа из

Выполн м модел

 

обучающего множества и вычислим ошибки сети:

 

 

A = sim(net, p)

 

 

 

 

 

 

 

 

 

б

 

 

 

 

err = t - sim(net,p)

 

 

 

 

 

 

 

A =

 

 

 

 

 

 

 

 

 

0.0282

0.9672

0.2741

 

0.4320

 

 

err =

 

 

 

 

 

 

 

 

 

-0.0282

0.0328

-0.2741

 

0.56800

 

 

Заметим, что погрешности сети весьма значительны. Попытка

задать большую

точность в данном

случае не приводит к цели,

поскольку

возможности

 

Д

 

линейной

сети

ограничены.

Демонстрационный Апример demolin4 иллюстрирует

проблему

линейной зависимости векторов, которая свойственна и этому

случаю.

 

 

 

 

 

 

И

 

 

Порядок выполнения работы

 

 

1. Для

заданного преподавателем

 

варианта задания

(таблица)

построить линейную нейронную сеть в системе MATLAB и с ее помощью решить задачу классификации линейно разделимых векторов с точностью 0,01 и максимальным числом эпох 200.

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

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

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

46

сети.

5. Сравнить результаты моделирования линейной и персептронной линейными сетями.

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

персептронную нейронные сети для решения задачи классификации

СибАДИ

нового обучающего множества.

 

 

7. Выполн ть моделирование созданных сетей с векторами входа

из обучающего множества и проверить правильность работы сетей.

8. Распечатать текст программы.

 

 

9.

остав ть отчет, который должен содержать:

 

 

цель работы;

 

 

 

структурную схему нейронной сети;

 

 

ручной расчет настройки сети;

 

 

текст программы результаты моделирования;

 

 

выводы.

 

 

 

 

 

Номер

Количество входов – 2; количество нейронов – 1

 

 

Диапазоны

 

Целевые

 

 

варианта

значений

Значения входов

выходы

 

 

 

входов

 

 

 

 

 

 

 

 

1

–2…+2

{[–1; –1] [0; 0] [1; –1] [1; 1]}

{1 1 1 0}

 

 

2

–4…+4

{[0; 0] [2; –2] [1; –2] [–2; –1]}

{0 1 0 0}

 

 

3

–2…+2

{[0; 0] [–1; 1] [–1; 0] [1; 1]}

{0 1 1 0}

 

 

4

–4…+4

{[–2; 1] [1; –2] [3; –1] [2; 2]}

{0 0 0 1}

 

 

5

–3…+3

{[–2; 1] [0; 1] [2; –1] [–2; –1]}

{0 0 1 0}

 

 

6

–2…+2

{[0; 0] [1; 1] [–1; 1] [–1; 0]}

{0 0 1 1}

 

 

7

–4…+4

{[–2; 2] [1; 2] [0; 0] [3; –2]}

{0 1 0 1}

 

 

8

–3…+3

{[–1; 1] [–2; –1] [1; –2] [2; 0]}

{1 0 0 1}

 

 

9

–4…+4

{[–3; 1] [2; –1] [2; 2] [3; –1]}

{1 1 0 0}

 

 

10

–3…+3

{[–2; –1] [1; –1] [0; 1] [2; 0]}

{1 0 1 0}

 

47

Практическое занятие № 9 Применение линейных сетей. Адаптируемые линейные сети

ADALINE

Цель работы: моделирование адаптируемых линейных сетей ADALINE в системе MATLAB и решение с их помощью задач

Сфильтрации сигналов.

Общие сведения

На р с. 1 представлена структурная схема цифрового фильтра,

отличсетительной особенностью которого является то, что он включает динам ческ й компонент – линию задержки (ЛЗ) и 1 слой линейной нейронной .

Последовательность значений входного сигнала {p(k)} поступает на ЛЗ, состоящую из N–1 блока запаздывания; выход ЛЗ – N-мерный вектор pd, составленный из значений входа в моменты времени k, k

1,…, kN–1.

б А Д Рис.1. Структурная схема цифровогоИфильтра

Выход линейного нейронного слоя и фильтра в целом описывает-

ся следующим динамическим соотношением:

R

 

a(k) purelin Wp b w1i p(k i 1) b.

(2)

i 1

 

Рассмотрим конкретный пример цифрового фильтра, представ ленный на рис. 2.

48

СибАДИРис. 2. Цифровой фильтр

Предполож м, что входной сигнал принимает значения в диапазоне от 0 до 10, сформируем линейную сеть с одним входом и

одним выходом, спользуя функцию newlin:

clear, net = newlin([0,10],1);

Введем ЛЗ с двумя тактами запаздывания: net.inputWeights{1,1}.delays = [0 1 2];

определим следующие начальные значения весов смещения:

net.IW{1,1} = [7 8 9]; net.b{1} = [0];

зададим начальные условия для динамических блоков линии задержки:

pi ={1 2}

pi =

[1] [2]

Последовательность их задания слева направо соответствует блокам запаздывания, расположенным на рисунке сверху вниз. Этим завершается формирование сети.

49

Теперь определим входной сигнал в следующем порядке значений:

p = {3 4 5 6} p =

[3][4] [5] [6]

СибАДИ-1.5993

и промоделируем эту сеть:

 

 

 

 

 

[a,pf] = sim(net,p,pi)

 

 

 

 

 

 

a =

 

 

 

 

 

 

 

[46]

[70]

[94]

[118]

 

 

 

pf =

 

 

 

 

 

 

 

[5]

[6]

 

 

 

 

 

 

Для того что ы получить желаемую последовательность

сигналов на

выходе,

нео ходимо

выполнить

настройку

сформ рованной сети. Предположим, что задана следующая

желаемая последовательность для выхода фильтра:

 

T = {10 20 30 40};

 

 

 

 

 

 

Выполним настройку параметров, используя процедуру

адаптации adapt и 10 циклов о учения:

 

 

 

net.adaptParam.passes = 10;

 

 

 

 

 

[net,y,E pf,af] = adapt(net,p,T,pi); % Процедура адаптации

 

Выведем полученные

значения

весов,

смещения

выходного

сигнала:

 

 

 

 

 

 

 

wts = net.IW{1,1}, bias = net.b{1}, y

 

 

 

 

wts =

 

 

 

 

 

 

 

0.5059

3.1053

5.7046

 

 

 

bias =

 

 

 

 

 

 

 

y =

 

 

 

 

 

 

 

[11.8558]

[20.7735]

[29.6679]

[39.0036]

 

Если продолжить процедуру настройки, то можно еще точнее приблизить выходной сигнал к желаемому:

net.adaptParam.passes = 500;

50

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