我正在使用scipy的fmin_l_bfgs_b對可用作黑盒的二維函數的優化方法。漸變不能直接評價,所以我要求的方法,通過設置approx_grad = True
近似梯度。l_bfgs優化方法如何近似於漸變
我想知道近似梯度的計算方式。我的猜測是,在每個點,每個維度,梯度向前差近似。因此,對於N維中的每個點,進行N次評估以得到偏導數。它是否正確?
我正在使用scipy的fmin_l_bfgs_b對可用作黑盒的二維函數的優化方法。漸變不能直接評價,所以我要求的方法,通過設置approx_grad = True
近似梯度。l_bfgs優化方法如何近似於漸變
我想知道近似梯度的計算方式。我的猜測是,在每個點,每個維度,梯度向前差近似。因此,對於N維中的每個點,進行N次評估以得到偏導數。它是否正確?
雅可比近似與完成scipy.optimize.approx_fprime功能,docs:
f(xk[i] + epsilon[i]) - f(xk[i]) f'[i] = --------------------------------- epsilon[i]
在哪裏的ε-是paramether到fmin_l_bfgs_b
小量:浮使用
步長時
approx_grad
對於數字計算來說是真的克梯度
我不知道SciPy的是怎麼做的特別多。一個流行的方法是計算它們如下:
(F(X + E)-f(XE)/(2 * E)(顯然這裏無法得到膠乳支持)
這給你精度可達二次條款(只計算泰勒展開每個術語和。減去它們)
感謝您的鏈接。看來我的猜測是正確的... N功能評價是在每個點進行,以獲得梯度,其中N是尺寸(大小數矢量x) –