4 4神經網路進一步優化

2021-09-03 02:10:58 字數 1302 閱讀 4532

學習率太大了不好,學習率太小了也不好

tensorflow提供了一種更加靈活的學習率設定方法--指數衰減法

前期較大的學習率來快速得到乙個比較優的解

後期隨著迭代次數的繼續逐步減小學習率,使得模型在訓練後期更加穩定.

所謂過擬合,指的是當乙個模型過為複雜之後,它可以很好地"記憶"每乙個訓練資料中

隨機噪音的部分而忘了要去"學習"訓練資料中通用的趨勢

舉乙個比較極端的例子,如果乙個模型中的引數比訓練資料的總數還多,

那麼,只要訓練資料不衝突,這個模型完全可以記住所有訓連資料的結果從而使得損失函式為0

可以想象乙個包含n個變數和n個等式的方程組......

圖4-14顯示了模型訓練的三種不同情況

為了避免過擬合問題,乙個非常常用的方法是正則化

正則化的思想:在損失函式中加入刻畫模型複雜程度的指標.

假設用於刻畫模型在訓練資料上表現的損失函式為j(θ),那麼在優化時不是直接優化j(θ)

而是優化j(θ) + λr(w), 其中r(w)刻畫的是模型的複雜程度,λ表示模型複雜損失在總損失中的比例

這裡的θ為乙個神經網路中所有的引數,它包括邊上的權重w和偏置項b

一般來說模型複雜程度只由權重w決定

常用的刻畫模型複雜度的函式r(w)有兩種:

(1)l1正則化,計算公式是:

(2)l2正則化,計算公式是:

無論哪一種正則方式,基本思想都是希望通過限制權重的大小,使得模型不能任意擬合訓練資料中的隨機噪音

l1正則化會讓引數變得更稀疏,而l2正則化不會

所謂引數變得稀疏是指會有更多的引數變為0,這樣可以達到類似特徵選取的功能

之所以l2正則化不會讓引數變得稀疏的原因是當引數很小時,比如0.001,這個引數的平方基本上

就可以忽略了,於是模型不會進一步將這個引數調整為0

注意:l1正則化的計算公式不可導,l2的正則化公式可導

在實踐中,也可以將l1正則化和l2正則化同時使用

本節將介紹另外乙個可以使模型在測試資料上更健壯的方法--滑動平局模型

Tensorflow筆記之神經網路進一步優化

在前面已經介紹了神經網路優化的基本演算法,通過梯度下降演算法和反向傳播演算法。其中梯度下降演算法學習率的設定尤為重要,因為它是控制引數更新的速度,決定了每次更新的幅度,如果幅度過大,那麼可能導致引數在極優值得兩側來回移動。以 當學習率過大時,梯度下降演算法的執行過程 輪數 當前輪引數值 梯度x學習率...

進一步優化ListView

之前我已經分享過一篇 viewhodler的通用寫法,就是專門用來優化listview的載入的,但是對於複雜的布局,我們還需要在listview滑動和不滑動時進行自己的處理,今天我看到一篇文章就是講這方面的,雖然不是很完善,但思想已經對了。主要思想 實現方法 下面的方法僅僅是起乙個說明的作用,實際中...

骨骼資料的進一步優化

緣由是看到這篇文章 主要是這一段話啟發了我 在之前,精度控制固定為 float epsilon powf 0.1f static cast float config.precision 精度 於是將 修改成為 intdepth std min 10,getnodedepth pbone const ...