機器學習面試題 為啥LSTM比RNN好

2021-10-04 08:54:42 字數 2117 閱讀 3354

其實這算是個經典的問題了,在一般的只要你做過時間序列相關的專案或者理論的時候,lstm和rnn的對比肯定是要問的。那兩者到底有啥區別呢?

其實對於這個問題,要從rnn在發展過程中帶來的令人詬病的短處說起,rnn在train引數的時候,需要反向傳播梯度,這個梯度是這麼算的:

w i+

1=wi

−r⋅∂

loss

∂w∣w

:wi,

r>

0w^=w^-r\cdot\frac}}|_},r>0

wi+1=w

i−r⋅

∂w∂l

oss​

∣w:w

i​,r

>

0其中r

rr是學習率,∂lo

ss∂w

∣w:w

i\frac}}|_}

∂w∂los

s​∣w

:wi​

是損失函式在w處的導數,針對rnn在結構上很深的特徵,會產生梯度消失和梯度**,其中需要了解下什麼是梯度消失和梯度**,梯度消失指的是,rnn在某些w

iw^i

wi取值上,導致梯度很小,梯度**指的是,w

iw^i

wi在某些取值上,導致梯度特別大。如果你的學習率r

rr不變的話,那麼引數要麼幾乎不變,要麼就是變化劇烈,到時迭代動盪很難手收斂。通過我們對rnn的網路結構的建模,我們發現他的梯度是這個樣子的:

∂ lt

∂wh=

∑t=0

t∑k=

0t∂l

t∂yt

∂yt∂

ht(∏

j=k+

1t∂h

j∂hj

−1)∂

hk∂w

h\frac}}}}=\sum_^^}}} \frac}}} (\prod_^ \frac}}}} ) \frac}}}}}

∂wh∂lt

​​=t

=0∑t

​k=0

∑t​∂

yt​∂

lt​​

∂ht​

∂yt​

​(j=

k+1∏

t​∂h

j−1​

∂hj​

​)∂w

h∂hk

​​我們先不管這一大串公式是啥意思,大值得意思就是上面公式裡面有依賴於時間t

tt的連乘符號;修正t

tt時刻的誤差需要考慮之前的所有時間k

kk的隱藏層對時間t

tt的影響,當k

kk和t

tt距離越遠,對應著隱含層之間的連乘次數就越多。就是這個連乘的結構產生了梯度消失,梯度**也是它導致的。具體大一大波公式有需要看的話可以看下參考中的地(我只是搬運工)。

而lstm(長短時記憶網路),因為可以通過閥門(gate,其實就是概率,共有輸出、遺忘、輸入三個閥門)記憶一些長期資訊,所以,相比rnn,保留了更多長期資訊(相應地也就保留了更多的梯度)。隱層之間的輸入輸出可以表示為:

c j=

σ(wf

xj+b

f)cj

−1+σ

(wix

j+bi

)σ(w

xj+b

)c_=\sigma(w^fx_+b^f)c_+\sigma(}+b^i)\sigma(wx_+b)

cj​=σ(

wfxj

​+bf

)cj−

1​+σ

(wix

j​+b

i)σ(

wxj​

+b),於是連乘的項可以表示為:

∂ cj

∂cj−

1=σ(

wfxj

+b

)\frac}}}}=\sigma(w^fx_+b)

∂cj−1​

∂cj​

​=σ(

wfxj

​+b)

該值得範圍在0-1之間,在引數更新的過程中,可以通過控制bais較大來控制梯度保持在1,即使通過多次的連乘操作,梯度也不會下降到消失的狀態。所以,相比rnn,在lstm上,梯度消失問題得到了一定程度的緩解。

機器學習面試題

答 設計乙個分類模型,首先要給它設定乙個學習目標。在支援向量機中,這個目標是max margin 在adaboost中,目標是優化乙個指數損失函式。那麼在logistic regression lr 中,這個目標是什麼呢?最大化條件似然度。考慮乙個二值分類問題,訓練資料是一堆 特徵,標記 組合,x1...

機器學習面試題目

過擬合原因 資料 資料不規範,資料量少,資料穿越,統計特徵用到了未來的資訊或者標籤資訊 演算法 演算法過於複雜 解決 1 將資料規範化,處理缺失值,增加資料量,取樣,新增雜訊資料 2 正則化,控制模型複雜程度,3 early stoping,減少迭代次數,減少樹的深度,4 學習率調大 小點 5 融合...

機器學習面試題 XGBoost

相同點 不同點 先說說lrlr lr和g bd tgbdt gbdt 的區別 當在高維稀疏特徵的場景下,lrlr lr的效果一般會比gbd tgbdt gbdt 好。原因如下 先看乙個例子 假設乙個二分類問題,label為0和1,特徵有100維,如果有1w個樣本,但其中只要10個正樣本1,而這些樣本...