Функции инициализации выполняют подготовку нейронной сети к инициализации
и выполняют саму инициализацию, присваивая начальные значения матрицам весов
и векторам смещений.
inIT | Инициализация нейронной сети |
Синтаксис:
net = init(net)
Описание:
Функция net = init(net) выполняет инициализацию нейронной сети, используя
функцию инициализации, определяемую свойством net.initFcn, и значения параметров, определяемые свойством net.initParam.
Пример:
Сформировать персептрон с одним нейроном, вход которого имеет 2 элемента со значениями в диапазонах [0 1] и [ –2 2].
net = newp([0 1; –2 2], 1);
net.initFcn
net.layers{1}.initFcn
net.inputWeights{1}.initFcn
net.biases{1}.initFcn
ans = initlay
ans = initwb
ans = initzero
ans = initzero
В результате создания персептрона мы видим, что сеть допускает возможность задавать любые функции инициализации весов и смещений, поскольку в качестве функций готовности выбраны: для сети – функция initlay, для слоя – initwb. В качестве функций инициализации для весов и смещений персептрона используется функция initzero.
Выведем значения установленных весов и смещений:
|
|
net.IW{1,1}
net.b{1}
ans = 0 0
ans = 0
Обучим персептрон на следующих обучающих множествах P = [0 1 0 1; 0 0 1 1]:
T = [0 0 0 1];
net = train(net,P,T);
net.IW{1,1}
net.b{1}
ans = 1 2
ans = –3
Это приводит к установлению новых значений весов и смещений.
Для того чтобы возвратиться к начальным значениям весов и смещений, характерных для данной сети, и предназначена функция init:
net = init(net);
net.IW{1,1}
net.b{1}
ans = 0 0
ans = 0
Веса и смещения возвращаются к нулевым значениям, что соответствует свойствам нейронной сети персептрона.
Алгоритм:
Функция init проверяет свойство net.initFcn, чтобы инициализировать нужным образом веса и смещения. Обычно свойство net.initFcn устанавливается равным 'initlay', что позволяет устанавливать функции инициализации для каждого слоя, используя свойство net.layers{i}.initFcn.
В сетях с обратным распространением ошибки свойство net.layers{i}.initFcn устанавливается равным 'initnw', что соответствует алгоритму инициализации Nguyen – Widrow.
Для других сетей значение свойства net.layers{i}.initFcn устанавливается равным 'initwb', что позволяет устанавливать произвольные функции инициализации для каждого слоя. Наиболее общий тип функции инициализации – это функция rands, которая генерирует случайные значения весов и смещений в диапазоне [–1 1].
Сопутствующие функции: SIM, ADAPT, TRAIN, INITLAY, INITNW, INITWB, RANDS.
inITLAY | Функция готовности сети к инициализации |
Синтаксис:
net = initlay(net)
info = initlay(code)
Описание:
Функция net = initlay(net) устанавливает, что в сети net для инициализации ее слоев могут быть использованы собственные функции инициализации, определяемые свойством net.layers{i}.initFcn.
Функция info = initlay(code) возвращает информацию о параметрах инициализации, соответствующую следующим значениям аргумента code:
|
|
'pnames' – имена параметров инициализации;
'pdefaults' – значения параметров инициализации по умолчанию.
Initlay не имеет параметров инициализации.
Применение функции:
Функция инициализации initlay используется при создании сетей с помощью методов newp, newlin, newff, newcf, а также при формировании сетей с атрибутами, определяемыми пользователем.
Для того чтобы подготовить сеть к заданию произвольных функций инициализации слоев, необходимо:
· установить свойство сети net.initFcn равным 'initlay'. Это автоматически установит свойство net.initParam равным пустой матрице [ ], так как функция initlay не имеет параметров инициализации;
· установить значения свойств net.layers{i}.initFcn, соответствующие выбранным функциям инициализации для слоя, например initwb или initnw.
Для того чтобы фактически инициализировать сеть, т. е. присвоить значения матрицам весов и векторам смещений, необходимо применить функцию init.
Алгоритм:
Веса и смещения в каждом слое i сети net инициализируются функцией, заданной значением свойства net.layers{i}.initFcn.
Сопутствующие функции: initwb, initnw, init.
inITWB | Функция готовности слоя к инициализации |
Синтаксис:
net = initwb(net,I)
Описание:
Функция net = initwb(net, I) устанавливает, что в сети net для инициализации слоя I будет
использована функция инициализации, определяемая свойством net.layers{i}.initFcn.
Применение функции:
Функция инициализации initwb используется при создании сетей с помощью методов newp, newlin, newff, а также при формировании сетей с атрибутами, определяемыми пользователем.
Для того чтобы подготовить сеть к заданию произвольных функций инициализации слоев, необходимо:
· установить свойство сети net.initFcn равным 'initlay'. Это автоматически установит свойство net.initParam равным пустой матрице [ ], так как функция initlay не имеет параметров инициализации;
· установить значение свойства net.layers{i}.initFcn равным 'initwb';
· установить значения свойств net.inputWeights{i, j}.initFcn, net.layerWeights{i, j}.initFcn, net.biases{i}.initFcn, соответствующие выбранным функциям инициализации, например rands или midpoint.
Для того чтобы фактически инициализировать сеть, т. е. присвоить значения матрицам весов и векторам смещений, необходимо применить функцию init.
Сопутствующие функции: initnw, initlay, init.
inITNW | Функция инициализации слоя по алгоритму NW |
Синтаксис:
net = initnw(net,I)
Описание:
Функция net = initnw(net, I) инициализирует веса и смещения слоя I сети net, используя алгоритм инициализации Nguyen – Widrow.
Применение функции:
Функция инициализации initnw используется при создании сетей с помощью методов newff, newcf, а также при формировании сетей с атрибутами, определяемыми пользователем.
Для того чтобы подготовить сеть к заданию функции инициализации initnw, необходимо:
· установить свойство сети net.initFcn равным 'initlay'. Это автоматически установит свойство net.initParam равным пустой матрице [ ], так как функция initlay не имеет параметров инициализации;
· установить значение свойства net.layers{i}.initFcn равным 'initnw'.
Для того чтобы фактически инициализировать сеть, т. е. присвоить значения матрицам весов и векторам смещений, необходимо применить функцию init.
Алгоритм:
Метод Nguyen – Widrow генерирует значения начальных весов и смещений так, чтобы активные области слоя нейронов были бы распределены приблизительно равномерно
в пространстве входа.
Его преимуществами по сравнению с методом инициализации случайных весов
и смещений являются следующие:
· оптимальное количество используемых нейронов;
· ускорение процедуры обучения, поскольку активные зоны нейронов соответствуют пространству входа.
Ограничения метода инициализации Nguyen – Widrow связаны с тем, что его можно применять только к слоям, имеющим смещения, с функцией взвешивания dotprod и функцией накопления netsum.
|
|
Если эти условия не выполняются, то следует использовать метод инициализации rands.
Сопутствующие функции: initwb, initlay, init.
inITZERO | Инициализация нулевых значений весов и смещений |
IСинтаксис:
W = initzero(S,PR)
b = initzero(S,[1 1])
Описание:
Функция W = initzero(S, PR) присваивает матрице весов слоя нулевые значения
и имеет следующие входные и выходные аргументы.
Входные аргументы:
S – число нейронов в слое;
PR – матрица размера R´2, задающая диапазоны изменения элементов входного вектора.
Выходной аргумент:
W – нулевая матрица весов размера S´R.
Функция b = initzero(S, [1 1]) присваивает вектору смещений слоя нулевые значения
и имеет следующие входные и выходные аргументы.
Входной аргумент:
S– число нейронов в слое.
Выходной аргумент:
b – нулевой вектор смещений размера S´1.
Пример:
Присвоить нулевые значения матрице весов и вектору смещения для слоя с пятью нейронами и вектором входа, элементы которого принимают значения в диапазонах [0 1], [–2 2].
W = initzero(5, [0 1; –2 2])
b = initzero(5, [1 1])
W = | b = |
0 0 0 0 0 0 0 0 0 0 |
Применение функции:
Функция инициализации initzero используется при создании сетей с помощью методов newp, newlin, а также при формировании сетей с атрибутами, определяемыми пользователем.
Для того чтобы подготовить сеть к заданию функции инициализации initzero, необходимо:
· установить свойство сети net.initFcn равным 'initlay'. Это автоматически установит свойство net.initParam равным пустой матрице [ ], так как функция initlay не имеет параметров инициализации;
· установить значение свойства net.layers{i}.initFcn равным 'initwb';
· установить значения свойств net.inputWeights{i, j}.initFcn, net.layerWeights{i, j}.initFcn, net.biases{i}.initFcn равными initzero.
Для того чтобы фактически инициализировать сеть, т. е. присвоить нулевые значения матрицам весов и векторам смещений, необходимо применить функцию init.
Сопутствующие функции: initwb, initlay, init.
midpoint | Инициализация матрицы средних значений |
Синтаксис:
W = midpoint(S,PR)
Описание:
Функция W = midpoint (S, PR) присваивает элементам матрицы весов слоя средние значения элементов вектора входа и имеет следующие входные и выходные аргументы.
|
|
Входные аргументы:
S – число нейронов в слое;
PR – матрица размера R´2, задающая диапазоны изменения элементов входного вектора [P min P max ].
Выходной аргумент:
W – матрица весов размера S´R с элементами столбцов, равными (P min +P max)/2.
Пример:
Присвоить нулевые значения матрице весов и вектору смещения для слоя с пятью нейронами и вектором входа, элементы которого принимают значения в диапазонах [0 1], [–2 2].
W = midpoint(5,[0 1; –2 2])
W =
5.0000e–001 0
5.0000e–001 0
5.0000e–001 0
5.0000e–001 0
5.0000e–001 0
Применение функции:
Функция инициализации midpoint используется при создании сетей с помощью метода newp, а также при формировании сетей с атрибутами, определяемыми пользователем.
Для того чтобы подготовить сеть к заданию функции инициализации midpoint, необходимо:
· установить свойство сети net.initFcn равным 'initlay'. Это автоматически установит свойство net.initParam равным пустой матрице [ ], так как функция initlay не имеет параметров инициализации;
· установить значение свойства net.layers{i}.initFcn равным 'initwb';
· установить значения свойств net.inputWeights{i, j}.initFcn, net.layerWeights{i, j}.initFcn равными midpoint.
Для того чтобы фактически инициализировать сеть, т. е. присвоить нулевые значения матрицам весов и векторам смещений, необходимо применить функцию init.
Сопутствующие функции: INITWB, INITLAY, INIT.
randS | Инициализация случайных весов/смещений |
Синтаксис:
W = rands(S,PR)
M = rands(S,R)
v = rands(S)
Описание:
Функции семейства rands предназначены для инициализации случайных массивов весов и смещений.
Функция W = rands(S, PR) имеет 2 входных аргумента:
S – число нейронов;
PR– массив минимальных и максимальных значений вектора входа размера R´2.
Выходом является случайная матрица весов размера S´R с элементами из диапазона [–1 1].
Функция M = rands(S, R) использует в качестве второго аргумента параметр R, соответствующий числу элементов вектора входа. Выходом также является случайная матрица весов размера S´R с элементами из диапазона [–1 1].
Функция v = rands(S) возвращает случайный вектор размера S´1 с элементами из диапазона [–1 1].
Пример:
Сформируем с помощью функции rands различные массивы случайных величин:
W = rands(4,[0 1; –2 2])
M = rands(2,3)
v = rands(4)
W =
0.9003 0.7826
–0.5377 0.5242
0.2137 –0.0871
–0.0280 –0.9630
M =
0.6428 0.2309 0.8436
–0.1106 0.5839 0.4764
v =
–0.6475
–0.1886
0.8709
0.8338
Применение функции:
Для того чтобы подготовить сеть к заданию функции инициализации rands, необходимо:
· установить свойство сети net.initFcn равным 'initlay'. Это автоматически установит свойство net.initParam равным пустой матрице [ ], так как функция initlay не имеет параметров инициализации;
· установить значение свойства net.layers{i}.initFcn равным 'initwb';
· установить значения свойств net.inputWeights{i, j}.initFcn, net.layerWeights{i, j}.initFcn равными rands.
Для того чтобы фактически инициализировать сеть, т. е. присвоить случайные значения матрицам весов и векторам смещений, необходимо применить функцию init.
Сопутствующие функции: RANDNR, RANDNC, INITWB, INITLAY, INIT.
randnc | Инициализация случайной матрицы с нормированными столбцами |
Синтаксис:
W = randnc(S,PR)
W = randnc(S,R)
Описание:
Функции семейства randnc аналогичны функциям rands, но предназначены только для инициализации весов. К ним возможны 2 формы обращения, которые возвращают случайную матрицу весов размера S´R с нормированными столбцами.
Пример:
Сформируем случайный массив из четырех нормированных трехэлементных столбцов:
M = randnc(3,4)
M =
–0.6007 –0.4715 –0.2724 0.5596
–0.7628 –0.6967 –0.9172 0.7819
–0.2395 0.5406 –0.2907 0.2747
Сопутствующие функции: randnr, randS.
randnR | Инициализация случайной матрицы с нормированными строками |
Синтаксис:
W = randnr(S,PR)
W = randnr(S,R)
Описание:
Функции семейства randnr аналогичны функциям rands, но предназначены только
для инициализации весов. К ним возможны 2 формы обращения, которые возвращают случайную матрицу весов размера S´R с нормированными строками.
Пример:
Создадим случайную матрицу из трех нормированных четырехэлементных строк:
W = randnr(3,4)
W =
0.9713 0.0800 –0.1838 –0.1282
0.8228 0.0338 0.1797 0.5381
–0.3042 –0.5725 0.5436 0.5331
Сопутствующие функции: randnC, randS.
inITCON | Функция инициализации равных смещений |
Синтаксис:
b = initcon(S,PR)
Описание:
Функция initcon является функцией инициализации смещений, которая инициализирует смещения для сети с функцией настройки learncon.
Функция b = initcon(S, PR) присваивает значения вектору смещения и имеет следующие входные и выходные аргументы.
Входные аргументы:
S – число нейронов в слое;
PR – матрица размера R´2, задающая диапазоны изменения элементов входного
вектора, по умолчанию [1 1]'.
Выходной аргумент:
b – вектор смещений размера S´1.
Функция initcon может также быть использована для инициализации весов, но применение ее для этой цели не рекомендуется.
Пример:
Начальные значения смещений рассчитаем для слоя с пятью нейронами:
b = initcon(5)
b’ =
1.3591e+001 1.3591e+001 1.3591e+001 1.3591e+001 1.3591e+001
Применение функции:
Функция инициализации initcon используется при создании сетей с помощью метода newc, а также при формировании сетей с атрибутами, определяемыми пользователем.
Для того чтобы подготовить сеть к заданию функции инициализации midpoint,
необходимо:
· установить свойство сети net.initFcn равным 'initlay'. Это автоматически установит свойство net.initParam равным пустой матрице [ ], так как функция initlay не имеет параметров инициализации;
· установить значение свойства net.layers{i}.initFcn равным 'initwb';
· установить свойство net.biases{i}.initFcn на 'initcon'.
Для того чтобы фактически инициализировать сеть, необходимо применить функцию init.
Алгоритм:
Функция learncon модифицирует смещения так, чтобы значение каждого смещения b (i) являлось функцией среднего значения выхода для нейрона с номером i. Начальные значения смещений устанавливаются равными
b (i) = exp(1)´ S.
Сопутствующие функции: INITWB, INITLAY, INIT, LEARNCON.
REVERT | Возвращение к ранее установленным значениям весов и смещений |
Синтаксис:
net = revert(net)
Описание:
Функция net = revert(net) возвращает веса и смещения к значениям, соответствующим последней процедуре инициализации. Если же изменениям подвергались связи между нейронами или изменялось их количество, то функция revert не может восстановить прежних значений и присваивает весам и смещениям нулевые значения.
Сопутствующие функции: INIT, SIM, ADAPT, TRAIN.