lstm原始论文_有序的神经元——ON-LSTM模型浅析
盡管最近出現(xiàn)的Transformer系列的模型在nlp領(lǐng)域內(nèi)很流行,但RNN仍然有著重要的地位。本文介紹的模型來自于ICLR 2019的最佳論文之一,它針對自然語言具有語法分層的特點,對原有的LSTM模型的結(jié)構(gòu)做出了改進(jìn),使得新模型不僅具有更好的性能,還能夠無監(jiān)督地從語料文本中學(xué)習(xí)到句子的語法結(jié)構(gòu)。
LSTM與ON-LSTM
先介紹一下該模型的出發(fā)點,自然語言雖然從表面來看呈現(xiàn)出來的是序列形式,但其實句子的結(jié)構(gòu)并不是連續(xù)的序列,而是樹狀結(jié)構(gòu),如下圖所示。因此如果我們能夠設(shè)計一種可以考慮到句子的語法結(jié)構(gòu)的模型,那么就有可能在nlp任務(wù)中表現(xiàn)的更好。
先來看原始的LSTM模型,如下所示,其中
分別是遺忘門和輸入門,可以看出它們通過對于 的更新來實現(xiàn)對于歷史信息 和當(dāng)前輸入信息 的記憶與忘記。LSTM流程圖(來自參考資料[2])在原始LSTM中,更新的方式是通過遺忘門和輸入門來完成的,即
。而ON-LSTM做出改進(jìn)的地方就在這里,它通過語法層次來控制哪些信息需要記憶或忘記,對于語法層次較高的內(nèi)容(語法樹中更靠近根節(jié)點的內(nèi)容),它們影響的范圍更大,對于這些信息,模型應(yīng)該保留較長的時間;而對于層次較低的,它們對之后內(nèi)容影響較小,模型應(yīng)該盡快忘記它們,以免這些信息干擾后面的過程。有序的神經(jīng)元
為了達(dá)到這樣的目的,首先我們就需要對信息進(jìn)行語法分層,對神經(jīng)元按照語法層次進(jìn)行排序,語法層次較高的信息儲存在上面的神經(jīng)元中,較低的則儲存在下面的神經(jīng)元,然后根據(jù)層次的不同,采用不同的更新方式。如下圖所示,對于句子中較高層次的信息S,則位于cell states的上面的維度,這類信息的更新頻率不應(yīng)該很快;而對于底層信息如N和V,它們位于cell states的下部,這些信息應(yīng)該較快地進(jìn)行更新。這樣,我們就能通過cell stats的維度的高低來將信息中不同語法層次的內(nèi)容分開,從而實現(xiàn)了有序的神經(jīng)元。
完成了對cell states的排序之后,我們接下來就是劃分區(qū)間,以便模型按照區(qū)間的不同實現(xiàn)不同的更新方式。為了實現(xiàn)區(qū)間的劃分,模型用到了兩個整數(shù)
,它們分別用來表示歷史信息的最低層次和當(dāng)前信息的最高層次,如下圖所示。區(qū)間劃分(來自參考資料[3])對于上面的區(qū)間,有如下的更新規(guī)則:
- 當(dāng) 時,兩區(qū)間有交疊。對于交疊的部分,采用原始LSTM的方式進(jìn)行更新;對于高于 的部分, 只保留原來的歷史信息;對于低于 的部分, 只保留當(dāng)前輸入的信息。
- 當(dāng) 時,兩區(qū)間沒有交疊。對于沒有交疊的部分,直接設(shè)其為0;而對于大于 和小于 的部分,分別只保留歷史信息和當(dāng)前輸入信息。
可以看出,其實模型在這里認(rèn)為高層次的語法信息主要是來自于歷史信息,而低層次的主要來自當(dāng)前輸入信息,而這也比較符合人們的直觀印象,對于一個新的輸入,它對于語法信息的影響往往局限于一個較低的層次,高層次的信息(如句子或者短語信息)仍然來自于歷史信息,只有當(dāng)一個句子或者短語完結(jié)的時候,歷史信息的影響變小,這時新的輸入才有可能影響較高語法層次的信息。而這樣也就使得高語法層次的信息的更新頻率較低,大多時候是保持不變,而低語法層次的信息則隨著當(dāng)前的輸入在一直變化。
上面是區(qū)間劃分的思想,而具體的實現(xiàn)過程如下:
定義向量
定義函數(shù)
可以得到
它們表示了歷史信息和當(dāng)前信息的影響范圍,可以看作窗口函數(shù),也就起到了區(qū)間劃分的作用。這兩個向量需要通過模型學(xué)習(xí)得到,但是如果直接去學(xué)習(xí)
這樣的one hot向量,會導(dǎo)致更新過程不可導(dǎo),這就會比較麻煩,因此我們對它做一些“軟化”,用 函數(shù)來表示one hot向量,輸入歷史信息 和當(dāng)前輸入信息 ,通過神經(jīng)網(wǎng)絡(luò)來對 進(jìn)行預(yù)測,則有得到
之后,就可以按照上面的思想進(jìn)行區(qū)間劃分,具體形式如下:其中
對上式簡單分析一下,
主要由三個區(qū)間組成,如下圖所示:區(qū)間分布 與此類似,這樣我們就實現(xiàn)了對于 的更新,把公式放到一起,則整個ON-LSTM的更新公式為:其流程圖如下:
ON-LSTM流程圖,來自參考資料[2]最后補(bǔ)充一下,通常隱層神經(jīng)元的數(shù)目都比較大,而實際中語法的層數(shù)遠(yuǎn)遠(yuǎn)達(dá)不到這個數(shù)字,因此對于
而言,其實不需要那么多的維數(shù),這樣會導(dǎo)致需要學(xué)習(xí)的參數(shù)量過多,但是 要求它們的維數(shù)必須這么大,因此我們可以構(gòu)造一個維數(shù)為 的向量,其中D為隱層神經(jīng)元的維數(shù),然后在將其擴(kuò)充為D維向量,例如D=6,c=3,先構(gòu)造一個向量 ,然后將其擴(kuò)充為 。無監(jiān)督提取語法結(jié)構(gòu)
上面就是ON-LSTM模型的全部內(nèi)容,不過該模型除了在性能表現(xiàn)上更優(yōu)以外,還有一個很有意思的特性,那就是能夠無監(jiān)督地提取出句子的語法結(jié)構(gòu),其基本思想如下:
在時間步t,可以得到歷史信息的語法層次
,我們可以認(rèn)為這個數(shù)字的大小代表了歷史信息對當(dāng)前輸入影響的大小,如果較小,則時間步t之前的歷史信息對當(dāng)前影響較小,可以認(rèn)為出現(xiàn)了一個新的語法結(jié)構(gòu)。對于所有的時間步,則可以得到一個序列 ,然后采用下面的貪心算法來提取出語法結(jié)構(gòu):對于然后找出層級序列中最大值所在的下標(biāo),比如k,那么就將輸入序列分區(qū)為 。然后對子序列 和 重復(fù)上述步驟,直到每個子序列長度為1。其中
的計算方式如下:下圖是一些語法結(jié)構(gòu)提取的實驗結(jié)果對比,其中左側(cè)是模型結(jié)果,右側(cè)是人類專家的結(jié)果
總結(jié)
該ON-LSTM模型從語法結(jié)構(gòu)的角度出發(fā),根據(jù)語法層次對cell states進(jìn)行有序排列,再按照語法層次的不同實行不同的更新規(guī)則,從而實現(xiàn)對于較高語法層次信息的保留,這樣對于語言模型等任務(wù)無疑是很有利的。另外,利用該模型還能夠較好地從句子中無監(jiān)督地提取出語法結(jié)構(gòu),而這也是該模型的一大亮點。
參考資料
[1] ORDERED NEURONS: INTEGRATING TREE STRUCTURES INTO RECURRENT NEURAL NETWORKS
[2] 蘇劍林. (2019, May 28). 《ON-LSTM:用有序神經(jīng)元表達(dá)層次結(jié)構(gòu) 》[Blog post]. Retrieved from https://kexue.fm/archives/6621
[3] ON-LSTM:能表示語言層次的LSTM
總結(jié)
以上是生活随笔為你收集整理的lstm原始论文_有序的神经元——ON-LSTM模型浅析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 冒泡排序和选择排序区别_你以为只是简单的
- 下一篇: iphone个系列尺寸_最值得入手的4款