【Google 机器学习笔记】
四、降低损失【Reducing Loss】
上一节我们讲到,损失是一个模型对预测数据的准确程度,那么对于一个糟糕的模型,我们有没有办法降低损失呢?有,一种称为迭代方法广泛用于降低损失,而且使用起来简单有效。
- 迭代方法:重复执行一系列运算步骤,从前面的量依次求出后面的量的过程,称为迭代。
下图显示了机器学习算法用于训练模型的迭代试错过程:
在机器学习中,使用迭代方法即是:对权重和偏差进行初始猜测,然后反复调整这些猜测,直到获得损失可能最低的权重和偏差为止(此时模型已收敛)。
- 梯度下降法【Gradient descent】:一个一阶最优化算法,通常也称为最速下降法。 用于寻找函数极小值(不是最小值)。梯度下降法会以迭代方式调整参数,逐渐找到权重和偏差的最佳组合,从而将损失降至最低。
- 梯度:梯度是一个向量,表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大。梯度方向始终指向损失函数中增长最为迅猛的方向,大小为最大方向偏导。
- 梯度下降法与迭代方法的联系:梯度下降法是迭代方法概念图(上图)“计算参数更新”的具体方法之一。也是比较有效率的方法(相较于通过计算整个数据集中权重每个可能值的损失函数来找到收敛点而言)
- 梯度下降法步骤(以线性模型为例,损失函数 f ( x ) = L 2 f(x)=L_2 f(x)=L2):
1. 赋初值:为权重值选择一个初始起点(0或随机的一个数),起点并不重要。
2.计算梯度:计算损失曲线在此点的(负)梯度,方向指向极小值点
3.确定下一个点:将当前点与梯度大小相加,获得下一个点,如图:
4.重复步骤2和步骤3,直至接近于极小值。
- 学习速率:有时称为步长,标量。用于确定上面“梯度下降法步骤”步骤3的下一个点。学习速率与梯度相乘,得出的乘积称为梯度步长。例如,如果梯度大小为 2.5,学习速率为 0.01,则梯度下降法算法会选择距离前一个点 0.025 的位置作为下一个点。
- 梯度×学习速率的原因:梯度大小无法控制。增加一个参数,编程人员可以通过调整这个参数来调控模型。此时这个参数称为超参数。
- 学习速率过小会花费很多时间,损失降低速率极慢。损失曲线近似一条直线。另外,过低的学习速率容易过拟合(在下一节会详细介绍)
- 学习速率过大会导致越过最低点,此时损失曲线表现为剧烈震荡的线条。
- 确定理想学习速率的方法:
1.试错(常用)。 对于较小的数据集的一种较好的办法,通过观察损失曲线不断调整学习速率,直至得到理想的学习速率(损失下降快,收敛快)。
2.计算。 对于较简单但规模较大的数据集,计算理想学习速率可能更快。但是模型有可能不收敛。对于较复杂的数据集,试错可能更好( f ( x ) f(x) f(x)表示损失函数)
一维空间中的理想学习速率是 1 f ′ ′ ( x ) \frac 1{f''(x)} f′′(x)1( 即 f ( x ) f(x) f</