Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Детальное описание особенностей выполнения демонстрационного примера






Для загрузки демонстрационного примера «Линейная аппроксимация» достаточно ввести в CommandWindow команду dеmolin4. В окне Figures появится результат работы программы – график, иллюстрирующий качество аппроксимации при помощи линейной нейронной сети. Пример демонстрирует, как минимизируются ошибки при использовании метода наименьших квадратов.

Как же работает демонстрационный пример «Линейная аппроксимация»?

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

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

Подставляя выражение для ошибки в формате:

Получим:

 

Эти соотношения лежат в основе обучающего алгоритма.

Здесь ошибка e и смещение b –векторы; - параметр скорости обучения.

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

Выполним процедуру обучения:

clear, p=[1 -1.2]; %Вектор входов

T=[0.5, 1]; %Вектор целей

Максимальное значение параметра обучения:

maxlr=0.40*maxlinlr(p, 'bias');

Создаем линейную сеть:

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

Расчитываем критерий качества:

w_range=-1: 0.2: 1; b_range=-1: 0.2: 1;

ES=errsurf(p, T, w_range, b_range, 'purelin');

Строим поверхности функции критерия качества:

surfc(w_range, b_range, ES)

 

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

Расчет траектории обучения:

x=zeros(1, 50); y= zeros(1, 50);

net.IW{1}=1;

net.b{1}=-1;

x(1)= net.IW{1};

y(1)= net.b{1};

net.trainParam.goal=0.001;

net.trainParam.epochs=1;

цикл вычисления весов и смещения для одной эпохи:

for i=2: 50,

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

x(i)= net.IW{1};

y(i)= net.b{1};

end

Строим линии уровня и траектории обучения.

clf, contour(w_range, b_range, ES, 20), hold on

plot (x, y, '-*'), grid on, hold off,

Примерно за десять шагов при заданной точности 0, 001 получили w=-0.22893, b=0.70519.

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

x(1)= net.IW{1};

y(1)= net.b{1};

net.trainParam.goal=0.001;

net.trainParam.epochs=50;

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

net.IW, net.b

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

clear, p= [2 1 -2 -1; 2 -2 2 1]; T=[0 1 0 1];

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

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

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

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

weights= net.IW{1}, bias= net.b{1}

weights =

-0.0615 -0.2194

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.5680

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






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.