感知机是一种经典的神经网络算法,用于数据分类。其图形化展示如下图,相互连接的神经元j和神经元k做了放大处理,我们可以更清楚地了解感知机中每个神经元的计算逻辑。
其中,输入层x1和x2对应于一条有两个特征的数据,输出层y表示这条数据的标签(类别)。对于神经元k,接收它左侧三个神经元的输出,作为其输入。每一个输入配有一个权重wjk,因此,神经元k接收的输入总和为zk=∑jwjkaj+bk。gk(z)是神经元k的激活函数,其结果ak作为神经元k的输出。即:
ak=gk(∑jwjkaj+bk)
常见的激活函数有:
学习策略
此处,我们以双输入单神经元感知机,sgn_func作为激活函数为例开始讲解感知机的学习策略。如下图:
如上神经网络的输出定义为a=sgn(WTX+b)=sgn(w1x1+w2x2+b),决策边界定义为z=WTX+b=w1x1+w2x2+b=0。其图形化展示如下:
其中,W为决策边界WTX+b=0的法向量,始终垂直于决策边界。
对于输入数据{x1=[12],y1=1}{x2=[−0.52],y2=0}{x3=[−0.5−1],y3=0},下图中空心圆表示yi=0,实心圆表示yi=1。感知机的学习策略步骤如下:
- 令x0i=1和w0=b,我们随机初始化W构建感知机模型l0:W0X=0;
- 在决策边界l0的分类下,发现x1被错误分类,即y=1,a=0。因此,参数更新公式有W1=W0+x1(新的参数向量W1使得新的决策边界l1向x1的方向旋转);
- 在决策边界l1的分类下,发现x2被错误分类,即y=0,a=1。因此,参数更新公式有W2=W1−x2(新的参数向量W2使得新的决策边界l2向远离x2的方向旋转);
- 在决策边界l2的分类下,发现x1,x2,x3均被正确分类,即y=0,a=0或y=1,a=1。因此,参数不再更新。
总结如上两种错误分类情况,即得统一的参数更新公式:
Wnew=Wold+(y−a)X
此参数更新公式对于单隐层多神经元感知机同样适用,不过是
W由向量变成了矩阵。
感知机的收敛性
由于y−a∈{−1,1},可令W(k+1)=W(k)+X′(k)。其中:
X′(k)∈{x1,x2,…,xm,−x1,−x2,…,−xm}
然后,我们假设感知机存在一个最终解
W⋆,使得:
W⋆Txi>δ>0|y=1W⋆Txi<−δ<0|y=0
其中,
δ表示某可能很小的正数。结合
X′(k)的定义,得
W⋆TX′(k)>δ。
roof:
初始化感知机参数W(0)为0,经过k次迭代后:
W(K)=X′(0)+X′(1)+X′(2)+⋯+X′(k−1)W⋆TW(K)=W⋆TX′(0)+W⋆TX′(1)+W⋆TX′(2)+⋯+W⋆TX′(k−1)
由于
W⋆TX′(k)>δ,得
W⋆TW(K)>kδ。
(W⋆TW(K))2=(∥W⋆∥∥W(K)∥cosθ)2≤∥W⋆∥2∥W(K)∥2∥W(K)∥2≥(W⋆TW(K))2∥W⋆∥2>(kδ)2∥W⋆∥2
接下来计算
∥W(K)∥的上界:
∥W(K)∥2=WT(K)W(K)=[W(K−1)+X′(K−1)]T[W(K−1)+X′(K−1)]=WT(K−1)W(K−1)+2WT(K−1)X′(K−1)+X′T(K−1)X′(K−1)
对于
W(K−1),决策边界仍处于更新状态中。因此,必有数据被错误分类。如果
y=1,a=0,
WT(K−1)X′(K−1)=WT(K−1)X(K−1)≤0;如果
y=0,a=1,
WT(K−1)X′(K−1)=−WT(K−1)X(K−1)≤0(读者可以自行构建二维坐标系验证)。因此:
∥W(K)∥2≤∥W(K−1)∥2+∥X′(K−1)∥2
重复迭代可得:
∥W(K)∥2≤∥X′(0)∥2+∥X′(1)∥2+⋯+∥X′(K−1)∥2
令
Π=max(∥X′(i)∥2),得:
∥W(K)∥2≤kΠ
结合
∥W(K)∥2>(kδ)2∥W⋆∥2,得:
(kδ)2∥W⋆∥2<∥W(K)∥2≤kΠk<Π∥W⋆∥2δ2
得证感知机的学习能在有限次数内完成。
感知机的局限性
上面对单层神经元感知机学习策略的讲解和收敛性的证明都基于一个假设:数据是线性可分的。即存在一个超平面能将不同类的数据分隔开。然而,现实中的数据大多是非线性可分的,如下图:
而非线性数据可通过引入多层神经元处理。