多层感知器MLP和梯度下降法
为了可以更好地研究非线性数据的决策边界,可以把多个感知器合并成为一个更大的网络,即多层感知器MLP
一、了解MLP
MLP至少由三层构成:
- 第一层:数据集的每个输入特征都有一个节点(神经元)
- 中间隐藏层
- 最后一层:每个类标签的节点
具体的结构可以如图所示:
(来源:百度图片)
MLP拥有一个显著的特性:如果网络足够大,就可以表示任意的数学函数,也称为万能逼近特性
例如:只有一个隐藏层的MLP可以准确地表示:
- 任意布尔函数(与、或、非、与非等)
- 任意有界的连续函数(如正弦函数)
如果有足够多的神经元和足够多的层数,理论上可以学习任意的输入-输出函数
二、梯度下降法
训练需要的三个基本要素:训练数据、代价函数和学习规则。但是学习规则无法泛化到MLP中,因此需要更加通用的规则
当我们在评价一个分类器是否成功的时候,常常需要选取一个代价函数来完成,可以是误分类的个数或者均方方差,这个函数一般依赖于我们想要调整的参数,也就是权重系数。
假设一个简单的神经网络有一个单一的权重 需要调整,那么可以把代价作为权重的函数呈现出图像:
(来源:百度图片)
在训练开始时,从最右边的其实位置出发,我们可以知道,存在一个更好的值,称为
,可以是的代价函数最小化。最小的代价意味着最低的误差,因此通过学习来得到
应该是最终的目标。
梯度下降:在梯度下降时,尝试走的方向和梯度的方向相反,这样就可以快速地从斜坡上下来,从山顶来到山谷。一旦到达了山谷,梯度为0,这时就完成了训练
下降的起始点是由初始的权重值确定的,除此之外还必须十分小心,避免过大的步长错过山谷。因此在随机梯度下降中,目标是采用较小的步长,但是尽可能多地更新,高效的步长由算法的学习率确定。具体会一次次重复下面的过程:
- 给网络提供少量的训练样本(称为批量大小 batch_size)
- 在这一小批数据上,计算代价函数的梯度
- 通过向梯度的反方向前进一小步,来更新权重系数
- 重复1-3步骤,直到权重代价不再降低为止,此时表明已经到达山谷
以上过程实际称为:小批量梯度下降法MBGD
梯度下降主要有:
梯度下降算法 | 优点 | 缺点 |
BGD(批量梯度下降) | 全局最优化 | 计算量大、迭代速度慢 |
SGD(随机梯度下降) | 训练速度快、支持在线学习 | 准确度下降、存在噪音、非全局最优化 |
MBGD(小批量梯度下降) |
可以使用深层学习库中通用的矩阵优化方法,使计算小批量数据的梯度更加高效、 支持在线学习 |
准确度不如BGD、非全局最优解 |
梯度下降的局限:容易陷入局部最小值,存在一些优化方法,在深度学习部分介绍。