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