首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无限梯度值梯度下降

无限梯度值梯度下降
EN

Data Science用户
提问于 2019-03-30 10:05:14
回答 1查看 822关注 0票数 1

给定一个函数f(x)\frac{\partial f(x)}{\partial x_i}=\frac{f^2(x1,...,x_i+\pi/2,...,x_n)-f^2(x1,...,x_i-\pi/2,...,x_n)}{f(x)}。当f(x)\to0\frac{\partial f(x)}{\partial x_i}可以无限大。(f^2(x1,...,x_i+\pi/2,...,x_n)-f^2(x1,...,x_i-\pi/2,...,x_n)总是非零)

对于这种情况,我在梯度下降process...In中的处理经验很少,我的代码f(x)是连续域的,但为了模拟现实世界中的某些过程,f(x)被采样为离散的,并且返回在[0,1]上均匀分布的值。假设离散f(x)具有N标识值,在开始时有一组大小为M (M非常大)的训练集,\{x_i, f(x_i)=\frac{k_i}{N}\}_{i=1..M} (k_i \in 1, 2, ..., N)

我发现,将1/f(x)设置为0.01这样的值时,f(x)=0很容易达到优化,但比理想的过程稍慢,而设置为更小的值(如0.00001 ),会使f(x)=0对过程产生很大影响,并且无法形成下降曲线。

将无穷大的值替换为一些大的但有限的值是正确的吗?还是有更好的方法来处理无限梯度问题?

提前感谢!

EN

回答 1

Data Science用户

回答已采纳

发布于 2019-03-30 10:21:19

将无穷大的值替换为一些大的但有限的值是正确的吗?

是。例如,交叉熵损失函数中的对数也会出现同样的问题,即当p_i \text{log}(p'_i)p'_i \rightarrow 0。通过将\text{log}(x)替换为\hat{\text{log}}(x) = \text{log}(x+\epsilon)来代替一些小型\epsilon,可以避免这种情况。

类似地,您将分母中的f(x)更改为\hat{f}(x) = max(\epsilon, f(x))

然而,我建议\hat{f}(x) = f(x) + \epsilon而不是一个截止阈值。这样,f(x_1) < f(x_2) < \epsilon中的差异就不会被忽略,不像最大截断。

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

https://datascience.stackexchange.com/questions/48255

复制
相关文章

相似问题

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