Нормализованная функция обучения весу перцептрона и смещению
[dW,LS] = learnpn(W,P,Z,N,A,T,E,gW,gA,D,LP,LS)
info = learnpn('code')
learnpn является функцией обучения весу и смещению. Это может привести к более быстрому обучению, чем learnp когда входные векторы имеют широко изменяющиеся величины.
[dW,LS] = learnpn(W,P,Z,N,A,T,E,gW,gA,D,LP,LS) принимает несколько входов,
W |
|
P |
|
Z |
|
N |
|
A |
|
T |
|
E |
|
gW |
|
gA |
|
D |
|
LP | Параметры обучения, нет, |
LS | Состояние обучения, первоначально должно быть = |
и возвращает
dW |
|
LS | Новое состояние обучения |
info = learnpn(' возвращает полезную информацию для каждого code')code символьный вектор:
'pnames' | Названия параметров обучения |
'pdefaults' | Параметры обучения по умолчанию |
'needg' | Возвращает 1, если эта функция используется |
Здесь определяется случайный ввод P и ошибка E для слоя с двухэлементным входом и тремя нейронами.
p = rand(2,1); e = rand(3,1);
Поскольку learnpn только эти значения необходимы для вычисления изменения веса (см. «Алгоритм» ниже), используйте их для этого.
dW = learnpn([],p,[],[],[],[],e,[],[],[],[],[])
Перцептроны действительно имеют одно реальное ограничение. Для нахождения решения набор входных векторов должен быть линейно разделяемым. То есть, если входные векторы с целями 1 не могут быть отделены линией или гиперплоскостью от входных векторов, связанных со значениями 0, перцептрон никогда не сможет правильно их классифицировать.
learnpn вычисляет изменение веса dW для данного нейрона из входа нейрона P и ошибка E согласно нормированному правилу обучения перцептрону:
pn = p / sqrt(1 + p(1)^2 + p(2)^2) + ... + p(R)^2)
dw = 0, if e = 0
= pn', if e = 1
= -pn', if e = -1
Выражение для dW можно суммировать как
dw = e*pn'