久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Caffe中的SGD的變種優(yōu)化算法(2)

 高教幫 2019-03-14

優(yōu)化算法

Caffe中的SGD的變種優(yōu)化算法(2)

接上回,,我們繼續(xù)來看優(yōu)化的算法。

Adam

關(guān)于adam的算法,,我覺得它的復雜程度比前面的算法更高,,但是它還是主要使用了和計算動量相同的方法,,并把這種方法應(yīng)用到梯度的一階總量和二階總量上:

它的代碼如下所示:

def adam(x_start, step, g, beta1 = 0.9, beta2 = 0.999,delta=1e-8):

x = np.array(x_start, dtype='float64')

sum_m = np.zeros_like(x)

sum_v = np.zeros_like(x)

passing_dot = [x.copy()]

for i in range(50):

grad = g(x)

sum_m = beta1 * sum_m + (1 - beta1) * grad

sum_v = beta2 * sum_v + (1 - beta2) * grad * grad

correction = np.sqrt(1 - beta2 ** i) / (1 - beta1 ** i)

x -= step * correction * sum_m / (np.sqrt(sum_v) + delta)

passing_dot.append(x.copy())

if abs(sum(grad)) < 1e-6:

break;

return x, passing_dot

前面也說過,實際上這些算法背后都有些原理的,,但是這些原理在我們看來可能都比較抽象,,所以再我們看完實驗再看原理可能會更有感覺。下面我們看看它的表現(xiàn):

res, x_arr = adam([5, 5], 0.1, g)

contour(X,Y,Z, x_arr)

好吧,,這一回它是唯一一個走得有點過頭的算法,,不過最后還是走上了正道。

這樣除了Nesterov算法之外,,我們把其他所有的算法都展示出來了,。前面這個實驗中,,我們希望檢驗算法的“拐彎”能力。也就是說一開始算法沖著一個局部最優(yōu)點而來,什么時候它會發(fā)現(xiàn)這是個騙局并掉頭朝向真正的最優(yōu)值呢,?現(xiàn)在每一個算法都給我們交出了答案。仔細看來每個算法的表示還是不太一樣的,。有的算法比較靈敏,,剛發(fā)現(xiàn)不對就調(diào)頭逃跑,有的算法則是沖過了頭才轉(zhuǎn)過身來,。有的算法做到這一切十分容易,,并不需要很大的Learning rate,有的算法則需要強大的力量才能轉(zhuǎn)過來,,否則就會行動緩慢。

好了,,各位童鞋,,轉(zhuǎn)彎賽到此結(jié)束,下面我們進入下一個比賽——爬坡賽,。爬坡賽的比賽規(guī)則是,,所有算法使用同樣的參數(shù),從鞍點附近出發(fā),,經(jīng)過50輪迭代,,看看它能走到哪里。

爬坡賽

首先是我們的老朋友梯度下降法:

res, x_arr = gd([-0.23,0.0], 0.0008, g)

contour(X,Y,Z, x_arr)

我們的老朋友在爬坡賽看來是要叫白卷了,,說明它雖然很輕盈,,但是動力不是很足啊。

下面是動量算法:

res, x_arr = momentum([-0.23,0], 5e-4, g)

contour(X,Y,Z, x_arr)

比梯度下降好一點,,但是好的有限,。

然后是Adagrad:

res, x_arr = adagrad([-0.23, 0], 1.3, g)

contour(X,Y,Z, x_arr)

好吧,表現(xiàn)得比轉(zhuǎn)彎賽還好,,省去夸贊的詞語了,。

下面是Rmsprop:

res, x_arr = rmsprop([-0.23, 0], 0.3, g)

contour(X,Y,Z, x_arr)

同樣完成的不錯!

下面我們再看AdaDelta:

res, x_arr = adadelta([-0.23, 0], 0.4, g)

contour(X,Y,Z, x_arr)

好吧,,直接一騎絕塵而去了,。

最后是我們今天登場的Adam:

res, x_arr = adam([-0.23, 0], 0.1, g)

contour(X,Y,Z, x_arr)

同樣是跑出了我們原始規(guī)劃的區(qū)域。

總結(jié)

經(jīng)過兩輪的比賽——轉(zhuǎn)彎賽和爬坡賽,,我們測試了幾種算法在同一配置上的實力,。測試的目標不是為了比較哪個算法更厲害,而是展示另外一個實力——哪個算法表現(xiàn)更穩(wěn)定,。

因為我們在實際使用過程中,,learning rate是相對固定的,在優(yōu)化過程中我們無法預料自己將會碰上什么樣的情景,,那么我們肯定希望一個算法又能轉(zhuǎn)彎又能爬坡,。如果一個算法轉(zhuǎn)彎厲害但是爬坡比較弱,那一旦遇上爬坡它就會走得很慢,,反之也是如此,。

所以從剛才的表現(xiàn)來看,我們的新算法似乎表現(xiàn)更為平穩(wěn),,現(xiàn)在也確實有越來越多的人拋棄了一些經(jīng)典的算法,,轉(zhuǎn)而投入這些新算法的懷抱,而這些新算法也足夠爭氣,,拿出了它們的實力,。關(guān)于算法性能的測試一直在進行,這些算法還需要經(jīng)歷更多的考驗,!

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導購買等信息,謹防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多