小白都能理解的FTRL

2021-10-04 04:28:47 字數 1852 閱讀 7771

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

pt​3 遍歷集合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

pt​p

tp_t

pt​是用sigmoid函式計算出來的**值

2.g

ig_i

gi​g

ig_i

gi​是指損失函式在某乙個特徵維度上的梯度,對於logisti regression來說

g i=

(p−y

)xig_i = (p-y)x_i

gi​=(p

−y)x

i​3.σ

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之間的實數,並且歸一化保證和...