densenet论文_DRCN论文解读
論文地址:
https://arxiv.org/pdf/1805.11360.pdf?arxiv.org一、概述
此論文作者受到了DenseNet的啟發,將RNN進行了Dense鏈接,并且結合了attention機制,刷新了Semantic sentence matching中好幾個任務的state of the art。DenseNet是從resnet進化來的,他不是傳統的殘差鏈接了而是將每一層的輸出采用concat方式鏈接,然后輸入到后面的層中。也就是說,每一層都能接收到前面所有層的信息。但是這樣隨著網絡深度加深,后面數據的維度將會非常大,很容易造成OOM。針對上面的問題,作者采用autoencoder來作為bottleneck進行數據降維。
二、模型詳解
此模型的基本骨架使用密集鏈接的RNN,據作者說是第一個這樣做的。密集鏈接主要的好處就是每一層都能得到前面所有層的信息,但帶來的問題可能就是數據維度會比較大,作者采用了自編碼器來解決維度增加的問題。同時在兩個句子的交互上,作者使用了attention機制,attention權重則是用的cosine相似度計算。整個模型結構圖如下:
這個圖畫的還是比較清晰地,不過里面也存在著一些問題,后面我會一部分一部分的說。首先沒什么懸念,兩個句子先經過embedding層進行抽象,然后通過密集鏈接的RNN層。這里兩個句子會先求attention,然后將attention的值還有rnn的輸出以及前面所有層的輸出concat到一起,之后經過一個自編碼器來輸出固定維度也就是降維。最后則是常見的池化加一些加減乘除絕對值等神仙操作后經過全連接得到結果。
- Embedding Layer
這里作者除了使用詞向量,還是用了字符向量,主要為了結局OOV的問題,這里使用的是cnn來做char embedding。作者在這里還討論了是固定的向量好,還是可訓練的比較好。結論就是這個東西跟任務有關,需要我們根據不同的任務自己去嘗試,這兩種方式各有各的好處,可能fixed無法抓住數據集的特點,但是不容易過擬合;而可訓練的正好相反。同時作者這里還加入了exact match flag, 來自 [Gong, Luo, and Zhang 2018 ]的一篇文章,這里我還沒有仔細看這篇論文,但大致就是加入了ner,pos等其他標簽信息。
上面的公式應該非常清晰了,計算出來fix embedding, train embedding, char embedding, extract flag,然后再把這四部分concat到一起,形成了最后的詞表示。
- Densely connected rnn
這里的RNN網絡采用的就是傳統的Bi-LSTM, 但是這里沒有使用傳統的堆疊方式進行組合,而是借鑒了DenseNet采用了密集鏈接的方式。同時作者在這里還比較了三種不同的連接方式,傳統的堆疊,后面的殘差鏈接,現在的密集鏈接方式。公式見下圖:
傳統堆疊方式殘差鏈接密集鏈接方式作者在這里分別比較了三種不同連接方式的優缺點,對于傳統的堆疊LSTM網絡來說,造成的最大問題就是隨著網絡的加深,容易造成梯度消失以及梯度爆炸;對于殘差鏈接來說,雖然通過加法操作繞過了非線性部分,似的深層網絡的訓練稱為可能,但是這種加法的方式阻礙了一部分信息的傳播。為了解決上面的問題,這里采用了密集鏈接的方式,也就是單純的前面所有層的信息拼接在一起。雖然這樣也會存在問題,也就是隨著網絡的加深,參數大小會越來越大。作者在這里使用了autoencoder在作為一個瓶口限制了參數的維度。同時作者也在后面使用消融實驗驗證了其效果。
- Densely-connected Co-attentive networks
看到這里大家等的attention也終于出場了,似乎每個求句子相似的任務都不可避免的使用了attention,這已然成為了一個標配。在這里作者使用cosine相似度經過softmax得到attention權重。公式如下
得到attention向量后,將其與rnn的輸出以及前面一層的輸出進行拼接。這里和原來的densenet還不是很一樣,densenet是將前面所有層的信息都在后面進行拼接,而這里只是對前一層進行拼接。
- Bottleneck component
前面說過這種密集鏈接的形式雖然解決了隨著網絡加深信息丟失的問題,但是也帶來了參數溫度過大的問題。作者在這里利用了autoencoder來作為一個bottleneck部件,實現了數據的降維。由于沒有源碼,這里不是很確定作者是只使用了AE的encoder部分,還是說使用了整個AE。這里猜測大概率是整個AE,因為后面會說道loss函數是兩個部分組成,一個是分類的交叉熵,另一個就是AE的loss。同時作者還提到了這個組件在這個模型中用來知識蒸餾以及正則化,這里暫時還不是很理解,有明白的同學可以告訴我。
- Interaction and Prediction Layer
這一層就是最后的交互以及預測層了,在這里通過最大池化以及一些神奇的加減乘除絕對值操作,完成了兩個句子最后的交互。然后通過一個兩層的帶relu激活函數的全連接層完成最后的分類。這里也提到了最后是有兩個loss的,一個就是交叉熵另外一個是 reconstruction loss of autoencoder。
三、總結
此論文最大的創新點應該是首次將densenet的思路應用到了rnn上,并通過實驗驗證是就有非常好的效果的。通過跟attention的結合,實現了句子間的交互。另外一個點就是使用autoencoder作為瓶口結構,實現了參數溫度的減小,同時避免了信息的丟失。相信densenet的思路可以得到更廣泛的應用,最近我也在嘗試將其應用到transformer上面,然是目前還沒有很好地效果。
總結
以上是生活随笔為你收集整理的densenet论文_DRCN论文解读的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 真我 realme 11 Pro 通过
- 下一篇: 微信朋友圈中的不良信息怎么举报