关于Armijo规则的困惑


13

我对行搜索中使用的Armijo规则感到困惑。我正在阅读回溯追踪线搜索,但没有得到Armijo规则的全部内容。谁能详细说明Armijo规则是什么?维基百科似乎解释得不好。谢谢


如果在方程式中变量x不是向量而是矩阵,该怎么办?Armijo规则应如何更新?
Frank Puk

没有什么变化。您应该将矩阵简单地整形为(列)向量x kXkxk
GoHokies

那就是我被困住的地方。当成为矩阵,在左手侧上的值(˚F X ķ + α p ķ)仍是一个标量。但在右手侧的值不为-相反,它是一个矩阵(˚F X ķ是一个标量和β α ▿ ˚F X ķ Ť p ķ是矩阵。)xkf(xk+αpk)f(xk)βαf(xk)Tpk
弗兰克北辰

您将需要使用向量,而不是矩阵。因此,您可以将个控制变量矩阵(我用X k表示)重塑为具有N 2个元素的向量x k。搜索方向和梯度也将是具有N 2个元素的向量。这样,Armijo条件的RHS和LHS都是标量,可以进行比较。N×NXkxkN2N2
GoHokies

Answers:


19

pf(x)

f

f(xk+αpk)f(xk)+βαf(xk)Tpk
pkxkβ(0,1)

f(xk+αpk)xkpk


1
βα

这一点很重要的原因,即为什么需要“好的”步骤,是因为许多优化方案的收敛速度会较慢,如Paul所说,或者可能根本不会收敛。因此,可以使用行搜索(有几种变体,Armijo才是最流行的搜索)来为算法提供更强大的收敛性。
cjordan1

1
保罗:您的解释不完整。单单这种不平等并不能保证“足够的”减少。实际上,您可以使alpha = 0,并且仍然满足您编写的不等式。Armijo规则的一个重要功能是将步长大小限制为零,这是由另一个不等式完成的:f(gamma * x_new)-f(x_old)> beta *(gamma * x_new-x_old)^ T * grad(f (x_old))

f(x)=x2xk=1pk=2αf(xk+αpk)α=1/2β>1/2f(xk+1/2pk)=0>12β=f(xk)+βαf(xk)pkβ

β>1/2β=104β

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.