RNN的高級應用


本文結構:

四個問題

  1. 每個問題是什么
  2. 應用什么模型
  3. 模型效果

CS224d-Day 11:
Recursive neural networks -- for different tasks (e.g. sentiment analysis)
課程鏈接
視頻鏈接
課件鏈接


四個問題

這次課主要講了標準的 Recursive neural networks 模型及其擴展模型在3個問題上的應用和效果,最后的 Tree LSTM 簡單地介紹了模型和效果。
這3個問題分別是 Paraphrase detection,Relation classification,Sentiment Analysis。
每個模型都可以應用到任意一個問題上,只不過效果不同,有些模型對一些問題表現(xiàn)會更優(yōu)一些。


1.Paraphrase detection

目的是判斷兩句話是否具有相同的意思

用到的模型是標準的RNN

為了解決這個問題,需要思考:

  • 怎樣比較兩個句子?

    通過成對地比較兩個句子的短語,這個時候可以用 standard RNN,因為它可以得到一個合理的樹結構,也就是句子的短語組成結構。

  • 怎樣用相似度來判斷兩個句子的意義是一樣的?

    如果用兩個樹結構的頂點去判斷,那會丟掉很多中間環(huán)節(jié)的信息。
    如果只計數(shù)兩個句子中相似短語的個數(shù),那么會丟掉位置信息,即這些短語出現(xiàn)在什么位置。

所以用 similar matrix 來表示相似度。

如下圖,左邊是兩個句子,樹結構中分別有7個部分和5個部分,右邊是由similar matrix到最后結果的過程。

similar matrix 由5行7列組成,顏色深淺表示兩個樹結構相應部分間的相似度大小。

  • 上圖中,為什么不能直接把 similar matrix 直接投入神經(jīng)網(wǎng)絡中?

    因為這個矩陣的大小是隨著輸入句子的不同而變化的。

所以需要引用一個 pooling 層,它可以將輸入的 similar matrix 映射成維度一致的矩陣,然后再投入到 RNN 中。

最后的效果:


2.Relation Classification

目的是識別詞語之間的關系

尤其是 very + good 這種,very 此時只是一個加強 good 的作用

用到的模型是標準的 Matrix-Vector RNN

普通的 RNN 中,每個節(jié)點都是由向量表示的,在這個 Matrix-Vector RNN 中,每個節(jié)點除了向量外自帶一個矩陣,在由 left 和 right child 生成 parent 的時候,對彼此作用各自的矩陣后,再去生成 parent。

  • 用向量和矩陣的區(qū)別?

    單獨的向量反映不出相互作用這種層次的意義,加上矩陣作用給對方后,可以顯示出 very 可以讓 good 這種形容詞更強的意義。

    矩陣是隨機初始化的,通過 Back Propagation 和 Forward Propagation 可以不斷地學習出來。

最后的效果:

下圖中,橫軸是 1-10 星號的電影,縱軸是 not annoying 這樣的詞出現(xiàn)在相應級別中的比例。

在 not annoying ,not awesome 這兩個例子中,綠色的 RNN 沒有藍色的 MV-RNN 表現(xiàn)得好,因為 not annoying 出現(xiàn)在低星級的次數(shù)不應該比出現(xiàn)在高星級電影中的次數(shù)多。


另外一種問題是因果關系等的判斷

最后的效果:

對于這個問題,用了不同的模型和feature來看效果。

在 SVM 用了好多feature,最后的效果是 82.2
POS:part of speech
wordnet 大量人工生成的數(shù)據(jù)
prefix 等其他形態(tài)學的特征
dependency parse feature 不同類型的parser
textrunner 百萬的網(wǎng)上數(shù)據(jù)
Google n-gram 幾十億個 n-gram

單純用神經(jīng)網(wǎng)絡模型,數(shù)據(jù)量沒那么大的時候,效果不到80%
加入了 POS,WordNet,NER 數(shù)據(jù)后,變成了 82.4,優(yōu)于SVM。

數(shù)據(jù)越多的話,效果越好。


3.Sentiment Analysis

目的是識別句子表達的情感

用到的模型是RNTN(Recursive Neural Tensor Network)

  • 用 Bag of words 這種方法有缺陷:
    一個 not 后面多個 positive 的詞時,應該是否定,結果被判斷成肯定。
    前半句否定,后半句肯定,后半句的效果比前半句更強的時候,怎么判斷出來。

解決方案,一個是更好的數(shù)據(jù),一個是更好的模型

更好的數(shù)據(jù):

人工標注 11,855 個句子的 215,154 個短語,每個短語由不同的人標注 3 次。

下圖是標注結果的可視化,橫軸是短語的長度,縱軸是各個情感類別的比例。

最后的效果:

可以發(fā)現(xiàn),用新的 tree bank 的模型效果要比原來的好,肯定否定情感分類越準。

更好的模型:
RNTN(Recursive Neural Tensor Network)

這個模型可以讓 word 之間有更多的 interaction,‘very good’的詞向量的轉(zhuǎn)置和矩陣 V 再和詞向量本身作用。

最后的效果:

RNTN 作用在新的 Tree Bank 上效果可以高達 85.4.


4.Semantic Similarity

目的是識別語義相似性

用到的模型是 Tree LSTMs

Tree LSTMs 和普通的 LSTMs 的不同之處在于 Tree LSTMs 是從 tree 的結構中進行LSTMs 的建模。

parent 的 hidden層是其 children 的 hidden 層的和,每一個 forget unit 是根據(jù)具體的某個節(jié)點來計算的,計算最終 cell 時要把所有 forget units 和對應的 cells 相乘并求和,其他部分和普通LSTMs計算方法一樣。

最后的效果:

[cs224d]

Day 1. 深度學習與自然語言處理 主要概念一覽
Day 2. TensorFlow 入門
Day 3. word2vec 模型思想和代碼實現(xiàn)
Day 4. 怎樣做情感分析
Day 5. CS224d-Day 5: RNN快速入門
Day 6. 一文學會用 Tensorflow 搭建神經(jīng)網(wǎng)絡
Day 7. 用深度神經(jīng)網(wǎng)絡處理NER命名實體識別問題
Day 8. 用 RNN 訓練語言模型生成文本
Day 9. RNN與機器翻譯
Day 10. 用 Recursive Neural Networks 得到分析樹
Day 11. RNN的高級應用


我是 不會停的蝸牛 Alice
85后全職主婦
喜歡人工智能,行動派
創(chuàng)造力,思考力,學習力提升修煉進行中
歡迎您的喜歡,關注和評論!

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容