优化是指找到最小化(或最大化)目标函数的设计点。获得一个函数的值如何随着输入的变化而变化是有用的,因为它告诉我们在哪个方向上我们可以改进之前的点,函数值的变化是通过单变量函数的导数和多变量函数的梯度来度量的。
01 求导数的方法
1-1 有限差分方法
通过计算函数在某一点的邻近点处的值的差分,来近似导数,主要包括前向差分、后向差分和中心差分三种形式。
理论上,步长h越小,通过有限差分法求得的导数值越精确。但实际上由于计算机存储的精度有限,h的值太小会导致数值抵消误差反而使导数计算精度下降。
1-2 复数步进法
复数步进法通过单个函数求值绕过了减法消去的影响,只需在虚方向上走一步之后对函数求一次值。
函数在虚数部分的展开为:
f ( x + i h ) = f ( x ) + i h f ′ ( x ) − h 2 f ′ ′ ( x ) 2 ! − i h 3 f ′ ′ ′ ( x ) 3 ! + ⋯ (1) f(x+ih)=f(x)+ihf'(x)-h^2\frac{f''(x)}{2!}-ih^3\frac{f'''(x)}{3!}+\cdots \tag1 f(x+ih)=f(x)+ihf′(x)−h22!f′′(x)−ih33!f′′′(x)+⋯(1)
仅考虑虚数部分,上式化为:
I m ( f ( x + i h ) ) = h f ′ ( x ) − h 3 f ′ ′ ′ ( x ) 3 ! + ⋯ ⇒ f ′ ( x ) = I m f ( x + i h ) h + h 2 f ′ ′ ′ ( x ) 3 ! − ⋯ = I