DL CV 更高階的引數更新 優化(二)

2021-09-13 10:06:17 字數 1725 閱讀 1001

續【dl-cv】更高階的引數更新(一)

【dl-cv】正則化,dropout

《前篇---後篇》【dl-cv】**googlenet(咕咕net)

全名 adaptive gradient algorithm ,翻譯過來就是「適應梯度演算法」,該演算法能根據梯度中偏導數的大小給不同的偏導數以不同的學習率,偏導數大(小)的給個小(大)的學習率,以此來減少引數更新時的擺動。

其核心是引入乙個引數對歷次的梯度的平方進行累加,在更新階段,基礎學習率將除以這個引數的開方。這樣大梯度會因為積累大而分得小的學習率,小梯度因為積累小而分得較大的學習率

$$s_ = s_+\nabla_x l(x_t)^2$$

$$x_=x_t-}+\epsilon}\nabla_x l(x_t)$$

其中$\epsilon$是乙個很小的數,為了防止除法時分母出現零,一般設為1e-4到1e-8之間。下面是**實現

缺點:梯度平方的累計值在訓練過程中不斷增大,作為分母被除了以後學習率衰減過快,更新變慢

rmsprop 是 geoff hinton 提出的一種自適應學習率方法,目的是為了解決 adagrad 學習率急劇下降的問題。其在對梯度平方進行累加時會進行衰減處理(其實是指數加權平均),解決學習率急降的問題的同時又保留了 adagrad 調節學習率的優點

$$s_ = \beta s_t +(1-\beta)\nabla_x l(x_t)^2$$

$$x_= x_t-+}\epsilon}$$

$\gamma$ 通常為0.9/0.99

以上兩種方法解決了sgd的問題2️⃣

兩種動量方法通過引入「速度」解決了問題1️⃣;adagrad 和 rmsprop 通過引入「梯度平方」解決了問題2️⃣,各有千秋。為何不把兩者結合起來然後一次滿足兩個願望呢?這麼一想,adam就出來了。

adam 相當於 rmsprop + momentum,他除了像 rmsprop 一樣儲存了過去梯度平方的指數衰減平均值 ,也像 momentum 一樣保持了過去梯度的指數衰減平均值:

$$v_ = \beta_1v_t + (1-\beta_1)\nabla_x l(x_t)$$

$$s_ = \beta_2s_t + (1-\beta_2)\nabla_x l(x_t)^2$$

如果 v 和 s 被初始化為 0 向量,那它們就會向 0 偏置,所以還需要偏差校正來抵消這些偏差:

$$\hat v_ = \over 1-\beta_1^}$$

$$\hat s_ = \over 1-\beta_2^}$$

最後的更新就是:

$$x_=x_t-\over\sqrt}+\epsilon}$$

推薦值$\beta_1=0.9$,$\beta_2=0.99$,$\alpha=10^/5·10^$**實現:

adam真的是乙個非常棒的演算法,實踐表明,adam 比其他適應性學習方法效果要好,幾乎成為標配預設的演算法啦。所以長篇大論了這麼久之後的結論是——推薦首選adam

關於常用Linux核心引數的優化 持續更新

vim etc sysctl.conf 每乙個埠最大監聽佇列長度,最大檔案開啟數量以及盡可能使用記憶體,swap值越大,越會積極使用交換分割槽 net.core.somaxconn 65535 fs.file max 655360 生效sysctl p 配置最大檔案開啟數量,修改儲存後立即生效 帳號...

Linux引數優化(隨著經驗的增加持續更新中)

1.調整系統檔案描述符數量,預設為1024 ulimit n進行檢視 1 2 3 4 5 6 7 root test1 core ulimit n 1024 調整方法 root test1 core echo nofile 65535 etc security limits.conf 注 配置完成後...

SEO優化高階的內容更新怎麼來做更合適?

seo優化高階的內容更新怎麼來做更合適?內容更新對seo的意義 一般來說對於 內容更新有三種,一種是純複製,第二種是偽原創,第三種是純原創。對於 seo來說自然是純原創效果最好,但是同樣的相對而言純原創成本最高。所以正常來說,www.ymjump.com 我們會選擇偽原創。但是偽原創不是簡單的用一些...