scipy.optimize.

BFGS#

class scipy.optimize.BFGS(exception_strategy='skip_update', min_curvature=None, init_scale='auto')[來源]#

Broyden-Fletcher-Goldfarb-Shanno (BFGS) 黑塞矩陣更新策略。

參數:
exception_strategy{‘skip_update’, ‘damp_update’}, 選擇性

定義當曲率條件被違反時如何進行。設定為 ‘skip_update’ 以直接跳過更新。或者,設定為 ‘damp_update’ 以在實際的 BFGS 結果和未修改的矩陣之間進行內插。兩種例外策略都在 [1], p.536-537 中有解釋。

min_curvaturefloat

此數值,經由正規化因子縮放,定義了最小曲率 dot(delta_grad, delta_x),允許不受例外策略影響。預設值在 exception_strategy = 'skip_update' 時等於 1e-8,在 exception_strategy = 'damp_update' 時等於 0.2。

init_scale{float, np.array, ‘auto’}

此參數可用於初始化黑塞矩陣或其反矩陣。當給定一個浮點數時,相關陣列會初始化為 np.eye(n) * init_scale,其中 n 是問題維度。或者,如果給定一個精確 (n, n) 形狀的對稱陣列,則將使用此陣列。否則會產生錯誤。設定為 ‘auto’ 以使用自動啟發式方法來選擇初始縮放。啟發式方法在 [1], p.143 中有描述。預設值為 ‘auto’。

註解

此更新基於 [1], p.140 中的描述。

參考文獻

[1] (1,2,3)

Nocedal, Jorge, and Stephen J. Wright. “Numerical optimization” Second Edition (2006).

方法

dot(p)

計算內部矩陣與給定向量的乘積。

get_matrix()

返回目前的內部矩陣。

initialize(n, approx_type)

初始化內部矩陣。

update(delta_x, delta_grad)

更新內部矩陣。