其實這算是個經典的問題了,在一般的只要你做過時間序列相關的專案或者理論的時候,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,而這些樣本...