神经网络
Lei_ZM
2019-10-07
1. 感知机
1.1. 定义
假设输入空间是X⊆Rn,输出空间是y={1,0}。输入x∈X七表示实例的特征向量,对应于输入空间的点;输出y∈Y表示实例的类别。由输入空间到输出空间的如下函数:
f(x)=sgn(wTx+b)
称为感知机参数,其中w和b为感知机模型参数,sgn为阶跃函数,即:
sgn(z)={1,0,z⩾0z<0
1.2. 感知机的几何解释
线性方程wTx+b=0对应于特征空间(输入空间)Rn中的一个超平面S,其中w是超平面的法向量,b是超平面的截距。这个超平面将特征空间划分为两个部分。位于两边的点(特征向量)分别被分为正、负两类。因此,超平面S称为分离超平面,如图所示:

1.3. 学习策略
假设训练数据集是线性可分的,感知机学习的目标是求得一个能够将训练集正实例点和负实例点完全正确分开的超平面。为了找出这样的超平面S,即确定感知机模型参数w和b,需要确定一个学习策略,即定义损失函数并将损失函数极小化。损失函数的一个自然选择是误分类点的总数。但是,这样的损失函数不是参数w和b的连续可导函数,不易优化,所以感知机采用的损失函数为误分类点到超平面的总距离。
输入空间Rn中点x0到超平面S的距离公式为:
∥w∥∣∣wTx0+b∣∣
其中,∥w∥表示向量w的L2范数,也就是模长。
若将b看成哑结点,即将其合进至w可得:
∥w^∥∣∣∣w^Tx^0∣∣∣
设误分类点集合为M,那么所有误分类点到超平面S的总距离为:
x^i∈M∑∥w^∥∣∣∣w^Tx^i∣∣∣
又因为,对于任意误分类点x^i∈M来说, 都有:
(y^i−yi)w^Tx^i>0
其中,y^i为当期感知机的输出。于是所有误分类点到超平面S的总距离为:
x^i∈M∑∥w^∥(y^i−yi)w^Tx^i
由于训练完成后无误分类点,即损失函数值为0,与分母∥w^∥无关,故可舍去,即不考虑∥w^∥1,此时得到感知机的函数为:
L(w^)=x^i∈M∑(y^i−yi)w^Tx^i
显然,损失函数L(w^)是非负的。如果没有误分类点,损失函数值为0。而且误分类点越少,误分类点离超平面越近,损失函数值就越小,在误分类时是参数心的线性函数,在正确分类时是0。因此,给定训练数据集,损失函数L(w^)是w^的连续可导函数。
1.4. 算法
感知机学习算法是对以下最优化问题的算法,给定训练数据集:
T={(x^1,y1),(x^2,y2),⋯,(x^N,yN)}
其中,x^i∈Rn+1,yi∈{0,1},求参数w^使其为以下损失函数极小化问题的解。
L(w^)=x^i∈M∑(y^i−yi)w^Tx^i
其中,M为误分类点的集合。
感知机学习算法是误分类驱动的,具体采用随机梯度下降法。首先,任意选取一个超平面w^0Tx^=0用梯度下降法不断地极小化损失函数L(w^),极小化过程中不是一次使M中所有误分类点的梯度下降,而是一次随机选取一个误分类点使其梯度下降。已知损失函数的梯度为:
∇L(w^)=∂w^∂L(w^)=∂w^∂[x^i∈M∑(y^i−yi)w^Tx^i]=x^i∈M∑[(y^i−yi)∂w^∂(w^Tx^i)]矩阵微分公式∂x∂xTa=a=x^i∈M∑(y^i−yi)x^i
那么随机选取一个误分类点x^i进行梯度下降,可得参数w^的更新公式:
w^←w^+Δw^Δw^=−η∇L(w^)←w^−η∇L(w^)选取一个误分类点∇L(w^)=(y^i−yi)x^i←w^−η(y^i−yi)x^i=w^+η(yi−y^i)x^i
即有:
w^←w^+Δw^=w^+η(yi−y^i)
⇒Δw^=η(yi−y^i)(西瓜书式5.2)
2. 神经网络
2.1. 模型结构
单隐层前馈网络模型结构如下:

其中,
-
D={(x1,y1),(x1,y1),⋯,(x1,y1)},xi∈Rd,yi∈Rl:训练集
-
d:神经元输入个数,输入示例属性描述的个数
-
l:输出神经元个数,输出的实值向量维数
-
q:隐层神经元的个数
-
θj:输出层第j个神经元的阈值
-
γh:隐层第h个神经元的阈值
-
vih:输入层第i个神经元与隐层第h个神经元之间的连接权重
-
whj:隐层第h个神经元与输出层第j个神经元之间的连接权重
-
αh=∑i=1dvihxi:隐层第h个神经元接收到的输入
-
βj=∑h=1qwhjbh:输出层第j个神经元接收到的输入
-
bh:隐层第h个神经元的输出
2.2. 标准BP算法
给定一个训练样本(xk,yk),假设神经网络模型的输出为y^k=(y^1,y^2,⋯,y^l),即:
y^jk=f(βj−θj)(西瓜书式5.3)
其中 f 为Sigmoid,则网络在一个训练样本(xk,yk)上的均方误差为:
Ek=21j=1∑l(y^jk−yjk)2(西瓜书式5.4)
如果按照梯度下降法更新模型参数,那么各个参数的更新公式为:
whj←whj+Δwhjθj←θj+Δθjvih←vih+Δvihγh←γh+Δγh=whj−η∂whj∂Ek=θj−η∂θj∂Ek=vih−η∂vih∂Ek=γh−η∂γh∂Ek
2.2.1. 参数whj的更新
已知Ek和whj的函数链式关系为:
Ek=21j=1∑l(y^jk−yjk)2 ↓ y^jk=f(βj−θj) ↓ βj=h=1∑qwhjbh
所以:
∂whj∂Ek=∂y^jk∂Ek⋅∂βj∂y^jk⋅∂whj∂βj
其中:
∂y^jk∂Ek=∂y^jk∂[21∑j=1l(y^jk−yjk)2]=21×2×(y^jk−yjk)×1=y^jk−yjk∂βj∂y^jk=∂βj∂[f(βj−θj)]=f′(βj−θj)×1其中 f′(x)=f(x)(1−f(x))=f(βj−θj)×[1−f(βj−θj)]西瓜书式5.3 y^jk=f(βj−θj)=y^jk(1−y^jk)∂whj∂βj=∂whj∂(∑h=1qwhjbh)=bh
则令gj有:
gj=−∂y^jk∂Ek⋅∂βj∂y^jk=−(y^jk−yjk)f′(βj−θj)=y^jk(1−y^jk)(yjk−y^jk)(西瓜书式5.10)
故有:
Δwhj=−η∂whj∂Ek=−η∂y^jk∂Ek⋅∂βj∂y^jk⋅∂whj∂βj=ηgjbh(西瓜书式5.11)
2.2.2. 参数θj的参数更新
已知Ek和θj的函数链式关系为:
Ek=21j=1∑l(y^jk−yjk)2 ↓ y^jk=f(βj−θj)
所以:
∂θj∂Ek=∂y^jk∂Ek⋅∂θj∂y^jk
其中:
∂y^jk∂Ek=∂y^jk∂[21∑j=1l(y^jk−yjk)2]=21×2×(y^jk−yjk)×1=y^jk−yjk∂θj∂y^jk=∂θj∂[f(βj−θj)]=f′(βj−θj)×(−1)其中 f′(x)=f(x)(1−f(x))=f(βj−θj)×[1−f(βj−θj)]×(−1)西瓜书式5.3 y^jk=f(βj−θj)=y^jk(1−y^jk)×(−1)
故有:
Δθj=−η∂θj∂Ek=−η∂y^jk∂Ek⋅∂θj∂y^jk=−η(y^jk−yjk)⋅y^jk(1−y^jk)×(−1)=−η(yjk−y^jk)⋅y^jk(1−y^jk)西瓜书式5.10 gj=y^jk(1−y^jk)(yjk−y^jk)=−ηgj(西瓜书式5.12)
2.2.3. 参数vih的更新
已知Ek和vih的函数链式关系为:
Ek=21j=1∑l(y^jk−yjk)2 ↓ y^jk=f(βj−θj) ↓ βj=h=1∑qwhjbh↓bh=f(αh−γh) ↓ αh=i=1∑dvihxi
所以:
∂vih∂Ek=j=1∑l∂y^jk∂Ek⋅∂βj∂y^jk⋅∂bh∂βj⋅∂αh∂bh⋅∂vih∂αh
这里vih存在于每一个y^j中,故共有l个函数链关系。
其中:
∂y^jk∂Ek=∂y^jk∂[21∑j=1l(y^jk−yjk)2]=21×2×(y^jk−yjk)×1=y^jk−yjk∂βj∂y^jk=∂βj∂[f(βj−θj)]=f′(βj−θj)×1其中 f′(x)=f(x)(1−f(x))=f(βj−θj)×[1−f(βj−θj)]西瓜书式5.3 y^jk=f(βj−θj)=y^jk(1−y^jk)∂bh∂βj=∂bh∂(∑h=1qwhjbh)=whj∂αh∂bh=∂αh∂[f(αh−γh)]=f′(αh−γh)×1其中 f′(x)=f(x)(1−f(x))=f(αh−γh)×[1−f(αh−γh)]=bh(1−bh)∂vih∂αh=∂vih∂(∑i=1dvihxi)=xi
则令eh有:
eh=−∂αh∂Ek=−j=1∑l∂y^jk∂Ek⋅∂βj∂y^jk⋅∂bh∂βj⋅∂αh∂bh=j=1∑l(−∂y^jk∂Ek⋅∂βj∂y^jk)⋅(∂bh∂βj)⋅(∂αh∂bh)=j=1∑lgj⋅whj⋅bh(1−bh)=bh(1−bh)j=1∑lwhjgj(西瓜书式5.15)
所以:
Δvih=−η∂vih∂Ek=−ηj=1∑l∂y^jk∂Ek⋅∂βj∂y^jk⋅∂bh∂βj⋅∂αh∂bh⋅∂vih∂αh=η(−j=1∑l∂y^jk∂Ek⋅∂βj∂y^jk⋅∂bh∂βj⋅∂αh∂bh)⋅(∂vih∂αh)=ηehxi(西瓜书式5.13)
2.2.4. 参数γh的更新
已知Ek和γh的函数链式关系为:
Ek=21j=1∑l(y^jk−yjk)2 ↓ y^jk=f(βj−θj) ↓ βj=h=1∑qwhjbh↓bh=f(αh−γh)
所以:
γh∂Ek=j=1∑l∂y^jk∂Ek⋅∂βj∂y^jk⋅∂bh∂βj⋅∂γh∂bh
这里γh存在于每一个y^j中,故共有l个函数链关系。
其中:
∂y^jk∂Ek=∂y^jk∂[21∑j=1l(y^jk−yjk)2]=21×2×(y^jk−yjk)×1=y^jk−yjk∂βj∂y^jk=∂βj∂[f(βj−θj)]=f′(βj−θj)×1其中 f′(x)=f(x)(1−f(x))=f(βj−θj)×[1−f(βj−θj)]西瓜书式5.3 y^jk=f(βj−θj)=y^jk(1−y^jk)∂bh∂βj=∂bh∂(∑h=1qwhjbh)=whj∂γh∂bh=∂γh∂[f(αh−γh)]其中 f′(x)=f(x)(1−f(x))=f′(αh−γh)×(−1)=f(αh−γh)×[1−f(αh−γh)]×(−1)=bh(1−bh)×(−1)
故有:
Δγh=−ηγh∂Ek=−ηj=1∑l∂y^jk∂Ek⋅∂βj∂y^jk⋅∂bh∂βj⋅∂γh∂bh=ηj=1∑l(−∂y^jk∂Ek⋅∂βj∂y^jk)⋅(∂bh∂βj)⋅(∂γh∂bh)=ηj=1∑lgj⋅whj⋅bh(1−bh)×(−1)=−ηbh(1−bh)j=1∑lwhjgj西瓜书式5.15 eh=bh(1−bh)j=1∑lwhjgj=−ηeh(西瓜书式5.14)