SparseNN中的優化

2022-06-14 10:09:11 字數 2905 閱讀 6096

作者|the ai lab

編譯|vk

**|medium

對sparsenn模型的過擬合進行研究,並探索了多種正則化方法,如嵌入向量的max-norm/constant-norm、稀疏特徵id的dropout、引數的freezing、嵌入收縮等。然而,據我們所知,在單次訓練中,沒有顯著的減少過擬合的效果。

隨機梯度下降優化器使用小批量樣本來更新全連線層和稀疏引數。給定乙個小批量的例子,通常所有的全連線層引數都會被更新(假設沒有gate或dropout),而只有一小部分稀疏引數會在正向傳播中被啟用,從而在反向傳播中被更新。例如,假設乙個稀疏特徵對使用者在過去一周內單擊的廣告id進行編碼,雖然我們可能有數百萬個惟一的廣告id,但是在乙個小型批處理中(通常是100個樣本)出現的廣告id的數量與基數相比非常有限。

正則化稀疏引數與全連線層引數的不同之處在於,我們需要在執行時識別小型批處理中已啟用的稀疏引數,然後僅對這些引數進行正則化。

在正則化全連線層引數時需要注意的一點是,全連線層中的偏差通常不需要正則化。因此,需要識別這些偏差,並將它們自動排除在正則化之外。

j(w)是經驗損失,||w_dense||²是全連線層稀疏引數(也稱為l2正則化器)的l2範數的平方;||w_sparse||²也是如此。

引數w_i的損失l的梯度被分解為經驗損失j和所謂的「權重衰減」項λ*w_i的梯度。

為了實現l2正則器,可通過新增lambda*w_i來更新l關於w_i的梯度。lambda在實現中稱為權重衰減。

l2正則化 vs max-norm正則化

這裡有幾個實驗是由觀察到的sparsenn在多次傳遞訓練資料時過擬合引起的。訓練設定非常簡單,我們只考慮乙個使用者特徵和乙個廣告特徵,而不考慮全連線層特徵。

實驗概述分為兩部分:

(a)描述實驗

(b)進一步的假設和檢驗它們的方法。

讓我們以以下設定為例。

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會在網路中丟失連線。

最大熵正則化器?

你可以嘗試對嵌入的熵進行正則化,這樣嵌入的維數可以保留,而不是記住使用者-廣告對。例如,在使用者-電影推薦問題中,如果電影是用(動作、戲劇、情感、喜劇)來表示,它可以很好地概括,但是如果使用者-電影對被記住,它在測試資料中會失敗。

通過這些實驗:

通過開始嘗試使用這些ml引數進行正則化和儲存,你可以成為ml的高階工程師。誰說ml很難學習?

歡迎關注磐創ai部落格站:

sklearn機器學習中文官方文件:

歡迎關注磐創部落格資源彙總站:

C 中的RVO優化和NRVO優化

rvo return value optimization 和nrvo named return value optimization 是c 在處理乙個函式返回類物件並將返回值賦給另乙個物件時,為了減少拷貝構造次數以及析構次數而採用的一種編譯器優化技術。本篇部落格以 深度探索c 物件模型 中例子來總...

優化演算法中的矛盾

優化演算法中的矛盾 或許你認為收斂速度快的演算法是好演算法,或許你認為適用外圍廣的演算法是好演算法,或許你認為穩定的演算法是好演算法 但是符合上述所有要求的演算法存在嗎,我不知道,但我沒有見過.昨天與人談到演算法的收斂速度的問題,我就想到了rosenbroke函式,畫過或看到過 它的函式影象的人都回...

IM應用中的優化

曾經做過im應用中考慮過的一些關於應用優化的問題。優化重心主要放在了電量優化和流量優化上 1 專用裝置 3 自己動手去寫電量消耗 1 不要影響手機休眠 心跳包使用 alarm manager出發心跳包 2 儘量減少網路請求 資料快取 本地儲存,同步增量 一次傳送多個請求 3 少使用gps定位,網路定...