讨论Optimization失败的时候如何把Gradient descent做好 - zs-collab/- GitHub Wiki
讨论Optimization失败的时候如何把Gradient descent做好
优化函数(通常称为损失函数(Loss Function)或目标函数(Objective Function))的核心任务是调整模型参数,使模型的预测结果尽可能接近真实数据
-
优化目标
最小化预测误差:通过调整模型参数(如神经网络的权重、线性回归的系数),让模型的输出(预测值)与真实值之间的差异(损失)最小化。
提高泛化能力:优化的最终目标是让模型在未见过的数据上表现良好(避免过拟合)。 -
优化对象
模型参数:例如:
线性回归中的权重 w 和偏置b。
神经网络中的全部权重矩阵和偏置向量。
超参数(间接优化):如学习率、正则化系数等(通常通过交叉验证或贝叶斯优化调整)。 -
优化方法
为了最小化损失函数,机器学习中常用的优化算法包括:
梯度下降(Gradient Descent):沿损失函数的负梯度方向更新参数。
随机梯度下降(SGD):每次随机选取一个样本计算梯度,加快训练速度。
Adam、RMSprop:自适应学习率的优化器,结合动量和梯度历史信息。
二阶方法(如L-BFGS):利用Hessian矩阵加速收敛,但计算成本高。
(LF、L()=Loss Function) (Θ=未知数集合)
当我们发现model训练不起来,一开始loss就很高→猜测gradient卡在0
什么情況下gradient是0?
1. local minima,局部最小值
2. saddle point,鞍点
使gradient为0的情況统计为critical point,临界点
知道在临界点的情況是哪中,便可以决定接下来要做的处理
WARNING OF MATH
要先知道LF的形状
L(Θ)很复杂无法完整知道,但给定一组参数Θ',Θ'的LF有办法被写出来,可用一串式子表示
用无限项连加式(级数)来表示一个函数,这些相加的项由函数在某一点的倒数求得。
共有三项
第一项:L(Θ'),当Θ跟Θ'相近时,L(Θ)与L(Θ')也相近
第二项:(Θ-Θ')的转置矩阵乘上gradient的向量g,此g用來弥补Θ与Θ'的差距
g=▽L(Θ') gi=Θi对L的微分
第三项:(Θ-Θ')的转置矩阵乘上H,再乘以(Θ-Θ'),用以填补足第二项未足够的Θ与Θ'的差距
H,Hessian是一个矩阵,为L的二次微分
大重点:L(Θ)在Θ'附近可写成一个,跟gradient、Hessian有关的一个式子,而gradient与一次微分有关,Hessian与二次微分有关
Hessian今天走到一个critical point,意味着gradient为0→第二项(绿色)为0,因此用第三项(红色)来判断error surface,才能知道critical point是哪种情況
怎么根据Hessian来判断?
代号v表示Θ-Θ'
设v为任何值
1. v的转置矩阵Hv > 0
→ L(Θ)>L(Θ') ,因v必>0所以(Θ-Θ')>0
→代表L(Θ') 是最低点
→Local minima
2. v的转置矩阵Hv < 0
→ L(Θ)<L(Θ') ,因v必<0所以(Θ-Θ')<0
→代表L(Θ') 是最高点
→Local mixima
3. 有时>0有时<0
→ L(Θ)有时>有时<L(Θ')
→代表L(Θ') 附近有些地方高有些地方低
→saddle point
不太可能真的尝试所有的v,所以更简单的方法:线性代数理论
- 对所有的v而言,v的转置矩阵Hv > 0
→H为positive definite(正定矩阵)矩阵,其特性为eigen value(特征值)都是正数
→只要观察H的eigen value(特征值)是不是全都正数,便可知道v的转置矩阵Hv是否>0
→Local minima - 对所有的v而言,v的转置矩阵Hv < 0
→H为negative definite(负定)矩阵,其特性为eigenvalue都是负数
→只要观察H的eigen value是不是全都负数,便可知道v的转置矩阵Hv是否<0
→Local maxima - 对所有的v而言,v的转置矩阵Hv有时>0有时<0
→只要观察H的eigenvalue是不是有正有负
→Saddle point
结论
只要算出Hessian这个矩阵,并且观察其eigenvalue,便可知道现在的Critical point是什么情況
例子
史上最废的Network,只有两个参数w1、w2,并y=w1w2x
史上最废的Training data set,只有1个data:输入跟输出都是1
穷举w1和w2来画出Error Surface,图像化来看哪边有Critical Point,并观察哪些是saddle point哪些是Local minima
如果不穷举呢?如何知道哪个点是什么情況?
把LF写出來,L=(y_hat-w1w2x)^2=(1-w1w2)^2
现在来求,若w1w2都是0,此点是什么情況?
求Gradient
Gradient有两个式子,分別是
1. w1对L的偏微分
2. w2对L的偏微分
然后求Hessian,为一个2维矩阵,有四个式子,分別是
1. w1对L微两次
2. w2微w1微
3. w1微w2微
4. w2微两次
把(0,0)帶入Hessian,可得4个式子答案分別是0,-2,-2,0
再求eigenvalue,可发现其为2与-2
因此此点为saddle point
Don't afraid of saddle point
如果是卡在鞍点,有机会可以放心!
因为H会告诉我们参数可以update的方向
可以找eigenvalue为负的地方
举例子
运算量其实非常大,不实用,通常视为最终手段