Notebook "нейронные сети" Глава 2

Вид материалаДокументы
С379. msereg
Подобный материал:
1   ...   18   19   20   21   22   23   24   25   ...   33

С377. SSE


Получим информацию о данной функции и ее производной:

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 =

Columns 1 through 4

-1.5958 -1.1879 1.3390 1.7340

Column 5

2.6642

Вычислим функционал качества sse

net.performFcn = 'sse'; perf = sse(E)


perf =

15.8554

Теперь вычислим градиенты функционала качества.

Градиент функционала по вектору ошибки вычисляется следующим образом

dPerf_dE = dsse('e',E)


dPerf_dE =

Columns 1 through 4

-3.1916 -2.3757 2.6779 3.4681

Column 5

5.3284

Для вычислений градиента функционала по вектору настраиваемых параметров сформируем этот вектор, который объединяет веса и смещения сети

X = [net.IW{1}; net.b{1}]'


X =

Columns 1 through 4

0.5600 -0.5600 0.5600 0.5600

Columns 5 through 8

-5.6000 1.8667 1.8667 5.6000

Градиент функционала по вектору параметров

dPerf_dX = dsse('x',E,X)

dPerf_dX =

Columns 1 through 7

0 0 0 0 0 0 0

Column 8

0

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

C378. MSE


Получим информацию о данной функции и ее производной:

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 =

Columns 1 through 4

0.8520 0.8881 2.1218 3.0940

Column 5

2.2752

Вычислим функционал качества mse

net.performFcn = 'mse'; perf = mse(E)

perf =

4.1533

Теперь вычислим градиенты функционала качества.

Для вычисления градиентов сформируем вектор настраиваемых параметров (веса и смещения):

X = [net.IW{1}; net.b{1}]'

Градиент функционала по вектору ошибки вычисляется следующим образом

dPerf_dE = dmse('e',E,X,perf)

dPerf_dE =

Columns 1 through 4

0.3408 0.3553 0.8487 1.2376

Column 5

0.9101

Градиент функционала по вектору настраиваемых параметров:

dPerf_dX = dmse('x',E,X)

dPerf_dX =

Columns 1 through 7

0 0 0 0 0 0 0

Column 8

0

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

С379. MSEREG


Получим информацию о данной функции и ее производной

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 =

Columns 1 through 4

-1.9956 -1.7524 0.0534 0.9007

Column 5

1.2061

Вычислим функционал качества msereg

net.performFcn = 'msereg'; net.performParam.ratio = 0.9;

perf = msereg(E,net)


perf =

2.2333

Теперь вычислим градиенты функционала качества.

Для вычисления градиентов сформируем вектор настраиваемых параметров (веса и смещения):

X = [net.IW{1}; net.b{1}]'


X =

Columns 1 through 4

0.5600 -0.5600 0.5600 0.5600

Columns 5 through 8

-5.6000 1.8667 1.8667 5.6000

Градиент функционала по вектору ошибки вычисляется следующим образом

dPerf_dX = dmsereg('e',E,X,perf,net.performParam)

dPerf_dX =

Columns 1 through 4

-0.7184 -0.6309 0.0192 0.3243

Column 5

0.4342

Градиент функционала по вектору параметров

dPerf_dX = dmsereg('x',E,X,perf,net.performParam)


dPerf_dX =

Columns 1 through 4

-0.0140 0.0140 -0.0140 -0.0140

Columns 5 through 8

0.1400 -0.0467 -0.0467 -0.1400

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