Функции оценки качества обучения
Процесс обучения нейронных сетей связан с такой настройкой ее весов и смещений, чтобы минимизировать некоторый функционал, зависящий от ошибок сети, т. е. разности между желаемым и реальным сигналами на ее выходе. В качестве таких функционалов в ППП 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 – массив ячеек размера Nt´TS, каждый элемент которого E{i, ts} – числовой массив размера Vi´Q, где Nt – количество целевых выходов;
TS – число шагов по времени;
Q – количество реализаций для фиксированного момента времени;
Vi – количество элементов i-го вектора цели.
В формате double array Nt числовых массивов E размера Vi´Q преобразуются в единственный числовой массив размера ´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
Этот градиент равен нулевому вектору, поскольку функционал качества не зависит явным образом от параметров сети.
mSe, DMSE
| Критерий средней квадратичной ошибки
| Синтаксис:
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.
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|