minf(x)x∈En
泰勒展开:f(x)=f(x0)+f′(x0)(x−x0)+21f′′(x0)(x−x0)2+⋯+n!f(n)(x0)(x−x0)n+Rn(x)
f(x)有一阶连续偏导数,具有极小点x∗。x(k)表示向极小点的第k次近似
x(k+1)=x(k)+λkP(k)λk≥0
- P(k):方向
- λk:步长,步长过大有可能会越过极小点
将f(x)在x(k)处,泰勒展开
f(x)=f[x(k)+λP(k)]=f(x(k))+λk▽f(x(k))TP(k)+o(λ)λ→0limλo(λ)<0
- ▽f(x(k)):函数f在当前点时的梯度
为了使目标函数值能得到尽量大的改善,必须寻求使f(x(k))TP(k)取最小值的P(k)
▽f(x(k))TP(k)=∥▽f(x(k))∥⋅∥P(k)∥cosθ
当θ为钝角时,即可下降,为180°时(cosθ=−1),下降最快有
P(k)=−▽f(x(k))
称为负梯度方向。
海赛(Hessian)矩阵:H(x)=⎣⎢⎢⎡∂x12∂2f∂x2∂x1∂2f∂x1∂x2∂2f∂x22∂2f⎦⎥⎥⎤
求步长
λk=▽f[x(k)]T⋅H(x(k)⋅▽f[x(k)]▽f[x(k)]T⋅▽f[x(k)]
停止条件
- ∥▽f(x(k)∥≤ε
- ∥x(k)−x(k+1)∥≤ε
其中ε为精度,满足以上任意一条时,停止迭代。
求f(x)=(x1−1)2+(x2−1)2的极小点,已知ε=0.1。
解
梯度表达式:▽f(x)=[2(x1−1)2(x2−1)]
- ▽f(x(0))=[−2−2]
- ∥▽f(x(0))∥=(−2)2+(−2)2=8>ε
- H(x)=[2002]
求步长
λ0=[−2−2][2002][−2−2][−2−2][−2−2]=21
迭代
x(1)=x(0)−λ0▽f(x(0))=[00]−21[−2−2]=[11]
▽f(x(1))=[00],∥▽f(x(1))∥=0<0.1=ε,迭代停止
故x(1)即为在精度ε=0.1下的极小点。