机器学习入门四------降低损失(代码片段)

wangshouchang wangshouchang     2023-01-03     497

关键词:

降低损失 (Reducing Loss)

为了训练模型,我们需要一种可降低模型损失的好方法。迭代方法是一种广泛用于降低损失的方法,而且使用起来简单有效

了解如何使用迭代方法来训练模型。

全面了解梯度下降法和一些变体,包括:

  • 小批量梯度下降法
  • 随机梯度下降法

尝试不同的学习速率。

降低损失:迭代方法

介绍了损失的概念。在本单元中,您将了解机器学习模型如何以迭代方式降低损失。

迭代学习可能会让您想到“Hot and Cold”这种寻找隐藏物品(如顶针)的儿童游戏。在我们的游戏中,“隐藏的物品”就是最佳模型。刚开始,您会胡乱猜测(“w1 的值为 0。”),等待系统告诉您损失是多少。然后,您再尝试另一种猜测(“w1 的值为 0.5。”),看看损失是多少。哎呀,这次更接近目标了。实际上,如果您以正确方式玩这个游戏,通常会越来越接近目标。这个游戏真正棘手的地方在于尽可能高效地找到最佳模型。

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

技术分享图片

图 1. 用于训练模型的迭代方法。

我们将在整个机器学习速成课程中使用相同的迭代方法详细说明各种复杂情况,尤其是处于暴风雨中的蓝云区域。迭代策略在机器学习中的应用非常普遍,这主要是因为它们可以很好地扩展到大型数据集。

“模型”部分将一个或多个特征作为输入,然后返回一个预测 (y’) 作为输出。为了进行简化,不妨考虑一种采用一个特征并返回一个预测的模型:

y′=b+w1x1

我们应该为 b 和 w1 设置哪些初始值?对于线性回归问题,事实证明初始值并不重要。我们可以随机选择值,不过我们还是选择采用以下这些无关紧要的值:

  • b = 0
  • w1 = 0

假设第一个特征值是 10。将该特征值代入预测函数会得到以下结果:

  y‘ = 0 + 0(10)
  y‘ = 0

图中的“计算损失”部分是模型将要使用的损失函数。假设我们使用平方损失函数。损失函数将采用两个输入值:

  • y’:模型对特征 x 的预测
  • y:特征 x 对应的正确标签。

最后,我们来看图的“计算参数更新”部分。机器学习系统就是在此部分检查损失函数的值,并为 b 和 w1 生成新值。现在,假设这个神秘的绿色框会产生新值,然后机器学习系统将根据所有标签重新评估所有特征,为损失函数生成一个新值,而该值又产生新的参数值。这种学习过程会持续迭代,直到该算法发现损失可能最低的模型参数。通常,您可以不断迭代,直到总体损失不再变化或至少变化极其缓慢为止。这时候,我们可以说该模型已收敛。

降低损失 (Reducing Loss):梯度下降法

迭代方法图([图 1]包含一个标题为“计算参数更新”的华而不实的绿框。现在,我们将用更实质的方法代替这种华而不实的算法。

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

技术分享图片权重值 (wi)损失

图 2. 回归问题产生的损失与权重图为凸形。

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

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

梯度下降法的第一个阶段是为 w1 选择一个起始值(起点)。起点并不重要;因此很多算法就直接将 w1 设为 0 或随机选择一个值。下图显示的是我们选择了一个稍大于 0 的起点:

技术分享图片

图 3. 梯度下降法的起点。

然后,梯度下降法算法会计算损失曲线在起点处的梯度。简而言之,梯度是偏导数的矢量;它可以让您了解哪个方向距离目标“更近”或“更远”。请注意,损失相对于单个权重的梯度(如图 3 所示)就等于导数。

?

详细了解偏导数和梯度。

请注意,梯度是一个矢量,因此具有以下两个特征:

  • 方向
  • 大小

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

技术分享图片

图 4. 梯度下降法依赖于负梯度。

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

技术分享图片

图 5. 一个梯度步长将我们移动到损失曲线上的下一个点。

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

##

降低损失 (Reducing Loss):学习速率

正如之前所述,梯度矢量具有方向和大小。梯度下降法算法用梯度乘以一个称为学习速率(有时也称为步长)的标量,以确定下一个点的位置。例如,如果梯度大小为 2.5,学习速率为 0.01,则梯度下降法算法会选择距离前一个点 0.025 的位置作为下一个点。

超参数是编程人员在机器学习算法中用于调整的旋钮。大多数机器学习编程人员会花费相当多的时间来调整学习速率。如果您选择的学习速率过小,就会花费太长的学习时间:

技术分享图片

图 6. 学习速率过小。

相反,如果您指定的学习速率过大,下一个点将永远在 U 形曲线的底部随意弹跳,就好像量子力学实验出现了严重错误一样:

技术分享图片

图 7. 学习速率过大。

每个回归问题都存在一个金发姑娘学习速率。“金发姑娘”值与损失函数的平坦程度相关。如果您知道损失函数的梯度较小,则可以放心地试着采用更大的学习速率,以补偿较小的梯度并获得更大的步长。

技术分享图片

图 8. 学习速率恰恰好。

一维空间中的理想学习速率是 1f(x)″(f(x) 对 x 的二阶导数的倒数)。

二维或多维空间中的理想学习速率是海森矩阵(由二阶偏导数组成的矩阵)的倒数。

广义凸函数的情况则更为复杂。

降低损失 (Reducing Loss):随机梯度下降法

在梯度下降法中,批量指的是用于在单次迭代中计算梯度的样本总数。到目前为止,我们一直假定批量是指整个数据集。就 Google 的规模而言,数据集通常包含数十亿甚至数千亿个样本。此外,Google 数据集通常包含海量特征。因此,一个批量可能相当巨大。如果是超大批量,则单次迭代就可能要花费很长时间进行计算。

包含随机抽样样本的大型数据集可能包含冗余数据。实际上,批量大小越大,出现冗余的可能性就越高。一些冗余可能有助于消除杂乱的梯度,但超大批量所具备的预测价值往往并不比大型批量高。

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

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

为了简化说明,我们只针对单个特征重点介绍了梯度下降法。请放心,梯度下降法也适用于包含多个特征的特征集。

深度学习入门2022最新版深度学习简介(代码片段)

...学习入门2022最新版】第一课深度学习简介概述深度学习vs机器学习机器学习是什么深度学习是什么机器学习和深度学习的区别神经网络机器学习实现二分类神经网络实现二分类TensorFlowPyTorch神经网络的原理张量张量最小值(补充)... 查看详情

神经网络入门(详细)(代码片段)

文章目录机器学习流程传统特征提取方法:为什么需要深度学习图像分类计算机视觉面临的挑战机器学习常规套路K近邻K近邻算法K近邻计算流程:K近邻分析距离的选择:为什么K近邻不能用来图像分类?神经网络... 查看详情

谷歌机器学习速成课程---3降低损失(reducingloss):学习速率

...前一个点0.025的位置作为下一个点。超参数是编程人员在机器学习算法中用于调整的旋钮。大多数机器学习编程人员会花费相当多的时间来调整学习速率。如果您选择的学习速率过小,就会花费太长的学习时间:&nbs 查看详情

阅读宋立恒《ai制胜:机器学习极简入门》第1章:机器学习概述(代码片段)

文章目录一、什么是机器学习二、机器学习的流程(一)数据收集(二)数据预处理(三)特征工程(四)模型构建和训练三、机器学习该如何学(一)AI时代首选Python(二)PyCharm可... 查看详情

机器学习算法(代码片段)

机器学习常用算法一、线性回归1.基本概念2.代码实现二、逻辑回归1.基本概念Sigmoid预测函数2.代码实现三决策树1.基本概念2.代码实现四支持向量机(SVM)1.基本概念2.代码实现五全连接神经网络DNN1.基本概念全连接神经网... 查看详情

谷歌机器学习速成课程---3降低损失(reducingloss):梯度下降法

迭代方法图(图1)包含一个标题为“计算参数更新”的华而不实的绿框。现在,我们将用更实质的方法代替这种华而不实的算法。假设我们有时间和计算资源来计算 w1 的所有可能值的损失。对于我们一直在研究的回归问... 查看详情

人工智能ai机器学习快速入门教程(google)(代码片段)

目录机器学习术语 标签特性示例模型回归与分类深入了解机器学习:线性回归 深入了解机器学习:训练和损失 平方损失函数:一种常用的损失函数机器学习术语 预计用时:8分钟什么是(监督式)机器... 查看详情

机器学习线性回归的损失和优化(代码片段)

线性回归的损失和优化线性回归的损失和优化1.损失函数2.优化算法2.1正规方程2.1.1什么是正规方程2.1.2正规方程求解举例2.1.3正规方程的推导推导方式一推导方式二2.2梯度下降(GradientDescent)2.2.1什么是梯度下降2.2.2梯度的概念2.2.3梯... 查看详情

机器学习之路:tensorflow自定义损失函数(代码片段)

  git: https://github.com/linyi0604/MachineLearning/tree/master/07_tensorflow/ 1importtensorflowastf2fromnumpy.randomimportRandomState34‘‘‘5模拟一个回归案例6自定义一个损失函数为:7当真实值y_更大的时候loss=a(y 查看详情

人工智能ai机器学习教程:如何降低模型损失?迭代方法与梯度下降方法

目录迭代方法如何减少损失?梯度下降法 降低损失:梯度下降法迭代方法为了训练模型,我们需要一种降低模型损失的好方法。迭代方法是一种广泛使用的损失损失方法,就像向下山一样简单有效。预计用时ÿ... 查看详情

markdown机器学习入门(代码片段)

查看详情

机器学习线性回归优化损失函数(代码片段)

目录1损失函数2优化算法2.1正规方程2.1.1什么是正规方程2.1.2正规方程求解举例2.1.3正规方程的推导2.2梯度下降2.2.1什么是梯度下降2.2.2梯度的概念2.2.3梯度下降举例2.2.4梯度下降公式3梯度下降和正规方程的对比3.1两种方法对比3.2算... 查看详情

小曾带你深入浅出机器学习(小白入门必备,近3万字带你了解机器学习)

文章目录初识机器学习入门分类回归算法浅析逻辑回归初探损失函数什么是损失函数?损失函数、代价函数和目标函数三者的区别损失函数的Pytorch实现与机制常用损失函数类型1、nn.CrossEntropyLoss数学原理功能与使用2、nn.NLLLos... 查看详情

机器学习入门-逻辑回归算法(代码片段)

梯度下降:对theta1,theta2,theta3分别求最快梯度下降的方向,然后根据给定的学习率,进行theta1,theta2,theta3的参数跟新假定目标函数J(theta)=1/2m*np.sum(h(theta)-y)^2/len(X)梯度下降的策略分为3种,   批量梯度下降:每次迭... 查看详情

机器学习中的损失函数(lossfunction)介绍说明(代码片段)

...对值损失函数)7.0-1loss(0-1损失函数)损失函数介绍解决一个机器学习问题主要有两部分:数据和算法。算法又有三个部分组成:假设函数、损失函数、算法优化。损失函数:用于计算损失的函数。在机器学习中,通... 查看详情

谷歌机器学习速成课程---降低损失(reducingloss):随机梯度下降法

在梯度下降法中,批量指的是用于在单次迭代中计算梯度的样本总数。到目前为止,我们一直假定批量是指整个数据集。就Google的规模而言,数据集通常包含数十亿甚至数千亿个样本。此外,Google数据集通常包含海量特征。因此... 查看详情

机器学习--入门介绍(代码片段)

...一:ARTHURSAMUL显著式编程⭐定义二:TomMitshell一、机器学习的分类监督学习分类一传统的监督学习非监督学习半监督学习⭐⭐分类二分类问题回归问题强化学习总结二、机器学习算法过程第一步:特区特征(FeatureEx... 查看详情

机器学习:从入门到晋级(代码片段)

摘要:什么是机器学习,为什么学习机器学习,如何学习机器学习,这篇文章都告诉给你。目前,人工智能(AI)非常热门,许多人都想一窥究竟。如果你对人工智能有所了解,但对机器学习(MachineLearning)的理解有很多的困惑... 查看详情