2014-01-13 42 views
2

我正在使用scipy的fmin_l_bfgs_b對可用作黑盒的二維函數的優化方法。漸變不能直接評價,所以我要求的方法,通過設置approx_grad = True近似梯度。l_bfgs優化方法如何近似於漸變

我想知道近似梯度的計算方式。我的猜測是,在每個點,每個維度,梯度向前差近似。因此,對於N維中的每個點,進行N次評估以得到偏導數。它是否正確?

回答

5

雅可比近似與完成scipy.optimize.approx_fprime功能,docs

 f(xk[i] + epsilon[i]) - f(xk[i]) 
f'[i] = --------------------------------- 
        epsilon[i] 

在哪裏的ε-是paramether到fmin_l_bfgs_b

小量:浮使用

步長時approx_grad對於數字計算來說是真的克梯度

+0

感謝您的鏈接。看來我的猜測是正確的... N功能評價是在每個點進行,以獲得梯度,其中N是尺寸(大小數矢量x) –

1

我不知道SciPy的是怎麼做的特別多。一個流行的方法是計算它們如下:

(F(X + E)-f(XE)/(2 * E)(顯然這裏無法得到膠乳支持)

這給你精度可達二次條款(只計算泰勒展開每個術語和。減去它們)