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

Сети – классификаторы входных векторов

 

neWLVQ Нейронная сеть LVQ

Синтаксис:

net = newlvq(PR,S1,PC,LR,LF)

Описание:

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

Функция net = newlvq(PR, s1, PC, lr, lf) формирует сеть LVQ и имеет следующие входные и выходные аргументы.

Входные аргументы:

PR – массив размера R´2 из Q минимальных и максимальных значений вектора входа;

s1 – число нейронов скрытого слоя;

PC – вектор размера 1´S2, указывающий распределение по долям векторов каждого класса;

lr – параметр скорости настройки, по умолчанию 0.01;

lf – функция настройки, по умолчанию learnlv2.

Выходные аргументы:

net – объект класса network object, определяющий сеть-классификатор LVQ.

Свойства сети:

Сеть LVQ – это двухслойная сеть. Первый слой использует функции взвешивания negdist, накопления netsum и активации compet. Второй слой использует функции взвешивания dotprodt, накопления netsum и активации purelin. Слои не имеют смещений. Веса первого слоя инициализируются с помощью функции midpoint; веса второго слоя устанавливаются так, чтобы каждому нейрону на выходе соответствовал единственный нейрон скрытого слоя. Адаптация и обучение выполняются с помощью функций adaptwb
и trainwb1, которые модифицируют веса первого слоя, используя заданные функции обучения. Функциями настройки могут быть М-функции learnlv1 и learnlv2.

Пример:

Векторы входа P и выходные классы Tc, представленные ниже, определяют задачу классификации, которая будет решена LVQ-сетью:

P = [–3 –2 –2 0 0 0 0 +2 +2 +3;

0 +1 –1 2 1 –1 –2 +1 –1 0];

Tc = [1 1 1 2 2 2 2 1 1 1];

Целевые классы Tc преобразуем в целевые векторы T, создадим сеть LVQ со входами P, четырьмя нейронами и долями распределения по классам [0.6 0.4]:

T = ind2vec(Tc);

net = newlvq(minmax(P),4,[.6 .4]);

gensim(net) % Рис.11.32

Структура нейронной сети LVQ показана на рис. 11.32. Выполним обучение сети:

 

Рис. 11.32

net = train(net,P,T);

Промоделируем сеть на векторе входа:

Y = sim(net,P);

Yc = vec2ind(Y)

Yc = 1 1 1 2 2 2 2 1 1 1

Классификация входного вектора выполнена без ошибок.

Сопутствующие функции: SIM, INIT, ADAPT, TRAIN, ADAPTWB, TRAINWB1, LEARNLV1, LEARNLV2.

Рекуррентные сети

 

neWELM Нейронная сеть ELM

Сеть Элмана

Синтаксис:

net = newelm(PR, [S1 S2 ... SNl], {TF1 TF2 ... TFNl}, btf, blf, pf)

Описание:

Функция newelm предназначена для создания динамических сетей Элмана, которые применяются для построения моделей динамических систем.

Функция net = newelm(PR, [S1 S2 ... SNl], {TF1 TF2 ... TFNl}, btf, blf, pf) формирует сеть Элмана и имеет следующие входные и выходные аргументы.

Входные аргументы:

PR – массив размера R´2 минимальных и максимальных значений для R векторов входа;

Si – количество нейронов в слое i;

TFi – функция активации слоя i, по умолчанию tansig;

btf – обучающая функция, реализующая метод обратного распространения, по умолчанию traingdx;

blf – функция настройки, реализующая метод обратного распространения, по умолчанию learngdm;

pf – критерий качества обучения, по умолчанию mse.

Выходные аргументы:

net – объект класса network object динамической сети Элмана.

Свойства сети:

Обучающими функциями могут быть любые функции, реализующие метод обратного распространения: trainlm, trainbfg, trainrp, traingd и др.

Функциями настройки могут быть функции, реализующие метод обратного распространения: learngd, learngdm.

Критерием качества обучения может быть любая дифференцируемая функция: mse, msereg.

При реализации сети Элмана не рекомендуется применять такие алгоритмы обучения, как trainlm или trainrp, которые работают с большим размером шага.

Пример:

Зададим вход P в виде случайной булевой последовательности из нулей и единиц; выходом сети должна быть такая булева последовательность T, элементы которой принимают значение 1 только в том случае, когда в последовательности P встретились 2 единицы подряд:

P = round(rand(1,20))

T = [0 (P(1:end–1)+P(2:end)==2)]

P = 1 0 1 0 1 1 0 0 1 0 1 1 1 1 0 0 1 1 0 1

T = 0 0 0 0 0 1 0 0 0 0 0 1 1 1 0 0 0 1 0 0

Требуется построить сеть, которая распознает во входном сигнале 2 единицы, следующие подряд. Сначала эти последовательности представим в виде массивов ячеек:

Pseq = con2seq(P); Tseq = con2seq(T);

Создадим сеть Элмана с диапазоном входного сигнала от 0 до 1 с 10 скрытыми и одним выходным нейронами (рис. 11.33):

net = newelm([0 1],[10 1],{'tansig','logsig'});

gensim(net) % Рис.11.33

Рис. 11.33

Затем обучим сеть с допустимой средней квадратичной ошибкой 0.001 и смоделируем ее:

net.trainParam.goal = 0.001;

net.trainParam.epochs = 1000;

net = train(net,Pseq,Tseq);

Y = sim(net,Pseq)

Y1 = seq2con(Y);

E = round(T–Y1{1})

E = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Результат свидетельствует о том, что сеть справилась с поставленной задачей.

Алгоритм:

Сеть Элмана состоит из Nl слоев, использующих функции взвешивания dotprod, накопления netsum и заданные пользователем функции активации. Все слои имеют смещения. Выход последнего слоя является выходом сети. Веса и смещения инициализируются
с помощью функции initnw. Адаптация реализуется с помощью функции adaptwb, которая настраивает веса с помощью заданной функции настройки.

Сопутствующие функции: NEWFF, NEWCF, SIM, INIT, ADAPT, TRAIN.

 

neWHOP Сеть Хопфилда HOP

Синтаксис:

net = newhop(T)

Описание:

Сети Хопфилда применяются для решения задач распознавания образов.

Функция net = newhop(T) имеет 1 входной аргумент – массив T размера R´Q, объединяющий Q целевых векторов (со значениями +1 или –1), R – число элементов вектора входа.

Функция возвращает рекуррентную сеть Хопфилда в виде объекта класса network object.

Свойства:

Сеть Хопфилда имеет 1 нейронный слой с функциями взвешивания dotprod, накопления netsum и активации satlins. Слой охвачен динамической обратной связью и имеет смещения.

Пример:

Создадим сеть Хопфилда с двумя устойчивыми точками в трехмерном пространстве:

T = [–1 –1 1; 1 –1 1]';

net = newhop(T);

gensim(net) % Рис.11.34

Рис. 11.34

Проверим, что сеть устойчива в этих точках, и используем их как начальные условия для линии задержки. Если сеть устойчива, можно ожидать, что выходы Y будут те же самые.

Ai = T;

[Y,Pf,Af] = sim(net,2,[],Ai);

Y =

–1 1

–1 –1

1 1

Таким образом, вершины гиперкуба являются устойчивыми точками равновесия сети Хопфилда.

Проверим сходимость сети при произвольном входном векторе Ai:

Ai = {[–0.9; –0.8; 0.7]};

[Y,Pf,Af] = sim(net,{1 5},{},Ai);

Y{1}

ans =

–1

–1

Сеть Хопфилда обеспечила переход к устойчивому положению равновесия, ближайшему к заданному входу.

Алгоритм:

Сети Хопфилда разработаны для того, чтобы приводить случайные входные векторы к точкам равновесия, которые соответствуют определенным, заданным пользователем, целям. Алгоритм минимизирует число устойчивых паразитных точек равновесия [25].

Сопутствующие функции: sim, satlins.

Функции активации

Функция активации, или передаточная функция нейрона, преобразует каждый элемент ni вектора входа нейрона в элемент ai вектора выхода:

.

Если рассматривать слой нейронов, то выражение функции активации через параметры слоя может быть записано в следующей векторной форме:

,

где a m – вектор выхода нейронов размера S m´1 для слоя m; Wm – матрица весовых коэффициентов размера S m´ S m –1 для слоя m; bm – вектор смещений размера S m´1 для слоя m; f m – функция активации нейронов слоя m; nm – вектор входа нейронов для слоя m; Sm – число нейронов слоя m; a0 = p – вектор входа сети размера S0 ´1, причем S0 = R и R – число элементов вектора входа сети.

Все М-функции ППП NNToolbox, описывающие функции активации, имеют одинаковый формат

A = <имя_функции>(N),

где A – матрица векторов выхода; N – матрица векторов входа.

Производные функций активации имеют следующий формат

dA_dN = d<имя_функции>(N,A).

Кроме того, для функций активации определена информационная функция вида

info = <имя_функции>(code),

где аргумент code может принимать следующие значения:

'name' – полное название функции активации;

'deriv' – имя производной функции активации;

'active' – активный диапазон входа функции активации;

'output' – диапазон выхода функции активации.

Персептрон

 

hardlim, DHARDLIM Функция активации с жесткими ограничениями

Блок Simulink:

Синтаксис:

A = hardlim(N) info = hardlim(code) dA_dN = dhardlim(N,A)

Описание:

Функция A = hardlim(N) реализует функцию активации с жесткими ограничениями, которая возвращает выход нейрона равным 1, если вход достигает порогового значения,
в иных случаях выход равен 0.

Функция info = hardlim(code) сообщает информацию о функции hardlim.

Функция dA_dN = dhardlim(N, A) вычисляет производную функции hardlim.

Пример:

Информация о функции активации hardlim:

name = hardlim('name')

dname = hardlim('deriv')

inrange = hardlim('active')

outrange = hardlim('output')

name = Hard Limit

dname = dhardlim

inrange = 0 0

outrange = 0 1

Зададим следующий вектор входа функции активации с жесткими ограничениями для слоя из трех нейронов и рассчитаем вектор выхода A и производную dA_dN:

N = [0.1; 0.8; –0.7];

A = hardlim(N) dA_dN = dhardlim(N,A)
A = dA_dN =

Применение функции:

Функция активации hardlim используется при формировании нейронной сети персептрона с помощью М-функции newp. Для задания функции активации hardlim следует
установить значение свойства net.layers{i}.transferFcn равным 'hardlim'.

Алгоритм:

Функция активации hardlim и ее производная dhardlim определяются следующими
соотношениями:

Сопутствующие функции: sim, hardlims.

 

hardlimS,DHARDLMS Симметричная функция с жесткими ограничениями

Блок Simulink:

Синтаксис:

A = hardlims(N) info = hardlims(code) dA_dN = dhardlms(N, A)

Описание:

Функция A = hardlims(N) реализует симметричную функцию активации с жесткими ограничениями, которая возвращает выход нейрона равным 1 при положительном и –1 при отрицательном пороговом значении.

Функция info = hardlims(code) сообщает информацию о функции hardlims.

Функция dA_dN = dhardlms(N, A) вычисляет производную функции hardlims.

Пример:

Информация о функции активации hardlims:

name = hardlims('name')

dname = hardlims('deriv')

inrange = hardlims('active')

outrange = hardlims('output')

name = Symmetric Hard Limit

dname = dhardlms

inrange = 0 0

outrange = –1 1

Зададим следующий вектор входа симметричной функции активации с жесткими ограничениями для слоя из трех нейронов и рассчитаем вектор выхода A и производную dA_dN:

N = [0.1; 0.8; –0.7];

A = hardlims(N) dA_dN = dhardlms(N,A)
A = –1 dA_dN =

Применение функции:

Функция активации hardlims используется при формировании нейронной сети персептрона с помощью М-функции newp. Для задания функции активации hardlims следует установить значение свойства net.layers{i}.transferFcn равным 'hardlims'.

Алгоритм:

Функция активации hardlims и ее производная dhardlms определяются следующими соотношениями:

Сопутствующие функции: sim, hardlim.

Линейные сети

purelin,DPURELIN Линейная функция активации

Блок Simulink:

Синтаксис:

A = purelin(N) info = purelin(code) dA_dN = dpurelin(N,A)

Описание:

Функция A = purelin(N) реализует линейную функцию активации во всем диапазоне изменения входного аргумента.

Функция info = purelin(code) сообщает информацию о функции purelin.

Функция dA_dN = dpurelin(N, A) вычисляет производную функции purelin.

Пример:

Информация о функции активации purelin:

name = purelin('name')

dname = purelin('deriv')

inrange = purelin('active')

outrange = purelin('output')

name = Linear

dname = dpurelin

inrange = –Inf Inf

outrange = –Inf Inf

Зададим следующий вектор входа линейной функции активации для слоя из трех нейронов и рассчитаем вектор выхода A и производную dA_dN:

N = [0.1; 0.8; –0.7];

A = purelin(N) dA_dN = dpurelin(N,A)
A = 0.1000 0.8000 –0.7000 dA_dN =

Применение функции:

Функция активации purelin используется при формировании нейронных сетей
с помощью М-функций newlin и newlind. Для задания функции активации purelin следует установить значение свойства net.layers{i}.transferFcn равным 'purelin'.

Алгоритм:

Функция активации purelin и ее производная dpurelin определяются следующими
соотношениями:

;

.

Сопутствующие функции: sim, satlin, satlins.

 

POSLIN,DPOSLIN Положительная линейная функция активации

Блок Simulink:

Синтаксис:

A = poslin(N) info = poslin(code) dA_dN = dposlin(N,A)

Описание:

Функция A = poslin(N) реализует положительную линейную функцию активации.

Функция info = poslin(code) сообщает информацию о функции poslin.

Функция dA_dN = dposlin(N, A) вычисляет производную функции poslin.

Пример:

Информация о функции активации poslin:

name = poslin('name')

dname = poslin('deriv')

inrange = poslin('active')

outrange = poslin('output')

name = Positive Linear

dname = dposlin

inrange = 0 Inf

outrange = 0 Inf

Зададим следующий вектор входа положительной линейной функции активации
для слоя из трех нейронов и рассчитаем вектор выхода A и производную dA_dN:

N = [0.1; 0.8; –0.7];

A = poslin(N) dA_dN = dposlin(N,A)
A = 0.1000 0.8000 dA_dN =

Применение функции:

Для задания функции активации poslin следует установить значение свойства net.layers{i}.transferFcn равным 'poslin'.

Алгоритм:

Функция активации poslin и ее производная dposlin определяются следующими
соотношениями:

Сопутствующие функции: SIM, PURELIN, SATLIN, SATLINS.

 

satlin, DSATLIN Линейная функция с ограничениями

Блок Simulink:

Синтаксис:

A = satlin(N) info = satlin(code) dA_dN = dsatlin(N,A)  

Описание:

Функция A = satlin(N) реализует линейную функцию активации с ограничениями.

Функция info = satlin(code) сообщает информацию о функции satlin.

Функция dA_dN = dsatlin(N, A) вычисляет производную функции satlin.

Пример:

Информация о функции активации satlin:

name = satlin('name')

dname = satlin('deriv')

inrange = satlin('active')

outrange = satlin('output')

name = Saturating Linear

dname = dsatlin

inrange = 0 1

outrange = 0 1

Зададим следующий вектор входа линейной функции активации с ограничениями
для слоя из трех нейронов и рассчитаем вектор выхода A и производную dA_dN:

N = [0.1; 0.8; –0.7];

A = satlin(N) dA_dN = dsatlin(N,A)
A = 0.1000 0.8000 dA_dN =

 

Применение функции:

Для задания функции активации satlin следует установить значение свойства net.layers{i}.transferFcn равным 'satlin'.

Алгоритм:

Функция активации satlin и ее производная dsatlin определяются следующими
соотношениями:

Сопутствующие функции: SIM, POSLIN, SATLINS, PURELINS.

 

satlinS,DSATLINS Симметричная линейная функция с ограничениями

Блок Simulink:

Синтаксис:

A = satlins(N) info = satlins(code) dA_dN = dsatlins(N, A)

Описание:

Функция A = satlins(N) реализует симметричную линейную функцию активации
с ограничениями.

Функция info = satlins(code) сообщает информацию о функции satlins.

Функция dA_dN = dsatlins(N, A) вычисляет производную функции satlins.

Пример:

Информация о функции активации satlins:

name = satlins('name')

dname = satlins('deriv')

inrange = satlins('active')

outrange = satlins('output')

name = Symmetric Saturating Linear

dname = dsatlins

inrange = –1 1

outrange = –1 1

Зададим следующий вектор входа симметричной линейной функции активации
с ограничениями для слоя из трех нейронов и рассчитаем вектор выхода A и производную dA_dN:

N = [0.1; 0.8; –0.7];

A = satlins(N) dA_dN = dsatlins(N,A)
A = 0.1000 0.8000 –0.7000 dA_dN =

Применение функции:

Для задания функции активации satlins следует установить значение свойства net.layers{i}.transferFcn равным 'satlins'.

Алгоритм:

Функция активации satlins и ее производная dsatlins определяются следующими
соотношениями:

Сопутствующие функции: SIM, POSLIN, SATLIN, PURELINS.

Радиальные базисные сети

 

RADBAS,DRADBAS Радиальная базисная функция

Блок Simulink:

Синтаксис:

A = radbas(N) info = radbas(code) dA_dN = dradbas(N,A)

Описание:

Функция A = radbas(N) реализует радиальную базисную функцию активации.

Функция info = radbas(code) сообщает информацию о функции radbas.

Функция dA_dN = dradbas(N, A) вычисляет производную функции radbas.

Пример:

Информация о функции активации radbas:

name = radbas('name')

dname = radbas('deriv')

inrange = radbas('active')

outrange = radbas('output')

name = Radial Basis

dname = dradbas

inrange = –2 2

outrange = 0 1

Следующая последовательность команд создает график функции активации radbas:

n = –3:0.1:3;

a = radbas(n);

plot(n,a) % Рис.11.35

Рис. 11.35

Зададим следующий вектор входа радиальной базисной функции активации для слоя из трех нейронов и рассчитаем вектор выхода A и производную dA_dN:

N = [0.1; 0.8; –0.7];

A = radbas(N) dA_dN = dradbas(N,A)
A = 0.9900 0.5273 0.6126 dA_dN = –0.1980 –0.8437 0.8577

Применение функции:

Функция активации radbas используется при формировании вероятностных и обобщенных регрессионных сетей с помощью М-функций newpnn и newgrnn. Для задания функции активации radbas следует установить значение свойства net.layers{i}.transferFcn равным 'radbas'.

Алгоритм:

Функция активации radbas и ее производная dradbas определяются следующими
соотношениями:

;

.

Сопутствующие функции: sim, tribas, dradbas.

 

tribas,DTRIBAS Треугольная функция активации

Блок Simulink:

Синтаксис:

A = tribas(N) info = tribas(code) dA_dN = dtribas(N,A)

Описание:

Функция A = tribas(N) реализует треугольную функцию активации.

Функция info = tribas(code) сообщает информацию о функции tribas.

Функция dA_dN = dtribas(N, A) вычисляет производную функции tribas.

Пример:

Информация о функции активации tribas:

name = tribas('name')

dname = tribas('deriv')

inrange = tribas('active')

outrange = tribas('output')

name = Triangle Basis

dname = dtribas

inrange = –1 1

outrange = 0 1

Построим график функции активации tribas (рис. 11.36):

n = –2:0.1:2;

a = tribas(n);

plot(n,a) % Рис.11.36

Рис. 11.36

Зададим следующий вектор входа треугольной функции активации для слоя из трех нейронов и рассчитаем вектор выхода A и производную dA_dN:

N = [0.1; 0.8; –0.7];

A = tribas(N) dA_dN = dtribas(N,A)
A = 0.9000 0.2000 0.3000 dA_dN = –1 –1 –1

Применение функции:

Для задания функции активации tribas следует установить значение свойства net.layers{i}.transferFcn равным 'tribas'.

Алгоритм:

Функция активации tribas и ее производная dtribas определяются следующими
соотношениями:

;

Сопутствующие функции: SIM, RADBAS.

Самоорганизующиеся сети

 

COMPET Конкурирующая функция активации

Блок Simulink:

Синтаксис:

A = compet(N)

info = compet(code)

Описание:

Функция A = compet(N) реализует конкурирующую функцию активации.

Функция info = compet(code) сообщает информацию о функции compet.

Функция compet не имеет производной.

Конкурирующая функция преобразует вектор входа слоя нейронов так, чтобы нейрон с самым большим входом имел выход, равный 1, а всего другие нейроны имели выходы, равные 0.

Пример:

Информация о функции активации compet:

name = compet('name')

dname = compet('deriv')

inrange = compet('active')

outrange = compet('output')

name = Competitive

dname = ''

inrange = –Inf Inf

outrange = 0 1

Зададим следующий вектор входа конкурирующей функции активации, вычислим выход и представим входы и выходы в виде столбцовых диаграмм (рис. 11.37):

n = [0; 1; –0.5; 0.5];

a = compet(n);

subplot(2,1,1), bar(n), ylabel('n')

subplot(2,1,2), bar(a), ylabel('a') % Рис.11.37

Рис. 11.37

Применение функции:

Функция активации compet используется при формировании вероятностных и самоорганизующихся нейронных сетей с помощью М-функций newc и newpnn. Для задания функции активации compet следует установить значение свойства net.layers{i}.transferFcn равным 'compet'.

Сопутствующие функции: SIM, SOFTMAX.

 

softmax Конкурирующая функция активации с мягким максимумом

Блок Simulink:

Синтаксис:

A = softmax(N)

info = softmax(code)

Описание:

Функция A = softmax(N) реализует конкурирующую функцию активации с мягким максимумом.

Функция info = softmax(code) сообщает информацию о функции softmax.

Функция softmax не имеет производной.

Пример:

Информация о функции активации softmax:

name = softmax('name')

dname = softmax('deriv')

inrange = softmax('active')

outrange = softmax('output')

name = Soft Max

dname = ''

inrange = –Inf Inf

outrange = 0 1

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

n = [0; 1; –0.5; 0.5];

a = softmax(n);

subplot(2,1,1), bar(n), ylabel('n')

subplot(2,1,2), bar(a), ylabel('a') % Рис.11.38

Рис. 11.38

Применение функции:

Функция активации softmax используется при формировании вероятностных и самоорганизующихся нейронных сетей с помощью М-функций newc и newpnn. Для задания функции активации softmax следует установить значение свойства net.layers{i}.transferFcn равным 'softmax'.

Сопутствующие функции: sim, compet.

Рекуррентные сети

 

logsig, DLOGSIG Логистическая функция

Блок Simulink:

Синтаксис:

A = logsig(N) info = logsig(code) dA_dN = dlogsig(N,A)

Описание:

Функция A = logsig(N) реализует логистическую сигмоидальную функцию активации.

Функция info = logsig(code) сообщает информацию о функции logsig.

Функция dA_dN = logsig(N, A) вычисляет производную функции logsig.

Пример:

Информация о функции активации logsig:

name = logsig('name')

dname = logsig('deriv')

inrange = logsig('active')

outrange = logsig('output')

name = Log Sigmoid

dname = dlogsig

inrange = –4 4

outrange = 0 1

Построим график функции активации logsig(рис. 11.39):

n = –5:0.1:5;

a = logsig(n);

plot(n,a) % Рис.11.39

Рис. 11.39

Зададим следующий вектор входа логистической функции активации для слоя из трех нейронов и рассчитаем вектор выхода A и производную dA_dN:

N = [0.1; 0.8; –0.7];

A = logsig(N) dA_dN = dlogsig(N,A)
A = 0.5250 0.6900 0.3318 dA_dN = 0.2494 0.2139 0.2217

Применение функции:

Функция активации logsig используется при формировании нейронных сетей прямой передачи с помощью М-функций newff и newcf. Для задания функции активации logsig следует установить значение свойства net.layers{i}.transferFcn равным 'logsig'.

Алгоритм:

Функция активации logsig и ее производная dlogsig определяются следующими
соотношениями:

;

.

Сопутствующие функции: sim, dlogsig, dtansig.

 

TANSIG, DTANSIG Гиперболическая тангенциальная функция

Блок Simulink:

Синтаксис:

A = tansig(N) info = tansig(code) dA_dN = dtansig(N,A)  

Описание:

Функция A = tansig(N) реализует гиперболическую тангенциальную функцию активации.

Функция info = tansig(code) сообщает информацию о функции tansig.

Функция dA_dN = tansig(N, A) вычисляет производную функции tansig.

Пример:

Информация о функции активации tansig:

name = tansig('name')

dname = tansig('deriv')

inrange = tansig('active')

outrange = tansig('output')

name = Tan Sigmoid

dname = dtansig

inrange = –2 2

outrange = –1 1

Следующая последовательность команд строит график функции активации tansig:

n = –3:0.1:3;

a = tansig(n);

plot(n,a) % Рис.11.40

Рис. 11.40

Зададим следующий вектор входа гиперболической тангенциальной функции активации для слоя из трех нейронов и рассчитаем вектор выхода A и производную dA_dN:

N = [0.1; 0.8; –0.7];

A = tansig(N) dA_dN = dtansig(N,A)
A = 0.0997 0.6640 –0.6044 dA_dN = 0.9901 0.5591 0.6347

Применение функции:

Функция активации tansig используется при формировании нейронных сетей прямой передачи с помощью М-функций newff и newcf. Для задания функции активации tansig следует установить значение свойства net.layers{i}.transferFcn равным 'tansig'.

Алгоритм:

Функция активации tansig и ее производная dtansig определяются следующими
соотношениями:

;

.

Приведенное выражение для функции tansig(n) математически эквивалентно функции tanh(N), но отличается тем, что выполняется быстрее, чем реализация функции tanh в системе MATLAB. Для нейронных сетей, где быстродействие играет важную роль, это весьма существенно [42].

Сопутствующие функции: sim, dtansig, logsig.

Синаптические функции

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



©2015- 2017 stydopedia.ru Все материалы защищены законодательством РФ.