Main Content

learnpn

正規化パーセプトロンの重みとバイアスの学習関数

構文

[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

SR 列の重み行列 (または、S1 列のバイアス ベクトル)

P

RQ 列の入力ベクトル (または ones(1,Q))

Z

SQ 列の重み付き入力ベクトル

N

SQ 列の正味入力ベクトル

A

SQ 列の出力ベクトル

T

SQ 列の層のターゲット ベクトル

E

SQ 列の層の誤差ベクトル

gW

性能に関する SR 列の重み勾配

gA

性能に関する SQ 列の出力勾配

D

SS 列のニューロン距離

LP

学習パラメーター。なし。LP = []

LS

学習状態。初期値は []

これは、以下を返します。

dW

SR 列の重み (またはバイアス) 変更行列

LS

新しい学習状態

info = learnpn('code') は、次の各 code 文字ベクトルに関する有用な情報を返します。

'pnames'

学習パラメーターの名前

'pdefaults'

既定の学習パラメーター

'needg'

この関数が gW または gA を使用すると 1 が返される

ここでは、1 つの 2 要素入力と 3 つのニューロンをもつ層に対し、ランダムな入力 P と誤差 E を定義します。

p = rand(2,1);
e = rand(3,1);

learnpn は、重みの変化の計算でこれらの値のみを必要とするため (下の「アルゴリズム」を参照)、これらをそのように使用します。

dW = learnpn([],p,[],[],[],[],e,[],[],[],[],[])

制限

パーセプトロンには、重要な制限が 1 つ存在します。解を求める際に、一連の入力ベクトルを線形分離できなければなりません。つまり、直線または超平面によって、ターゲットが 1 である入力ベクトルを 0 の値が割り当てられている入力ベクトルから分離できない場合、パーセプトロンはそれらを正しく分類できません。

アルゴリズム

learnpn は、指定されたニューロンについて、ニューロンの入力 P と誤差 E に基づき、正規化パーセプトロン学習規則に従って重みの変化 dW を計算します。

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'

バージョン履歴

R2006a より前に導入

参考

| |