Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Для заданной линейной сети и соответствующего множества векторов входа и целей можно вычислить вектор выхода сети и сформировать разность между вектором выхода и целевым вектором, которая определит некоторую погрешность. В процессе обучения сети требуется найти такие значения весов и смещений, чтобы сумма квадратов соответствующих погрешностей была минимальной
Применим процедуру обучения с учителем, которая использует обучающее множество вида:
{p1 t1}, {p2 t2},..., {p Q t Q }, (5)
где р1, р2,..., р Q – входы сети; t1, t2,..., t Q – соответствующие целевые выходы.
Требуется минимизировать следующую функцию средней квадратичной ошибки:
. (6)
Настройка линейной сети для заданного обучающего множества может быть выполнена посредством прямого расчета с использованием М-функции newlind.
Предположим, что заданы следующие векторы, принадлежащие обучающему множеству:
P = [1 -1.2]; Т = [0.5 1];
Построим линейную сеть и промоделируем ее:
net = newlind(Р, Т); Y = sim(net, P);
net.IW{l, l}
Выход сети соответствует целевому вектору.
Зададим следующий диапазон весов и смещений, рассчитаем критерий качества обучения и построим его линии уровня (рис. 7):
w_range = -l:0.1: 0; b_range = 0.5:0.1:1;
ES = errsurf(P, T, w_range, b_range, 'purelin');
contour(w_range, b_range, ES, 20)
hold on; plot(-2.2727e-001,7.2727e-001, 'x'); hold off
Рис. 7. Критерий качества обучения
На графике знаком х отмечены оптимальные значения веса и смещения для данной сети. Демонстрационный пример demolinl поясняет структуру линейной сети, построение поверхности ошибок и выбор оптимальных настроек.
Для линейной нейронной сети используется рекуррентное обучающее правило наименьших квадратов, которое является намного более мощным, чем обучающее правило персептрона. Правило наименьших квадратов, или правило обученияWH{Уидроу-Хоффа), минимизирует среднее значение суммы квадратов ошибок обучения.
Процесс обучения нейронной сети состоит в следующем. Предположим, что можно оценивать полную среднюю квадратичную погрешность, используя среднюю квадратичную погрешность на каждой итерации. Сформируем частную производную по весам и смещению от квадрата погрешности на k- йитерации:
(7)
Подставляя выражение для ошибки в форме
(8)
получим
(9)
Здесь рj (k) – j -й элемент вектора входа на k -йитерации. Эти соотношения лежат в основе обучающего алгоритма WH.
(10)
Результат может быть обобщен на случай многих нейронов и представлен в следующей матричной форме:
(11)
Здесь ошибка и смещение – векторы и – параметр скорости обучения. При больших значениях обучение происходит быстро, однако при очень больших значениях может приводить к неустойчивости. Используя правило обучения WH и метод наискорейшего спуска, всегда можно обучить сеть так, чтобы ее погрешность была минимальной.
М-функция learnwh предназначена для настройки параметров линейной сети и реализует следующее обучающее правило:
(12)
где Lr – параметр скорости обучения. Максимальное значение параметра скорости обучения, которое гарантирует устойчивость процедуры настройки, вычисляется с помощью М-функции maxlinlr.
С помощью демонстрационной программы demolin7 можно исследовать устойчивость процедуры настройки в зависимости от параметра скорости обучения.
Для обучения линейной нейронной сети может быть применена типовая процедура обучения с помощью М-функции train. Эта функция для каждого вектора входа выполняет настройку весов и смещений, используя М-функцию learnp. В результате сеть будет настраиваться по сумме всех коррекций. Каждый пересчет для набора входных векторов называется эпохой. Затем процедура train моделирует настроенную сеть для имеющегося набора векторов, сравнивает результаты с набором целевых векторов и вычисляет среднеквадратичную ошибку. Как только значение ошибки становится меньше заданного или исчерпано предельное число эпох, обучение прекращается.
Обратимся к тому же примеру, который использовался при рассмотрении процедуры адаптации, и выполним процедуру обучения.
Р = [1-1.2];% Вектор входов
Т= [0.5, 1]; % Вектор целей
maxlr = 0.40*maxlinlr(Р, 'bias');
net = newlin([-2,2],1,[0],raaxlr);
% Расчет функции критерия качества
w_range = -l:0.2:1; b_range = -l:0.2:1; % Диапазоны значений веса и смещения
ES = errsurf(P,T, w_range, b_range, 'purelin');
% Построение поверхности функции критерия качества,
surfс(w_range, b_range, ES)
На рис. 8, а построена поверхность функции критерия качества в пространстве параметров сети.
В процессе обучения траектория обучения будет перемещаться из начальной точки в точку минимума критерия качества. Выполним расчет и построим траекторию обучения линейной сети для заданных начальных значений веса и смещения.
х = zeros(1,50); у = zeros(1,50);
net.IW{l} = l; net.b{l} = -1; % Начальные значения весов и смещения
х{1) = net.IW{l}; у(1) = net.b{l};
net.trainParam.goal = 0.001; % Пороговое значение критерия качества
net. trainParam. epochs = 1; % Число эпох
for i = 2:50,
[net, tr] = train(net,P,T);
x(i) = net.lW{l>;
y(i) = net.b{l}; end
contour(w_range, b_range, ES, 20), hold on plot(x, y,’-*'), hold off,
а
б
Рис. 8. Обучение нейронной сети
На рис. 8, б символом * отмечены значения веса и смещения на каждом шаге обучения; видно, что примерно за 10 шагов при заданной точности (пороговое значение критерия качества) 0.001 получим w = -0.22893, b = 0.70519. Это согласуется с решением, полученным с использованием процедуры адаптации.
Дата публикования: 2015-04-07; Прочитано: 438 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!