Культура
Искусство
Языки
Языкознание
Вычислительная техника
Информатика
Финансы
Экономика
Биология
Сельское хозяйство
Психология
Ветеринария
Медицина
Юриспруденция
Право
Физика
История
Экология
Промышленность
Энергетика
Этика
Связь
Автоматика
Математика
Электротехника
Философия
Религия
Логика
Химия
Социология
Политология
Геология
|
Медведев В.С., Потемкин В.Г. Нейронные сети. MATLAB 6. В. Г. Потемкин
|
Название |
В. Г. Потемкин
|
Анкор |
Медведев В.С., Потемкин В.Г. Нейронные сети. MATLAB 6.doc |
Дата |
26.04.2017 |
Размер |
14.83 Mb. |
Формат файла |
|
Имя файла |
Медведев В.С., Потемкин В.Г. Нейронные сети. MATLAB 6.doc |
Тип |
Книга
#3790
|
страница |
42 из 50 |
|
11.5.1. Функции оценки качества обучения
Процесс обучения нейронных сетей связан с такой настройкой ее весов и смещений, чтобы минимизировать некоторый функционал, зависящий от ошибок сети, т. е. разности между желаемым и реальным сигналами на ее выходе. В качестве таких функционалов
в ППП NNT используются:
сумма квадратов ошибок
(11.6)
средняя квадратичная ошибка
; (11.7)
комбинированная ошибка
; (11.8)
средняя абсолютная ошибка
. (11.9)
Для вычисления этих функционалов качества и предназначены соответствующие функции пакета, рассматриваемые ниже. Все эти функции и их производные имеют одинаковый формат вызова
-
perf = <�имя_функции>(E,X,pp)
perf = <�имя_функции>(E,net,pp)
|
dPerf_dE = d<�имя_функции>('e',E,X,perf,pp)
dPerf_dX = d<�имя_функции>('x',E,X,perf,pp)
|
Входные аргументы:
E – матрица или массив ячеек вектора ошибки;
X – вектор весов и смещений;
pp – параметр функционала;
net – нейронная сеть в виде объекта network object;
'e', 'x' – аргументы операции дифференцирования;
perf – критерий качества обучения.
Выходные аргументы:
perf – критерий качества обучения;
dPerf_dE – производная критерия качества по вектору ошибки;
dPerf_dX – производная критерия качества по вектору параметров.
Входной аргумент E может иметь 2 формата: cell array и double array.
В формате cell array массив E имеет следующие размеры:
E – массив ячеек размера NtTS, каждый элемент которого E{i, ts} – числовой массив размера ViQ, где Nt – количество целевых выходов;
TS – число шагов по времени;
Q – количество реализаций для фиксированного момента времени;
Vi– количество элементов i-го вектора цели.
В формате double array Nt числовых массивов E размера ViQ преобразуются в единственный числовой массив размера Q.
Кроме того, все функции возвращают информацию о параметрах функции критерия качества, если используется следующий формат вызова:
info = <�имя_функции>(code).
В зависимости от значения аргумента code возвращается следующая информация:
'name' – полное название функции критерия качества;
'deriv' – имя производной функции критерия качества;
'pnames' – имена параметров функции критерия качества;
'pdefaults' – значения параметров функции критерия качества, принимаемые по умолчанию.
sSE, DSSE
|
Критерий суммы квадратов ошибок
|
Синтаксис:
perf = sse(E,X,pp)
perf = sse(E,net,pp)
info = sse(code)
|
dPerf_dE = dsse('e',E,X,perf,pp)
dPerf_dX = dsse('x',E,X,perf,pp)
|
Описание:
Функции perf = sse(E, X, pp) и perf = sse(E, net, pp) вычисляют критерий качества
обучения в виде сумм квадратов ошибок по формуле (11.6).
Функции dPerf_dE = dsse('e', E, X, perf, pp) и dPerf_dX = dsse('x', E, X, perf, pp) вычисляют градиенты функционала качества по векторам ошибки, а также весов и смещений.
Применение функции:
Для того чтобы использовать функцию критерия качества sse, необходимо установить свойство net.performFcn равным 'sse'. Это автоматически установит значения параметра net.performParam равными пустому массиву [ ], поскольку данная функция не имеет таких параметров.
Примеры:
Получим информацию о данной функции и ее производной:
sse('name'), sse('deriv'), sse('pnames')
ans = Sum squared error
ans = dsse
ans = {}
Сформируем двухслойную нейронную сеть прямой передачи с одноэлементным входом, изменяющимся в диапазоне [–10 10], которая имеет 4 скрытых нейрона с функцией активации tansig и 1 нейрон на выходе с функцией активации purelin:
net = newff([–10 10],[4 1],{'tansig','purelin'});
Зададим векторы входа и целей:
P = [–10 –5 0 5 10];
T = [ 0 0 1 1 1];
Промоделируем исходную нейронную сеть и вычислим ее ошибку:
Y = sim(net, P);
E = T–Y
E = –0.4714 –1.4040 –0.2399 0.6419 0.0049
Вычислим функционал качества sse:
net.performFcn = 'sse';
perf = sse(E)
perf = 2.6629
Теперь вычислим градиенты функционала качества.
Градиент функционала по вектору ошибки вычисляется следующим образом:
dPerf_dE = dsse('e',E,X)
dPerf_dE = –0.9427 –2.8079 –0.4798 1.2837 0.0097
Для вычислений градиента функционала по вектору настраиваемых параметров сформируем этот вектор, который объединяет веса и смещения сети:
X = [net.IW{1}; net.b{1}]'
X = 0.5600 –0.5600 0.5600 –0.5600 –5.6000 1.8667 1.8667 –5.6000
Градиент функционала по вектору параметров
dPerf_dX = dsse('x',E,X)
dPerf_dX= 0 0 0 0 0 0
Этот градиент равен нулевому вектору, поскольку функционал качества не зависит явным образом от параметров сети.
Синтаксис:
perf = mse(E,X,pp)
perf = mse(E,net,pp)
info = mse(code)
|
dPerf_dE = dmse('e',E,X,perf,pp)
dPerf_dX = dmse('x',E,X,perf,pp)
|
Описание:
Функции perf = mse(E, X, pp) и perf = mse(E, net, pp) вычисляют критерий качества обучения в виде средней суммы квадратов ошибок по формуле (11.7).
Функции dPerf_dE = dmse('e', E, X, perf, pp) и dPerf_dX = dmse('x', E, X, perf, pp) вычисляют градиенты функционала качества по векторам ошибки, а также весов и смещений.
Применение функции:
Функция критерия качества mse используется при создании сетей с помощью методов newff, newcf, newelm, а также при формировании сетей с атрибутами, определяемыми пользователем.
Для того чтобы использовать функцию критерия качества mse, необходимо установить свойство net.performFcn равным 'mse'. Это автоматически установит значения параметра net.performParam равными пустому массиву [ ], поскольку данная функция не имеет таких параметров.
Пример:
Получим информацию о данной функции и ее производной:
mse('name'), mse('deriv'), mse('pnames')
ans = Mean squared error
ans = dmse
ans = {}
Сформируем двухслойную нейронную сеть прямой передачи с одноэлементным входом, изменяющимся в диапазоне [–10 10], которая имеет 4 скрытых нейрона с функцией активации tansig и 1 нейрон на выходе с функцией активации purelin:
net = newff([–10 10],[4 1],{'tansig','purelin'});
Зададим векторы входа и целей:
P = [–10 –5 0 5 10];
T = [ 0 0 1 1 1];
Промоделируем исходную нейронную сеть и вычислим ее ошибку:
Y = sim(net, P);
E = T–Y
E = –0.4714 –1.4040 –0.2399 0.6419 0.0049
Вычислим функционал качества mse:
net.performFcn = 'mse';
perf = mse(E)
perf = 0.5326
Теперь вычислим градиенты функционала качества.
Градиент функционала по вектору ошибки вычисляется следующим образом:
dPerf_dE = dmse('e',E,X)
dPerf_dE = –0.1885 –0.5616 –0.0960 0.2567 0.0019
Для вычислений градиента функционала по вектору настраиваемых параметров сформируем этот вектор, который объединяет веса и смещения сети:
X = [net.IW{1}; net.b{1}]'
X = 0.5600 –0.5600 0.5600 –0.5600 –5.6000 1.8667 1.8667 –5.6000
Градиент функционала по вектору параметров
dPerf_dX = dmse('x',E,X)
dPerf_dX= 0 0 0 0 0 0
Этот градиент равен нулевому вектору, поскольку функционал качества не зависит явным образом от параметров сети.
Сопутствующие функции: msereg, mae.
MSEREG, DMSEREG
|
Комбинированный критерий качества
|
Синтаксис:
perf = mse(E,X,pp)
perf = mse(E,net,pp)
info = mse(code)
|
dPerf_dE = dmsereg('e',E,X,perf,PP)
dPerf_dX = dmsereg('x',E,X,perf,PP)
|
Описание:
Функции perf = msereg(E, X, pp) и perf = msereg(E, net, pp) вычисляют комбинированный критерий качества обучения по формуле (11.8).
Функции dPerf_dE = dmsereg('e', E, X, perf, pp) и dPerf_dX = dmsereg('x', E, X, perf, pp) вычисляют градиенты функционала качества по векторам ошибки, а также весов и смещений.
Применение функции:
Функция критерия качества msereg используется при создании сетей с помощью методов newff, newcf, newelm, а также при формировании сетей с атрибутами, определяемыми пользователем.
Для того чтобы использовать функцию критерия качества msereg, необходимо установить свойство net.performFcn равным 'msereg'. Это автоматически установит значения параметра net.performParam равными значениям по умолчанию.
Пример:
Получим информацию о данной функции и ее производной:
msereg('name'), msereg('deriv'), msereg('pnames'), msereg('pdefaults')
ans = Mean squared error with regularization
ans = dmsereg
ans = 'ratio'
ans = ratio: 0.9000
Это единственный функционал качества, который состоит из двух слагаемых: среднеквадратичной ошибки с весом ratio и штрафной функции, оцениваемой суммой квадратов весов и смещений с весом 1–ratio.
Сформируем двухслойную нейронную сеть прямой передачи с одноэлементным входом, изменяющимся в диапазоне [–10 10], которая имеет 4 скрытых нейрона с функцией активации tansig и 1 нейрон на выходе с функцией активации purelin:
net = newff([–10 10],[4 1],{'tansig','purelin'});
Зададим векторы входа и целей:
P = [–10 –5 0 5 10];
T = [ 0 0 1 1 1];
Промоделируем исходную нейронную сеть и вычислим ее ошибку:
Y = sim(net, P);
E = T–Y
E = –0.4714 –1.4040 –0.2399 0.6419 0.0049
Вычислим функционал качества msereg:
net.performFcn = 'msereg';
net.performParam.ratio = 0.9;
perf = msereg(E,net)
perf = 0.5326
Теперь вычислим градиенты функционала качества.
Градиент функционала по вектору ошибки вычисляется следующим образом:
dPerf_dE = dmsereg('e',E,X)
dPerf_dE = –0.1885 –0.5616 –0.0960 0.2567 0.0019
Для вычислений градиента функционала по вектору настраиваемых параметров сформируем этот вектор, который объединяет веса и смещения сети:
X = [net.IW{1}; net.b{1}]'
X = 0.5600 –0.5600 0.5600 –0.5600 –5.6000 1.8667 1.8667 –5.6000
Градиент функционала по вектору параметров
dPerf_dX = dmsereg('x',E,X,perf,net.performParam)
dPerf_dX = –0.0140 0.0140 –0.0140 0.0140 0.1400 –0.0467 –0.0467 0.1400
Этот градиент не равен нулевому вектору, поскольку функционал качества зависит явным образом от параметров сети.
Сопутствующие функции: mse, mae.
mae, DMAE
|
Критерий средней абсолютной ошибки
|
Синтаксис:
perf = mae(E,X,pp)
perf = mae(E,net,pp)
info = mae(code)
|
dPerf_dE = dmae('e',E,X,perf,pp)
dPerf_dX = dmae('x',E,X,perf,pp)
|
Описание:
Функции perf = mae(E, X, pp) и perf = mae(E, net, pp) вычисляют критерий качества обучения в виде средней суммы абсолютных ошибок по формуле (11.9).
Функции dPerf_dE = dmae('e', E, X, perf, pp) и dPerf_dX = dmae('x', E, X, perf, pp) вычисляют градиенты функционала качества по векторам ошибки, а также весов и смещений.
Применение функции:
Функция критерия качества mae используется при создании сетей с помощью методов newff, newcf, newelm, а также при формировании сетей с атрибутами, определяемыми пользователем.
Для того чтобы использовать функцию критерия качества mae, необходимо установить свойство net.performFcn равным 'mae'. Это автоматически установит значения параметра net.performParam равными пустому массиву [ ], поскольку данная функция не имеет таких параметров.
Пример:
Получим информацию о данной функции и ее производной:
mae('name'), mae('deriv'), mae('pnames')
ans = Mean absolute error
ans = dmae
ans = {}
Сформируем двухслойную нейронную сеть прямой передачи с одноэлементным входом, изменяющимся в диапазоне [–10 10], которая имеет 4 скрытых нейрона с функцией активации tansig и 1 нейрон на выходе с функцией активации purelin:
net = newff([–10 10],[4 1],{'tansig','purelin'});
Зададим векторы входа и целей:
P = [–10 –5 0 5 10];
T = [ 0 0 1 1 1];
Промоделируем исходную нейронную сеть и вычислим ее ошибку:
Y = sim(net, P);
E = T–Y
E = –0.4714 –1.4040 –0.2399 0.6419 0.0049
Вычислим функционал качества mae:
net.performFcn = 'mae';
perf = mae(E)
perf = 0.5524
Теперь вычислим градиенты функционала качества.
Градиент функционала по вектору ошибки вычисляется следующим образом:
dPerf_dE = dmae('e',{E},X); [dPerf_dE{:}]
ans = –1 –1 –1 1 1
Для вычислений градиента функционала по вектору настраиваемых параметров сформируем вектор, который объединяет веса и смещения сети:
X = [net.IW{1}; net.b{1}]'
X = 0.5600 –0.5600 0.5600 –0.5600 –5.6000 1.8667 1.8667 –5.6000
Градиент функционала по вектору параметров
dPerf_dX = dmae('x',{E},{X})
dPerf_dX = 0
Сопутствующие функции: mse, msereg.
|
|
|