直观解释
神经网络模型,我自己用一句话对其进行概括就是:通过不断的训练,学习出一个函数(即不断调整这个函数的各个参数),使得这个函数在训练集上可以很好的拟合训练样本的真实输出,因为理论上前馈神经网络,只需具备单隐含层和有限个神经单元,就能以任意精度拟合任意复杂度的函数,这是个已经被证明了的定理。比如来看下面这张图:
在这里蓝色的点表示我们的训练样本,行坐标表示的是样本的特征,为了简单起见这里假设输入的特征是一维的,纵坐标表示输出。光从这些蓝色的点我们可以看到这些样本大致呈显出以一定规律分布,即其分布可能与某个函数(红色曲线表示)的变化相一致,而为了预测后续输入(比如说x=5)的可能输出值,我们就需要学习出这样的一个函数。由于噪声的影响,这些样本不可能完全落在曲线上,而是会存在一定的偏差,因此我们学习的过程就是:首先初始化这条曲线的参数(系数),然后通过不断地对函数的各个参数进行调整使得训练样本距离曲线的总误差最小,这样得到的一个函数能够较好的对训练样本进行拟合,即能够较好的反应数据的分布规律。
神经网络的结构
这是一个神经元的结构,为神经元的输入,为各输入的权重,Σ执行操作,f为激活函数,将z输入到激活函数中的到神经元的输出,b成为神经元的偏置。神经网络即由众多神经元连接而构成,由下图所示:
这是一个四层的神经网络(严格来说为三层,即不包括输入层L0层在内),其中L0为输入层,L3为输出层,L1和L2为隐藏层(之所以称之为隐藏层,是因为我们在训练数据中无法直接观测到它们的值,而只能观测到输入层和输出层)。除了输入层外,每个神经元都有偏置b以及输入的权重,因为输入层只是作为神经网络的输入,不需要提供其他的功能。为了叙述方便,约定一下符号表示:表示第l-1层中的第i个神经元与第l层中的第j个神经元之间的连接权重;表示第l层中第j个神经元的偏置;作为第l层第j个神经元的加权输入;表示第l层第j个神经元的激活值;表示第l层第j个神经元的权重向量;表示第l层神经元的数量,表示第l层神经元的权重矩阵,其为形状为;表示第l层神经元的的偏置向量,其为一个行向量;表示第l层神经元的加权输入向量,也为行向量;表示第l层神经元的输出向量,为行向量。
神经网络模型的学习的目的是要让学习到的模型能够很好的对训练样本进行拟合,为了评估模型对样本的拟合程度,这里需要定义一个损失函数,用于计算单个样本的预测输出和真实输出的误差,那么对训练集上的所有样本的这样一个误差汇总后就得到模型在训练集上的整体误差,用代价函数(也叫目标函数)表示。其学习过程是一个前向传播和反向传播的过程,即将样本的特征作为输入,经由神经网络的层层计算最后得到样本的预测输出,此为前向传播的过程。反向过程为,由目标函数从后往前逐层计算出各层权重和偏置的偏导:和,然后使用梯度下降法更新权重和偏置:
(1)
(2)
在这里,η称为学习率,用于控制每次更新的“步伐”大小。因为梯度下降法是基于微分思想,即目标函数随着