2.7.2.4 较少梯度方法
2.7.2.4.1 打靶法: Powell算法
接近梯度方法
状态糟糕的二元函数:
Powell法对低维局部糟糕状况并不很敏感
状况糟糕的极端非二元函数:
2.7.2.4.2 单纯形法: Nelder-Mead
Nelder-Mead算法是对高维空间的对立方法的归纳。这个算法通过改进单纯形来工作,高维空间间隔和三角形的归纳,包裹最小值。
长处: 对噪音很强壮,他不依赖于计算梯度。因此,它可以在局部光滑的函数上工作,比如实验数据点,只要他显示了一个大规模的钟形行为。但是,它在光滑、非噪音函数上比基于梯度的方法慢。
状况糟糕的非二元函数:
状况糟糕的极端非二元函数:
在scipy中, scipy.optimize.fmin() 实现了Nelder-Mead法:
In [11]:
def f(x): # rosenbrock函数
return .5*(1 - x[0])**2 + (x[1] - x[0]**2)**2
optimize.fmin(f, [2, 2])
Optimization terminated successfully.
Current function value: 0.000000
Iterations: 46
Function evaluations: 91
Out[11]:
array([ 0.99998568, 0.99996682])