神经元模型
仿照生物的神经元模型,神经元接收到来自n个其他神经元的输入信号,这些输入信号带有犬只连接,神经元接收到的总输入值与神经元的阈值进行比较,然后通过激活函数产生神经元的输出。
如下图所示:
- 输入为 [x1,x2,x3,...,xn] [ x 1 , x 2 , x 3 , . . . , x n ]
- 输出为 y=f(∑Ni=1wixi−θ) y = f ( ∑ i = 1 N w i x i − θ )
其中典型的激活函数有四种sigmod, softmax, tanh, relu。现在的深度学习里面用的激活函数一般是Relu.具体总结可以看我上一篇博客激活函数的选择。
感知机模型
感知机被视为最简单形式的前馈神经网络,是一种二元线性分类器,是神经网络和支持向量机的基础。 感知机由两层神经元组成,输入层接受并处理外界信息,然后传递给输出层。如图所示:
其中 x1 x 1 , x2 x 2 表示的是输入, y y 表示的是输出,是阈值, w1 w 1 , w2 w 2 表示的是权值。所以有:
一般的,对于给定训练数据集,权值 wi(i=1,2,...,n) w i ( i = 1 , 2 , . . . , n ) 以及阈值 θ θ 可通过学习得到。感知机的学习规则非常简单,对于训练样例 (x,y) ( x , y ) ,若当前感知机的输出为 y^ y ^ ,感知机的权值将这样调整:
其中 η∈(0,1) η ∈ ( 0 , 1 ) 称为学习率,其中可以出如果对于样例 (x,y) ( x , y ) 预测正确,即 y^=y y ^ = y ,则感知机不会发生变化,否则根据错误程度进行调整。需要注意的是,感知机只有输出层有激活函数处理,其学习能力非常有限。
BP算法
对于包含隐含层的神经网络,就可以成为多层网络。
现在来看看BP算法。
对于给定数据集
D={(x1,y1),(x2,y2),...,(xm,ym)}
D
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
,
(
x
m
,
y
m
)
}
,其中
xi∈Rd,yi∈Rl
x
i
∈
R
d
,
y
i
∈
R
l
。
一些变量的解释:
- vih v i h 表示的是输出层第 i i 个神经元与隐含层第个神经元的连接权值
- whj w h j 表示的是隐含层第 h h 个神经元与输出层第个神经元的连接权值
- αh=∑di=1vihxi α h = ∑ i = 1 d v i h x i 表示为隐含层第 h h 个神经元的输入
- 表示的是输出层第 j j 个神经元的输入
- 表示隐含层第 h h 个神经元的输出
下图为一个拥有个输入神经元,l个输出神经元和q个隐含神经元的多层前馈神经网络。
对于训练样例 (xk,yk) ( x k , y k ) ,假定神经网络的的输出为 y^k=(y^k1,y^k2,...,y^kl) y ^ k = ( y ^ 1 k , y ^ 2 k , . . . , y ^ l k ) ,所以有:
网络的误差为
任意参数的更新估计式为
下面以隐含层到输出层的连接权 whj w h j 来进行推导
BP算法基于梯度下降的策略,以目标的负梯度方向对参数进行调整,对于误差 Ek E k 和给定学习率 η η ,有:
whj w h j 是先影响输出层第 j j 个神经元,然后再进一步影响输出的。所以有
其中有
其中激活函数为sigmod函数所以有
f(x)=11+e−x
f
(
x
)
=
1
1
+
e
−
x
对于sigmoid函数有
所以有
因此令
综合得:
类似的能够得到
其中 eh e h 表示的是隐含层的梯度。其实根据前面的结构图,我们能够得到公式 bh=f(∑dj=1wjhxj−γh) b h = f ( ∑ j = 1 d w j h x j − γ h )
所以有
上述流程图总结如下。
BP算法的目标是最小化训练集上的累计误差
参考文献
2.机器学习,周志华
3.统计学习方法,李航