神经元模型

仿照生物的神经元模型,神经元接收到来自n个其他神经元的输入信号,这些输入信号带有犬只连接,神经元接收到的总输入值与神经元的阈值进行比较,然后通过**函数产生神经元的输出。
如下图所示:

  • 输入为[x1,x2,x3,...,xn]
  • 输出为y=f(i=1Nwixiθ)

BP算法

其中典型的**函数有四种sigmod, softmax, tanh, relu。现在的深度学习里面用的**函数一般是Relu.具体总结可以看我上一篇博客**函数的选择

感知机模型

感知机被视为最简单形式的前馈神经网络,是一种二元线性分类器,是神经网络和支持向量机的基础。 感知机由两层神经元组成,输入层接受并处理外界信息,然后传递给输出层。如图所示:

BP算法

其中x1,x2表示的是输入,y表示的是输出,θ是阈值,w1,w2表示的是权值。所以有:

y=f(w1x1+w2x2θ)

一般的,对于给定训练数据集,权值wi(i=1,2,...,n)以及阈值θ可通过学习得到。感知机的学习规则非常简单,对于训练样例(x,y),若当前感知机的输出为y^,感知机的权值将这样调整:

wiwi+wi

wi=η(yy^)xi

其中η(0,1)称为学习率,其中可以出如果对于样例(x,y)预测正确,即y^=y,则感知机不会发生变化,否则根据错误程度进行调整。需要注意的是,感知机只有输出层有**函数处理,其学习能力非常有限。

BP算法

对于包含隐含层的神经网络,就可以成为多层网络。

BP算法

现在来看看BP算法。
对于给定数据集D={(x1,y1),(x2,y2),...,(xm,ym)},其中xiRd,yiRl

一些变量的解释:

  • vih表示的是输出层第i个神经元与隐含层第h个神经元的连接权值
  • whj表示的是隐含层第h个神经元与输出层第j个神经元的连接权值
  • αh=i=1dvihxi表示为隐含层第h个神经元的输入
  • βj=h=1qwhjbh表示的是输出层第j个神经元的输入
  • bh表示隐含层第h个神经元的输出

下图为一个拥有d个输入神经元,l个输出神经元和q个隐含神经元的多层前馈神经网络。

BP算法

对于训练样例(xk,yk),假定神经网络的的输出为y^k=(y^1k,y^2k,...,y^lk),所以有:

y^jk=f(βjθj)

网络的误差为

Ek=12j=1l(y^jkyjk)2

任意参数的更新估计式为

vv+v

下面以隐含层到输出层的连接权whj来进行推导

BP算法基于梯度下降的策略,以目标的负梯度方向对参数进行调整,对于误差Ek和给定学习率η,有:

whj=ηEkwhj

whj是先影响输出层第j个神经元,然后再进一步影响输出y^jk的。所以有

Ekwhj=Eky^jky^jkβjβjwhj

其中有

βjwhj=bh

其中**函数为sigmod函数所以有f(x)=11+ex
对于sigmoid函数有

f(x)=f(x)(1f(x))

所以有

y^jk=f(βjθ)

因此令

gj=Eky^jky^jkβj

=(y^jkyjk)y^jk(1y^jk)

综合得:

w=ηg(j)bh

类似的能够得到

θ=ηgj

v=ηehgj

γ=ηeh

其中eh表示的是隐含层的梯度。其实根据前面的结构图,我们能够得到公式bh=f(j=1dwjhxjγh)

所以有

eh=Ekbhbhah

=j=1lEkβjβjbhf(ahγh)

=j=1lgjwhjbh(1bh)

上述流程图总结如下。

BP算法

BP算法的目标是最小化训练集上的累计误差

E=1mk=1mEk

参考文献

1.什么是学习率,以及他是如何影响深度学习的?

2.机器学习,周志华

3.统计学习方法,李航

相关文章: