一、二分类感知机
感知机模型
下图展示了二分类的感知机模型:
感知机模型决策函数:
其中sign(x)为符号函数,定义为如下:
感知机学习策略
损失函数的一个自然选择是误分类点的总数。但是,这样的损失函数不是参数的连续可导函数,不易优化。损失函数的另一个选择是误分类点到超平面S的总距离,这是感知机所采用的。为此,首先写出输入空间R”中任一点
x0
x
0
到超平面S的距离(和我们初中学的点到直线的距离公式类似,只是从二维扩充到n维,下面的 b 即上面模型中的
ωn+1
ω
n
+
1
):
这里, ∥ω∥ ‖ ω ‖ 是 ω ω 的 L2 L 2 范数。
其次,对于误分类的数据
(xi,yi)
(
x
i
,
y
i
)
来说,
成立。因为当 ω⋅xi+b>0 ω ⋅ x i + b > 0 时, yi=−1 y i = − 1 ,而当 ω⋅xi+b<0 ω ⋅ x i + b < 0 。时, yi=+1 y i = + 1 。因此,误分类点 xi x i 到超平面S的距离是:
这样,假设超平面S的误分类点集合为M,且不考虑 1∥ω∥ 1 ‖ ω ‖ (因为 1∥ω∥ 1 ‖ ω ‖ 始终为正,不影响二分类的结果,并能简化计算) 那么损失函数可定义为:
感知机算法
感知机学习算法是误分类驱动的,具体采用随机梯度下降法。首先,任意选取一个超平面,然后用梯度下降法不断地极小化目标函数。极小化过程是一次随机选取一个误分类点使其梯度下降。
损失函数的梯度由下式给出:
随机选取一个误分类点 (xi,yi) ( x i , y i ) 对 ω ω 和 b 更新:
其中, η η 为学习率。这样通过不断更新参数,使得损失函数逐渐下降到最小值0即可。
二、多层前馈神经网络
神经网络模型
下图 展示了神经网络的结构:
最后输出层输出的值可当做属于这个类的概率,因此哪个值高就可认为它属于这类的概率高。而每个神经元的的形式与前面讨论的感知机模型类似,只是激活函数变成了如下的 ‘S形’ 函数:
其中, Ij I j 是网络第 j 层每个节点激活元素的输入, θj θ j 是偏移量, θ0 θ 0 控制 S 函数的形状。上式对应的S函数如下:
任何一层中的节点输入都是来自前一层输出的加权和,令 K 层为 J 层的前一层,则有:
其中, Ok O k 为第 k 层的输出
故 hj(Ij) h j ( I j ) 又可写成如下形式:
神经网络策略
这里我们采用最简单的平方误差来定义损失函数,输出层Q中各节点的期望响应
rq
r
q
和相应的真实响应
Oq
O
q
之间的总误差平方和如下:
其中, NQ N Q 是输出层Q的节点数, 12 1 2 是为了后面取导数更为方便。
反向传播算法
以神经网络结构图为例(Q为输出层,P层在Q前一层,J层在P层前一层)。利用链式法则,我们有:
其中
δq=−∂EQ∂Iq=(rq−Oq)h′q(Iq)
δ
q
=
−
∂
E
Q
∂
I
q
=
(
r
q
−
O
q
)
h
q
′
(
I
q
)
,
△wqp
△
w
q
p
即参数更新项。
上面是输出层的,同理在隐藏层(内层)中也有:
其中 δp=−∂Ep∂Ip=(rp−Op)h′p(Ip) δ p = − ∂ E p ∂ I p = ( r p − O p ) h p ′ ( I p )
但在隐藏层中我们无法知道 rp r p , rp r p 只有在输出层才有意义,因此我们需要替换掉这项。
而又有:
因此,我们可以得到: δp=∑Nqq=1δqwqph′p(Ip) δ p = ∑ q = 1 N q δ q w q p h p ′ ( I p )
我们知道对于 y=11+e−x y = 1 1 + e − x 这个函数,有 y′=y(1−y) y ′ = y ( 1 − y )
综上,对于输出层有:
对于隐藏层有: