Функции инициализации

Функции инициализации выполняют подготовку нейронной сети к инициализации
и выполняют саму инициализацию, присваивая начальные значения матрицам весов
и векторам смещений.

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.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: