主要内容
- 公告
- CNN的介紹
- 用于句子分類的簡單的cnn
- 各種不同的cnn
- 用于句子分類的深層cnn
- Quasi-recurrent Neural Networks
本節課視訊語音聲音字幕跟不上圖像,看的很辛苦,到後半部分也沒聽太懂,老師的ppt很簡單,都是說的,重要内容沒貼上去
pytorch學習推薦書籍:
natural language processing with pytorch by O'REILLY
二、從RNN到卷積神經網絡CNN
- 如果沒有字首資訊,RNN捕捉不到句意
- 捕捉到的資訊很多都是與最後一個單詞相關的
- softmax通常都是在最後一步進行計算
- 如果我們為每個可能的單詞子序列計算一定長度的向量呢
比如說句子:tentative deal reached to keep government open,計算向量:
tentative deal reached, deal reached to, reached to keep, to keep government, keep government open
不管句子的文法,然後再将他們組織起來
CNN
1層的卷積:
自然語言處理 cs224n 2019 Lecture 11: ConvNets for NLP主要内容二、從RNN到卷積神經網絡CNN三、用于句子分類的單層網絡六、RNN比較慢
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL0cmeNRTQU9keNpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLycTN5QzNzQTM3EzNwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
卷積通常用來從圖像中抽取特征
2層卷積的例子:
黃色框中黑色數字乘紅色數字=粉紅色數字
綠色框中是輸入(包括黃色框中的,這是綠色被黃色覆寫了),粉紅色是輸出
紅色的就是過濾權重,也就是核
一層的卷積:
過濾器(或者核)尺寸是3,計算的右邊的特征
帶有填充的1層卷積
三通道的1層卷積,padding=1
也就是在兩邊各填充了1層0,可以防止對邊緣資訊提取不充分的問題
1層卷積,帶有最大池化的填充
池化的概念:用于将經過卷積核計算出來的特征進一步壓縮,比如将右上角的矩陣壓縮成右下角的矩陣
帶有平均池化的填充
步長為2:
不常用的概念:本地最大池化
兩個最大池:
其他有用的概念:擴張卷積
使用右下角的兩個矩陣和右上角的紅色框做點乘,得到擴張結果
三、用于句子分類的單層網絡
Yoon Kim (2014):Convolutional Neural Networks for Sentence Classification. EMNLP 2014.EMNLP 2014. https://arxiv.org/pdf/1408.5882.pdf Code: https://arxiv.org/pdf/1408.5882.pdf [Theano!, etc.]
上述論文研究的是使用單層卷積網絡實作句子分類,判斷句子是正面的還是負面的。
單層卷積網絡的其他應用還有:
- 判斷句子是主管的還是客觀的
- 問題分類:關于人、位置、數字
單層CNN用于句子分類:
- 詞向量: ,k是向量的次元
自然語言處理 cs224n 2019 Lecture 11: ConvNets for NLP主要内容二、從RNN到卷積神經網絡CNN三、用于句子分類的單層網絡六、RNN比較慢 - 句子:
自然語言處理 cs224n 2019 Lecture 11: ConvNets for NLP主要内容二、從RNN到卷積神經網絡CNN三、用于句子分類的單層網絡六、RNN比較慢 - 分割的子序列:Xi:Xi+j,注意是是縱向拼接的,也就是把向量一層層堆疊起來的
- 卷積核: 每個視窗有h個單詞,也就是卷積核的尺寸為h
自然語言處理 cs224n 2019 Lecture 11: ConvNets for NLP主要内容二、從RNN到卷積神經網絡CNN三、用于句子分類的單層網絡六、RNN比較慢
下面這個例子h=3
計算特征的公式:
所有可能的視窗:
最終的結果是特征映射:
池化和通道
- 池化:從映射的特征中擷取最重要的特征
- 最大池化的公式:
自然語言處理 cs224n 2019 Lecture 11: ConvNets for NLP主要内容二、從RNN到卷積神經網絡CNN三、用于句子分類的單層網絡六、RNN比較慢 - 使用多種權重核w
- 有不同的視窗尺寸h是有意義的
- 因為最大池化是 ,c的長度是無關緊要的,可以一些過濾器,比如unigrams,bigrams,tri-grams,4-grams,等
自然語言處理 cs224n 2019 Lecture 11: ConvNets for NLP主要内容二、從RNN到卷積神經網絡CNN三、用于句子分類的單層網絡六、RNN比較慢 - 多通道輸入的想法
- 以預訓練的向量初始化
- 僅僅通過一個小集合資料反向傳播,其他不變
- 在最大池化之前兩個通道的資料加起來變成ci
- 在一個卷積層之後的分類
在最大池化之前是一個卷積層
擷取最終的特征向量:
假設有m個核
之後是softmax層:
論文的模型:region size是2,3,4時分别取了兩個不同的核進行過濾,得到的結果拼接起來
Zhang and Wallace (2015) A Sensitivity
Analysis of (and Practitioners’ Guide to) Convolutional Neural Networks for Sentence Classification
正則化:
使用dropout。droup的原理和使用在另一篇部落格裡講了
添加L2正則化限制
在Kim中的所有超參數
基于驗證集找超參數
非線性化:ReLU
過濾器的視窗尺寸:3,4,5
每個過濾器尺寸有100個特征映射
dropout中 p=5,提升了2%-4%的準确率
L2對softmax中的行的限制了s,s=3
随機梯度下降的最小的批處理大小為:50
詞向量:使用word2vec預訓練詞向量,k=300
在訓練的時候檢查在驗證集上的性能,選擇最高的準确度權重
模型比較:日益增長的工具包
- 向量詞袋:對于單個分類問題效果挺好,特别是加了ReLU層之後
- 視窗模型:對不需要廣泛的向下文的單個單詞分類問題效果很好,比如POS, NER
- CNN:對分類效果很好,對于短文本需要0填充,很難解釋,容易在GPUs上并行計算,效率高而且用途廣泛
- RNN:從左邊讀到右邊,有認知不全的問題,對分類效果不是很好(如果僅僅使用最後一個狀态的話),比cnn慢,對語言模型效果很好,加入了注意力機制之後效果很好
加入直接連接配接的門控單元
在LSTM和GRU中使用的跳躍連接配接被被廣泛使用,對深度神經網絡來說效果很好
批标準化
經常在RNN中使用
通過将激活量縮放為零均值和機關方差來轉換卷積層的批輸出,這個和資料進行中的Z-轉換類似
這個方法使得模型對參數初始化不那麼敏感,因為輸出自動縮放了,它還傾向于簡化學習速度的調整
- PyTorch: nn.BatchNorm1d
1x1的卷積
這個概念有意義嗎?有
卷積核為1x1
能減少通道的數量
CNN的應用:翻譯
使用cnn作為編碼器,rnn作為解碼器
為部分演講标記學習特征層的表示
六、RNN比較慢
因為RNN是串行的是以比較慢,可以将RNN和CNN結合起來
Quasi-Recurrent Netural Network
将兩個模型的優點集合起來
比LSTM更快和更好
更多的可解釋性
缺點:
在字元級沒有LSTM效果好,對長依賴處理不好
需要更深的網絡層,但是仍然很快
我們想要并行化,但是RNNs本質上是順序的
盡管有GRUs和LSTMs, RNNs仍然從處理遠端依賴關系的注意機制中獲益——狀态之間的路徑長度随順序增長
但如果注意力能讓我們進入任何一個狀态……也許我們不需要RNN?