Персептрон

NEWP Создание персептрона

Синтаксис:

net = newp(PR,s,tf,lf)

Описание:

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

Функция net = newp(PR, s, tf, lf) формирует нейронную сеть персептрона.

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

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

s – число нейронов;

tf – функция активации из списка {hardlim, hardlims}, по умолчанию hardlim;

lf – обучающая функция из списка {learnp, learnpn}, по умолчанию learnp.

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

net – объект класса network object.

Свойства:

Персептрон – это однослойная нейронная сеть с функциями взвешивания dotprod, накопления потенциала netsum и выбранной функцией активации. Слой характеризуется матрицей весов и вектором смещений, которые инициализируются М-функцией initzero.

Адаптация и обучение выполняются М-функциями adaptwb и trainwb, которые модифицируют значения весов и смещений до тех пор, пока не будет достигнуто требуемое значение критерия качества обучения в виде средней абсолютной ошибки, вычисляемой М-функцией mae.

Пример:

Создать персептрон с одним нейроном, входной вектор которого имеет 2 элемента, значения которых не выходят за пределы диапазона (рис. 11.6):

net = newp([0 1; 0 1],1);

gensim(net) % Рис.11.6

Рис. 11.6

Определим следующую последовательность двухэлементных векторов входа P,
составленных из 0 и 1:

P = {[0; 0] [0; 1] [1; 0] [1; 1]};

Обучим персептрон выполнять операцию ЛОГИЧЕСКОЕ И. С этой целью для полного набора входных векторов сформируем последовательность целей:

P1 = cat(2, P{:});

T1 = num2cell(P1(1,:) & P1(2,:))

T1 = [0] [0] [0] [1]

Применим процедуру адаптации, установив число проходов равным 10:

net.adaptParam.passes = 10;

net = adapt(net,P,T1);

Вектор весов и смещение можно определить следующим образом:

net.IW{1}, net.b{1}

ans = 2 1

ans = –3

Таким образом, разделяющая линия имеет вид:

L: 2p1 + p2 – 3 = 0.

Промоделируем спроектированную нейронную сеть, подав входную обучающую
последовательность:

Y = sim(net,P)

Y = [0] [0] [0] [1]

Настройка параметров сети выполнена правильно.

Обучим персептрон выполнять операцию НЕИСКЛЮЧАЮЩЕЕ ИЛИ. С этой целью для полного набора входных векторов Р сформируем последовательность целей:

P1 = cat(2, P{:});

T2 = num2cell(P1(1,:) | P1(2,:))

T2 = [0] [1] [1] [1]

Применим процедуру обучения, установив число циклов равным 20:

net.trainParam.epochs = 20;

net = train(net,P,T2);

Вектор весов и смещение можно определить следующим образом:

net.IW{1}, net.b{1}

net.IW{1}, net.b{1}

ans = 2 2

ans = –2

Таким образом, разделяющая линия имеет вид:

L: 2p1 + 2p2 – 2 = 0.

Промоделируем спроектированную нейронную сеть, подав входную обучающую
последовательность:

Y = sim(net,P)

Y = [0] [1] [1] [1]

Обучение и настройка сети выполнены правильно.

Замечание:

Персептроны решают задачу классификации линейно отделимых входных векторов за конечное время. В случае больших по длине входных векторов функция обучения learnpn может быть по времени выполнения предпочтительнее функции обучения learnp.

Сопутствующие функции: SIM, INIT, ADAPT, TRAIN, HARDLIM, HARDLIMS, LEARNP, LEARNPN.


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



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