Сделай Сам Свою Работу на 5

Функции оценки качества обучения

Процесс обучения нейронных сетей связан с такой настройкой ее весов и смещений, чтобы минимизировать некоторый функционал, зависящий от ошибок сети, т. е. разности между желаемым и реальным сигналами на ее выходе. В качестве таких функционалов
в ППП 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- 2017 stydopedia.ru Все материалы защищены законодательством РФ.