快速翻阅,快速学习
迭代方法图1(https://blog.csdn.net/qq_37791134/article/details/79779016)包含一个标题为“计算参数更新”的华而不实的绿框。现在,我们将用更实质的方法代替这种华而不实的算法。假设我们有时间和计算资源来计算 w1的所有可能值的损失。对于我们一直在研究的回归问题,所产生的损失与 w1的图形始终是凸形。换言之,图形始终是碗状图,如下所示:
图 2. 回归问题产生的损失与权重图为凸形。
凸形问题只有一个最低点;即只存在一个斜率正好为 0 的位置。这个最小值就是损失函数收敛之处。
通过计算整个数据集中 w1每个可能值的损失函数来找到收敛点这种方法效率太低。我们来研究一种更好的机制,这种机制在机器学习领域非常热门,称为梯度下降法。
梯度下降法的第一个阶段是为 w1选择一个起始值(起点)。起点并不重要;因此很多算法就直接将 w1 设为 0 或随机选择一个值。下图显示的是我们选择了一个稍大于 0 的起点:
图 3. 梯度下降法的起点。
然后,梯度下降法算法会计算损失曲线在起点处的梯度。简而言之,梯度是偏导数的矢量;它可以让您了解哪个方向距离目标“更近”或“更远”。请注意,损失相对于单个权重的梯度(如图 3 所示)就等于导数,那损失相对于多个权重的梯度等同于什么?请回答:————。我的答案:就是梯度咯。如果有其他答案的欢迎留言一起讨论。
---------------------------------------知识点分界线------------------------------------------------
插播知识点:详细了解偏导数和梯度。
涉及机器学习领域的数学非常有趣,我们很高兴您点击了该链接来了解详情。不过请注意,TensorFlow 会为您处理所有的梯度计算过程,因此您其实不必理解此处提供的微积分知识。偏导数
多变量函数指的是具有多个参数的函数,例如:
f 相对于 x 的偏导数表示如下:
是 f (x) 的导数。要计算以上值:
您必须使 y 保持固定不变(因此 f 现在是只有一个变量 x 的函数),然后取 f 相对于 x 的常规导数。例如,当 y 固定为 1 时,前面的函数变为:
这只是一个变量 x 的函数,其导数为:
一般来说,假设 y 保持不变,f 对 x 的偏导数的计算公式如下:
同样,如果我们使 x 保持不变,f 对 y 的偏导数为:
直观而言,偏导数可以让您了解到,当您略微改动一个变量时,函数会发生多大的变化。在前面的示例中:
因此,如果您将起点设为 (0,1),使 y 保持固定不变并将 x 移动一点,f 的变化量将是 x 变化量的 7.4 倍左右。
在机器学习中,偏导数主要与函数的梯度一起使用。
梯度
函数的梯度是偏导数相对于所有自变量的矢量,表示如下:
该矢量中的维度个数等于 f 公式中的变量个数;换言之,该矢量位于该函数的域空间内。例如,在三维空间中查看下面的函数 f(x,y) 时:
z = f(x,y) 就像一个山谷,最低点为 (2,0,4):
f(x,y) 的梯度是一个二维矢量,可让您了解向哪个 (x,y) 方向移动时高度下降得最快。也就是说,梯度矢量指向山谷。
在机器学习中,梯度用于梯度下降法。我们的损失函数通常具有很多变量,而我们尝试通过跟随函数梯度的负方向来尽量降低损失函数。
-----------------------------------------------知识分界线完毕-----------------------------
请注意,梯度是一个矢量,因此具有以下两个特征:
- 方向
- 大小
梯度始终指向损失函数中增长最为迅猛的方向。梯度下降法算法会沿着负梯度的方向走一步,以便尽快降低损失。
图 4. 梯度下降法依赖于负梯度。
为了确定损失函数曲线上的下一个点,梯度下降法算法会将梯度大小的一部分与起点相加,如下图所示:
图 5. 一个梯度步长将我们移动到损失曲线上的下一个点。
然后,梯度下降法会重复此过程,逐渐接近最低点。
------------------------------------------------------------关键词分界线------------------------------
划重点!!!关键字词:
1、梯度下降法 (gradient descent)
一种通过计算并且减小梯度将损失降至最低的技术,它以训练数据为条件,来计算损失相对于模型参数的梯度。通俗来说,梯度下降法以迭代方式调整参数,逐渐找到权重和偏差的最佳组合,从而将损失降至最低。
权重 (weight)
线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。
损失 (Loss)
一种衡量指标,用于衡量模型的预测偏离其标签的程度。或者更悲观地说是衡量模型有多差。要确定此值,模型必须定义损失函数。例如,线性回归模型通常将均方误差用于损失函数,而逻辑回归模型则使用对数损失函数。
2、步 (step)
对一个批次的向前和向后评估。
批次 (batch)
模型训练的一次迭代(即一次梯度更新)中使用的样本集。
另请参阅批次规模。
批次规模 (batch size)
一个批次中的样本数。例如,SGD 的批次规模为 1,而小批次的规模通常介于 10 到 1000 之间。批次规模在训练和推断期间通常是固定的;不过,TensorFlow 允许使用动态批次规模。
随机梯度下降法 (SGD, stochastic gradient descent)
批次规模为 1 的一种梯度下降法。换句话说,SGD 依赖于从数据集中随机均匀选择的单个样本来计算每步的梯度估算值。
小批次 (mini-batch)
从训练或推断过程的一次迭代中一起运行的整批样本内随机选择的一小部分。小批次的规模通常介于 10 到 1000 之间。与基于完整的训练数据计算损失相比,基于小批次数据计算损失要高效得多。
样本 (example)
数据集的一行。一个样本包含一个或多个特征,此外还可能包含一个标签。另请参阅有标签样本和无标签样本。
特征 (feature)
在进行预测时使用的输入变量。
标签 (label)
在监督式学习中,标签指样本的“答案”或“结果”部分。有标签数据集中的每个样本都包含一个或多个特征以及一个标签。例如,在房屋数据集中,特征可以包括卧室数、卫生间数以及房龄,而标签则可以是房价。在垃圾邮件检测数据集中,特征可以包括主题行、发件人以及电子邮件本身,而标签则可以是“垃圾邮件”或“非垃圾邮件”。
3.步长 (step size)
是学习速率的同义词。
学习速率 (learning rate)
在训练模型时用于梯度下降的一个变量。在每次迭代期间,梯度下降法都会将学习速率与梯度相乘。得出的乘积称为梯度步长。
学习速率是一个重要的超参数。