學習筆記 稀疏性正則化 l1正則化

2021-08-28 13:16:07 字數 1241 閱讀 3396

還記得我們之前用經度和緯度來進行分箱嗎? 僅僅是2個特徵進行分箱組合就讓我們的輸入特徵數量暴增。假設我們現在有k個特徵需要來分箱,每個分為長度為k的獨熱編碼。那麼我們輸入特徵就為 k^k個,這種指數增長會占用我們大量ram。這是我們需要辦法來拯救我們的ram。那麼乙個好的方法就是讓我們的部分權重為0,正好為0的權重會使相應特徵從模型中移除。會節省我們的ram同時也會降低我們模型中的噪點。

很遺憾的是我們之前使用的l2正則化並不能解決這個問題,l2正則化會讓我們權重降低,但並不會讓權重降為0。

這裡l0正則化會讓我們的問題變成非凸問題,這裡我們用l1正則化(lasso regression)來代替l0正則化,它具有凸優化的優勢,方便我們計算。(順便一提l2正則化又叫嶺回歸ridge regression) (在tf中,l2正則化會除以2),比如:

x = tf.constant([3.0, 4.0])

sess = tf.session()

print(sess.run(tf.contrib.layers.l2_regularizer(1.0)(x)))

>>>12.5

l1和l2降低權重的方法:

l1降低是權重的絕對值

l2降低權重的平方

因此l1和l2具有不同的導數(微分):

l1 的導數為k(乙個常數,與權重無關).

l2的導數為 2*權重.

文章這裡給了乙個易懂的解釋:

我們可以把 l1正則化相當於每次對weights減去乙個常數,並且由於在0處具有不連續性,出現負數則會變為0.

l2則是每次移除weights的x%,所以不會得到0。

下一次我們將會用獨熱編碼來處理特徵,原文本來在介紹神經網路之前並沒有新增隱藏層,我這裡則是一直都新增了隱藏層,不過這個概念並不難,只要稍微運用下搜尋引擎就可以得到易於理解的答案。

至於整個反向傳播的流程,建議不要急著去研究,深入去理解其中的數學演算法自然對我們理解神經網路有很大幫助,但是其中涉及到的一些數學知識還是比較艱深的。

至於正則化,則是為了讓weights矩陣的condition number降低,此舉是為了降低對輸入值的敏感性。我們只要記住可以防止過擬合就夠了。(個人理解,如果有勿煩請指出。)

一般來說l1正則化的效果不如l2,當我們輸入的均是獨熱碼的時候,l1可以將weights降為0這點,會節省我們的ram。

請注意一下,我們l2正則化和l2範數的演算法略微有點區別的,我們沒有開根號,同時tf還除了2 。

暫時先說這麼多,很多問題還沒有想到,想到哪寫到哪了。

正則化 L1正則化(稀疏性正則化)

稀疏向量通常包含許多維度。建立特徵組合會導致包含更多維度。由於使用此類高維度特徵向量,因此模型可能會非常龐大,並且需要大量的 ram。在高維度稀疏向量中,最好盡可能使權重正好降至 0。正好為 0 的權重基本上會使相應特徵從模型中移除。將特徵設為 0 可節省 ram 空間,且可以減少模型中的噪點。以乙...

L1正則化與稀疏性 L1正則化不可導問題

l1正則化與稀疏性 座標軸下降法 解決l1正則化不可導的問題 lasso回歸演算法 座標軸下降法與最小角回歸法小結 l1正則化使得模型引數具有稀疏性的原理是什麼?機器學習經典之作 pattern recognition and machine learning 中的第三章作出的乙個解釋無疑是權威且直...

損失函式L1正則化稀疏性

機器學習演算法中為了防止過擬合,會在損失函式中加上懲罰因子,即為l1 l2正則化。因此最終的優化目標函式為 f x l x c reg x c 0 本文只講解l1正則化,因此reg x x 首先l x 和reg x 都是連續函式,因此f x 也是連續函式 其次l x 和reg x 都是凸函式,因此f...