谷歌机器学习课程笔记(4)——降低损失

一、迭代方法

 

为了训练模型,需要一种可降低模型损失的好方法。迭代方法是一种广泛用于降低损失的方法,而且使用起来简单有效。迭代策略在机器学习中的应用非常普遍,这主要是因为它们可以很好地扩展到大型数据集。

 

下图显示了机器学习算法用于训练模型的迭代试错过程:

“模型”部分将一个或多个特征作为输入,然后返回一个预测 (y') 作为输出。

图中的“计算损失”部分是模型将要使用的损失函数。

机器学习系统就是在图中的“计算参数更新”部分根据所有标签评估所有特征,为损失函数生成一个新值,而该值又产生新的参数值。这种学习过程会持续迭代,直到该算法发现损失可能最低的模型参数。通常需要不断迭代直到总体损失不再变化或至少变化极其缓慢为止。这时候,可以说该模型已收敛

 

二、梯度下降法

 

现在,将详细说明“计算参数更新”部分的算法。

 

假设我们有时间和计算资源来计算 w1 的所有可能值的损失。对于我们一直在研究的回归问题,所产生的损失与 w1 的图形始终是凸形。

凸形问题只有一个最低点;即只存在一个斜率正好为 0 的位置。这个最小值就是损失函数收敛之处。

通过计算整个数据集中 w1 每个可能值的损失函数来找到收敛点这种方法效率太低。我们来研究一种更好的机制,这种机制在机器学习领域非常热门,称为梯度下降法

 

梯度下降法的第一个阶段是为 w1 选择一个起始值(起点)。

然后,梯度下降法算法会计算损失曲线在起点处的梯度。简而言之,梯度是偏导数的矢量;它可以让您了解哪个方向距离目标“更近”或“更远”。

梯度始终指向损失函数中增长最为迅猛的方向。梯度下降法算法会沿着负梯度的方向走一步,以便尽快降低损失。

为了确定损失函数曲线上的下一个点,梯度下降法算法会将梯度大小的一部分与起点相加。

然后,梯度下降法会重复此过程,逐渐接近最低点。

 

三、学习速率

 

正如之前所述,梯度矢量具有方向和大小。梯度下降法算法用梯度乘以一个称为学习速率(有时也称为步长)的标量,以确定下一个点的位置。

超参数是编程人员在机器学习算法中用于调整的旋钮,在梯度下降法中,学习速率就是一个超参数。大多数机器学习编程人员会花费相当多的时间来调整学习速率。

如果学习速率过小,就会花费太长的学习时间。

相反,如果学习速率过大,下一个点将永远在左右弹跳而无法到达最低点。

每个回归问题都存在一个正好合适的学习速率。这个值与损失函数的平坦程度相关。如果损失函数的梯度较小,则可以采用更大的学习速率,以补偿较小的梯度并获得更大的步长。

 

四、随机梯度下降法

 

在梯度下降法中,批量指的是用于在单次迭代中计算梯度的样本总数。一个批量可能相当巨大。如果是超大批量,则单次迭代就可能要花费很长时间进行计算。

通过从数据集中随机选择样本,可以从小得多的数据集估算(尽管过程非常杂乱)出较大批量的平均值。 随机梯度下降法 (SGD) 将这种想法运用到极致,它每次迭代只使用一个样本(批量大小为 1)。如果进行足够的迭代,SGD 也可以发挥作用,但过程会非常杂乱。“随机”这一术语表示构成各个批量的一个样本都是随机选择的。

小批量随机梯度下降法小批量 SGD)是介于全批量迭代与 SGD 之间的折衷方案。小批量通常包含 10-1000 个随机选择的样本。小批量 SGD 可以减少 SGD 中的杂乱样本数量,但仍然比全批量更高效。

Pingbacks已关闭。

Trackbacks

评论已关闭