首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用有限差分检验梯度

用有限差分检验梯度
EN

Stack Overflow用户
提问于 2016-01-12 18:18:06
回答 1查看 1.4K关注 0票数 1

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

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

所以我可以选择一个例子来计算这个例子的损失,但是我的权向量包含了大约4000个特征,所以当损失是整数时,我得到了许多偏导数的向量作为梯度,所以不可能计算Q(z,w) +δg。我是否只需要计算w的单个特征的损失?这是指“当前的w”吗?

EN

回答 1

Stack Overflow用户

发布于 2016-01-12 20:22:08

该出版物中的等式看上去很奇怪,因为它没有被仔细描述。为了检查梯度,通常检查“猜测”的梯度g与数值梯度之间的差异,即i第四维是否等于。

代码语言:javascript
复制
( Q(z, w + delta*e_i) - Q(z, w) ) / ( delta )

对于足够小的delta,而e_ii第四正则向量(i第th维数为1,否则为0)是足够小的。换句话说,如果我们用g_i表示梯度的i第四维,那么您需要检查是否

代码语言:javascript
复制
| ( 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

可以归结为检查

代码语言:javascript
复制
| Q(z, w + delta*e_i) - ( Q(z, w) + delta * g_i ) | < delta*eps

因此检查是否

代码语言:javascript
复制
Q(z, w + delta*e_i) ≈ ( Q(z, w) + delta * g_i )

这是它们的方程,简单地说是feature-wise.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34751035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档