当前位置:网站首页 > 编程语言 > 正文

随机梯度上升和随机梯度下降(随机梯度下降和梯度下降)



大多数机器学习或者深度学习算法都涉及某种形式的优化。 优化指的是改变 以最小化或最大化某个函数 f(x) 的任务。 我们通常以最小化 f(x) 指代大多数最优化问题。 最大化可经由最小化算法最小化 -f(x) 来实现。我们把要最小化或最大化的函数称为目标函数或准则。 当我们对其进行最小化时,我们也把它称为代价函数、损失函数或误差函数。 下面,我们假设一个损失函数为
在这里插入图片描述
其中
在这里插入图片描述然后要使得最小化它。

注意:这里只是假设,不用知道这个目标函数就是平方损失函数等等,然后肯定有人问既然要最小化它,那求个导数,然后使得导数等于0求出不就好了吗?Emmmm…是的,有这样的解法,可以去了解正规方程组求解。说下这里不讲的原因,主要是那样的方式太难求解,然后在高维的时候,可能不可解,但机器学习或深度学习中,很多都是超高维的,所以也一般不用那种方法。总之,梯度下降是另一种优化的不错方式,比直接求导好很多。

我们知道曲面上方向导数的最大值的方向就代表了梯度的方向,因此我们在做梯度下降的时候,应该是沿着梯度的反方向进行权重的更新,可以有效的找到全局的最优解。这个θi的更新过程可以描述为:
在这里插入图片描述
[a表示的是步长或者说是学习率(learning rate)]

在直观上,我们可以这样理解,看下图,一开始的时候我们随机站在一个点,把他看成一座山,每一步,我们都以下降最多的路线来下山,那么,在这个过程中我们到达山底(最优点)是最快的,而上面的a,它决定了我们“向下山走”时每一步的大小,过小的话收敛太慢,过大的话可能错过最小值)。这是一种很自然的算法,每一步总是寻找使J下降最“陡”的方向(就像找最快下山的路一样)。
在这里插入图片描述
当然了,我们直观上理解了之后,接下来肯定是从数学的角度,我们可以这样想,先想在低维的时候,比如二维,我们要找到最小值,其实可以是这样的方法,具体化到1元函数中时,梯度方向首先是沿着曲线的切线的,然后取切线向上增长的方向为梯度方向,2元或者多元函数中,梯度向量为函数值f对每个变量的导数,该向量的方向就是梯度的方向,当然向量的大小也就是梯度的大小。现在假设我们要求函数的最值,采用梯度下降法,结合如图所示:

在这里插入图片描述
在这里插入图片描述
注:y’=2x

在每次更新时用所有样本,要留意,在梯度下降中,对于θi的更新,所有的样本都有贡献,也就是参与调整θ.其计算得到的是一个标准梯度,对于最优化问题,凸问题,也肯定可以达到一个全局最优。因而理论上来说一次更新的幅度是比较大的。如果样本不多的情况下,当然是这样收敛的速度会更快。但是很多时候,样本很多,更新一次要很久,这样的方法就不合适。下图是其更新公式

这里应该是-a

或使用:在这里插入图片描述

在每次更新时用1个样本,可以看到多了随机两个字,随机也就是说我们用样本中的一个例子来近似我所有的样本,来调整θ,因而随机梯度下降是会带来一定的问题,因为计算得到的并不是准确的一个梯度,对于最优化问题,凸问题,虽然不是每次迭代得到的损失函数都向着全局最优方向, 但是大的整体的方向是向全局最优解的,最终的结果往往是在全局最优解附近。但是相比于批量梯度,这样的方法更快,更快收敛,虽然不是全局最优,但很多时候是我们可以接受的,所以这个方法用的也比上面的多。下图是其更新公式:,其中m为迭代次数

在这里插入图片描述
或使用:
正确公式

在每次更新时用b个样本,其实批量的梯度下降就是一种折中的方法,他用了一些小样本来近似全部的,其本质就是只取一个样本可能不够准,用个30个50个样本比随机的要准一些,而且批量还非常可以反映样本的一个分布情况的。在深度学习中,这种方法用的是最多的,因为这个方法收敛也不会很慢,收敛的局部最优也是更多的可以接受
在这里插入图片描述
具体举例:
在这里插入图片描述

能收敛到的地方:最小值,极小值,鞍点。这些都是能收敛到的地方,也就是梯度为0的点。
在这里插入图片描述

随机梯度下降一般来说效率高,收敛到的路线曲折,但一般得到的解是我们能够接受的,在深度学习中,用的比较多的是mini-batch梯度下降。

转载自:https://www.zhihu.com/question/

https://www.cnblogs.com/lliuye/p/9451903.html

https://www.zhihu.com/question/

回归和分类的区别https://www.zhihu.com/question/

到此这篇随机梯度上升和随机梯度下降(随机梯度下降和梯度下降)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • unittest用例执行顺序(unittest执行所有用例的方法)2025-05-13 09:00:05
  • 104报文解析工具(101报文解析器 安卓)2025-05-13 09:00:05
  • 工具五金是几类物质(工具五金是什么类物质 a.a类 b)2025-05-13 09:00:05
  • 网页聊天室代码(网页聊天室实现)2025-05-13 09:00:05
  • pathlib(Pathlib文档)2025-05-13 09:00:05
  • m哈是什么意思(mha中文什么意思)2025-05-13 09:00:05
  • linuxyum怎么安装(linux 怎么安装)2025-05-13 09:00:05
  • pypy 打包exe(py 打包 exe)2025-05-13 09:00:05
  • dos转换unix命令(如何把dos命令转换成bat命令)2025-05-13 09:00:05
  • pek文件怎么打开(.pek文件)2025-05-13 09:00:05
  • 全屏图片