概要
本篇博客主要讲解了BP神经网络模型的层次结构,并在机器学习(周志华)——神经网络模型(二)中讲解BP算法和BGD、SGD和MBGD三种梯度下降算法。
神经元模型
神经元模型是是组成神经网络模型的最基本单位。在生物神经网络领域内,神经元之间相互相连,当一个神经元兴奋时,就会向相连的神经元发送化学物质,从而改变这些神经元内的电位;如果某神经元的电位超过了一个阈值,那么它就会被激活,即兴奋起来,向其他神经元发送化学物质。1943 年,McCulloch 和 Pitts 将上述生物学中情形抽象为如下图所示的简单模型,这就是一直沿用至今的 M-P 神经元模型。神经元接收来自
n
个其他神经元传递过来的输入信号
x
,这些输入信号通过带权重 的连接进行传递,神经元接收到的总输入值
∑ni=1wixi
将与神经元的阈值项
θ
进行线性组合,然后通过激活函数
f
对得线性组合进行映射产生神经元的输出
y=f(∑ni=1wixi+θ)
神经网络
将多个神经元模型按一定的层次结构连接起来,就能得到神经网络的模型。事实上,从计算机学科角度来看,我们可以不考虑神经网络是否真的模拟了生物神经网络,只需将一个神经网络模型看成一个包含了许多超参数的数学模型,这个模型有若干个激活函数组成。
下面本文将对3层的神经网络进行具体介绍。上图给出了基本的神经网模型结构示意图。3层的神经网络模型是由输入层、隐藏层和输出层构成的。其中输入层与输出层神经元个数与输入数据密切相关。因此首先对输入到神经网络数据集进行相关说明。对于给定输入数据集表示如下:
D={(x(1),y(1)),(x(2),y(2)),⋯,(x(m),y(m))}$(4)
其中
m
代表输入数据集大小,
xi∈Rd,yi∈Rl
,即输入神经元的输入是一个
1×d
维矩阵或者
d
维向量,其表示为:
x(i)=(x(i)1,x(i)2,⋯,x(i)d)(5)
输出神经元的输出是一个
1×l
维矩阵或
l
维向量,其表示为:
y(i)=(y(i)1,y(i)2,⋯,y(i)l)(6)
即输入层神经元个数为输入数据的维数、输出层神经元个数为输入数据真实结果的维数。在以下相关介绍中,本文假定有
d
个输入层神经元,
q
个隐藏层神经元,
l
个输出层神经元。隐藏层的每个神经元都含有一个阈值项
θi
,故隐藏层的阈值项可以表示为:
θ=(θ1,θ2,⋯,θq)(7)
同理,输出层的阈值项可以表示为:
γ=(γ1,γ2,⋯,γl)(8)
同时,输入层的每个神经元与隐含层的每个神经元之间有一个连接权重,记作
vij
,表示第
i
个输入神经元与第
j
个隐藏层神经元之间的权重。故输入层与隐含层之间的连接权重可以表示为:
v=(v(1),v(2),⋯,v(d))T(9)
其中
v(i)
是个
1×q
维向量,即
v(i)
可以表示为:
v(i)=(v(i)1,v(i)2,⋯,v(i)q)(10)
故输入层与隐藏层之间的权重可以也可以表示为一个的
d×q
矩阵:
v=⎛⎝⎜⎜⎜⎜⎜⎜⎜v(1)1⋮⋮v(d)1v(1)2⋱⋮v(d)2⋯⋮⋱⋯v(1)q⋮⋮v(d)q⎞⎠⎟⎟⎟⎟⎟⎟⎟(11)
同理隐含层与输出层之间的连接权重可以表示
q×l
矩阵为:
w=(w(1),w(2),⋯,w(q))T=⎛⎝⎜⎜⎜⎜⎜⎜⎜w(1)1⋮⋮w(q)1w(1)2⋱w(q)2⋯⋱⋯w(1)l⋮⋮w(q)l⎞⎠⎟⎟⎟⎟⎟⎟⎟(12)
其中
w(i)
可以表示为:
w(i)=(w(i)1,w(i)2,⋯,w(i)l)(13)
可以计算出第
h
个隐含层神经元的输入为:
α(h)=∑i=1dv(h)ix(i)(14)
那么第
h
个隐含层神经元的输出为:
b(h)=f(α(h)+θ)(15)
其中:
f(x)=11+e−xf′(x)=f(x)[1−f(x)](16)(17)
同理,第
j
个输出层神经元的输入为:
β(j)=∑i=1lw(j)ib(j)(18)
第
j
个输出层神经元的输出为:
y^(j)=f(β(j)+γ)(19)