假設(shè)我們擁有某個(gè)函數(shù) f,這個(gè)函數(shù)輸入一個(gè)實(shí)數(shù)向量,輸出一個(gè)實(shí)數(shù)。一個(gè)簡(jiǎn)單的例子
如下:
def sum_of_squares(v):
"""computes the sum of squared elements in v"""
return sum(v_i ** 2 for v_i in v)
我們常常需要最大化(或最小化)這個(gè)函數(shù)。這意味著我們需要找出能計(jì)算出最大(或最
?。┛赡苤档妮斎?v。
對(duì)我們的函數(shù)來說, 梯度(在微積分里, 這表示偏導(dǎo)數(shù)向量)給出了輸入值的方向,在這
個(gè)方向上,函數(shù)增長(zhǎng)得最快。(如果記不起微積分,用我提到的關(guān)鍵詞上網(wǎng)查查。)
相應(yīng)地,最大化函數(shù)的算法首先從一個(gè)隨機(jī)初始點(diǎn)開始,計(jì)算梯度,在梯度方向(這是使
函數(shù)增長(zhǎng)最快的一個(gè)方向)上跨越一小步, 再?gòu)囊粋€(gè)新的初始點(diǎn)開始重復(fù)這個(gè)過程。同
樣,你也可以在相反方向上逐步最小化函數(shù)

如果一個(gè)函數(shù)有一個(gè)全局最小點(diǎn),那么這個(gè)方法很可能會(huì)找到它。如果這個(gè)
函數(shù)有多個(gè)(局部)最小點(diǎn),那么這種方法可能找不到這個(gè)點(diǎn),但你可以通
過多嘗試一些初始點(diǎn)來重復(fù)運(yùn)行這個(gè)方法。 如果一個(gè)函數(shù)沒有最小點(diǎn),也許
計(jì)算會(huì)陷入死循環(huán)。








暫無數(shù)據(jù)