🐠梯度下降
2021-11-5
| 2023-8-6
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
Property

一维梯度下降

为什么梯度下降算法可以优化目标函数?
考虑一类连续可微实值函数, 利用泰勒展开可以得到:
即在一阶近似中, 可通过处的函数值和一阶导数得出。
假设在负梯度方向上移动的会减少。 为了简单起见,选择固定步长 ,然后取 , 将其代入泰勒展开式可以得到:
如果其导数没有消失,就能继续展开,这是因为。 此外,总是可以令小到足以使高阶项变得不相关。 因此,
这意味着,如果使用来迭代,函数的值可能会下降。因此,在梯度下降中,首先选择初始值和常数,然后使用它们连续迭代,直到停止条件达成(梯度的幅度足够小或达到最大迭代次数)。
 
选用目标函数来展示梯度下降:
 
 
 
 
 
notion image
 

学习率

学习率(learning rate)决定目标函数能否收敛到局部最小值,以及何时收敛到最小值。如果使用的学习率太小,将导致 的更新非常缓慢,需要更多的迭代。 例如,考虑同一优化问题中 的进度。 如下所示,尽管经过了10个步骤,仍然离最优解很远。
notion image
相反,如果使用过高的学习率, 对于一阶泰勒展开式可能太大,可能变得显著了。这种情况下, 的迭代不能保证降低的值。 例如,当学习率为 时, 超出了最优解并逐渐发散:
notion image

局部最小值

考虑函数 ,其中为某常数。 这个函数有无穷多个局部最小值。 根据选择的学习率,最终可能只会得到许多解的一个。 下面说明了高学习率如何导致较差的局部最小值。
notion image
 
 

多元梯度下降

考虑的情况。 即目标函数 将向量映射成标量。 相应地,它的梯度也是多元的:它是一个由个偏导数组成的向量:
梯度中的每个偏导数元素 代表了当输入处的变化率。 和先前单变量的情况一样,可以对多变量函数使用相应的泰勒近似来思考:
的二阶项中, 最陡下降的方向由负梯度得出。 选择合适的学习率来生成典型的梯度下降算法:
 
这个算法在实践中的表现如何呢?
构造一个目标函数 , 并有二维向量 作为输入, 标量作为输出。 梯度由 给出。从初始位置 通过梯度下降观察 的轨迹。
两个辅助函数: 第一个是update函数,并将其应用于初始值20次; 第二个函数会显示的轨迹
notion image
观察学习率时优化变量的轨迹。 可以看到,经过20步之后, 的值接近其位于的最小值。 虽然进展相当顺利,但相当缓慢。
 
 

梯度下降和线搜索

梯度下降的一个关键问题是可能会超过目标或进展不足, 解决这一问题的简单方法是结合使用线搜索和梯度下降。 也就是说,使用给出的方向, 然后进行二分搜索,以确定哪个学习率 使取最小值。
有关分析和证明,此算法收敛迅速。 然而,对深度学习而言,这不太可行。 因为线搜索的每一步都需要评估整个数据集上的目标函数,实现它的方式太昂贵了。
  • PyTorch
  • 优化和凸性牛顿法
    目录