感知器网络的简单认识
上一篇介绍了人工神经网络背景,神经元,神经元模型以及神经网络的最初模型–MP模型的概念,这就有了一个初步的对神经网络的了解。
那么接下来一起来看一下什么是感知器网络。
神经网络根据层次有:单层神经网络,双层神经网络和多层神经网络之分。
上一篇说的MP模型与今天说的感知器网络都属于单层神经网络。
通过介绍我们已经知道了MP模型的一个最大的缺点就是该模型的权值是不可调节的,固定的,这就导致模型不能用来进行学习。
而感知机神经元在MP模型的基础之上增加了学习功能和偏置,其权值可以根据设计目的进行调节。
感知器网络就很适合简单模型的分类问题,解决线性划分(两类)问题。
感知器神经元模型
感知器模型和MP模型一样都是单层神经网络,它比MP模型多了偏置,且w值可以根据目的进行调节。
单层神经网络就是如下,中间过程包含两个计算函数。
偏置(偏差b)是一个可调节参数,增加了神经网络的可塑性,即:
N
e
t
i
j
=
∑
j
=
1
r
W
j
P
j
+
b
Net_{ij}=\sum\limits_{j=1}^{r}W_{j}P_{j}+b
Netij=j=1∑rWjPj+b
(记住
W
P
+
b
WP+b
WP+b即:权重*输入+偏置)
f ( n ) f(n) f(n)函数是激活函数(激活函数的概念在第一篇时已经说明)
N e t i j Net_{ij} Netij经过激活函数计算,输出实际输出值 a i a_{i} ai
该模型用公式可表达为:
输出 a i = f ( W P + b ) = f ( ∑ j = 1 r W j P j + b ) = f ( N e t i j ) = { 1 N e t i j > = 0 0 N e t i j < 0 a_{i}=f(WP+b)=f(\sum\limits_{j=1}^{r}W_{j}P_{j}+b)=f(Net_{ij})=\begin{cases} 1 & Net_{ij}>=0 \\ 0 & Net_{ij}<0 \\ \end{cases} ai=f(WP+b)=f(j=1∑rWjPj+b)=f(Netij)={10Netij>=0Netij<0
(感知器网络模型的激活函数可以说是sign符号函数,返回数字0/1,用以分类)
一般来说,感知器网络结构是单层神经网络(也有多层,如下图示意的,可以感受一下多层和单层的区别在哪儿,手动绘画,有些丑)
每个神经元的计算都有偏置b加入。
将上述模型结构权重值,抽象用矩阵表示一下可以这样表述:
感知器的输入和输出
感知器的input个数与output个数不一定一致,这个可以参看MP模型,
(比如说输入P1,P2,P3三个,经过权值求和激活函数最终被分为两类0/1,这个时候输入3个输出2个。)
我们用
r
r
r 表示input个数,
s
s
s 表示神经元个数。
一组输入输出和多组输入输出的矩阵表达:
N
s
q
=
W
s
r
∗
P
r
q
+
B
s
q
N_{sq}=W_{sr}*P_{rq}+B_{sq}
Nsq=Wsr∗Prq+Bsq
A
s
q
=
F
(
N
s
q
)
A_{sq}=F(N_{sq})
Asq=F(Nsq)
(
W
s
r
W_{sr}
Wsr是上面的权重值矩阵)
当 s s s=1, r r r=2时,根据 W P + b WP+b WP+b得: W 1 ∗ P 1 + W 2 ∗ P 2 + b W1*P1+W2*P2+b W1∗P1+W2∗P2+b
s个神经元组成的感知器将输入空间分为 2 s 2^{s} 2s类
output向量的第i个元素的表达:
再来看一下上面的
W
s
r
W_{sr}
Wsr:
我们可以把每行
i
i
i 的权重都写为:
i
W
=
[
W
i
1
W
i
2
⋮
W
i
r
]
i^{W}= \left[ \begin{matrix} W_{i1} \\ W_{i2} \\ \vdots \\ W_{ir} \\ \end{matrix} \right]
iW=⎣⎢⎢⎢⎡Wi1Wi2⋮Wir⎦⎥⎥⎥⎤
那么它的转置可写为:
i
W
T
=
[
W
i
1
,
W
i
2
,
.
.
.
,
W
i
r
]
i^{W^{T}}= \left[ \begin{matrix} W_{i1},W_{i2},...,W_{ir} \end{matrix} \right]
iWT=[Wi1,Wi2,...,Wir]
则
W
s
r
W_{sr}
Wsr的第一行可以写为:
1
W
T
=
[
W
11
,
W
12
,
.
.
.
,
W
1
r
]
1^{W^{T}}= \left[ \begin{matrix} W_{11},W_{12},...,W_{1r} \end{matrix} \right]
1WT=[W11,W12,...,W1r]
则
W
s
r
W_{sr}
Wsr的第二行可以写为:
2
W
T
=
[
W
21
,
W
22
,
.
.
.
,
W
r
]
2^{W^{T}}= \left[ \begin{matrix} W_{21},W_{22},...,W_{r} \end{matrix} \right]
2WT=[W21,W22,...,Wr]
以此类推最终
W
s
r
W_{sr}
Wsr可以表达为:
W
s
r
=
[
1
W
T
2
W
T
3
W
T
⋮
s
W
T
]
W_{sr}= \left[ \begin{matrix} 1^{W^{T}} \\ 2^{W^{T}} \\ 3^{W^{T}} \\ \vdots \\ s^{W^{T}} \\ \end{matrix} \right]
Wsr=⎣⎢⎢⎢⎢⎢⎢⎡1WT2WT3WT⋮sWT⎦⎥⎥⎥⎥⎥⎥⎤
则感知器网络输出向量的第i个元素可以表达为:
a i = N e t i = i W T ∗ P + b a_{i}=Net_{i}=i^{W^{T}}*P+b ai=Neti=iWT∗P+b
单神经元感知器
只有一个神经元的感知器网络。
先看一个概念:判定边界
判定边界
看图,感知器线性分类分为0/1两类,红色线=0时是一条边界线
也就是
a
i
=
i
W
T
∗
P
+
b
=
W
11
∗
P
1
+
W
21
∗
P
2
+
b
=
0
a_{i}=i^{W^{T}}*P+b=W11*P1+W21*P2+b=0
ai=iWT∗P+b=W11∗P1+W21∗P2+b=0是一个边界。
为了确定边界的哪边对应的输出为1,哪边对应的0,只需要检测输入空间的1个点,比如取右上方区域一点,若该点预测的a=1则判定边界右上方区域为网络输出为1
比如取第一个元素,取右上方的A点
[
2
,
0
]
T
[2,0]^{T}
[2,0]T
判定边界定为
1
W
T
∗
P
+
b
1^{W^{T}}*P+b
1WT∗P+b,(
1
W
1^{W}
1W是权重向量,总是指向为1的部分。)
则
a
=
[
1
,
1
]
∗
[
2
0
]
−
1
=
2
−
1
=
1
a=\left[\begin{matrix}1,1\end{matrix}\right] *\left[\begin{matrix}2 \\0\end{matrix}\right]-1=2-1=1
a=[1,1]∗[20]−1=2−1=1
所以判定右上方输出为1,即右上方预测的结果a都是1。
这里是不是发现一个问题,
1
W
T
∗
P
1^{W^{T}}*P
1WT∗P不是要+b吗?为什么上面的计算中是-b呐?往下看原因
对于判定边界线上所有的点而言,输入向量与权重值向量的内积是一样的( 1 W ∗ P = − b ; W T ∗ P = − b 1^{W}*P=-b;W^{T}*P=-b 1W∗P=−b;WT∗P=−b,都是-b),这意味着所有P在 1 W 1^{W} 1W 上有相同阴影,所以她们必须位于与权重向量是正交的一条线上。
在
1
W
1^{W}
1W指向的阴影区域(右上方区域)中任意输入P向量都有着大于-b的内积,所以是-b;
左下方区域输入向量有着小于-b的内积,所以这里是+b。
感知器学习规则
通过调整权重和偏差来使得学习性能更好,预测结果更准确。
a
i
a_{i}
ai为网络预测出来的结果值;
t
i
t_{i}
ti为目标值(最初自己想要得到的值)
若
a
i
=
t
i
a_{i}=t_{i}
ai=ti,则不用改变权重和偏差;
若
a
i
a_{i}
ai不等于
t
i
t_{i}
ti,则需要改变权重W与偏差值b:
·
a
i
=
0
,
t
i
=
1
a_{i}=0,t_{i}=1
ai=0,ti=1时,修正:
W
n
e
w
=
W
o
l
d
+
P
T
,
b
i
=
b
i
+
1
W_{new}=W_{old}+P^{T},b_{i}=b_{i}+1
Wnew=Wold+PT,bi=bi+1
·
a
i
=
1
,
t
i
=
0
a_{i}=1,t_{i}=0
ai=1,ti=0时,修正:
W
n
e
w
=
W
o
l
d
−
P
T
,
b
i
=
b
i
−
1
W_{new}=W_{old}-P^{T},b_{i}=b_{i}-1
Wnew=Wold−PT,bi=bi−1
学习的统一表达式:
感知器的修正权重值公式:
1.用分量表示:
Δ
W
i
j
=
(
t
i
−
a
i
)
∗
P
T
\Delta{W_{ij}=(t_{i}-a_{i})*P^{T}}
ΔWij=(ti−ai)∗PT
Δ
b
i
=
(
t
i
−
a
i
)
∗
1
\Delta{b_{i}=(t_{i}-a_{i})*1}
Δbi=(ti−ai)∗1
2.用矩阵表示:
W
=
W
+
E
∗
P
T
W=W+E*P^{T}
W=W+E∗PT
B
=
B
+
E
B=B+E
B=B+E