循環(huán)神經(jīng)網(wǎng)絡(luò) RNN發(fā)展史概述
掃描二維碼
隨時隨地手機(jī)看文章
循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network, RNN)是一類以序列(sequence)數(shù)據(jù)為輸入,在序列的演進(jìn)方向進(jìn)行遞歸(recursion)且所有節(jié)點(diǎn)(循環(huán)單元)按鏈?zhǔn)竭B接的遞歸神經(jīng)網(wǎng)絡(luò)(recursive neural network)。對循環(huán)神經(jīng)網(wǎng)絡(luò)的研究始于二十世紀(jì)80-90年代,并在二十一世紀(jì)初發(fā)展為深度學(xué)習(xí)(deep learning)算法之一,其中雙向循環(huán)神經(jīng)網(wǎng)絡(luò)(Bidirectional RNN, Bi-RNN)和長短期記憶網(wǎng)絡(luò)(Long Short-Term Memory networks,LSTM)是常見的循環(huán)神經(jīng)網(wǎng)絡(luò)。
1982年,美國加州理工學(xué)院物理學(xué)家John Hopfield發(fā)明了一種單層反饋神經(jīng)網(wǎng)絡(luò)Hopfield Network,用來解決組合優(yōu)化問題。這是最早的RNN的雛形。86年,另一位機(jī)器學(xué)習(xí)的泰斗Michael I.Jordan定義了Recurrent的概念,提出Jordan Network。1990年,美國認(rèn)知科學(xué)家Jeffrey L.Elman對Jordan Network進(jìn)行了簡化,并采用BP算法進(jìn)行訓(xùn)練,便有了如今最簡單的包含單個自連接節(jié)點(diǎn)的RNN模型。但此時RNN由于梯度消失(Gradient Vanishing)及梯度爆炸(Gradient Exploding)的問題,訓(xùn)練非常困難,應(yīng)用非常受限。直到1997年,瑞士人工智能研究所的主任Jurgen Schmidhuber提出長短期記憶(LSTM),LSTM使用門控單元及記憶機(jī)制大大緩解了早期RNN訓(xùn)練的問題。同樣在1997年,Mike Schuster提出雙向RNN模型(Bidirectional RNN)。這兩種模型大大改進(jìn)了早期RNN結(jié)構(gòu),拓寬了RNN的應(yīng)用范圍,為后續(xù)序列建模的發(fā)展奠定了基礎(chǔ)。此時RNN雖然在一些序列建模任務(wù)上取得了不錯的效果,但由于計(jì)算資源消耗大,后續(xù)幾年一直沒有太大的進(jìn)展。
2010年,Tomas Mikolov對Bengio等人提出的feedforward Neural network language model(NNLM)進(jìn)行了改進(jìn),提出了基于RNN的語言模型(RNN LM),并將其用在語音識別任務(wù)中,大幅提升了識別精度。在此基礎(chǔ)上Tomas Mikolov于2013年提出了大名鼎鼎的word2vec。
與NNLM及RNNLM不同,word2vec的目標(biāo)不再專注于建模語言模型,而是專注于如何利用語言模型學(xué)習(xí)每個單詞的語義化向量(distributed representation),當(dāng)然distributed representation概念最早要來源于Hinton 1986年的工作。word2vec引發(fā)了深度學(xué)習(xí)在自然語言處理領(lǐng)域的浪潮,除此之外還啟發(fā)了knowledge representation,network representation等新的領(lǐng)域。
另一方面,2014年Bengio團(tuán)隊(duì)與Google幾乎同時提出了seq2seq架構(gòu),將RNN用于機(jī)器翻譯。沒過多久,Bengio團(tuán)隊(duì)又提出注意力Attention機(jī)制,對seq2seq架構(gòu)進(jìn)行改進(jìn)。自此機(jī)器翻譯全面進(jìn)入到神經(jīng)機(jī)器翻譯(NMT)的時代,NMT不僅過程簡單,而且效果要遠(yuǎn)超統(tǒng)計(jì)機(jī)器翻譯的效果。目前主流的機(jī)器翻譯系統(tǒng)幾乎都采用了神經(jīng)機(jī)器翻譯的技術(shù),除此之外,Attention機(jī)制也被廣泛用于基于深度學(xué)習(xí)的各種任務(wù)中。
近兩年,相關(guān)領(lǐng)域仍有一些突破性進(jìn)展,2017年,F(xiàn)acebook人工智能實(shí)驗(yàn)室提出基于卷積神經(jīng)網(wǎng)絡(luò)的seq2seq架構(gòu),將RNN替換為帶有門控單元的CNN,提升效果的同時大幅加快了模型訓(xùn)練速度。此后不久,Google提出Transformer架構(gòu),使用Self-Attention代替原有的RNN及CNN,更進(jìn)一步降低了模型復(fù)雜度。在詞表示學(xué)習(xí)方面,Allen人工智能研究所2018年提出上下文相關(guān)的表示學(xué)習(xí)方法ELMo,利用雙向LSTM語言模型對不同語境下的單詞,學(xué)習(xí)不同的向量表示,在6個NLP任務(wù)上取得了提升。OpenAI團(tuán)隊(duì)在此基礎(chǔ)上提出預(yù)訓(xùn)練模型GPT,把LSTM替換為Transformer來訓(xùn)練語言模型,在應(yīng)用到具體任務(wù)時,與之前學(xué)習(xí)詞向量當(dāng)作特征的方式不同,GPT直接在預(yù)訓(xùn)練得到的語言模型最后一層接上Softmax作為任務(wù)輸出層,然后再對模型進(jìn)行微調(diào),在多項(xiàng)任務(wù)上GPT取得了更好的效果。
不久之后,Google提出BERT模型,將GPT中的單向語言模型拓展為雙向語言模型(Masked Language Model),并在預(yù)訓(xùn)練中引入了sentence prediction任務(wù)。BERT模型在11個任務(wù)中取得了最好的效果,是深度學(xué)習(xí)在NLP領(lǐng)域又一個里程碑式的工作。BERT自從在arXiv上發(fā)表以來獲得了研究界和工業(yè)界的極大關(guān)注,感覺像是打開了深度學(xué)習(xí)在NLP應(yīng)用的潘多拉魔盒。隨后涌現(xiàn)了一大批類似于“BERT”的預(yù)訓(xùn)練(pre-trained)模型,有引入BERT中雙向上下文信息的廣義自回歸模型XLNet,也有改進(jìn)BERT訓(xùn)練方式和目標(biāo)的RoBERTa和SpanBERT,還有結(jié)合多任務(wù)以及知識蒸餾(Knowledge Distillation)強(qiáng)化BERT的MT-DNN等。這些種種,還被大家稱為BERTology。