概要
本篇博客主要讲解了BP神经网络模型的层次结构,并在机器学习(周志华)——神经网络模型(二)中讲解BP算法和BGD、SGD和MBGD三种梯度下降算法。对于BP神经网络算法的手写代码请移步:利用BP神经网络对语音特征信号数据集进行分类
神经元模型
神经元模型是是组成神经网络模型的最基本单位。在生物神经网络领域内,神经元之间相互相连,当一个神经元兴奋时,就会向相连的神经元发送化学物质,从而改变这些神经元内的电位;如果某神经元的电位超过了一个阈值,那么它就会被**,即兴奋起来,向其他神经元发送化学物质。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))}$(1)
其中m代表输入数据集大小, xi∈Rd,yi∈Rl,即输入神经元的输入是一个1×d维矩阵或者 d维向量,其表示为:
x(i)=(x(i)1,x(i)2,⋯,x(i)d)(2)
输出神经元的输出是一个1×l 维矩阵或 l维向量,其表示为:
y(i)=(y(i)1,y(i)2,⋯,y(i)l)(3)
即输入层神经元个数为输入数据的维数、输出层神经元个数为输入数据真实结果的维数。在以下相关介绍中,本文假定有d个输入层神经元, q个隐藏层神经元, l个输出层神经元。隐藏层的每个神经元都含有一个阈值项θi ,故隐藏层的阈值项可以表示为:
θ=(θ1,θ2,⋯,θq)(4)
同理,输出层的阈值项可以表示为:
γ=(γ1,γ2,⋯,γl)(5)
同时,输入层的每个神经元与隐含层的每个神经元之间有一个连接权重,记作vij ,表示第i个输入神经元与第j个隐藏层神经元之间的权重。故输入层与隐含层之间的连接权重可以表示为:
v=(v(1),v(2),⋯,v(d))T(6)
其中v(i)是个1×q维向量,即v(i)可以表示为:
v(i)=(v(i)1,v(i)2,⋯,v(i)q)(7)
故输入层与隐藏层之间的权重可以也可以表示为一个的d×q矩阵:
v=⎛⎝⎜⎜⎜⎜⎜⎜⎜v(1)1⋮⋮v(d)1v(1)2⋱⋮v(d)2⋯⋮⋱⋯v(1)q⋮⋮v(d)q⎞⎠⎟⎟⎟⎟⎟⎟⎟(8)
同理隐含层与输出层之间的连接权重可以表示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⎞⎠⎟⎟⎟⎟⎟⎟⎟(9)
其中w(i)可以表示为:
w(i)=(w(i)1,w(i)2,⋯,w(i)l)(10)
可以计算出第h个隐含层神经元的输入为:
α(h)=∑i=1dv(h)ix(i)(11)
那么第h个隐含层神经元的输出为:
b(h)=f(α(h)+θ)(12)
其中:
f(x)=11+e−xf′(x)=f(x)[1−f(x)](13)(14)
同理,第j个输出层神经元的输入为:
β(j)=∑i=1lw(j)ib(j)(15)
第j个输出层神经元的输出为:
y^(j)=f(β(j)+γ)(16)