斯坦福NLP課程 | 第18講 – 句法分析與樹形遞歸神經網絡
- 作者:韓信子@ShowMeAI,路遙@ShowMeAI,奇異果@ShowMeAI
- 教程地址://www.showmeai.tech/tutorials/36
- 本文地址://www.showmeai.tech/article-detail/256
- 聲明:版權所有,轉載請聯繫平台與作者並註明出處
- 收藏ShowMeAI查看更多精彩內容
ShowMeAI為斯坦福CS224n《自然語言處理與深度學習(Natural Language Processing with Deep Learning)》課程的全部課件,做了中文翻譯和注釋,並製作成了GIF動圖!
本講內容的深度總結教程可以在這裡 查看。視頻和課件等資料的獲取方式見文末。
引言
授課計劃
- Motivation: Compositionality and Recursion
- Structure prediction with simple Tree RNN: Parsing
- Backpropagation through Structure
- More complex TreeRNN units
- Other uses of tree-recursive neural nets
- Institute for Human-Centered Artificial Intelligence
1.CS語言譜
- 詞袋模型和複雜形式的語言表達結構
1.1 語言的語義解釋:不僅僅是詞向量
- 我們怎樣才能弄清楚更大的短語的含義?
The snowboarder
is leaping over a mogulA person on a snowboard
jumps into the air
The snowboarder
在語義上相當於A person on a snowboard
,但它們的字長不一樣
人們通過較小元素的語義成分來解釋較大文本單元的意義
- 實體,描述性術語,事實,論點,故事
- 人們之所以可以理解
A person on a snowboard
,是因為組合原則 (the principle of compositionality
)- 人們知道每個單詞的意思,從而知道了
on a snowboard
的意思 - 知道組件的含義並將他們組合成為更大的組件
- 人們知道每個單詞的意思,從而知道了
- 小的組件元素構建成完整圖片場景
- 語言理解 – 和人工智能 – 需要能夠通過了解較小的部分來理解更大的事物
- 我們擁有將較小的部分組合起來製作出更大東西的能力
1.2 語言是遞歸的嗎?
- 認知上有點爭議 (需要前往無限)
- 但是:遞歸對於描述語言是很自然的
[The person standing next to [the man from [the company that purchased [the firm that you used to work at]]]]
- 包含名詞短語的名詞短語,包含名詞短語
- 它是語言結構的一個非常強大的先驗
1.3 Penn Treebank tree
2.基於詞向量空間模型的構建
the country of my birth
the place where I was born
- 我們怎樣表示更長短語的意思呢?
- 通過將他們映射到相同的向量空間!
2.1 我們應該如何將短語映射到向量空間?
- 基於組合原則
- 使用單詞的含義和組合他們的規則,得到一個句子的含義向量
- 同時學習解析樹以及組合向量表示
2.2 Constituency Sentence Parsing
- 我們需要能夠學習如何解析出正確的語法結構,並學習如何基於語法結構,來構建句子的向量表示
2.3 遞歸與循環神經網絡
- 循環神經網絡需要一個樹結構
- 循環神經網絡不能在沒有前綴上下文的情況下學習理解短語,並且經常它得到的最終向量包含太多末尾單詞的信息 (而忽略了前面的一些內容)
2.4 結構預測對的遞歸神經網絡
- 如果我們自上而下的工作,那麼我們在底層有單詞向量,所以我們想要遞歸地計算更大成分的含義
- 輸入:兩個候選的子節點的表示
- 輸出:
- 兩個節點被合併後的語義表示
- 新節點的合理程度
2.5 遞歸神經網絡定義
2.6 用遞歸網絡分析句子
- 自左向右重複遍歷,每次將得分最高的兩者組合在一起
2.7 分析一個句子
2.8 Max-Margin Framework:細節
- 樹的得分是通過每個節點的解析決策得分的總和來計算的
\[s(x, y)=\sum_{n \in n o d e (y)} s_{n}
\]
\]
- \(x\) 是句子,\(y\) 是解析樹
- 類似於最大邊距解析 (Taskar et al.2004) ,有一個監督學習的最大邊際目標
\[J=\sum_{i} s\left(x_{i}, y_{i}\right)-\max _{y \in A\left(x_{i}\right)}\left(s\left(x_{i}, y\right)+\Delta\left(y, y_{i}\right)\right)
\]
\]
- 損失 \(\Delta\left(y, y_{i}\right)\) 懲罰所有不正確的決策
- 結構搜索 \(A(x)\) 是貪婪的 (每次加入最佳節點)
- 相反:使用 Beam search 搜索圖
2.9 場景分析
- 和組合類似的準則
- 場景圖像的含義也是較小區域的函數
- 它們如何組合成部分以形成更大的對象
- 以及對象如何相互作用
2.10 圖像解析算法
- Same Recursive Neural Network as for natural language parsing! (Socher et al. ICML 2011)
2.11 多類分割
3.結構反向傳播(BTS)
- Introduced by Goller & Küchler (1996)
- 和通用的反向傳播的規則相同
\[\delta{(l)}=\left(\left(W^{(l)}\right)^{T} \delta^{(l+1)}\right) \circ f^{\prime}\left(z^{(l)}\right)
\]
\]
\[\frac{\partial}{\partial W^{(l)}} E_{R}=\delta^{(l+1)}\left(a^{(l)}\right)^{T}+\lambda W^{(l)}
\]
\]
遞歸和樹結構導致的計算:
- ① 從所有節點 (像RNN一樣) 求 \(W\) 的導數
- ② 在每個節點處拆分導數 (對於樹)
- ③ 從父節點和節點本身添加 error message
3.1 結構反向傳播:第1步
- 求所有節點的偏導
\[\begin{aligned}
& \frac{\partial}{\partial W} f(W(f(W x))\\
=& f^{\prime}\left(W(f(W x))\left(\left(\frac{\partial}{\partial W} W\right) f(W x)+W \frac{\partial}{\partial W} f(W x)\right)\right.\\
=& f^{\prime}\left(W(f(W x))\left(f(W x)+W f^{\prime}(W x) x\right)\right.
\end{aligned}
\]
& \frac{\partial}{\partial W} f(W(f(W x))\\
=& f^{\prime}\left(W(f(W x))\left(\left(\frac{\partial}{\partial W} W\right) f(W x)+W \frac{\partial}{\partial W} f(W x)\right)\right.\\
=& f^{\prime}\left(W(f(W x))\left(f(W x)+W f^{\prime}(W x) x\right)\right.
\end{aligned}
\]
\[\begin{aligned}
& \frac{\partial}{\partial W_{2}} f\left(W_{2}\left(f\left(W_{1} x\right)\right)+\frac{\partial}{\partial W_{1}} f\left(W_{2}\left(f\left(W_{1} x\right)\right)\right.\right.\\
=& f^{\prime}\left(W_{2}\left(f\left(W_{1} x\right)\right)\left(f\left(W_{1} x\right)\right)+f^{\prime}\left(W_{2}\left(f\left(W_{1} x\right)\right)\left(W_{2} f^{\prime}\left(W_{1} x\right) x\right)\right.\right.\\
=& f^{\prime}\left(W_{2}\left(f\left(W_{1} x\right)\right)\left(f\left(W_{1} x\right)+W_{2} f^{\prime}\left(W_{1} x\right) x\right)\right.\\
=& f^{\prime}\left(W(f(W x))\left(f(W x)+W f^{\prime}(W x) x\right)\right.
\end{aligned}
\]
& \frac{\partial}{\partial W_{2}} f\left(W_{2}\left(f\left(W_{1} x\right)\right)+\frac{\partial}{\partial W_{1}} f\left(W_{2}\left(f\left(W_{1} x\right)\right)\right.\right.\\
=& f^{\prime}\left(W_{2}\left(f\left(W_{1} x\right)\right)\left(f\left(W_{1} x\right)\right)+f^{\prime}\left(W_{2}\left(f\left(W_{1} x\right)\right)\left(W_{2} f^{\prime}\left(W_{1} x\right) x\right)\right.\right.\\
=& f^{\prime}\left(W_{2}\left(f\left(W_{1} x\right)\right)\left(f\left(W_{1} x\right)+W_{2} f^{\prime}\left(W_{1} x\right) x\right)\right.\\
=& f^{\prime}\left(W(f(W x))\left(f(W x)+W f^{\prime}(W x) x\right)\right.
\end{aligned}
\]
3.2 結構反向傳播:第2步
- 在每個節點處分開偏導
3.3 結構反向傳播:第3步
- 疊加 error message
3.4 BTS Python 編程:前向傳播
3.5 BTS Python 編程:反向傳播
4.版本1:簡單TreeRNN
- 使用單矩陣 TreeRNN 的結果
- 單個權重矩陣 TreeRNN 可以捕獲一些現象但不適合更複雜的現象以及更高階的構成或解析長句
- 輸入詞之間沒有真正的交互
- 組合函數對於所有句法類別,標點符號等都是相同的
5.版本2: Syntactically-Untied RNN
- 符號的上下文無關的語法(Context Free Grammar CFG)主幹是足以滿足基本的句法結構
- 我們使用子元素的離散句法類別來選擇組合矩陣
- 對於不同的語法環境,TreeRNN可以針對不同的組合矩陣做得更好
- 結果為我們提供了更好的語義
補充講解
- 左邊 RNN 是使用概率的上下文無關的語法解析,為句子生成可能的樹結構
- 右邊 SU-RNN 是語法解開的遞歸神經網絡,此時每個節點和序列都有一個類別,我們可以使用對應不同類別的矩陣組合起來,例如將類別 B 和類別 C 的矩陣組合起來作為本次計算的權重矩陣,所以這個權重矩陣是更符合句子結構的
5.1 組合向量文法
- 問題:速度
- 集束搜索中的每個候選分數都需要一次矩陣向量乘法
- 解決方案:僅針對來自更簡單,更快速模型(Probabilistic Context Free Grammar (PCFG))的樹的子集計算得分
- 對概率低的候選進行剪枝以獲得更快的速度
- 為每個集束候選提供子句的粗略語法類別
- 組合矢量語法= PCFG + TreeRNN
5.2 解析相關工作
- 產生的 CVG Parser 與以前擴展PCFG解析器的工作有關
- Klein and Manning (2003a):手工特徵工程
- Petrov et al. (2006):分解和合併句法類別的學習算法
- 詞彙化解析器(Collins, 2003; Charniak, 2000):用詞彙項描述每個類別
- Hall and Klein (2012) 在一個因式解析器中結合了幾個這樣的注釋方案
- CVGs 將這些想法從離散表示擴展到更豐富的連續表達
5.3 實驗
5.4 #論文解讀# SU-RNN / CVG
- Learns soft notion of head words
- 初始化:\(W^{(\cdot)}=0.5\left[I_{n \times n} I_{n \times n} 0_{n \times 1}\right]+\varepsilon\)
- 初始化為一對對角矩陣
- 學習的是一個短語中哪個子節點是重要的
5.5 結果向量表示的分析
- 所有數據均根據季節變化進行調整
- 所有數字都根據季節性波動進行調整
- 調整所有數字以消除通常的季節性模式
- night-Ridder不會評論這個提議
- Harsco declined to say what country placed the order
- Coastal wouldn』t disclose the terms
- Sales grew almost \(7\%\) to \(\$ \text{UNK}\) m. from \(\$ \text{UNK}\) m.
- Sales rose more than \(7\%\) to \(\$ 94.9\) m. from \(\$ 88.3\) m.
- Sales surged \(40 \%\) to \(\text{UNK}\) b. yen from \(\text{UNK}\) b.
6.版本3: Compositionality Through Recursive Matrix-Vector Spaces
- 之前:\(p=\tanh \left(W\left[\begin{array}{l}{c_{1}} \\ {c_{2}}\end{array}\right]+b\right)\)
- \(c_1\) 和 \(c_2\) 之間並沒有相互影響
- 使組合函數更強大的一種方法是解開權重 \(W\)
- 但是,如果單詞主要作為運算符,例如
very good
的very
是沒有意義的,是用於增加good
的規模的運算符
- 提案:新的組合函數
- 問題是如何定義呢,因為不知道 \(c_1\) 和 \(c_2\) 哪個是 operator,比如 very good ,就應該講 very 視為作用在 good 的矩陣上的向量
- 每個單詞都擁有一個向量意義和一個矩陣意義
- 左側計算得到合併後的向量意義
- 右側計算得到合併後的矩陣意義
- 可以捕獲運算符語義,即中一個單詞修飾了另一個單詞的含義
6.1 預測情緒分佈
- 語言中非線性的好例子
6.2 語義關係的分類
- MV-RNN 可以學習到大的句法上下文傳達語義關係嗎?
- 為包括兩項的最小成分構建單個組合語義
6.3 語義關係的分類
- 問題:參數量過大,且獲得短語的矩陣意義的方式不夠好
7.版本4: Recursive Neural Tensor Network
- 比 MV-RNN 更少的參數量
- 允許兩個單詞或短語向量乘法交互
7.1 詞袋之上: 情感檢測
- 一段文字的語調是積極的,消極的還是中性的?
- 某種程度上情緒分析是容易的
- 較長文檔的檢測精度~90%,但是
- 有了這樣的演員陣容和題材,這部電影應該會更有趣,更具娛樂性。
7.2 斯坦福情感分析數據集
- 215,154 phrases labeled in 11,855 sentences
- 可以真的訓練和測試組合
- //nlp.stanford.edu:8080/sentiment/
7.3 好的數據集對所有模型都有提升幫助
- 負面情感的難樣本仍然大多判斷錯誤的
- 我們還需要一個更強大的模型!
7.4 版本4: Recursive Neural Tensor Network
- 思路:允許載體的加性和介導的乘法相互作用
- 在樹中使用結果向量作為邏輯回歸的分類器的輸入
- 使用梯度下降聯合訓練所有權重
補充講解
- 回到最初的使用向量表示單詞的意義,但不是僅僅將兩個表示單詞含義的向量相互作用,左上圖是在中間插入一個矩陣,以雙線性的方式做注意力並得到了注意力得分。即令兩個單詞的向量相互作用並且只產生一個數字作為輸出
- 如上中圖所示,我們可以擁有三維矩陣,即多層的矩陣(二維),從而得到了兩個得分
- 使用 softmax 做分類
7.5 遞歸神經張量網絡/Recursive Neural Tensor Network
7.6 數據集上的實驗效果
- RNTN 可以捕捉類似 \(X\) but \(Y\) 的結構
- RNTN accuracy of 72%, compared to MV-RNN (65%), biword NB (58%) and RNN (54%)
7.7 否定的樣本結果
- 雙重否定時,積極反應應該上升
- Demo: //nlp.stanford.edu:8080/sentiment/
8.版本5: Improving Deep Learning Semantic Representations using a TreeLSTM
目標:
- 仍試圖將句子的含義表示為 (高維,連續) 向量空間中的位置
- 一種準確處理語義構成和句子含義的方式
- 將廣泛使用的鏈式結構 LSTM 推廣到樹結構
8.1 LSTM Units for Sequential Composition
- 門是 \([0,1]^{d}\) 的向量,用於逐元素乘積的軟掩蔽元素
8.2 #論文解讀# Tree-Structured Long Short-Term Memory Networks
8.3 Tree-structured LSTM
- 將連續LSTM推廣到具有任何分支因子的樹
8.4 結果
8.5 忘記門:選擇性狀態保護
- Stripes = forget gate activations; more white ⇒ more preserved
- 圖中的條紋代表遺忘門激活,更多的白色佔比表示更多的信息保留
9.#論文解讀# QCD-Aware Recursive Neural Networks for Jet Physics
10.用於程序翻譯的tree-to-tree神經網絡
- 探索在編程語言之間使用樹形結構編碼和生成進行翻譯
- 在生成中,將注意力集中在源樹上
11.HAI 以人為中心的人工智能
- 人工智能有望改變經濟和社會,改變我們溝通和工作的方式,重塑治理和政治,並挑戰國際秩序
- HAI的使命是推進人工智能研究,教育,政策和實踐,以改善人類狀況
12.視頻教程
可以點擊 B站 查看視頻的【雙語字幕】版本
[video(video-vRY242XX-1652089935406)(type-bilibili)(url-//player.bilibili.com/player.html?aid=376755412&page=18)(image-//img-blog.csdnimg.cn/img_convert/98116a0401851ce17dfd2efa1bb6e58a.png)(title-【雙語字幕+資料下載】斯坦福CS224n | 深度學習與自然語言處理(2019·全20講))]13.參考資料
- 本講帶學的在線閱翻頁本
- 《斯坦福CS224n深度學習與自然語言處理》課程學習指南
- 《斯坦福CS224n深度學習與自然語言處理》課程大作業解析
- 【雙語字幕視頻】斯坦福CS224n | 深度學習與自然語言處理(2019·全20講)
- Stanford官網 | CS224n: Natural Language Processing with Deep Learning
ShowMeAI系列教程推薦
- 大廠技術實現 | 推薦與廣告計算解決方案
- 大廠技術實現 | 計算機視覺解決方案
- 大廠技術實現 | 自然語言處理行業解決方案
- 圖解Python編程:從入門到精通系列教程
- 圖解數據分析:從入門到精通系列教程
- 圖解AI數學基礎:從入門到精通系列教程
- 圖解大數據技術:從入門到精通系列教程
- 圖解機器學習算法:從入門到精通系列教程
- 機器學習實戰:手把手教你玩轉機器學習系列
- 深度學習教程 | 吳恩達專項課程 · 全套筆記解讀
- 自然語言處理教程 | 斯坦福CS224n課程 · 課程帶學與全套筆記解讀
NLP系列教程文章
- NLP教程(1)- 詞向量、SVD分解與Word2vec
- NLP教程(2)- GloVe及詞向量的訓練與評估
- NLP教程(3)- 神經網絡與反向傳播
- NLP教程(4)- 句法分析與依存解析
- NLP教程(5)- 語言模型、RNN、GRU與LSTM
- NLP教程(6)- 神經機器翻譯、seq2seq與注意力機制
- NLP教程(7)- 問答系統
- NLP教程(8)- NLP中的卷積神經網絡
- NLP教程(9)- 句法分析與樹形遞歸神經網絡
斯坦福 CS224n 課程帶學詳解
- 斯坦福NLP課程 | 第1講 – NLP介紹與詞向量初步
- 斯坦福NLP課程 | 第2講 – 詞向量進階
- 斯坦福NLP課程 | 第3講 – 神經網絡知識回顧
- 斯坦福NLP課程 | 第4講 – 神經網絡反向傳播與計算圖
- 斯坦福NLP課程 | 第5講 – 句法分析與依存解析
- 斯坦福NLP課程 | 第6講 – 循環神經網絡與語言模型
- 斯坦福NLP課程 | 第7講 – 梯度消失問題與RNN變種
- 斯坦福NLP課程 | 第8講 – 機器翻譯、seq2seq與注意力機制
- 斯坦福NLP課程 | 第9講 – cs224n課程大項目實用技巧與經驗
- 斯坦福NLP課程 | 第10講 – NLP中的問答系統
- 斯坦福NLP課程 | 第11講 – NLP中的卷積神經網絡
- 斯坦福NLP課程 | 第12講 – 子詞模型
- 斯坦福NLP課程 | 第13講 – 基於上下文的表徵與NLP預訓練模型
- 斯坦福NLP課程 | 第14講 – Transformers自注意力與生成模型
- 斯坦福NLP課程 | 第15講 – NLP文本生成任務
- 斯坦福NLP課程 | 第16講 – 指代消解問題與神經網絡方法
- 斯坦福NLP課程 | 第17講 – 多任務學習(以問答系統為例)
- 斯坦福NLP課程 | 第18講 – 句法分析與樹形遞歸神經網絡
- 斯坦福NLP課程 | 第19講 – AI安全偏見與公平
- 斯坦福NLP課程 | 第20講 – NLP與深度學習的未來