【问题标题】:Check the gradients using finite differences使用有限差分检查梯度
【发布时间】:2016-04-17 12:04:46
【问题描述】:

我正在调试我的约束随机梯度下降算法,论文 http://research.microsoft.com/pubs/192769/tricks-2012.pdf 建议使用有限差分检查梯度。我添加了一个惩罚函数,但模型不再收敛,所以我想按照论文中的建议检查我的梯度。

  1. 选择一个例子。
  2. 计算当前 w 的损失 Q(z, w)。
  3. 计算梯度 g = ∇w Q(z, w)。
  4. 应用轻微的扰动 w 0 = w +δ。例如,更改单个权重 增加一个小增量,或者使用 δ = -γg 且 γ 足够小。
  5. 计算新的损失 Q(z, w0 ) 并验证 Q(z, w0 ) ≈ Q(z, w) + δg

所以我可以选择一个例子并计算这个例子的损失,但是我的权重向量包含约 4000 个特征,所以我得到一个包含那么多偏导数的向量作为我的梯度,而损失是一个整数,所以它不是可以计算 Q(z, w) + δg。我是否必须仅计算 w 的单个特征的损失?是指“当前的 w”吗?

【问题讨论】:

    标签: machine-learning gradient gradient-descent


    【解决方案1】:

    出版物中的方程式看起来很奇怪,因为没有仔细描述。为了检查渐变,您通常检查“猜测”渐变g 和 数值梯度,ith 维度等于

    ( Q(z, w + delta*e_i) - Q(z, w) ) / ( delta )
    

    对于足够小的deltae_iith 规范向量(在ith 维度上为1,否则为0)足够小。换句话说,如果我们用g_i 表示渐变的ith 维度,那么您需要检查是否

    | ( Q(z, w + delta*e_i) - Q(z, w) ) / ( delta ) - g_i | < eps
    
    | Q(z, w + delta*e_i) - Q(z, w) - delta * g_i | < delta*eps
    

    归结为检查

    | Q(z, w + delta*e_i) - ( Q(z, w) + delta * g_i ) | < delta*eps
    

    因此检查是否

    Q(z, w + delta*e_i) ≈ ( Q(z, w) + delta * g_i )
    

    这是他们的方程式,只是功能方面

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-24
      • 2013-02-09
      • 2011-09-27
      • 1970-01-01
      • 2017-03-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多