天天看點

關于句子embedding的一些工作簡介(四)---- Quick Thoughts

Quick Thoughts(以下簡稱QT 論文)可以了解為更新版本的Skip-thought,方法簡單很多,但是效果上略優于InferSent等算法。

Skip-thought

了解QT繞不開Skip-thought(論文)。Skip-thought顧名思義,可以了解為句子版本的Skip-gram(word2vec論文)。在word2vec算法的skip-gram版本中,中心詞可以用來預測context中的詞彙; 對應的,Skip-thought利用中心詞預測context中的句子。

關于句子embedding的一些工作簡介(四)---- Quick Thoughts

如圖所示,中間的句子”I could see the cat on the steps” 可以拿來預測前面的句子”I got back home”和後面的句子”This was strange”。

那麼這種預測具體怎麼實作呢?

作者利用了一個encoder來壓縮中心句子的資訊,然後用一個decoder來産生context裡的句子。對于這種sequence modeling, 一般的最佳選擇是LSTM或者GRU,論文中encoder和decoder都是GRU。相應的,負的loss function是:

關于句子embedding的一些工作簡介(四)---- Quick Thoughts

這裡的 hi h i 代表第i個句子通過encoder的輸出, w<ti+1 w i + 1 < t 代表第i+1個句子的前t-1個詞,基于它們,得到 wti+1 w i + 1 t 即第i+1個句子的第t個詞的機率為 P(wti+1|wti+1,hi) P ( w i + 1 t | w i + 1 t , h i ) 。這個公式的兩項分别對應了下一句和上一句出現的機率。本質上,(在decoder這部分)這個問題是作為language modeling來處理的。

(另外,論文裡提供了一個小“彩蛋”:如果encoder遇到在training set裡從未出現的詞怎麼辦呢?這裡不寫了,原論文裡有一個很簡單的辦法。)

改進

看上去,Skip-thought和Skip-gram挺象。唯一的遺憾是Skip-thought的decoder那部分,它是作為language modeling來處理的。而Skip-gram則是利用一個classifier預測周圍的詞(通過hierarchical softmax 或者negative sampling)。QT針對這個問題,對decoder部分做了大的調整,它直接把decoder拿掉,取而代之的是一個classifier。這個classifier負責預測哪些句子才是context sentences。

假設f和g是encoder,s是中心句子, Sctxt S c t x t 是context sentences, Scand S c a n d 是candidate sentences, 它包括 Sctxt S c t x t , 也包括不相關的句子。

目标函數可以寫為:

關于句子embedding的一些工作簡介(四)---- Quick Thoughts

這裡的機率p可表達為下式:

關于句子embedding的一些工作簡介(四)---- Quick Thoughts

f, 和g在這裡是encoder, c是classifier。c的函數形式和word2vec保持一緻: c(u,v)=uTv c ( u , v ) = u T v

對比而言,這兩種方法可以用論文中的圖表示為:

關于句子embedding的一些工作簡介(四)---- Quick Thoughts

QT的classifier取代了Skip-thought的Decoder。這樣做的好處是運作的速度大大提升了,用判别問題取代了生成式問題。有趣的是,雖然QT出現的比Skip-thought更晚,但是方法更簡單,也更加接近Word2Vec算法。

實驗

  1. 和unsupervised representation learning方法的比較:
    關于句子embedding的一些工作簡介(四)---- Quick Thoughts

    在大多數情況下,uni/bi/combine-QT的表現好于其他模型,并且訓練時間大大縮短。這裡uni-QT和bi-QT分别指使用了單向和雙向RNN作為encoder的模型。combine-QT在test time使用了uni-QT和bi-QT學習得到的句子表征(由于它同時使用了兩種表征,我們可以看到在dim一欄值是其它值的兩倍)。在這裡uni/bi/combine-QT都沒有使用pre-trained word vectors。

    注意MC-QT模型在各個任務上最優。MC-QT就是MultiChannel-QT,作者模仿了Yoon Kim 在Convolutional neural networks for sentence classification(2014)中的做法,分别用一個pretrained word embedding(Glove)和一個tunable word embedding(trained from scratch)來作為輸入。

  2. 和supervised representation learning方法的比較:
    關于句子embedding的一些工作簡介(四)---- Quick Thoughts
    注意和前文中介紹過的InferSent的比較,MC-QT在多數任務中效果更好。但是我個人在這裡存有疑慮:InferSent僅使用了pre-trained word vectors(Glove)。 如果也采取MultiChannel embedding的做法,不知道會不會有同樣的提升?
  3. 和Skip-thought進行Nearest neighbors提取的比較:

    感受以下兩種方法從Wikipedia裡1M個句子中尋找最近鄰的表現。

    關于句子embedding的一些工作簡介(四)---- Quick Thoughts

總結

QT是一種新的state-of-art的算法。它不光效果好,而且訓練時間要遠小于其他算法。在算法方法上和效果上,都可稱為是句子表征界的Word2Vec一般的存在。和前面幾篇介紹的不同算法放在一起比較,同樣都是為了找到好的句子表征,它們采取了不同的路徑:InferSent在尋找NLP領域的ImageNet, 它的成功更像是在尋找資料集和任務上的成功,當然它成功的找到了SNLI; Concatenated p-means在尋找NLP領域的convolutional filter, 即怎樣才能更好的提煉出句子級别的特征,它找到了p-means操作,以及利用了不同的embeddings; QT則是直接在算法層面上,尋找句子級别的Word2Vec, 算法上的改進讓它受益。我們看到不同的方法在不同的方向上都作出了努力和取得了成效,很難講哪種努力會更有效或者更有潛力。唯一唯一可以肯定的是,從應用層面上來講,合适的才是最好的。

關注公衆号《沒啥深度》有關自然語言處理的深度學習應用,偶爾也有關計算機視覺

關于句子embedding的一些工作簡介(四)---- Quick Thoughts

繼續閱讀