单层感知器算法
感知器介绍
感知器为二分类模型与逻辑回归类似其输入为实例的特征向量,输出为实例的类别,取+1或者-1值。
简单来说,就是在平面坐标轴画一条直线,把点分为两类。
感知器结构
输入节点:x1,x2,x3
输出节点:y
权衡向量:w1,w2,w3
偏置因子: b
激活函数:
sign
(
x
)
=
{
1
x
>
0
0
x
=
0
−
1
x
<
0
\operatorname{sign}(x)=\left\{\begin{array}{rl} 1 & x>0 \\ 0 & x=0 \\ -1 & x<0 \end{array}\right.
sign(x)=⎩⎨⎧10−1x>0x=0x<0
学习信号:神经元期望输出与实际值输出之差
dj为期望输出,oj为实际输出:
其中:
n
e
t
j
′
=
∑
i
=
1
n
ω
i
j
x
i
n e t_{j}^{\prime}=\sum_{i=1}^{n} \omega_{i j} x_{i}
netj′=i=1∑nωijxi
o j = sgn ( n e t j ′ − θ j ) = sgn ( ∑ i = 0 n ω i j x i ) = sgn ( W j T X ) o_{j}=\operatorname{sgn}\left(n e t_{j}^{\prime}-\theta_{j}\right)=\operatorname{sgn}\left(\sum_{i=0}^{n} \omega_{i j} x_{i}\right)=\operatorname{sgn}\left(W_{j}^{T} X\right) oj=sgn(netj′−θj)=sgn(i=0∑nωijxi)=sgn(WjTX)
r
=
d
j
−
0
j
+
r=d_{j }-0_{j+}
r=dj−0j+
权值调整公式为:
Δ
W
i
=
n
[
d
j
−
s
g
n
(
W
i
⊤
x
)
]
X
Δ
W
i
j
=
n
[
d
j
−
s
g
n
(
W
i
T
x
)
]
x
i
i
=
0
,
1
,
2
,
…
,
n
\begin{aligned} &\Delta \mathrm{W}_{i}=\mathrm{n}\left[\mathrm{d}_{\mathrm{j}}-\mathrm{sgn}\left(\mathrm{W}_{\mathrm{i}}^{\top} \mathrm{x}\right)\right] \mathrm{X}\\ &\Delta \mathrm{W}_{\mathrm{ij}}=\mathrm{n}\left[\mathrm{d}_{\mathrm{j}}-\mathrm{sgn}\left(\mathrm{W}_{\mathrm{i}}^{\mathrm{T}} \mathrm{x}\right)\right] \mathrm{x}_{\mathrm{i}} \quad \mathrm{i}=0,1,2, \ldots, \mathrm{n} \end{aligned}
ΔWi=n[dj−sgn(Wi⊤x)]XΔWij=n[dj−sgn(WiTx)]xii=0,1,2,…,n
学习率:
- η学习率(0<η<1)
- 学习率太大,容易造成权值调整不稳定
- 学习率太小,权值调整太慢,迭代次数太多
收敛条件:
- 误差小于某个预先设定的较小值
- 两次迭代之间的权值变化已经很小
- 设定最大迭代次数,当超过最大次数就停止