神经网络的学习(训练)
"神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应" [Kohonen, 1988]
回顾神经元模型
根据第三章介绍的M-P神经元模型,我们有
其中, 为激活函数。
神经网络的学习(训练)过程(
)
神经网络的学习(训练)过程就是找到一个合适函数的过程,对下面具体的数学公式来说,就是找到一组合适的权重,使得样本的输出与预期的结果接近,最好是完全一样:
权重为, 其中,
一层神经网络的训练过程如下图所示:
其中表示一组输入的特征向量(样本),
表示一组权重向量,表示如下:
训练步骤具体如图所示:
- 随意(一般采用随机方式)初始化一组权重
(其中包含偏置
)
- 根据一组输入数据特征
(样本)、权重
、激活函数
,计算输出
,其中
- 根据输出
,以及样本预期值
(标签),计算
的调整值
:
- 根据上一步计算出来的调整值
,调整
:
- 对一组样本反复迭代执行步骤(1)-(4),直到得到一组满意的权重
为止
在步骤(3)中,我们计算的调整值
时,用的公式是:
。
为什么这样计算?是因为这里使用了均方误差作为损失函数来度量目标函数的优劣,均方误差损失函数的定义为
通常我们认为,当损失函数达到其最小值点时,这时的权重是最优的,通过这组权重构成的函数就是拟合最好的函数。
所以这里步骤(5)中所说的得到一组满意的权重就是指损失函数到达最小值点时的权重。
如何使损失函数找到其最小值点,我们将在《梯度下降法》一章中详细介绍。
另外,上面步骤(3)中的,是指学习率,取值范围在(0,1)之间。学习率的具体含义我们也将在《梯度下降法》一章中解释。
关于损失函数的意义我们将在《损失函数》这一章中讲解。在这里,大家请牢记这个训练步骤就行,这是通用的。
如果是多层神经网络,就将上一层的输出作为下一层的输入,依次迭代,直到达到输出层,如下图所示:
输出层的设计
对于最后一层输出层,跟其他层的设计不太一样。输出层所用的激活函数,要根据求解问题的性质决定。一般地:
- 回归问题可以使用恒等函数
- 二元分类问题可以使用 sigmoid函数
- 多元分类问题可以使用 softmax函数
机器学习的问题大致可以分为分类问题和回归问题。分类问题是数据属于哪一个类别的问题。比如,区分图像中的人是男性还是女性的问题就是分类问题。而回归问题是根据某个输入预测一个(连续的)数值的问题。比如,根据一个人的图像预测这个人的体重的问题就是回归问题(类似“57.4kg”这样的预测)
关于恒等函数、Sigmoid函数和Softmax函数这些激活函数,我们在下一章《激活函数》中介绍。
References: