學(xué)習(xí)筆記TF017:自然語言處理镣隶、RNN、LSTM

自然語言處理 (NLP)問題都是序列化的诡右。前饋神經(jīng)網(wǎng)絡(luò)安岂,在單次前饋中對(duì)到來數(shù)據(jù)處理,假定所有輸入獨(dú)立帆吻,模式丟失域那。循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN)對(duì)時(shí)間顯式建模神經(jīng)網(wǎng)絡(luò)。RNN神經(jīng)元可接收其他神經(jīng)元加權(quán)輸入猜煮。RNN神經(jīng)元可與更高層建立連接次员,也可與更低層建立連接。隱含活性值在同一序列相鄰輸入間被記憶王带。2006年 LSTM淑蔚。語音識(shí)別、語音合成愕撰、手寫連體字識(shí)別刹衫、時(shí)間序列預(yù)測(cè)、圖像標(biāo)題生成搞挣、端到端機(jī)器翻譯带迟。

RNN由神經(jīng)元和連接權(quán)值構(gòu)成任意有向圖。輸入神經(jīng)元(input neuron)擁有“到來”連接柿究,活性值由輸入數(shù)據(jù)設(shè)置邮旷。輸出神經(jīng)元(output neuron)是數(shù)據(jù)流圖一組可讀取預(yù)測(cè)結(jié)果神經(jīng)元。所有其他神經(jīng)元為隱含神經(jīng)元(hidden neuron)蝇摸。每個(gè)時(shí)間步,通過設(shè)置輸入神經(jīng)元為網(wǎng)絡(luò)提供輸入序列下一幀办陷。隱含活性值作為下一個(gè)時(shí)間步附加輸入貌夕。RNN當(dāng)前隱含活性值為狀態(tài)。序列最開始設(shè)置值0空狀態(tài)民镜。RNN狀態(tài)依賴當(dāng)前輸入和上一狀態(tài)啡专。狀態(tài)與序列所有前輸入都間接相關(guān),工作記憶(woring memory)制圈。RNN權(quán)值矩陣定義執(zhí)行程序们童,決定隱含活性值輸入畔况,不同活性值整合新活性值輸出。sigmoid激活函數(shù) RNN 2006年被證明圖錄完備(Turing-complete)慧库。給定正確權(quán)值跷跪,RNN可完成任意計(jì)算程序相同計(jì)算。不存在找到完美權(quán)值方法齐板,可用梯度下降法得到次好結(jié)果吵瞻。

優(yōu)化RNN,沿時(shí)間輸展開甘磨,用優(yōu)化前饋網(wǎng)絡(luò)相同方式優(yōu)化橡羞。復(fù)制序列神經(jīng)元,連接在副本傳遞济舆,移除循環(huán)邊接而不改計(jì)算語義卿泽。相鄰時(shí)間步權(quán)值相同強(qiáng)度。隨時(shí)間反向傳播(Back-Propagation Through Time,BPTT)滋觉,返回時(shí)間相關(guān)誤差對(duì)權(quán)值(包括聯(lián)結(jié)相鄰副本權(quán)值)偏導(dǎo)又厉。聯(lián)結(jié)權(quán)值(tied weight)梯度相加。

循環(huán)神經(jīng)網(wǎng)絡(luò)常見映射:序列分類椎瘟、序列生成覆致、序列標(biāo)注、序列翻譯肺蔚。序列標(biāo)注(sequential labelling)煌妈,序列作為輸入,訓(xùn)練網(wǎng)絡(luò)為每幀數(shù)據(jù)產(chǎn)生正確輸出宣羊,一個(gè)序列到另一個(gè)序列等長(zhǎng)映射璧诵。序列分類(sequential classification),每個(gè)序列輸入對(duì)應(yīng)一個(gè)類別標(biāo)簽仇冯,可僅選擇上一幀輸出訓(xùn)練RNN之宿,更新權(quán)值時(shí)誤差流經(jīng)所有時(shí)間步收集集成有用信息。序列生成(sequential generation)苛坚,給定一個(gè)類別標(biāo)簽比被,輸出反饋給網(wǎng)絡(luò)作為下一步輸入,生成序列泼舱。單個(gè)向量視為信息稠密表示等缀。序列翻譯(sequential translation),域中序列編碼娇昙,最后隱含活性值解碼為另一個(gè)域中序列尺迂。輸入輸出概念層次有差異,兩個(gè)不同RNN,第一個(gè)模型最后活性值初始化第二個(gè)模型噪裕。單個(gè)網(wǎng)絡(luò)蹲盘,序列后傳入特殊符號(hào)輸入,通知網(wǎng)絡(luò)停止編碼膳音,開始解碼召衔。

帶輸出投影RNN網(wǎng)絡(luò)結(jié)構(gòu),全連接隱含單元严蓖,映射輸入輸出薄嫡。所有隱含單元都為輸出,堆疊前饋層颗胡。隱含單元和輸出單元不同激活函數(shù)毫深。

TensorFlow支持RNN各種變體,tf.nn.rnn_cell毒姨。tensor flow.models.rnn中tf.nn.dynamic_rnn實(shí)現(xiàn)RNN動(dòng)力學(xué)哑蔫。接收循環(huán)網(wǎng)絡(luò)定義,輸入序列批數(shù)據(jù)弧呐。所有序列等長(zhǎng)闸迷。返回保存每個(gè)時(shí)間步輸出和隱含狀態(tài)兩個(gè)張量。從tensor flow.models.rnn導(dǎo)入rnn_cell和rnn俘枫。輸入數(shù)據(jù)維數(shù)為batch_sizesequence_lengthframe_size腥沽。不希望限制批次大小,第1維尺寸可以設(shè)None鸠蚪。rnn_cell.BasicRNNCell 創(chuàng)建基礎(chǔ)RNN今阳。rnn.dynamic_rnn 定義sequence_length步模擬RNN運(yùn)算。定義RNN茅信,沿時(shí)間軸展開盾舌,加載數(shù)據(jù),選擇TensorFlow優(yōu)化器訓(xùn)練網(wǎng)絡(luò)蘸鲸,tf.train.RMSPropOptimizer妖谴、tf.train.AdamOptimizer。

長(zhǎng)時(shí)依賴性酌摇,網(wǎng)絡(luò)記住含有許多后續(xù)不相關(guān)幀的序列第一幀膝舅。長(zhǎng)序列,基礎(chǔ)RNN展開網(wǎng)絡(luò)深度非常大妙痹,層數(shù)非常多铸史,每一層反向傳播算法將來自網(wǎng)絡(luò)上一層誤差乘以局部偏導(dǎo)。如果大多數(shù)局部偏導(dǎo)遠(yuǎn)小于1,梯度每層變小怯伊,指數(shù)衰減,最終消失。如果很多偏導(dǎo)大于1,梯度值急劇增大耿芹。誤差項(xiàng)包含相乘項(xiàng)權(quán)值矩陣轉(zhuǎn)置崭篡。RNN相鄰時(shí)間步聯(lián)結(jié)一起,權(quán)值局部偏導(dǎo)都小于1或大于1,RNN每個(gè)權(quán)值都向相同方向縮放吧秕,梯度消失琉闪、爆炸問題突出。數(shù)值優(yōu)化砸彬,浮點(diǎn)精度對(duì)梯度值產(chǎn)生影響颠毙。長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)(long-short term memory,LSTM)RNN架構(gòu)解決方案。

LSTM專門解決梯度消失砂碉、爆炸問題蛀蜜。學(xué)習(xí)長(zhǎng)時(shí)依賴關(guān)系的RNN事實(shí)標(biāo)準(zhǔn)逸雹。將RNN普通神經(jīng)元替換為內(nèi)部擁有少量記憶LSTM單元(LSTM Cell)脏毯。聯(lián)結(jié)一起,內(nèi)部狀態(tài)記憶時(shí)間步誤差站宗。LSTM內(nèi)部狀態(tài)有固定權(quán)值為1自連接滋迈,線性激活函數(shù)霎奢,局部偏導(dǎo)始終為1。反向傳播饼灿,常量誤差傳輸子(constant error carousel)在時(shí)間步攜帶誤差不發(fā)生梯度消失或爆炸幕侠。內(nèi)部狀態(tài)隨時(shí)間步傳遞誤差,LSTM環(huán)繞門(surrounding gates)負(fù)責(zé)學(xué)習(xí)碍彭,非線性激活函數(shù)(sigmoid)晤硕。原始LSTM單元,一種門學(xué)習(xí)對(duì)到來活性值縮放硕旗,另一種門學(xué)習(xí)輸出活性值縮放窗骑,學(xué)習(xí)包含或忽略新輸入,學(xué)習(xí)給其他單元傳遞特征漆枚。單元輸入送入不同權(quán)值門创译。可以把循環(huán)神經(jīng)網(wǎng)絡(luò)用為規(guī)模更大網(wǎng)絡(luò)架構(gòu)組成部分墙基。
LSTMCell類可替換BasicRNNCell類软族,一個(gè)完整的LSTM層。輸入非線性->輸入門->狀態(tài)->輸出非線性->輸出門残制。

LSTM流行變種立砸,添加對(duì)內(nèi)部循環(huán)連接比例縮放遺忘門(forget gate),網(wǎng)絡(luò)學(xué)會(huì)遺忘初茶,內(nèi)部循環(huán)連接局部偏導(dǎo)變成遺忘門活性值颗祝,可取非1值。當(dāng)上下文重要,遺忘門保持關(guān)閉狀態(tài)螺戳。輸入非線性->輸入門->狀態(tài)->遺忘門->輸出非線性->輸出門搁宾。

添加窺視孔連接(peephole connection),門能看到單元狀態(tài)倔幼。當(dāng)精確時(shí)間選擇和間隔時(shí)有益盖腿。TensorFlow LSTM層傳入use-peepholes=Trues標(biāo)記激活窺視孔連接。

門限循環(huán)單元(Gated Recurrent Unit,GRU)损同,架構(gòu)簡(jiǎn)單翩腐,更少計(jì)算量,沒有輸出門膏燃,輸入和遺忘門整合單獨(dú)更新門(update gate)茂卦。更新門決定內(nèi)部狀態(tài)與候選活性值融合比例。重置門(reset gate)和新輸入確定部分隱含狀態(tài)計(jì)算得到候選活性值蹄梢。TensorFlow GRU層對(duì)應(yīng)GRUCell類疙筹。只需要單元數(shù)目參數(shù)。輸入->候選活性值->更新門->重置門->狀態(tài)禁炒。

全連接隱含單元RNN而咆,訓(xùn)練期間把不需要權(quán)值置0。最常見做法幕袱,兩層或多層全連接RNN相互堆疊暴备,信息只能在兩層之間向上流動(dòng),多層RNN權(quán)值數(shù)目少们豌,學(xué)習(xí)到更多抽象特征涯捻。

參考資料:
《面向機(jī)器智能的TensorFlow實(shí)踐》

歡迎加我微信交流:qingxingfengzi
我的微信公眾號(hào):qingxingfengzigz
我老婆張幸清的微信公眾號(hào):qingqingfeifangz

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市望迎,隨后出現(xiàn)的幾起案子障癌,更是在濱河造成了極大的恐慌,老刑警劉巖辩尊,帶你破解...
    沈念sama閱讀 218,036評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件涛浙,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡摄欲,警方通過查閱死者的電腦和手機(jī)轿亮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來胸墙,“玉大人我注,你說我怎么就攤上這事〕儆纾” “怎么了但骨?”我有些...
    開封第一講書人閱讀 164,411評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵励七,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我嗽冒,道長(zhǎng)呀伙,這世上最難降的妖魔是什么补履? 我笑而不...
    開封第一講書人閱讀 58,622評(píng)論 1 293
  • 正文 為了忘掉前任添坊,我火速辦了婚禮,結(jié)果婚禮上箫锤,老公的妹妹穿的比我還像新娘贬蛙。我一直安慰自己,他們只是感情好谚攒,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評(píng)論 6 392
  • 文/花漫 我一把揭開白布阳准。 她就那樣靜靜地躺著,像睡著了一般馏臭。 火紅的嫁衣襯著肌膚如雪野蝇。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,521評(píng)論 1 304
  • 那天括儒,我揣著相機(jī)與錄音绕沈,去河邊找鬼。 笑死帮寻,一個(gè)胖子當(dāng)著我的面吹牛乍狐,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播固逗,決...
    沈念sama閱讀 40,288評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼浅蚪,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了烫罩?” 一聲冷哼從身側(cè)響起惜傲,我...
    開封第一講書人閱讀 39,200評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎贝攒,沒想到半個(gè)月后盗誊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,644評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡饿这,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評(píng)論 3 336
  • 正文 我和宋清朗相戀三年浊伙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片长捧。...
    茶點(diǎn)故事閱讀 39,953評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡嚣鄙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出串结,到底是詐尸還是另有隱情哑子,我是刑警寧澤舅列,帶...
    沈念sama閱讀 35,673評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站卧蜓,受9級(jí)特大地震影響帐要,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜弥奸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評(píng)論 3 329
  • 文/蒙蒙 一榨惠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧盛霎,春花似錦赠橙、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至规个,卻和暖如春凤薛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背诞仓。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工缤苫, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人狂芋。 一個(gè)月前我還...
    沈念sama閱讀 48,119評(píng)論 3 370
  • 正文 我出身青樓榨馁,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親帜矾。 傳聞我的和親對(duì)象是個(gè)殘疾皇子翼虫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容