ftrl的主要目的是提高模型的稀疏度,並且提高模型的精度。具體的演算法過程直接參考下面的圖
上面這張圖被很多地方引用,下面我們結合這張圖說一下流程。
上面符號比較多,首先解釋一下各符號的含義:
α ,β
,λ1,
λ2\alpha, \beta, \lambda_1, \lambda_2
α,β,λ1
,λ2
均為模型的超引數(hyperparameters),最終訓練可以得出超引數的值。
t
tt表示樣本的總量,x
tx_t
xt表示一條樣本。
i
ii表示特徵的維度,d
dd表示該樣本一共有d
dd維。
1.初始化引數zi=
0,ni
=0z_i=0, n_i = 0
zi=0,
ni=
02.對每條樣本遍歷
2.1 看x
tx_t
xt中哪些維度的值不為0,得到集合i
ii2.2 遍歷集合i
ii,得到wt,
iw_wt,i
2.3 得到**概率p
tp_t
pt3 遍歷集合i
ii,分別計算gi,
σi,z
i,ni
g_i, \sigma_i, z_i, n_i
gi,σi
,zi
,ni
演算法中提到per-coordinate,核心思想是對特徵的每一維分開訓練更新,而每一維上有不同的學習率。具體就是包含λ
\lambda
λ的那一項。
為什麼會是那種形式?簡單分析一下,如果有一維特徵每個樣本都有,學習到的概率大,學習率可以小一些。而如果有一維特徵只有很少的樣本有,每個包含該特徵的樣本都很寶貴,這個時候學習率要大一些,讓該維特徵的學習更充分。
− (β
+niα
+λ2)
−1-(\frac} + \lambda_2) ^
−(αβ+n
i
+λ2
)−1n
in_i
ni是個正數,如果樣本中包含該維特徵的樣本數越多,迭代過程中n
in_i
ni越大,那麼取倒數越小。這樣就達到了特徵數越多,學習率越小,特徵數越少,學習率越大的目的。
演算法計算流程中的一些值,我們簡單說明一下意義。
1.p
tp_t
ptp
tp_t
pt是用sigmoid函式計算出來的**值
2.g
ig_i
gig
ig_i
gi是指損失函式在某乙個特徵維度上的梯度,對於logisti regression來說
g i=
(p−y
)xig_i = (p-y)x_i
gi=(p
−y)x
i3.σ
i\sigma_i
σi是乙個中間計算值,沒有其他的特殊含義
4.z
iz_i
zi也是乙個中間計算值,沒有其他的特殊含義
5.n
in_i
ni從前面的分析我們可知,n
in_i
ni控制了該維度特徵的學習率,與累積的梯度有關係。
小白都能看懂的block
首先說明一下,我自己也是乙個小白 這是我對block的一點認識或總結,有不對的地方,希望大家指出來 block就是乙個 塊,用來執行一小段程式的,通常我們定義乙個block 可以用它的基本模型,返回值型別 變數的名字 引數型別 例如 int myblock int 這就是定義了乙個block 這個變...
小白都能明白的 HTTP協議分析
二 http工作原理 三 http報文結構 四 http頭部關鍵字段 hypertexttransferprotocol 1 什麼是超文字 hypertext 包含有超連結 link 和各種多 元素標記 markup 的文字。這些超文字檔案彼此鏈結,形成網狀 web 因此又被稱為網頁 web pag...
小白都能看懂的softmax詳解
softmax把一些輸入對映為0 1之間的實數,並且歸一化保證和為1,因此多分類的概率之和也剛好為1 或參考 小白都能看懂的softmax詳解 在機器學習尤其是深度學習中,softmax是個非常常用而且比較重要的函式,尤其在多分類的場景中使用廣泛。他把一些輸入對映為0 1之間的實數,並且歸一化保證和...