第七节梯度下降之梯度概念和梯度迭代过程(2)

上一节中针对一元函数,找到了一个看起来还不错的一种寻求数值上的最小值的这种方式。大致是这么一个流程,F(w)和F'(w),上来先瞎蒙出来一组w,然后带到这里边能得到一个结果,然后该开始迭代了,w1等于w0加上负的F`(w)还得乘一个λ,我们通常称λ叫做学习率。 在API的接口里叫Learning rate,加上学习率之后,就让它一直往下迭代就可以了,通常W是个向量,之前是一个数,更新的话是先求导,再更新,现在变成向量了,需要怎么做呢?求偏导,再更新。所谓偏导就是对F(w)求导,假如它四个自变量你对谁求导就把它看成唯一的自变量,其他的这些东西都当做常数来看,这就是求偏导。它是逐个击破的思路。 原来我们只有一个W对吧?我们就对它求个倒数就完了,把W带进去,加上一个负导数乘以λ,即w1=w0+λ(-f’(w))。我们现在有四个W,我就逐个求导,假设此时的F(w)=4w1+w1*w2+4w3+2w4*w3,我在更新W1的时候,是把这个函数对谁求导?对W1求导。此时W2,W3,W4是不是当做常数来看待?你会得到一个新的函数,叫J',我就给它起名叫J',它也是是关于W1,W2,W3,W4这四个数的解析式J'(W1,W2,W3,W4),结果为F'(w1)=4+w2+0,把原来的W1,W2,W3,W4往J'里带,得到一个具体的数。F'(w1)=4+w2+0=5,假如α=0.1,那么更新我的第一代W也就是(w零)的时候,就是2-0.5,此时(W一)变成了1.5。

w零 w一
w1----2  
w2----1  
w3-----3  
w4-----2  

接下来是不是咱们更新(w零)的第二个数(表格中的第二行)了,应该怎么办?对W2求偏导,F'(w2)=w1。那此时还把这四个带进去,虽然只用上了W1,得到什么结果?F'(w2)=w1=2,这个α还是0.1,此时新的(W一)应该等于多少? 1-0.2=0.8。你发现还一样吗?不一样的差异在哪儿?差异在于你对不同的自变量求完偏导之后,得到的这个函数是不一样的,虽然你同样都带2,1,3,4进去,但导函数不同了,结果也是不同的,所以每个w的更新的步幅是不一样的。

引入梯度下降法的迭代公式应为:

把梯度下降法的公式写开来看如下:

虽然看起来这个向量是更新了一次,但实际上它内部更新了几次?是不是每一个变量自己都更新了一次?实际上它是一个双重for循环的感觉,外层for循环是迭代k次(我们人为设置的,在程序里指定的迭代次数),内层for循环是迭代n次,我们不是有n个W吗(n个维度)?迭代n次就是每个W都要单独的加上自己偏导数的结果的相反数,我们把内部的for循环看成一个模块的话,就会得到一个什么? 得到一个W向量, W向量是一个什么情况呢?是一个列向量(N*1),我一次性的把所有这一组W的更新看成一个整体的话,它是不是要加上一个向量?也是一个N*1的,那么这个向量第一个元素应该是什么?实际上把它看成一个整体的话,每一次是不是原来的W向量加上这么一个东西:

这个就叫做梯度(gradient)。所谓梯度是什么?是数还是函数?其实梯度是数。因为这个更新实际上是两步。第一步求完偏导之后,得到的是一个函数,就像刚才咱们举的excel里的列例子一样,第一步求完偏导之后得到的是导函数F'(w1)=4+w2+0,接下来你把数代入,带进去的是W1,W2,W3,W4共同带进去,有谁就带谁,把数带进去得到的数才是梯度,我们称那一组函数写在向量里的叫梯度函数,就像导函数和导数的关系一样。那么当(w零)变成了(w一)的时候,梯度里边的每一个数会不会变? 因为你虽然都是求导数,但求完导数代的数不一样,(w零)代的是2,1,3,2,(w一)代的是(w一)所对应的数,假设为1.8,2.4,3.7,4.6,所以每一次代入的数都不一样,梯度每一次也都在变。

我们再从另一个角度看,能不能把2,1,3,2看作一个高维空间中的点,那么在空间中每个点跟每个点的梯度是一样的吗?是不一样的。 因为点一但变了,你带到导函数每一个元素的数是不是都变了?得到结果是不是也变了?所以我们想象假设二维空间就一平面,现在没有这么多w了,就两个w,也是一个列向量。为,那每个元素的偏导数是,我们称这个为梯度。那么此时算出来的梯度是不是把这个向量里面第一个数数带到第一个元素的偏导数里,第二个数代到第二个元素的偏导函数里边得到两个新的数。随着这两个点的数变化,这两个点的数也在变化,实际上这个两点的数代表一个向量向量代表了一个方向,指向了方向下降最快的方向。

假如画一个等高线图,

颜色越浅(内环)代表损失函数越小,越深(外环)代表损失函数越大,它实际上就是一个三维图了,只不过用等高线的方式来比较,现在这个图里有两个W?两个W加一个损失函数的值构成了三维空间,那两个W,假如点在图中所示位置,是不是它会对θ1求一次偏导,对θ2求一次偏导?它求的结果会发现θ1求偏导应该往下走,θ2求偏导应该往左走,这两个东西共同形成了一个方向,θ1减了这么多,θ2减了这么多,这个点相当于从x1跑到x2这儿来了,x1-->x2这个方向就代表在x1这个点,梯度下降最快的方向,也就是梯度负方向,这是梯度的几何意义,梯度标示的就是在三维空间中或者在N维空间中这个坡最陡的方向,只不过正梯度方向是往上指的,而负梯度方向是往下指的,在高维空间中实际上梯度指的就是这个。所以你不要光记着高维空间中梯度这个名字了,你一定要记住梯度是怎么来的,就是他逐个求完偏导之后,把它从上到下依次写下来的一个高高的向量而已。 正好你原来的θ减去现在梯度,相当于每个θ在自己维度上都照着偏导数的方向更新了一次,跟咱们一维情况下更新是一致的。这样实际上是把梯度和咱们原来一维的联系起来了。这就是多维空间的梯度下降。这个东西非常重要。我们还有其它很多种高级的求函数最优化的方法,但梯度下降,它计算成本小,特别适用于参数多的情况下,比方 深度神经网络参数多。所以在参数这么多的情况下,深度神经网络全都是通过反向传播来计算负梯度的方式,更新自己的每一个参数的。至此,我们官方引入梯度的概念 ,梯度就是把每一个维度的偏导数集合在一起做一个向量。对于多元函数的θ,每次减去梯度值就能让多元损失函数朝着最佳解迈进一步。解释一下,梯度就是一个向量,向量中的每一个元素是偏导数,其实就是把每一个维度的偏导数给集合在一起拼成一个向量,对于θ来说,用θ减去梯度相当于就是每一个维度(θ本身也有若干的维度(w1,w2..wn)),每一个维度都减去了原来这个维度的偏导数,和咱们一元的是能够对上的。

我们再看下当梯度下降法应用于MSE损失函数是:

解释下上面的公式:从第1步到第2步,根据链式求导法则,这个函数,先对整个外边求导,等于,在对内部的这个求导,等于。把h(θ)展开为。那么在第三步中对这里边求偏导,这个东西写开了之后,谁会死掉,谁会活着? 只有跟θj有关系的项会活着,其他项全是常数项,求导的时候是不是直接就变成零了?所以就剩下跟θj对着的Xj还活着,那么整个这一项求完偏导就剩一个Xj了。也就是最后一步。,其中就是对mse中把除了θj之外的其他θ都看成常数,单独对θj一个求导。

至此,你大概了解了梯度的概念,梯度迭代的方式和过程,但你可能会有几个问题?这里面的损失函数不应该是m个样本累加吗?。我们更新梯度的时候每一次都要把全部的w代入计算一遍吗?这样会不会太耗时间?有没有其他的办法。带着这些问题请继续阅读第八节梯度下降的不同方式。

大白话5分钟带你走进人工智能-第七节梯度下降之梯度概念和梯度迭代过程(2)相关推荐

  1. 大白话5分钟带你走进人工智能-第34节神经网络之多神经网络概念(2)

    目录 1.回顾: 2.常见的激活函数都有哪些? 3.多层神经网络里面故事: 4.如何训练神经网络? 1.回顾: 回顾下之前学习的内容.人工神经网络里面有重要的三条内容,一个是加和,加function, ...

  2. 梯度下降的超参数大于等于2什么意思_大白话5分钟带你走进人工智能-第七节梯度概念和梯度迭代过程(2)...

    第七节梯度下降之梯度概念和梯度迭代过程(2) 上一节中针对一元函数,找到了一个看起来还不错的一种寻求数值上的最小值的这种方式.大致是这么一个流程,F(w)和F`(w),上来先瞎蒙出来一组w,然后带到这 ...

  3. 大白话5分钟带你走进人工智能-第七节梯度下降之梯度概念和梯度迭代过程(2)...

    第七节梯度下降之梯度概念和梯度迭代过程(2) 上一节中针对一元函数,找到了一个看起来还不错的一种寻求数值上的最小值的这种方式.大致是这么一个流程,F(w)和F`(w),上来先瞎蒙出来一组w,然后带到这 ...

  4. 大白话5分钟带你走进人工智能-第二十节逻辑回归和Softmax多分类问题(5)

                                                        大白话5分钟带你走进人工智能-第二十节逻辑回归和Softmax多分类问题(5) 上一节中,我们讲 ...

  5. 大白话5分钟带你走进人工智能-第十一节梯度下降之手动实现梯度下降和随机梯度下降的代码(6)...

                                第十一节梯度下降之手动实现梯度下降和随机梯度下降的代码(6) 我们回忆一下,之前咱们讲什么了?梯度下降,那么梯度下降是一种什么算法呢?函数最优化 ...

  6. 大白话5分钟带你走进人工智能-第31节集成学习之最通俗理解GBDT原理和过程

    目录 1.前述 2.向量空间的梯度下降: 3.函数空间的梯度下降: 4.梯度下降的流程: 5.在向量空间的梯度下降和在函数空间的梯度下降有什么区别呢? 6.我们看下GBDT的流程图解: 7.我们看一个 ...

  7. 大白话5分钟带你走进人工智能-第十节梯度下降之归一化的各种方式和必要性(5)...

                        第十节梯度下降之归一化的各种方式和必要性(5) 上一节中我们讲解了梯度下降的函数最优化算法和梯度下降代码过程,了解了梯度下降的代码实现过程,本节的话我们讲解一个 ...

  8. 大白话5分钟带你走进人工智能-第33节神经网络和神经元概念(1)

    目录 1.前述 2.神经网络实例与概念 3.神经元结构 4.神经元拓扑总结 5.逻辑回归和神经元神经网络的关系 1.前述 不少小伙伴反应为什么没有神经网络的文章,因为现在那么主流.其实本打算更新完算法 ...

  9. 大白话5分钟带你走进人工智能-第30节集成学习之Boosting方式和Adaboost

    目录 1.前述: 2.Bosting方式介绍: 3.Adaboost例子: 4.adaboost整体流程: 5.待解决问题: 6.解决第一个问题:如何获得不同的g(x): 6.1 我们看下权重与函数的 ...

最新文章

  1. vim 有用命令-20190217
  2. Git之submodule使用总结
  3. 问题的提出方式。(【先】说出最关键的【结果】,然后再描述细节)
  4. 深信服AC本地用户密码认证配置
  5. VC模拟鼠标的两种方式(SendMessage、mouse_event)
  6. 如何与导师有效沟通你的论文选题?
  7. 键 -- 主键、候选键、可选键
  8. 阳明心学在敏捷开发中的应用
  9. 软件即服务的三重境界
  10. Java中统计耗时的方法
  11. 怎样用sc命令运行服务器,windows中的sc控制服务命令
  12. 手机号归属地运营商查询-JAVA
  13. P(B|A)和P(AB)的理解
  14. arm push/pop/b/bl汇编指令
  15. 2017 开源中国新增开源项目排行榜 TOP 100
  16. 2022人才市场洞察及薪酬指南
  17. java中容易产生空指针异常:NullPointerException的场景
  18. Python在线聊天室(windows)
  19. iPhone 6/6Plus UI界面设计和适配尺寸规范
  20. BYOD携带自己的设备办公

热门文章

  1. 163邮箱开启SMTP权限
  2. 浙江电信网速测试皮肤软件,浙江电信网速测试(进入中国电信官方测速网站)
  3. 【积水成渊-逐步定制自己的Emacs神器】6:首次变身IDE,Emacs C++ IDE
  4. 微信网页授权校验文件
  5. 自定义 VSCode 背景图片
  6. keil警告 LED.C(38): warning C276: constant in condition expression
  7. 正确使用计算机键盘和鼠标,你真的会用鼠标吗?鼠标使用全揭秘
  8. Android 时光轴 -记录生活
  9. 区块链系列课第二讲区块链的核心优势
  10. 黄铭钧:院长创业与酒