梯度下降算法主要通过哪两个控制因子实现最优参数选择?这两个因子分别起到什么作用?为什么计算损失函数最优值采用梯度下降算法而不是直接对损失函数求导数等于0时的最优解?如何判断梯度下降算法是否正确工作?

简介: 梯度下降算法主要通过哪两个控制因子实现最优参数选择?这两个因子分别起到什么作用?为什么计算损失函数最优值采用梯度下降算法而不是直接对损失函数求导数等于0时的最优解?如何判断梯度下降算法是否正确工作?梯度下降算法有两个重要的控制因子:一个是步长,由学习率控制;一个是方向,由梯度指定。1.在梯度下降算法中,步长决定了每一次迭代过程中,会往梯度下降的方向移动的距离。试想一下,如果步长很大,算法会在局部最优点附近来回跳动,不会收敛(如下图);但如果步长太短,算法每步的移动距离很短,就会导致算法收敛速度很慢。2

(1)梯度下降算法主要通过哪两个控制因子实现最优参数选择?这两个因子分别起到什么作用?

答:梯度下降算法有两个重要的控制因子:一个是步长,由学习率控制;一个是方向,由梯度指定。

1.在梯度下降算法中,步长决定了每一次迭代过程中,会往梯度下降的方向移动的距离。试想一下,如果步长很大,算法会在局部最优点附近来回跳动,不会收敛(如下图);但如果步长太短,算法每步的移动距离很短,就会导致算法收敛速度很慢。

2.梯度的意义从几何意义上讲,就是函数变化增加最快的地方。具体来说,对于函数f(x,y),在点(x0,y0),沿着梯度向量的方向就是(∂f/∂x0, ∂f/∂y0)T的方向是f(x,y)增加最快的地方。或者说,沿着梯度向量的方向,更加容易找到函数的最大值。反过来说,沿着梯度向量相反的方向,也就是 -(∂f/∂x0, ∂f/∂y0)T的方向,梯度减少最快,也就是更加容易找到函数的最小值。


(2)为什么计算损失函数最优值采用梯度下降算法而不是直接对损失函数求导数等于0时的最优解?

答:多维函数偏导为0并非是局部极值,偏导为零是该点为极值的必要不充分条件,所以极值为0不一定是极值,你求偏导为0是没有用的,求出来也未必是极值点。不管是直接令偏导等于0还是使用梯度下降,都无法解决损失函数为非凸函数时陷入局部最优的问题。之所以使用梯度下降而不直接令偏导等于0,是因为神经网络的损失函数大多没有解析解,就是说你无法显式地表示函数的偏导,所以只能通过数值求解的方法迭代地找到最优解(或者局部最优解)。


(3)如何判断梯度下降算法是否正确工作?

答:可以绘制一个α——J(θ)曲线图,通过图像判断是否正确工作。

对于一个足够小的学习率α,每次迭代后损失函数J(θ)都会下降

如果α过小,梯度下降的收敛速度很慢

如果α太大,损失函数可能不会在每次迭代都下降,甚至可能不收敛

选择使得J(θ)曲线快速下降的α值

相关文章
|
2月前
|
机器学习/深度学习 算法
递归算法题练习(数的计算、带备忘录的递归、计算函数值)
递归算法题练习(数的计算、带备忘录的递归、计算函数值)
|
2月前
|
算法 Java
算法:Java计算二叉树从根节点到叶子结点的最大路径和
算法:Java计算二叉树从根节点到叶子结点的最大路径和
|
4月前
|
算法 搜索推荐 图计算
图计算中的社区发现算法是什么?请解释其作用和常用算法。
图计算中的社区发现算法是什么?请解释其作用和常用算法。
30 0
|
5月前
|
搜索推荐 算法 测试技术
C++归并排序算法的应用:计算右侧小于当前元素的个数
C++归并排序算法的应用:计算右侧小于当前元素的个数
|
13天前
|
算法 vr&ar Python
R语言用极大似然和梯度下降算法估计GARCH(p)过程
R语言用极大似然和梯度下降算法估计GARCH(p)过程
13 0
|
2月前
|
机器学习/深度学习 人工智能 算法
神经网络算法——损失函数(Loss Function)
神经网络算法——损失函数(Loss Function)
26 0
|
2月前
|
机器学习/深度学习 算法
反向传播原理的梯度下降算法
反向传播原理的梯度下降算法
|
4月前
|
算法
bellman_ford算法与dijkstra为什么dijkstra算法不能计算带有负权边图
bellman_ford算法与dijkstra为什么dijkstra算法不能计算带有负权边图
22 0
|
4月前
|
算法 定位技术 Python
地图权重计算(算法题)
地图权重计算(算法题)
22 0
|
4月前
|
算法 搜索推荐 数据挖掘
图计算中的图算法有哪些常见的类型?请举例说明每种类型的算法。
图计算中的图算法有哪些常见的类型?请举例说明每种类型的算法。
38 0