以optimtool的算法为例来解释
在Python >3.7的编程环境下,按如下方式下载optimtool,一个基于符号微分与数值近似的优化方法库:
pip install optimtool --upgrade
pip install optimtool>=2.4.2
目前没有为目标函数中不可微项增加预处理近似,下文介绍了如何通过现有方法研究带不可微项的目标函数的极小值。
常见的不可微项的邻近算子举例
根据文再文的《最优化:建模、算法与理论》的解释,有如下范数或函数的邻近算子(常数 t > 0 t>0 t>0为正实数):
- L1范数:
h ( x ) = ∣ ∣ x ∣ ∣ 1 , p r o x t h ( x ) = s i g n ( x ) m a x { ∣ x ∣ − t , 0 } . h(x)=||x||_1,prox_{th}(x)=\mathrm{sign}(x)\mathrm{max}\{|x|-t,0\}. h(x)=∣∣x∣∣1,proxth(x)=sign(x)max{ ∣x∣−t,0}. - L2范数
h ( x ) = ∣ ∣ x ∣ ∣ 2 , p r o x t h ( x ) = ( 1 − t ∣ ∣ x ∣ ∣ 2 ) x , ∣ ∣ x ∣ ∣ 2 ≥ t 0 , 其他 h(x)=||x||_2,prox_{th}(x)=\begin{aligned} (1 - \frac{t}{||x||_2})x, ||x||_2 \geq t \\ 0, 其他 \end{aligned} h(x)=∣∣x∣∣2,proxth(x)=(1−∣∣x∣∣2t)x,∣∣x∣∣2≥t0,其他 - 二次函数(其中A对称正定)
h ( x ) = 1 2 x T A x + b T x + c , p r o x t h ( x ) = ( I + t A ) − 1 ( x − t b ) . h(x)=\frac{1}{2}x^TAx+b^Tx+c,prox_{th}(x)=(I+tA)^{-1}(x-tb). h(x)=21