RNN、LSTM、Char-RNN 學習系列(一)
zoerywzhou@gmail.com
http://www.cnblogs.com/swje/
作者:Zhouw
2016-3-15
版權聲明:本文為博主原創文章,未經博主允許不得轉載。
轉載請注明出處:http://www.cnblogs.com/swje/p/5279349.html
作者是深度學習的初學者,經由導師指導,稍微學習了解了一下RNN、LSTM的網絡模型及求導,打算在這里分享一下,歡迎各種交流。
2016-03-15看到的博客、參考文檔:
從NN到RNN再到LSTM(附模型描述及詳細推導)——(一)NN、
從NN到RNN再到LSTM(附模型描述及詳細推導)——(二)RNN、
從NN到RNN再到LSTM(附模型描述及詳細推導)——(三)LSTM。
Softmax回歸:http://ufldl.stanford.edu/wiki/index.php/Softmax%E5%9B%9E%E5%BD%92
反向傳播算法的解釋:Principles of training multi-layer neural network using backpropagation:http://galaxy.agh.edu.pl/~vlsi/AI/backp_t_en/backprop.html
近期的學習體會:
1、Softmax分類器:解決多分類問題。
當訓練過程中,我們想要improve 某目標字符的置信度並降低其他字符的置信度時,通常的做法是使用一個交叉熵損失函數,這相當於在每個輸出向量使用Softmax分類器,將下一個出現的字符的索引作為一個正確的分類。一旦損失進行了反向傳播並且RNN權值得到更新,在輸入相同的情況下,下一個正確的字符將會有更高的分數。
2、前向傳播(Forward propagation):依次按照時間的順序計算一次。
反向傳播(Back propagation):從最后一個時間將累積的殘差傳遞回來。
3、 符號 "" 的含義:
本身是一個向量,它的第
個元素
是
對
的第
個分量的偏導數。
4、激活函數(activation function):是用來加入非線性因素的,因為線性模型的表達能力不夠。激活函數不是指它去激活什么,而是指如何把“激活的神經元的特征”通過函數把特征保留並映射出來。
常見的激活函數有:
- sigmoid函數:S型函數。特征比較復雜或者相差不是很大,需要更細微的分類判斷時,效果好。
- tanh:是設置一個值,大於0.5的通過為1,不然為0。特征相差明顯是效果好,在循環過程中不斷擴大特征效果顯示出來。
- ReLU:簡單粗暴,大於0的留下,否則一律為0。取max(0,x),不斷試探如何用一個大多數為0的矩陣來嘗試表達數據特征。
5、問答區域
- 問:訓練好的網絡怎么使用?
- 答: 用來給新數據分類。
- 問:神經網絡通過什么方法訓練?
- 答:可以用BP算法,前向傳播:從第一層到最后一層(last layer)跑一遍。
6、Dropout參數(@char-rnn模型):指模型訓練時隨機讓網絡某些隱含層節點的權重不工作,不工作的節點可以暫時認為不是網絡結構的一部分,但是它的權重得保留下來(只是暫時不更新而已)。
訓練神經網絡模型時,如果訓練樣本比較少,為了防止模型過擬合,Dropout可以作為一種trick供選擇。
7、Boosting 方法:為了提高弱分類算法的准確度:構造預測函數序列,then combine 之。
Adaboost 算法:將容易找到的識別率不高的弱分類算法提升為識別率很高的強分類算法。給定一個弱的學習算法和訓練集,在訓練集的不同子集上,多次調用弱學習算法,最終按加權方式聯合多次弱學習算法的預測結果得到最終學習結果。