作者|The AI LAB
編譯|VK
來源|Medium
對SparseNN模型的過擬合進行研究,并探索了多種正則化方法,如嵌入向量的max-norm/constant-norm、稀疏特征id的dropout、引數的freezing、嵌入收縮等,然而,據我們所知,在單次訓練中,沒有顯著的減少過擬合的效果,
正則化全連接層和稀疏引數
隨機梯度下降優化器使用小批量樣本來更新全連接層和稀疏引數,給定一個小批量的例子,通常所有的全連接層引數都會被更新(假設沒有gate或dropout),而只有一小部分稀疏引數會在正向傳播中被激活,從而在反向傳播中被更新,例如,假設一個稀疏特征對用戶在過去一周內單擊的廣告id進行編碼,雖然我們可能有數百萬個惟一的廣告id,但是在一個小型批處理中(通常是100個樣本)出現的廣告id的數量與基數相比非常有限,
正則化稀疏引數與全連接層引數的不同之處在于,我們需要在運行時識別小型批處理中已激活的稀疏引數,然后僅對這些引數進行正則化,
在正則化全連接層引數時需要注意的一點是,全連接層中的偏差通常不需要正則化,因此,需要識別這些偏差,并將它們自動排除在正則化之外,
L2正則化
J(W)是經驗損失,||W_dense||2是全連接層稀疏引數(也稱為L2正則化器)的L2范數的平方;||W_sparse||2也是如此,
引數W_i的損失L的梯度被分解為經驗損失J和所謂的“權重衰減”項λ*W_i的梯度,

為了實作L2正則器,可通過添加lambda*W_i來更新L關于W_i的梯度,lambda在實作中稱為權重衰減,
L2正則化 vs max-norm正則化
-
L2正則化可同時應用于全連接層和稀疏引數,這兩個引數都可能會過擬合,而max-norm僅適用于稀疏引數,因為在全連接層中,權值矩陣的向量范數沒有很好的定義,
-
損失函式中的L2正則化項是可微的,等效于添加一個衰減項以懲罰梯度下降中的大權重;而max-norm打破了前向-后向傳播框架,因為如果更新后的嵌入向量的范數大于1,它將嵌入向量進行歸一化,
這里有幾個實驗是由觀察到的sparseNN在多次傳遞訓練資料時過擬合引起的,訓練設定非常簡單,我們只考慮一個用戶特征和一個廣告特征,而不考慮全連接層特征,
實驗概述分為兩部分:
(a)描述實驗
(b)進一步的假設和檢驗它們的方法,
讓我們以以下設定為例,
設定
-
用戶端特征(SPARSE_USER_CLK_AD_IDS)和廣告端特征(SPARSE_AD_OBJ_ID),
-
n_train = 1代表訓練的天數,n_test = 1天代表測驗的天數進行測驗;在一次比較中,訓練的天數和測驗的天數是固定的,
-
第二天繪制測驗(平均)標準化熵曲線以模擬生產條件,
Shuffling:將獲得相同的結果,

對across_ts_shuffle, shuffle_all, shuffle_within_partition 進行Shuffling
降低學習速率是邏輯回歸的一種正則化方法,但這對sparseNN沒用,

學習率降低,num_passes = 2
通過限制嵌入范數進行正則化(此處說明const_norm; max_norm結果相似),這里,成本函式與所應用的正則化無關,

const范數
以最小的容量降低學習率:
當你嘗試將尺寸減小為2且num_replicas = 1以最小化模型容量時,你會看到
num_passes=1/sparse_alpha=0.002 時為0.8711
和
num_passes = 2時為0.8703,
最后,在num_passes> 1的情況下,我們取得了成功!
但是,num_passes = 3破壞了我們短暫的快樂;我們一直試圖超過0.8488,也就是當前的sparseNN引數能夠生成的值(dimensionality=~32, learning rate=0.04 和 num_replicas=2).

最小容量的學習率num_passes = 1

最小容量的學習率,num_passes = 2

最小容量的學習率,num_passes = 3
SGD優化器
如果學習率被重置,該怎么辦?對于這個實驗,可以復制連續磁區中一天的資料,圖(a)表示num passes=1的資料,圖(b)表示訓練資料的多遍訓練,其中num_passes=1表示連續磁區上相同的資料;num_passes=2表示同一磁區上的多遍訓練,結果是一樣的,

就dropout而言,sparseNN提供dropout_ration和sparse_dropout_ratio,稀疏的dropout將從嵌入層到全連接層的連接去掉;而全連接層的dropout會在網路中丟失連接,

Dropout num_passes = 1

Dropout num_passes = 2
最大熵正則化器?
你可以嘗試對嵌入的熵進行正則化,這樣嵌入的維數可以保留,而不是記住用戶-廣告對,例如,在用戶-電影推薦問題中,如果電影是用(動作、戲劇、情感、喜劇)來表示,它可以很好地概括,但是如果用戶-電影對被記住,它在測驗資料中會失敗,
通過這些實驗:
-
嵌入將用戶與廣告聯系起來,當維數增加時,關于用戶對廣告的嵌入網路會更好(并且性能會提高,對于測驗的維數沒有限制),相反,當維數較低時,廣告就會與更多用戶相關(并且性能較低),
-
當哈希值較小時,即將多個廣告決議為一個嵌入,他們這樣做沒有任何語意哈希,即完全不相關的廣告被決議為相同的嵌入,因此,性能下降,也許增加維度會恢復性能,也許語意哈希將使我們解決這一難題,
-
訓練資料按照每個廣告看到的印象進行分層:頻繁的廣告、中等規模的廣告、小批量的廣告,,
-
頻繁的廣告被完美地記住,即每個用戶的平均點擊率由廣告和用戶維度來編碼,對他們來說,再訓練沒有壞處,因為他們已經記住了,
-
中等規模的廣告引起較大的方差,但它是由大數定律平均出來的,在持續的訓練中,中等規模的廣告可以獲得更多的訓練資料并得到改進,在單遍訓練中,廣告以初始隨機性(由于初始化)記憶少量用戶;在多遍訓練中,廣告只記住少數用戶,不能推廣到其他用戶,
通過開始嘗試使用這些ML引數進行正則化和存盤,你可以成為ML的高級工程師,誰說ML很難學習?
原文鏈接:https://medium.com/swlh/the-science-of-optimization-in-ml-26b0b2bb3d62
歡迎關注磐創AI博客站:
http://panchuang.net/
sklearn機器學習中文官方檔案:
http://sklearn123.com/
歡迎關注磐創博客資源匯總站:
http://docs.panchuang.net/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/175048.html
標籤:其他
