????????首先畏线,介紹一下lstm神經(jīng)網(wǎng)絡(luò):
????????長(zhǎng)短期記憶(英語:Long Short-Term Memory司倚,LSTM)是一種時(shí)間遞歸神經(jīng)網(wǎng)絡(luò)(RNN)[1]铝侵,論文首次發(fā)表于1997年锌唾。由于獨(dú)特的設(shè)計(jì)結(jié)構(gòu)辙喂,LSTM適合于處理和預(yù)測(cè)時(shí)間序列中間隔和延遲非常長(zhǎng)的重要事件。
????????LSTM的表現(xiàn)通常比時(shí)間遞歸神經(jīng)網(wǎng)絡(luò)及隱馬爾科夫模型(HMM)更好鸠珠,比如用在不分段連續(xù)手寫識(shí)別上[2]。2009年秋麸,用LSTM構(gòu)建的人工神經(jīng)網(wǎng)絡(luò)模型贏得過ICDAR手寫識(shí)別比賽冠軍渐排。LSTM還普遍用于自主語音識(shí)別,2013年運(yùn)用TIMIT自然演講資料庫(kù)達(dá)成17.7%錯(cuò)誤率的紀(jì)錄灸蟆。作為非線性模型驯耻,LSTM可作為復(fù)雜的非線性單元用于構(gòu)造更大型深度神經(jīng)網(wǎng)絡(luò)。
? ? ? ? ? 根據(jù)前一周的學(xué)習(xí)炒考,首先設(shè)計(jì)訓(xùn)練參數(shù):
learning_rate:學(xué)習(xí)的速度可缚,根據(jù)Hinton 的BP算法中的梯度下降法則,數(shù)值越小斋枢,越能找出趨近于最合適的參數(shù)值帘靡。
training_iters:訓(xùn)練迭代的次數(shù),次數(shù)的選擇需要一點(diǎn)一點(diǎn)地查看瓤帚,過多會(huì)導(dǎo)致過擬合描姚,過少很引起欠擬合。
batch_size:使用批梯度下降戈次,再次轩勘,注意一下,批梯度下降與隨機(jī)梯度下降的區(qū)別:
批量梯度下降的求解思路如下:
(1)將J(theta)對(duì)theta求偏導(dǎo)怯邪,得到每個(gè)theta對(duì)應(yīng)的的梯度
(2)由于是要最小化風(fēng)險(xiǎn)函數(shù)绊寻,所以按每個(gè)參數(shù)theta的梯度負(fù)方向,來更新每個(gè)theta
(3)從上面公式可以注意到悬秉,它得到的是一個(gè)全局最優(yōu)解澄步,但是每迭代一步,都要用到訓(xùn)練集所有的數(shù)據(jù)和泌,如果m很大驮俗,那么可想而知這種方法的迭代速度!允跑!所以王凑,這就引入了另外一種方法搪柑,隨機(jī)梯度下降。
隨機(jī)梯度下降的求解思路如下:
(1)上面的風(fēng)險(xiǎn)函數(shù)可以寫成如下這種形式索烹,損失函數(shù)對(duì)應(yīng)的是訓(xùn)練集中每個(gè)樣本的粒度工碾,而上面批量梯度下降對(duì)應(yīng)的是所有的訓(xùn)練樣本:
(2)每個(gè)樣本的損失函數(shù),對(duì)theta求偏導(dǎo)得到對(duì)應(yīng)梯度百姓,來更新theta
(3)隨機(jī)梯度下降是通過每個(gè)樣本來迭代更新一次渊额,如果樣本量很大的情況(例如幾十萬),那么可能只用其中幾萬條或者幾千條的樣本垒拢,就已經(jīng)將theta迭代到最優(yōu)解了旬迹,對(duì)比上面的批量梯度下降,迭代一次需要用到十幾萬訓(xùn)練樣本求类,一次迭代不可能最優(yōu)奔垦,如果迭代10次的話就需要遍歷訓(xùn)練樣本10次。但是尸疆,SGD伴隨的一個(gè)問題是噪音較BGD要多椿猎,使得SGD并不是每次迭代都向著整體最優(yōu)化方向。
lr =0.001 # learning rate
training_iters =10000? ? # train step 上限
batch_size =64
inputs:一次性輸入的量
steps:輸入完一整個(gè)數(shù)據(jù)的次數(shù)寿弱,因?yàn)樵~向量的長(zhǎng)度為300犯眠,所以均為300的公因數(shù)
hidden_units:lstm內(nèi)部的神經(jīng)元的個(gè)數(shù)
n_inputs = 50 # input of each neuronn_steps = 6 # time stepsn_hidden_units = 512 # neurons in hidden layern_classes = 3 # result(bad, not good, good)