1911
.pdf% Цикл вычисления весов и смещения для одной эпохи 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
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,…, k–N–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