CS224d-Day 1:
要開(kāi)始系統(tǒng)地學(xué)習(xí) NLP 課程 cs224d,今天先來(lái)一個(gè)課程概覽榜揖。
課程一共有16節(jié)浑厚,先對(duì)每一節(jié)中提到的模型,算法根盒,工具有個(gè)總體的認(rèn)識(shí)钳幅,知道都有什么,以及它們可以做些什么事情炎滞。
簡(jiǎn)介:
1. Intro to NLP and Deep Learning
NLP:
Natural Language Processing (自然語(yǔ)言處理)的目的敢艰,就是讓計(jì)算機(jī)能‘懂得’人類(lèi)對(duì)它‘說(shuō)’的話(huà),然后去執(zhí)行一些指定的任務(wù)册赛。
這些任務(wù)有什么呢钠导?
Easy:
? Spell Checking--拼寫(xiě)檢查
? Keyword Search--關(guān)鍵詞提取&搜索
? Finding Synonyms--同義詞查找&替換
Medium:
? Parsing information from websites, documents, etc.--從網(wǎng)頁(yè)中提取有用的信息例如產(chǎn)品價(jià)格,日期森瘪,地址牡属,人名或公司名等
Hard:
? Machine Translation (e.g. Translate Chinese text to English)--自動(dòng)的或輔助的翻譯技術(shù)
? Semantic Analysis (What is the meaning of query statement?)--市場(chǎng)營(yíng)銷(xiāo)或者金融交易領(lǐng)域的情感分析
? Coreference (e.g. What does "he" or "it" refer to given a document?)
? Question Answering (e.g. Answering Jeopardy questions).--復(fù)雜的問(wèn)答系統(tǒng)
NLP的難點(diǎn):
- 情境多樣
- 語(yǔ)言歧義
Deep Learning:
深度學(xué)習(xí)是機(jī)器學(xué)習(xí)的一個(gè)分支,嘗試自動(dòng)的學(xué)習(xí)合適的特征及其表征扼睬,嘗試學(xué)習(xí)多層次的表征以及輸出逮栅。
它在NLP的一些應(yīng)用領(lǐng)域上有顯著的效果,例如機(jī)器翻譯窗宇,情感分析措伐,問(wèn)答系統(tǒng)等。
和傳統(tǒng)方法相比军俊,深度學(xué)習(xí)的重要特點(diǎn)侥加,就是用向量表示各種級(jí)別的元素,傳統(tǒng)方法會(huì)用很精細(xì)的方法去標(biāo)注粪躬,深度學(xué)習(xí)的話(huà)會(huì)用向量表示 單詞担败,短語(yǔ),邏輯表達(dá)式和句子镰官,然后搭建多層神經(jīng)網(wǎng)絡(luò)去自主學(xué)習(xí)提前。
這里有簡(jiǎn)明扼要的對(duì)比總結(jié)。
向量表示:
詞向量:
One-h(huán)ot 向量:
記詞典里有 |V| 個(gè)詞朋魔,每個(gè)詞都被表示成一個(gè) |V| 維的向量岖研,設(shè)這個(gè)詞在字典中相應(yīng)的順序?yàn)?i卿操,則向量中 i 的位置上為 1警检,其余位置為 0.詞-文檔矩陣:
構(gòu)建一個(gè)矩陣 X孙援,每個(gè)元素 Xij 代表 單詞 i 在文檔 j 中出現(xiàn)的次數(shù)。詞-詞共現(xiàn)矩陣:
構(gòu)建矩陣 X扇雕,每個(gè)元素 Xij 代表 單詞 i 和單詞 j 在同一個(gè)窗口中出現(xiàn)的次數(shù)拓售。
模型算法:
2. Simple Word Vector representations: word2vec, GloVe
word2vec:
word2vec是一套能將詞向量化的工具,Google在13年將其開(kāi)源镶奉,代碼可以見(jiàn) https://github.com/burness/word2vec 础淤,它將文本內(nèi)容處理成為指定維度大小的實(shí)數(shù)型向量表示,并且其空間上的相似度可以用來(lái)表示文本語(yǔ)義的相似度哨苛。
Word2vec的原理主要涉及到統(tǒng)計(jì)語(yǔ)言模型(包括N-gram模型和神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型)鸽凶,continuousbag-of-words 模型以及 continuous skip-gram 模型。
-
N-gram的意思就是每個(gè)詞出現(xiàn)只看其前面的n個(gè)詞建峭,可以對(duì)每個(gè)詞出現(xiàn)的概率進(jìn)行近似玻侥。
比如當(dāng)n=2的時(shí)候:
- 神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型(NNLM)用特征向量來(lái)表征每個(gè)詞各個(gè)方面的特征。NNLM的基礎(chǔ)是一個(gè)聯(lián)合概率:
其神經(jīng)網(wǎng)絡(luò)的目的是要學(xué)習(xí):
- Continuous Bag-of-Words(CBOW) 模型與NNLM類(lèi)似亿蒸,結(jié)構(gòu)如下:
CBOW是通過(guò)上下文來(lái)預(yù)測(cè)中間的詞凑兰,如果窗口大小為k,則模型預(yù)測(cè):
其神經(jīng)網(wǎng)絡(luò)就是用正負(fù)樣本不斷訓(xùn)練边锁,求解輸出值與真實(shí)值誤差姑食,然后用梯度下降的方法求解各邊權(quán)重參數(shù)值的。
- Continuous skip-gram 模型與CBOW正好相反茅坛,是通過(guò)中間詞來(lái)預(yù)測(cè)前后詞音半,一般可以認(rèn)為位置距離接近的詞之間的聯(lián)系要比位置距離較遠(yuǎn)的詞的聯(lián)系緊密。目標(biāo)為最大化:
結(jié)構(gòu)為:
應(yīng)用:
- 同義詞查找贡蓖,
- 文本聚類(lèi)祟剔,實(shí)現(xiàn)方法:用關(guān)鍵詞來(lái)表征文本。關(guān)鍵詞提取用TF-IDF摩梧,然后用word2vec訓(xùn)練得到關(guān)鍵詞向量物延,再用k-means聚類(lèi),最后文本就能夠以關(guān)鍵詞的類(lèi)別進(jìn)行分類(lèi)了仅父。
- 文本類(lèi)別投遞叛薯,實(shí)現(xiàn)方法:人工標(biāo)記出該詞屬于各個(gè)類(lèi)別的概率,出全體詞屬于各個(gè)類(lèi)別的概率笙纤。
Glove:
Global Vectors 的目的就是想要綜合前面講到的 word-document 和 word-windows 兩種表示方法耗溜,做到對(duì)word的表示即 sementic 的表達(dá)效果好,syntactic 的表達(dá)效果也好:
3. Advanced word vector representations: language models, softmax, single layer networks
softmax:
softmax 模型是 logistic 模型在多分類(lèi)問(wèn)題上的推廣省容, logistic 回歸是針對(duì)二分類(lèi)問(wèn)題的抖拴,類(lèi)標(biāo)記為{0, 1}。在softmax模型中阿宅,label可以為k個(gè)不同的值候衍。
4. Neural Networks and backpropagation -- for named entity recognition
5. Project Advice, Neural Networks and Back-Prop (in full gory detail)
Neural Networks:
神經(jīng)網(wǎng)絡(luò)是受生物學(xué)啟發(fā)的分類(lèi)器,可以學(xué)習(xí)更復(fù)雜的函數(shù)和非線性決策邊界洒放。
模型調(diào)優(yōu):
6. Practical tips: gradient checks, overfitting, regularization, activation functions, details
UFLDL:Unsupervised Feature Learning and Deep Learning
Gradient Checking(梯度檢測(cè)):
反向傳播因?yàn)榧?xì)節(jié)太多蛉鹿,往往會(huì)導(dǎo)致一些小的錯(cuò)誤,尤其是和梯度下降法或者其他優(yōu)化算法一起運(yùn)行時(shí)往湿,看似每次 J(Θ) 的值在一次一次迭代中減小妖异,但神經(jīng)網(wǎng)絡(luò)的誤差可能會(huì)大過(guò)實(shí)際正確計(jì)算的結(jié)果。
針對(duì)這種小的錯(cuò)誤领追,有一種梯度檢驗(yàn)(Gradient checking)的方法他膳,通過(guò)數(shù)值梯度檢驗(yàn),你能肯定確實(shí)是在正確地計(jì)算代價(jià)函數(shù)(Cost Function)的導(dǎo)數(shù)绒窑。
GC需要對(duì)params中的每一個(gè)參數(shù)進(jìn)行check矩乐,也就是依次給每一個(gè)參數(shù)一個(gè)極小量。
overfitting:
就是訓(xùn)練誤差Ein很小回论,但是實(shí)際的真實(shí)誤差就可能很大散罕,也就是模型的泛化能力很差(bad generalization)
發(fā)生overfitting 的主要原因是:(1)使用過(guò)于復(fù)雜的模型(dvc 很大);(2)數(shù)據(jù)噪音傀蓉;(3)有限的訓(xùn)練數(shù)據(jù)欧漱。
regularization:
為了提高模型的泛化能力,最常見(jiàn)方法便是:正則化葬燎,即在對(duì)模型的目標(biāo)函數(shù)(objective function)或代價(jià)函數(shù)(cost function)加上正則項(xiàng)误甚。
平臺(tái):
7. Introduction to Tensorflow
Tensorflow:
Tensorflow 是 python 封裝的深度學(xué)習(xí)庫(kù),非常容易上手谱净,對(duì)分布式系統(tǒng)支持比 Theano 好窑邦,同時(shí)還是 Google 提供資金研發(fā)的
在Tensorflow里:
- 使用張量(tensor)表示數(shù)據(jù).
- 使用圖(graph)來(lái)表示計(jì)算任務(wù).
- 在被稱(chēng)之為會(huì)話(huà)(Session)的上下文 (context)中執(zhí)行圖.
- 通過(guò)變量 (Variable)維護(hù)狀態(tài).
- 使用feed和fetch可以為任意的操作(arbitrary operation)賦值或者從其中獲取數(shù)據(jù).
TensorFlow 算是一個(gè)編程系統(tǒng),它使用圖來(lái)表示計(jì)算任務(wù)壕探,圖中的節(jié)點(diǎn)被稱(chēng)之為operation(可以縮寫(xiě)成op)冈钦,一個(gè)節(jié)點(diǎn)獲得0個(gè)或者多個(gè)張量(tensor,下文會(huì)介紹到)李请,執(zhí)行計(jì)算瞧筛,產(chǎn)生0個(gè)或多個(gè)張量。
模型與應(yīng)用:
8. Recurrent neural networks -- for language modeling and other tasks
RNN:
在深度學(xué)習(xí)領(lǐng)域导盅,傳統(tǒng)的前饋神經(jīng)網(wǎng)絡(luò)(feed-forward neural net较幌,簡(jiǎn)稱(chēng)FNN)具有出色的表現(xiàn)。
在前饋網(wǎng)絡(luò)中白翻,各神經(jīng)元從輸入層開(kāi)始乍炉,接收前一級(jí)輸入,并輸入到下一級(jí),直至輸出層岛琼。整個(gè)網(wǎng)絡(luò)中無(wú)反饋底循,可用一個(gè)有向無(wú)環(huán)圖表示。
不同于傳統(tǒng)的FNNs衷恭,RNNs引入了定向循環(huán),能夠處理那些輸入之間前后關(guān)聯(lián)的問(wèn)題纯续。定向循環(huán)結(jié)構(gòu)如下圖所示:
9. GRUs and LSTMs -- for machine translation
傳統(tǒng)的RNN在訓(xùn)練 long-term dependencies 的時(shí)候會(huì)遇到很多困難随珠,最常見(jiàn)的便是 vanish gradient problem。期間有很多種解決這個(gè)問(wèn)題的方法被發(fā)表猬错,大致可以分為兩類(lèi):一類(lèi)是以新的方法改善或者代替?zhèn)鹘y(tǒng)的SGD方法窗看,如Bengio提出的 clip gradient;另一種則是設(shè)計(jì)更加精密的recurrent unit倦炒,如LSTM显沈,GRU。
LSTMs:
長(zhǎng)短期內(nèi)存網(wǎng)絡(luò)(Long Short Term Memory networks)是一種特殊的RNN類(lèi)型逢唤,可以學(xué)習(xí)長(zhǎng)期依賴(lài)關(guān)系拉讯。
LSTMs 刻意的設(shè)計(jì)去避免長(zhǎng)期依賴(lài)問(wèn)題。記住長(zhǎng)期的信息在實(shí)踐中RNN幾乎默認(rèn)的行為鳖藕,但是卻需要很大的代價(jià)去學(xué)習(xí)這種能力魔慷。
LSTM同樣也是鏈?zhǔn)浇Y(jié)構(gòu),但是重復(fù)的模型擁有不同的結(jié)構(gòu)著恩,它與單個(gè)的神經(jīng)網(wǎng)層不同院尔,它有四個(gè), 使用非常特別方式進(jìn)行交互喉誊。
GRUs:
Gated Recurrent Unit 也是一般的RNNs的改良版本邀摆,主要是從以下兩個(gè)方面進(jìn)行改進(jìn)。
一是伍茄,序列中不同的位置處的單詞(已單詞舉例)對(duì)當(dāng)前的隱藏層的狀態(tài)的影響不同栋盹,越前面的影響越小,即每個(gè)前面狀態(tài)對(duì)當(dāng)前的影響進(jìn)行了距離加權(quán)敷矫,距離越遠(yuǎn)贞盯,權(quán)值越小。
二是沪饺,在產(chǎn)生誤差error時(shí)躏敢,誤差可能是由某一個(gè)或者幾個(gè)單詞而引發(fā)的,所以應(yīng)當(dāng)僅僅對(duì)對(duì)應(yīng)的單詞weight進(jìn)行更新整葡。
10. Recursive neural networks -- for parsing
11. Recursive neural networks -- for different tasks (e.g. sentiment analysis)
Recursive neural networks:
和前面提到的 Recurrent Neural Network 相比:
recurrent: 時(shí)間維度的展開(kāi)件余,代表信息在時(shí)間維度從前往后的的傳遞和積累,可以類(lèi)比markov假設(shè),后面的信息的概率建立在前面信息的基礎(chǔ)上啼器。
recursive: 空間維度的展開(kāi)旬渠,是一個(gè)樹(shù)結(jié)構(gòu),就是假設(shè)句子是一個(gè)樹(shù)狀結(jié)構(gòu)端壳,由幾個(gè)部分(主語(yǔ)告丢,謂語(yǔ),賓語(yǔ))組成损谦,而每個(gè)部分又可以在分成幾個(gè)小部分岖免,即某一部分的信息由它的子樹(shù)的信息組合而來(lái),整句話(huà)的信息由組成這句話(huà)的幾個(gè)部分組合而來(lái)照捡。
12. Convolutional neural networks -- for sentence classification
Convolutional neural networks:
卷積神經(jīng)網(wǎng)絡(luò)是一種特殊的深層的神經(jīng)網(wǎng)絡(luò)模型颅湘,它的特殊性體現(xiàn)在兩個(gè)方面,一方面它的神經(jīng)元間的連接是非全連接的栗精, 另一方面同一層中某些神經(jīng)元之間的連接的權(quán)重是共享的(即相同的)闯参。它的非全連接和權(quán)值共享的網(wǎng)絡(luò)結(jié)構(gòu)使之更類(lèi)似于生物 神經(jīng)網(wǎng)絡(luò),降低了網(wǎng)絡(luò)模型的復(fù)雜度悲立,減少了權(quán)值的數(shù)量鹿寨。
13. Guest Lecture with Andrew Maas: Speech recognition
14. Guest Lecture with Thang Luong: Machine Translation
大數(shù)據(jù):
15. Guest Lecture with Quoc Le: Seq2Seq and Large Scale DL
Seq2Seq:
seq2seq 是一個(gè)機(jī)器翻譯模型,解決問(wèn)題的主要思路是通過(guò)深度神經(jīng)網(wǎng)絡(luò)模型(常用的是LSTM薪夕,長(zhǎng)短記憶網(wǎng)絡(luò)释移,一種循環(huán)神經(jīng)網(wǎng)絡(luò))將一個(gè)作為輸入的序列映射為一個(gè)作為輸出的序列,這一過(guò)程由編碼輸入與解碼輸出兩個(gè)環(huán)節(jié)組成寥殖。
Encoder:
Decoder:
注意機(jī)制是Seq2Seq中的重要組成部分:
應(yīng)用領(lǐng)域有:機(jī)器翻譯玩讳,智能對(duì)話(huà)與問(wèn)答,自動(dòng)編碼與分類(lèi)器訓(xùn)練等嚼贡。
Large Scale DL:
為了讓 Neural Networks 有更好的效果熏纯,需要更多的數(shù)據(jù),更大的模型粤策,更多的計(jì)算樟澜。
Jeff Dean On Large-Scale Deep Learning At Google
未來(lái)方向:
16. The future of Deep Learning for NLP: Dynamic Memory Networks
dynamic memory network (DMN):
利用 dynamic memory network(DMN)框架可以進(jìn)行 QA(甚至是 Understanding Natural Language)。
這個(gè)框架是由幾個(gè)模塊組成叮盘,可以進(jìn)行 end-to-end 的 training秩贰。其中核心的 module 就是Episodic Memory module,可以進(jìn)行 iterative 的 semantic + reasoning processing柔吼。
有了一個(gè)總體的了解毒费,看的熱血沸騰的,下一次開(kāi)始各個(gè)擊破愈魏!
[cs224d]
Day 1. 深度學(xué)習(xí)與自然語(yǔ)言處理 主要概念一覽
Day 2. TensorFlow 入門(mén)
Day 3. word2vec 模型思想和代碼實(shí)現(xiàn)
Day 4. 怎樣做情感分析
Day 5. CS224d-Day 5: RNN快速入門(mén)
Day 6. 一文學(xué)會(huì)用 Tensorflow 搭建神經(jīng)網(wǎng)絡(luò)
Day 7. 用深度神經(jīng)網(wǎng)絡(luò)處理NER命名實(shí)體識(shí)別問(wèn)題
Day 8. 用 RNN 訓(xùn)練語(yǔ)言模型生成文本
Day 9. RNN與機(jī)器翻譯
Day 10. 用 Recursive Neural Networks 得到分析樹(shù)
Day 11. RNN的高級(jí)應(yīng)用