次梯度法

来自testwiki
跳转到导航 跳转到搜索

Template:NoteTA

次梯度法是求解凸函数最优化凸优化)问题的一种迭代法。次梯度法能够用于不可微的目标函数。当目标函数可微时,对于无约束问题次梯度法与梯度下降法具有同样的搜索方向。

虽然在实际的应用中,次梯度法比内点法牛顿法慢得多,但是次梯度法可以直接应用于更广泛的问题,次梯度法只需要很少的存储需求。然而,通过将次梯度法与分解技术结合,有时能够开发出问题的简单分配算法。

基本次梯度算法

f:n为定义在n上的凸函数。次梯度算法使用以下的迭代格式

x(k+1)=x(k)αkg(k) 

其中g(k)表示函数f x(k) 次梯度. 如果 f 可微,他的次梯度就是梯度向量f ,有时g(k)不是函数f x(k)处的下降方向。因此采用一系列可能的fbest 来追踪目标函数的极小值点,即

fbest(k)=min{fbest(k1),f(x(k))}

步长的选取

次梯度方法有许多可采用的步长。以下为5种能够保证收敛性的步长规则

  • 恒定步长,αk=α
  • 恒定间隔,αk=γ/g(k)2,得出x(k+1)x(k)2=γ
  • 步长平方可加,但步长不可加,即步长满足
αk0,k=1αk2<,k=1αk=
  • 步长不可加但步长递减,即步长满足
αk0,limkαk=0,k=1αk=
  • 间隔不可加但间隔递减,即αk=γk/g(k)2,其中
γk0,limkγk=0,k=1γk=。注意:上述步长是在算法执行前所确定的,不依赖于算法运行过程中产生的任何数据。这是与标准梯度下降法的显著区别。

收敛结果

对于恒定间隔的步长以及恒定步长,次梯度算法收敛到最优值的某个邻域,即

limkfbest(k)f*<ϵ。基本次梯度算法的性能较差,因此一般的优化问题并不推荐使用。

有约束最优化

投影次梯度算法

次梯度法的一个扩展版本是投影次梯度法,该方法用于求解有约束最优化问题

最小化f(x) x𝒞

其中𝒞为凸集。投影次梯度算方法的迭代公式为

x(k+1)=P(x(k)αkg(k))

其中P是在𝒞上的投影,g(k)是在点x(k)f 的次梯度。

一般约束问题

次梯度法可扩展到求解不等式约束问题

最小化f0(x)fi(x)0,i=1,,m

其中fi为凸函数。该算法与无约束优化问题具有相同的形式

x(k+1)=x(k)αkg(k) 

其中αk>0是步长,g(k)是目标函数或约束函数在x处的次梯度

g(k)={f0(x) if fi(x)0i=1mfj(x) for some j such that fj(x)>0

其中f代表f 的次微分。如果当前点为可行点,算法采用目标函数的次梯度,否则采用任一违反约束的函数的次微分。

参考资料

外部链接