type
status
date
slug
summary
tags
category
icon
password
1. 梯度下降
梯度下降法用来计算函数的最小值.
1.1. 二维函数梯度下降
比如需要计算函数 的最小值, 如果不从经验上获知其最小值, 如何通过迭代来计算呢?

- 首先需要设置一个起点 , 假设 .
此时函数的梯度如下
由于这个梯度是一个一维向量, 并且在 轴的向量指向函数增长最快的方向, 求梯度下降的目的是找到函数增长最慢的方向, 也就是反方向 .
另外 (Nabla算子) 是向量微分算子, 定义为 .

- 这时候将当前值 , 将其看做向量, 与梯度的反方向相加, 就可以获得下一个值 的位置.
- 这里的 表示为步长 (学习率), 用来控制采样点移动距离. 步长的设定是凭借经验的, 过小收敛较慢, 过大会无法收敛. 这里设定 .

此时的采样点来到了 的位置.

- 开始迭代
迭代方法同上

1.2. 三维函数梯度下降
找到函数 的最小值, 函数三维图和等高线如下.

- 设置初始点 , 此时梯度为:
- 设置 , 可以计算出下一点 的向量
- 开始迭代
方法同上

1.3. 深度学习中的梯度下降
模型训练过程中, 需要计算的是损失函数的最小值
而在深度学习的优化算法中不同的梯度下降算法如下图所示

- 拿随机梯度下降算法举例, 是每个样本的损失函数, 表示一个输入为 和 初始参数 的函数, 表示 GT 值.
其中的梯度计算是先计算样本数据的平均损失, 但是损失函数中有 作为优化参数, 也就是说函数变为了以 为未知数的函数, 对 求偏导, 之后带入 获得梯度参数 .
之后更新 .