Notebook "нейронные сети" Глава 2
Вид материала | Документы |
Функции настройки параметров |
- Программа дисциплины «Теория нечетких множеств и нейронные сети» Для специальности, 567.45kb.
- Самостоятельная работа по прогнозированию экономических процессов на тему: нейронные, 148.65kb.
- Лекция 2 Лекция «Нейронные сети» Начнем с определения: Искусственные нейронные сети, 131.57kb.
- "Нейроновые сети ", 374.46kb.
- Нейронные сети как механизм представления лексико-семантической информации, 376.06kb.
- Программа, 39.37kb.
- Нейронные сети: алгоритм обратного распространения, 336.15kb.
- Предупреждение. Спасение. Помощь, 3059.76kb.
- Нейрокомпьютерная обработка сигналов и изображений, 184.71kb.
- Нейронные сети: основы теории / А. И. Галушкин. М. Горячая линия Телеком, 2010., 585.42kb.
C381. MAE
Получим информацию о данной функции и ее производной
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 =
Columns 1 through 4
0.3265 0.0113 0.6208 -0.3710
Column 5
0.1998
Вычислим функционал качества mae
net.performFcn = 'mae'; perf = mae(E)
perf =
0.3059
Теперь вычислим градиенты функционала качества.
Для вычисления градиентов сформируем вектор настраиваемых параметров (веса и смещения):
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_dE = dmae('e',{E},X); [dPerf_dE{:}]
ans =
1 1 1 -1 1
Градиент функционала по вектору параметров
dPerf_dX = dmae('x',{E},{X})
dPerf_dX =
0
Функции настройки параметров
С383. LEARNP
Определим сеть со случайными векторами входа p и ошибки e:
p = rand(2,1); e = rand(3,1);
Вызов функции learnp можно организовать следующим образом, поскольку не все входные аргументы требуются для вызова этой функции:
dW = learnp([],p,[],[],[],[],e,[],[],[],[],[])
dW =
0.0252 0.0198
0.0156 0.0123
0.1798 0.1412
С384. LEARNPN
Определим сеть со случайными векторами входа p и ошибки e:
p = rand(2,1); e = rand(3,1);
Вызов функции learnpn можно организовать следующим образом, поскольку не все входные аргументы требуются для вызова этой функции:
dW = learnpn([],p,[],[],[],[],e,[],[],[],[],[])
dW =
0.4122 0.1003
0.3301 0.0803
0.6055 0.1473
С385. LEARNWH
Определим сеть со случайными векторами входа p и ошибки e с 2-элементным входом и тремя нейронами и параметром скорости настройки lr:
p = rand(2,1); e = rand(3,1); lp.lr = 0.5;
Вызов функции learnwh можно организовать следующим образом, поскольку не все входные аргументы требуются для вызова этой функции:
dW = learnwh([],p,[],[],[],[],e,[],[],[],lp,[])
dW =
0.0071 0.0042
0.3130 0.1875
0.1695 0.1015
C387. LEARNGD
Допустим, что на некотором шаге настройки слоя с 3 нейронами и двухэлементным входом известен случайный вектор градиента gW, а параметр скорости настройки задан равным 0.5:
gW = rand(3,2); lp.lr = 0.5;
Тогда вызов функции learngd можно организовать следующим образом, поскольку не все входные аргументы требуются для вызова этой функции:
dW = learngd([],[],[],[],[],[],[],gW,[],[],lp,[])
dW =
0.3077 0.3691
0.3960 0.0881
0.4609 0.2029
C388. LEARNGDM
Допустим, что на некотором шаге настройки слоя с 3 нейронами и двухэлементным входом известен случайный вектор градиента gW, а параметры скорости настройки и возмущения заданы равными 0.6 и 0.8, соответственно:
gW = rand(3,2); lp.lr = 0.6; lp.mc = 0.8;
Тогда вызов функции learngdm можно организовать следующим образом, поскольку не все входные аргументы требуются для вызова этой функции:
ls = []; [dW,ls] = learngdm([],[],[],[],[],[],[],gW,[],[],lp,ls)
dW =
0.5613 0.5362
0.5501 0.0347
0.2462 0.2117
ls =
dw: [3x2 double]
ls.dw
ans =
0.5613 0.5362
0.5501 0.0347
0.2462 0.2117
C389. LEARNLV1
Определим слой нейронной сети с двухэлементным входом и тремя нейронами сеть со случайными массивами входа p, весов w и выхода a; зададим также градиент функционала по выходу gA и параметр скорости настройки lr:
p = rand(2,1); w = rand(3,2);
a = compet(negdist(w,p));
gA = [-1;1;1]; lp.lr = 0.5;
Вызов функции learnlv1 можно организовать следующим образом, поскольку не все входные аргументы требуются для вызова этой функции:
dW = learnlv1(w,p,[],[],a,[],[],[],gA,[],lp,[])
dW =
0 0
0 0
-0.3072 0.0945