梯度下降法
1.原理
- 方向导数
如果函数 z = f ( x , y ) z=f(x,y) z=f(x,y)在点 P ( x , y ) P(x,y) P(x,y)处可微,则函数在该点任一方向 L L L的方向导数都存在,且有 ∂ f ∂ l = ∂ f ∂ x cos α + ∂ f ∂ y cos β \frac{\partial f}{\partial l}=\frac{\partial f}{\partial x } \cos{\alpha}+\frac{\partial f}{\partial y}\cos{\beta} ∂l∂f=∂x∂fcosα+∂y∂fcosβ α 、 β : 为 方 向 L 的 方 向 角 \alpha、\beta:为方向L的方向角 α、β:为方向L的方向角方向导数表征了函数沿任意方向的变化的速度 - 梯度
设函数 z = f ( x , y ) z=f(x,y) z=f(x,y)在平面区域 D D D内具有一阶连续偏导数,则对于每一个点 P ( x , y ) ∈ D P(x,y) \in D P(x,y)∈D,向量 ( ∂ f ∂ x , ∂ f ∂ y ) \left ( \frac{\partial f}{\partial x},\frac{\partial f}{\partial y} \right ) (∂x∂f,∂y∂f)为函数 z = f ( x , y ) z=f(x,y) z=f(x,y)在点 P P P处的梯度,记为grad f ( x , y ) f(x,y) f(x,y)
某点的梯度是某点方向导数的最大值,因此梯度代表的方向是函数增长最快的方向,而沿负梯度方向为函数下降最快的方向。
2.梯度下降法
- 初始化 θ \theta θ(随机初始化)
- 沿负梯度方向迭代,更新 θ ⃗ \vec{\theta} θ使 L ( θ ⃗ ) L(\vec{\theta}) L(θ)更小 θ ⃗ = θ ⃗ − α ∂ L ( θ ⃗ ) ∂ θ ⃗ \vec{\theta}=\vec{\theta}-\alpha\frac{\partial L(\vec{\theta})}{\partial \vec{\theta}} θ=θ−α∂θ∂L(θ) α − 学 习 率 ( 步 长 ) \alpha-学习率(步长) α−学习率(步长)
- 直观理解
3.梯度下降法分类
-
随机梯度下降(SGD)
以单个样本的梯度作为权值 θ ⃗ \vec{\theta} θ更新的方向
l o s s = M e a n S q u a r e E r r o r loss=MeanSquareError loss=MeanSquareError
θ ⃗ = θ ⃗ − α ∂ L ( θ ⃗ ) ∂ θ ⃗ L ( θ ⃗ ) = 1 2 ( y i ^ − y i ) 2 \vec{\theta}=\vec{\theta}-\alpha\frac{\partial L(\vec{\theta})}{\partial \vec{\theta}} \ \ \ \ \ L(\vec{\theta})=\frac{1}{2}(\hat{y_i}-y_i)^2 θ=θ−α∂θ∂L(θ) L(θ)=21(yi^−yi)2 i − 表 示 某 一 个 样 本 i-表示某一个样本 i−表示某一个样本
特点:学习效率高,训练速度快,由于目标函数震荡严重,对于非凸函数可能跳过局部最优而找到更优解,但学习过程随机性大,导致学习过程难以收敛。 -
mini-batch梯度下降
以较小批次的样本的平均梯度作为权值 θ ⃗ \vec{\theta} θ更新的方向
l o s s = M e a n S q u a r e E r r o r loss=MeanSquareError loss=MeanSquareError
θ ⃗ = θ ⃗ − α ∂ L ( θ ⃗ ) ∂ θ ⃗ L ( θ ⃗ ) = 1 2 b ∑ i = 1 b ( y i ^ − y i ) 2 \vec{\theta}=\vec{\theta}-\alpha\frac{\partial L(\vec{\theta})}{\partial \vec{\theta}} \ \ \ \ \ L(\vec{\theta})=\frac{1}{2b} \sum_{i=1}^{b}(\hat{y_i}-y_i)^2 θ=θ−α∂θ∂L(θ) L(θ)=2b1i=1∑b(yi^−yi)2 b − 表 示 迷 你 批 包 含 的 样 本 个 数 、 i − 表 示 第 i 个 样 本 b-表示迷你批包含的样本个数、i-表示第i个样本 b−表示迷你批包含的样本个数、i−表示第i个样本
特点:是随机梯度下降与批梯度下降方法的折中,在提升学习效率的同时有效缓解学习过程的随机性,减弱了目标函数的震荡,也能在一定程度跳过局部最优而找到更优解,较为常用。 -
批梯度下降(BGD)
以所有样本的平均梯度作为权值 θ ⃗ \vec{\theta} θ更新的方向
l o s s = M e a n S q u a r e E r r o r loss=MeanSquareError loss=MeanSquareError
θ ⃗ = θ ⃗ − α ∂ L ( θ ⃗ ) ∂ θ ⃗ L ( θ ⃗ ) = 1 2 n ∑ i = 1 n ( y i ^ − y i ) 2 \vec{\theta}=\vec{\theta}-\alpha\frac{\partial L(\vec{\theta})}{\partial \vec{\theta}} \ \ \ \ \ L(\vec{\theta})=\frac{1}{2n} \sum_{i=1}^{n} (\hat{y_i}-y_i)^2 θ=θ−α∂θ∂L(θ) L(θ)=2n1i=1∑n(yi^−yi)2 n − 表 示 所 有 样 本 个 数 、 i − 表 示 第 i 个 样 本 n-表示所有样本个数、i-表示第i个样本 n−表示所有样本个数、i−表示第i个样本
特点:将全部样本用于更新,能避免学习过程的随机性,确保模型的收敛,对于样本较多时,单次更新权值计算量大,训练速度慢,对于非凸函数容易陷入局部最优。
4.梯度下降优化算法
- Momentum(动量)
- Nesterov(动量+预测)
- Adagrad
- Adadelta
- RMSprop
- Adam