目錄
【說在前面】本人博客新手一枚,象牙塔的老白,職業(yè)場的小白。以下內(nèi)容僅為個人見解,歡迎批評指正,不喜勿噴![認(rèn)真看圖][認(rèn)真看圖] 【補充說明】深度學(xué)習(xí)中的序列模型已經(jīng)廣泛應(yīng)用于自然語言處理(例如機(jī)器翻譯等)、語音識別、序列生成、序列分析等眾多領(lǐng)域! 【再說一句】本文主要介紹深度學(xué)習(xí)中序列模型的演變路徑,和往常一樣,不會詳細(xì)介紹各算法的具體實現(xiàn),望理解! 一、循環(huán)神經(jīng)網(wǎng)絡(luò)RNN1. RNN標(biāo)準(zhǔn)結(jié)構(gòu)傳統(tǒng)神經(jīng)網(wǎng)絡(luò)的前一個輸入和后一個輸入是完全沒有關(guān)系的,不能處理序列信息(即前一個輸入和后一個輸入是有關(guān)系的)。 循環(huán)神經(jīng)網(wǎng)絡(luò)RNN解決了以上問題,整體結(jié)構(gòu)如圖所示: 2. RNN系列結(jié)構(gòu)多對一:例如情感分析,需要多個時間步長的輸入,但是只需要單個輸出(即實現(xiàn)分類)。整體結(jié)構(gòu)如圖所示: 一對多:例如音樂生成,只需要單個輸入(即輸入類別),但是需要輸出整個序列。整體結(jié)構(gòu)如圖所示: 多對多:例如實時分類,輸入序列與輸出序列的長度是一樣的。整體結(jié)構(gòu)如圖所示: 多對多:例如機(jī)器翻譯,輸入序列與輸出序列的長度是不一樣的。整體結(jié)構(gòu)如圖所示: 二、長短期記憶網(wǎng)絡(luò)LSTMLSTM是RNN的一種變體,RNN由于梯度消失只有短期記憶,而LSTM網(wǎng)絡(luò)通過精妙的門控制,一定程度上緩解了梯度消失的問題。 在標(biāo)準(zhǔn)RNN中,神經(jīng)網(wǎng)絡(luò)模塊只有一個非常簡單的結(jié)構(gòu),例如一個tanh層。整體結(jié)構(gòu)如圖所示: 而LSTM得神經(jīng)網(wǎng)絡(luò)模塊具有不同的結(jié)構(gòu),LSTM包含遺忘門、輸入門和輸出門,增加了非線性的相互作用。整體結(jié)構(gòu)如圖所示: 三、GRUGRU是LSTM的一種變體,也是為了解決梯度消失(即長期記憶問題)而提出來的。相較于LSTM,GRU的網(wǎng)絡(luò)結(jié)構(gòu)更加簡單,且效果很好。 四、RNN/LSTM/GRU的變體結(jié)構(gòu)1. 雙向循環(huán)神經(jīng)網(wǎng)絡(luò)例如命名實體識別:判斷句子中Teddy是否是人名,如果只從前面幾個詞是無法得知Teddy是否是人名,如果能有后面的信息就很好判斷了。 雙向循環(huán)神經(jīng)網(wǎng)絡(luò)中的網(wǎng)絡(luò)單元可以是RNN、LSTM和GRU,均適用這種變體結(jié)構(gòu)。 2. 深層循環(huán)神經(jīng)網(wǎng)絡(luò)顧名思義,就是多個循環(huán)神經(jīng)網(wǎng)絡(luò)的堆疊,循環(huán)神經(jīng)網(wǎng)絡(luò)可以采用RNN、LSTM和GRU,均適用這種變體結(jié)構(gòu)。 3. Seq2Seq架構(gòu):非常火熱又叫Encoder-Decoder模型,適用于輸入與輸出個數(shù)不一樣相等的情況(即多對多的循環(huán)神經(jīng)網(wǎng)絡(luò),適用于機(jī)器翻譯等場景)。 其中,Encoder編碼器和Decoder解碼器可以使用RNN、LSTM和GRU,均適用這種變體結(jié)構(gòu)。 同時,這種結(jié)構(gòu)也可以與雙向、深層的變體結(jié)構(gòu)同時使用,不沖突的。 這里多提一句,例如給圖像添加描述這樣的應(yīng)用場景,圖中對應(yīng)的描述為“一只貓站在椅子上”,同樣可以采用Encoder-Decoder模型。 五、注意力機(jī)制1. Seq2Seq + Attention機(jī)制介紹需要注意到,LSTM、GRU、雙向變體結(jié)構(gòu)、深層變體結(jié)構(gòu)和Seq2Seq變體結(jié)構(gòu),只能說一定程度上緩解了梯度消失問題。 提出問題:在做機(jī)器翻譯時,專家學(xué)者們發(fā)現(xiàn),在Seq2Seq結(jié)構(gòu)中,Encoder把所有的輸入序列都編碼成一個統(tǒng)一的語義向量context,然后再由Decoder解碼。其中,context自然也就成了限制模型性能的瓶頸,當(dāng)要翻譯的句子較長時,一個 context 可能存不下那么多信息。同時,只使用編碼器的最后一個隱藏層狀態(tài),似乎不是很合理。 解決方案:因此,引入了Attention機(jī)制(將有限的認(rèn)知資源集中到最重要的地方)。在生成 Target 序列的每個詞時,用到的中間語義向量 context 是 Source 序列通過Encoder的隱藏層的加權(quán)和,而不是只用Encoder最后一個時刻的輸出作為context,這樣就能保證在解碼不同詞的時候,Source 序列對現(xiàn)在解碼詞的貢獻(xiàn)是不一樣的。例如,Decoder 在解碼'machine'時,'機(jī)'和'器'提供的權(quán)重要更大一些,同樣,在解碼'learning'時,'學(xué)'和'習(xí)'提供的權(quán)重相應(yīng)的會更大一些。 實現(xiàn)步驟:(1)衡量編碼中第 j 階段的隱含層狀態(tài)和解碼時第 i 階段的相關(guān)性(有很多種打分方式,這里不細(xì)講);(2)通過相關(guān)性的打分為編碼中的不同階段分配不同的權(quán)重;(3)解碼中第 i 階段輸入的語義向量context就來自于編碼中不同階段的隱含層狀態(tài)的加權(quán)和。 補充說明一下,衡量相關(guān)性的打分方式主要包括以下幾種,具體不展開了: 2. 層次注意力機(jī)制Hierarchical Attention能夠反映文檔的層次結(jié)構(gòu)。模型在單詞和句子級別分別設(shè)計了兩個注意力機(jī)制,這樣做能夠在構(gòu)建文檔表示時區(qū)別地對待這些內(nèi)容。 3. 自注意力機(jī)制Self-Attention:只有一個Seq是關(guān)聯(lián)單個序列中不同位置的注意力機(jī)制,從而計算序列的交互表示。已被證明在很多領(lǐng)域十分有效,例如機(jī)器閱讀、圖像描述生成等。 以機(jī)器閱讀為例,當(dāng)前單詞為紅色,藍(lán)色陰影的大小表示激活程度,自注意力機(jī)制使得能夠?qū)W習(xí)當(dāng)前單詞和句子前一部分詞之間的相關(guān)性: 補充說明,以圖像描述生成為例,注意力權(quán)重的可視化清楚地表明了模型關(guān)注的圖像的哪些區(qū)域以便輸出某個單詞: 4. Fairseq:基于卷積神經(jīng)網(wǎng)絡(luò)的Seq2Seq + Attention機(jī)制Facebook人工智能實驗室提出基于卷積神經(jīng)網(wǎng)絡(luò)的Seq2Seq架構(gòu),將RNN替換為帶有門控單元的CNN(相較于RNN,CNN工作不依賴于上一時間步的結(jié)果,所以可以做到最大程度的并行計算,提升訓(xùn)練速度),提升效果的同時大幅加快了模型訓(xùn)練速度。 5. Transformer:使用self-attention代替原有的RNN及CNN以上Attention model雖然解決了輸入seq僅有一個context vector的缺點,但仍存在一些問題:
Google提出一種叫做”transformer”的模型,透過self-attention、multi-head的概念去解決上述缺點,完全舍棄了RNN、CNN的構(gòu)架。 值得一提的是,Google后續(xù)提出了BERT模型,在11個任務(wù)中取得了最好的效果,是深度學(xué)習(xí)在nlp領(lǐng)域又一個里程碑式的工作。 6. Memory-based Attention在 NLP 的一些任務(wù)上,比如問答匹配任務(wù),答案往往與問題間接相關(guān)。因此,基本的注意力技術(shù)就顯得很無力了,這時候就體現(xiàn)了Memory-based Attention的強大之處。例如可以通過迭代內(nèi)存更新(也稱為多跳)來模擬時間推理過程,以逐步引導(dǎo)注意到答案的正確位置。 7. Soft/Hard Attention簡單說就是Soft Attention打分之后分配的權(quán)重取值在0到1之間,而Hard Attention取值為0或者1。 8. Global/Local Attention這個也很好理解,就是采用全局或者局部的注意力機(jī)制。 六、應(yīng)用1. 自然語言處理例如機(jī)器翻譯、問答系統(tǒng)、文本分類、情緒分析、命名實體識別、創(chuàng)作樂曲等。 2. 圖像處理例如多媒體描述、局部圖像補全、通過低分辨率的圖像還原高分辨率圖像等。 3. 智能推薦例如用于用戶行為分析,即將注意力權(quán)重分配給用戶的交互項目,以更有效地捕捉長期和短期的興趣。 4. 其他本文參考大佬:https://github.com/yuquanle/Attention-Mechanisms-paper/blob/master/Attention-mechanisms-paper.md 如果你對智能推薦感興趣,歡迎先瀏覽我的另幾篇隨筆:智能推薦算法演變及學(xué)習(xí)筆記 如果您對數(shù)據(jù)挖掘感興趣,歡迎瀏覽我的另幾篇博客:數(shù)據(jù)挖掘比賽/項目全流程介紹 如果您對人工智能算法感興趣,歡迎瀏覽我的另一篇博客:人工智能新手入門學(xué)習(xí)路線和學(xué)習(xí)資源合集(含AI綜述/python/機(jī)器學(xué)習(xí)/深度學(xué)習(xí)/tensorflow) 如果你是計算機(jī)專業(yè)的應(yīng)屆畢業(yè)生,歡迎瀏覽我的另外一篇博客:如果你是一個計算機(jī)領(lǐng)域的應(yīng)屆生,你如何準(zhǔn)備求職面試? 如果你是計算機(jī)專業(yè)的本科生,歡迎瀏覽我的另外一篇博客:如果你是一個計算機(jī)領(lǐng)域的本科生,你可以選擇學(xué)習(xí)什么? 如果你是計算機(jī)專業(yè)的研究生,歡迎瀏覽我的另外一篇博客:如果你是一個計算機(jī)領(lǐng)域的研究生,你可以選擇學(xué)習(xí)什么? 如果你對金融科技感興趣,歡迎瀏覽我的另一篇博客:如果你想了解金融科技,不妨先了解金融科技有哪些可能? 之后博主將持續(xù)分享各大算法的學(xué)習(xí)思路和學(xué)習(xí)筆記:hello world: 我的博客寫作思路 作者:FinTecher 出處:https://www.cnblogs.com/zhengzhicong/ 如果覺得這篇文章對你有幫助的話,記得在右下角點個“推薦”,歡迎持續(xù)關(guān)注哦,博主在此感謝! |
|
來自: 四地閑夫 > 《教學(xué)研究》