当我得到简单的回溯算法时,我正在使用Nocedal& Wright进行优化阅读/练习,如果d是我的行方向,则a是步长,算法会查找
对于某些0< c<他们建议使用一个非常小的c,订单为10 ^ -4。
对我来说这似乎很奇怪,因为需求非常大。
我做了一些c = 0.3的实验,它看起来效果要比消化的10 ^ -4好(对于一个简单的二次问题和最陡的下降)。
任何关于为什么这么低的价值应该起作用的直觉以及为什么它对我没有好处?
感谢。
答案 0 :(得分:0)
∇f()对于不同的问题可能有完全不同的尺度;
一步不能适合所有人。
考虑f(x)= sin(ω.x):右c
将取决于ω,
可以是1,或1e-6,或......的数量级
因此,将∇f()缩放到约1,然后与c
一起使用是个好主意。
(建议使用“c = ...”的人,请描述您的问题规模和比例。)
在二次方添加一些噪点,看看在增加噪音时会发生什么。 在2d,10d中尝试二次+噪声。
在机器学习中,似乎有很多关于c
a.k.a.学习率的民间传说;
谷歌
learning-rate on stackexchange.com,
还gradient-descent step-size
和adagrad自适应渐变。