首页 > 其他分享 >机器学习-梯度下降

机器学习-梯度下降

时间:2024-08-25 20:26:27浏览次数:7  
标签:cos frac 梯度 学习 最小值 机器 我们 partial

介绍

image.png
试想一下,你在一个山坡上寻找一个最快的下坡方法。首先 360 360 360度旋转一周你会找到一个当前最陡峭的方向,沿着这个方向走一步。重复上面的操作,继续旋转 360 360 360度,这个时候你会再次找到一个最陡峭的方向,重复该操作,直到你到达谷底。
同时,你可以选择 w , b w,b w,b的值使得你的起始位置不同,从而可能到达不同的谷底,也就是局部最小值。

算法实现

image.png
通过公式 t m p − w = w − α ∂ ∂ w J ( w , b ) tmp_{-}w=w-\alpha\frac\partial{\partial w}J(w,b) tmp−​w=w−α∂w∂​J(w,b)和 t m p − b = b − α ∂ ∂ b J ( w , b ) tmp_{-}b=b-\alpha\frac\partial{\partial b}J(w,b) tmp−​b=b−α∂b∂​J(w,b)可以使得 w , b w,b w,b的值不断更新,最终收敛于一个最小值 J ( w , b ) J(w,b) J(w,b)。需要注意的是, w , b w,b w,b的值需要同时更新,注意这四行代码正确的执行顺序。

理解梯度下降

  1. 从直观的 J ( w ) = w x J(w)=wx J(w)=wx来理解,我们在此先忽略了 b b b。

image.png
可以很清楚的看到,在第一幅图中,当我们关于 w w w的偏微分为正数时,我们沿它的反方向也就是 x x x轴的负方向,函数值会快速的下降。在第二幅图中,当我们沿 x x x轴的正方向时,函数值也在快速下降,最终收敛于一个最小值。

  1. 从多元函数微分的角度来理解

J ( w , b ) = 1 2 m ∑ i = 1 m ( f w , b ( x ( i ) ) − y ( i ) ) 2 J(w,b)=\frac{1}{2m}\sum_{i=1}^{m}(f_{w,b}(x^{(i)})-y^{(i)})^{2} J(w,b)=2m1​∑i=1m​(fw,b​(x(i))−y(i))2
我们可以随意地给出一组 w , b w,b w,b的取值,当然这样随意的值不会太理想,因此我们接下来要做的就是调整它们的值。我们可以求出损失函数 J ( w , b ) J(w,b) J(w,b)对 w , b w,b w,b的偏导数从而得到方向导数 ∂ J ∂ l = ∂ J ∂ w cos ⁡ φ + ∂ J ∂ b sin ⁡ φ \frac{\partial J}{\partial l}=\frac{\partial J}{\partial w}\cos\varphi+\frac{\partial J}{\partial b}\sin \varphi ∂l∂J​=∂w∂J​cosφ+∂b∂J​sinφ,进而得到 J ( w , b ) J(w,b) J(w,b)的梯度向量 ( ∂ J ∂ w , ∂ J ∂ b ) (\frac{\partial J}{\partial w},\frac{\partial J}{\partial b}) (∂w∂J​,∂b∂J​)。令向量 n ⃗ = ( ∂ J ∂ W , ∂ J ∂ b ) \vec{n}=(\frac{\partial J}{\partial W},\frac{\partial J}{\partial b}) n =(∂W∂J​,∂b∂J​),方向 l l l的向量为 l ⃗ = ( cos ⁡ φ , sin ⁡ φ ) \vec{l}=(\cos\varphi,\sin\varphi) l =(cosφ,sinφ),因此 ∂ J ∂ l = n ⃗ ⋅ l ⃗ = ∣ n ∣ ⋅ ∣ l ∣ ⋅ cos ⁡ φ \frac{\partial\mathrm{J}}{\partial l}=\vec{n}\cdot\vec{l}=|n|\cdot|l|\cdot\cos\varphi ∂l∂J​=n ⋅l =∣n∣⋅∣l∣⋅cosφ。可以看到沿梯度方向时函数增长最陡峭的方向, n n n的模也就代表了它的陡峭程度,沿着这个向量的反方向去改变即可使 J ( w , b ) J(w,b) J(w,b)下降的最快,直到最后几乎不再改变。

学习率

image.png
我们还有一个参数没有讨论,那就是 α \alpha α,也被称为学习率,对于这个值,我们也应该选择一个合适的大小。

  1. 过小

可以看到,当我们选择一个过小的 α \alpha α时,我们的确也会到达收敛的最小值,但是需要花费的时间很长。

  1. 过大

相比于过小,过大的情况可能会更加糟糕,如果我们第一次就越过了目标值,那么随着到达点的斜率越来越大,我们每次的距离可能就会越来越大,可能会出现像上面这种离我们需要的目标值越来越远的情况。
image.png
我们选择了一个固定大小的 α \alpha α,即使我们不去调整它的值,随着我们逐渐下降,我们的倾斜程度也在逐渐减小,最终当变化速度为 0 0 0时,我们就会固定在这个局部最小值。

用于线性回归的梯度下降

image.png
将前面的线性回归的代价函数 J ( w , b ) J(w,b) J(w,b)带入这个梯度公式中,我们就得到了具体的值,这也解释了我们前面为什么对于代价函数除以 2 2 2的疑问,这样使得计算更加美观。
image.png
我们在前面提到过根据改变 w , b w,b w,b的大小,我们可能会得到不同的局部最小值。不过幸运的是,在线性回归中,由于我们的图形是呈现一个碗状,因此我们不用担心这个问题,无论我们选择哪里都仅仅只有一个局部最小值。
image.png
注意:这里没有打错,确实是凸函数,下面是维基百科的定义。
image.png
可以看到中国大陆对于凹函数和凸函数的定义与国外相反。

运行梯度下降

image.png
可以看到,通过对于 w , b w,b w,b的调整,我们的函数越来越拟合数据,当我们到达全局最小值时, f w , b ( s i z e ) f_{w,b}(size) fw,b​(size)对于数据具有一个不错的拟合。
image.png
这种梯度下降方式也被称为批量梯度下降算法,在每次迭代过程中,使用整个整个数据集的梯度来更新模型参数,以最小化损失函数,进而得到模型的最优解。

标签:cos,frac,梯度,学习,最小值,机器,我们,partial
From: https://blog.csdn.net/yzd111/article/details/141534227

相关文章

  • UE5学习笔记17-让人物的视线和鼠标移动时的方向一致,并且不让人物模型旋转,只改变视线方
    一、创建标准动画帧    1.我想让人物在装备武器后根据鼠标的移动方向改变人物的视线方向,并且人物模型不会改变朝向    2.我的动画中存在一个四个方向瞄准的动画,将左下,坐上,左转,右上,右下,右转,中上,中下,中,的动画的某一帧保留,具体流程如下(记得复制一份动画资源,可......
  • Android Qcom USB Driver学习(九)
    高通的某些平台将电源管理移植到了ADSPSubsystem,分析一下其中比较关心的部分Architecture———————————————————————————————————————|GenericTypeCDrvierPowerSupplyFramework| |G......
  • 机器学习简介
    机器学习简介Learnfromdata、深度学习经典定义:利用经验改善系统自身的性能[T.Mitchell教科书,1997]。数据->算法->模型基本术语数据:数据集;训练;测试示例(instance);样例(example)样本(sample)属性(attribute);特征(feature);属性值属性空间;样本空间;输入空间特......
  • 20-学习卷积核
    importtorchimporttorch.nnasnnX=torch.rand((6,8))Y=torch.rand((6,7))#(批量⼤⼩、通道、⾼度、宽度)X=X.reshape((1,1,6,8))Y=Y.reshape((1,1,6,7))lr=3e-2#构造卷积层PyTorch会使用默认的初始化方法,例如Xavier初始化或Kaim初始化,来......
  • 学习之adb命令
    adb命令作用:用来操作手机系统的类似于window的cmd,linux的bash如果添加环境变量的adb不能识别设备通常是因为存在两个不同的版本如下:adbdevices如果没有发现,可以尝试手动连接设备adbconnect127.0.0.1:62001查看前台应用activity应用名称adbshelldumpsysact......
  • 从零开始学习C++之枚举与模拟
    枚举和模拟是C++中最为基础的算法,也是之后赛时部分分的算法首选。枚举顾名思义,枚举就是将所有值全部扫一遍。枚举算法的流程图如下:我们很容易就可以写出伪代码:for(枚举区间){ 代码,例: if(条件) { 输出 }}模拟模拟就是将做的事情通过程序一步步完成,有时候很简......
  • [行业调研] 2024世界机器人大会
    展会见闻记录看到的零碎信息从身体结构的维度机械臂:吸取小物体,放到另一个区域。这种任务在各种环境下都能精准完成,相对于人类有优势。灵巧手:看到各种自由度的手,手掌/手指正面覆盖了很多触觉传感器,有些甚至还布置了摄像头。AGV:仓库托运重物,物流机器人。仿生机器人:......
  • 【鸿蒙学习】HarmonyOS应用开发者高级认证 - 应用DFX能力介绍(含闯关习题)
    学完时间:2024年8月24日学完排名:第1698名一、PerformanceAnalysisKit简介PerformanceAnalysisKit(性能分析服务)为开发者提供应用事件、日志、跟踪分析工具,可观测应用运行时状态,用于行为分析、故障分析、安全分析、统计分析,帮助开发者持续改进应用体验。使用场景应用......
  • 深度学习 回归问题
    1.梯度下降算法深度学习中,梯度下降算法是是一种很重要的算法.梯度下降算法与求极值的方法非常类似,其核心思想是求解x′x'......
  • AC 自动机 学习笔记
    前言本来时今年寒假学的,当时回家比较早没学完也没学明白,打模拟赛却多次用到,所以重学一下。原理与定义即字典树(trie树)加\(fail\)指针,\(fail\)指针等同于kmp的\(next\)数组,匹配前缀的最长后缀,\(fail\)指针单独拎出来构成一颗失配树(fail树)。插入同trie树,全部插完后......