恩佐2登录 > SEO软件 > SEO算法SciPy中的经典优化算法

SEO算法SciPy中的经典优化算法

admin SEO软件 2020年01月22日

  函数涉及到的经典优化算法的特点, 方便速查与快速回忆; 严格理论的部分可见官方文档Notes部分的内容, 其对每一种方法都给出了参考论文, 而笔者关于这些算法的理解大多来自于Jorge Nocedal的Numerical Optimization.

  首先来看scipy.optimize这个包的官方文档, 右侧的目录告诉我们这个包大致分为6块内容:

  优化是对目标函数的进行迭代求最小值的过程, 若优化过程只需求得目标函数的在迭代点处函数值, 那么这类方法称为是无导数优化; 若需要求得目标函数的一阶信息(梯度向量值), 那么这类方法称为是一阶方法; 若需要求得二阶信息(Hessian阵), 那么这类方法称为是二阶方法. 显然三类方法的计算量的越来越大.

  Nelder-Mead方法是无导数优化方法, 其保持了对\(\mathbb{R}^n\)中的\(n+1\)个点的函数值追踪, 且这些点的凸包构成了一个非退化的单纯形. 比方说目标函数为\(\mathbb{R}^2\)中的函数, Nelder-Mead方法就保持了对\(3\)个点的函数值追踪, 非退化指的是这三者不能共线.

  Powell方法是共轭方向法的一种变体, 先来看什么是共轭方向法,共轭方向法是给定一共轭方向的集合\(\{p_1....,p_n\}\), 对集合中的方向依次进一维巡查的方法, 因此显然是无导数优化方法.

  回到Powell方法, 仍然以上述二次函数为例, 其与标准共轭方向法唯一的不同在于迭代地得到共轭方向的集合, 且共轭方向的集合的初始化可简单取为\(\{e_1, e_2\}\). 以右图为例,

  \(\Delta\), 要求搜索方向在该信赖域内.涉及信赖域方法就不得不谈信赖域子问题:

  且一般的, 这里的\(B_k\)仅仅要求对称, 一致有界. 关于这点可见Numerical Optimization一书page68; 但具体到这里的狗腿法仍然需要加上正定性的要求.回过头来看狗腿法, 狗腿法实际上是

  , 从图中可以看到, 第一段是沿着负梯度方向到达柯西点, 这里的柯西点指的是沿着负梯度方向极小化信赖域子问题得到的极小值点; 接着像狗腿那样拐弯, 直奔信赖域子问题的最优解而去, 因此信赖域半径的作用就是决定了上述过程能跑多远.

  , 因此也可解牛顿方程, 参见矩阵计算第三版9.3节.与Trust-ncg方法相比, Trust-krylov方法只是将CG方法换成了

标签: seo算法