學(xué)習(xí)資料參考:從深度學(xué)習(xí)到自然語言處理

學(xué)習(xí)資料參考:從深度學(xué)習(xí)到自然語言處理

</br>

注意:本文已經(jīng)更新,新版結(jié)合深度學(xué)習(xí)簡(jiǎn)介和發(fā)展歷程,給出了更詳盡的學(xué)習(xí)資料參考。新版鏈接:深度學(xué)習(xí)簡(jiǎn)介與學(xué)習(xí)資料參考


本文主要介紹一些與神經(jīng)網(wǎng)絡(luò)自然語言處理相關(guān)的經(jīng)典教程、資料,以便初學(xué)者能有個(gè)比較清晰的學(xué)習(xí)參考。

<a name='from-ml-to-dl'></a>

從機(jī)器學(xué)習(xí)到深度學(xué)習(xí)

深度學(xué)習(xí)脫胎于神經(jīng)網(wǎng)絡(luò),而神經(jīng)網(wǎng)絡(luò)又是一種機(jī)器學(xué)習(xí)的經(jīng)典算法。因此,如果希望從理論上更深刻地掌握深度學(xué)習(xí),建議了解相關(guān)的機(jī)器學(xué)習(xí)知識(shí)。

<a name='ml'></a>

機(jī)器學(xué)習(xí)

Andrew Ng.(吳恩達(dá))的機(jī)器學(xué)習(xí)教程

機(jī)器學(xué)習(xí)入門方面,Ng的教程應(yīng)該算是比較經(jīng)典的資料了。網(wǎng)上有兩種版本的課程資料:

為了與后續(xù)的神經(jīng)網(wǎng)絡(luò)、深度學(xué)習(xí)等知識(shí)進(jìn)一步銜接,建議在學(xué)習(xí)機(jī)器學(xué)習(xí)時(shí),重點(diǎn)關(guān)注這些知識(shí)點(diǎn):

機(jī)器學(xué)習(xí)基本概念(模型 -> 訓(xùn)練 -> 測(cè)試)
有監(jiān)督學(xué)習(xí)與無監(jiān)督學(xué)習(xí)
Linear Regression與Softmax Regression
目標(biāo)函數(shù)的概念,如何訓(xùn)練一個(gè)模型
梯度下降等優(yōu)化算法
過擬合與欠擬合的理解
模型的約束與正則(Regularization)

<a name='dl'></a>

深度學(xué)習(xí)

盡管深度學(xué)習(xí)現(xiàn)在已涌現(xiàn)出多樣的模型,但其最基礎(chǔ)的模型DNN(Deep Neural Network)則脫胎于神經(jīng)網(wǎng)絡(luò)中的MLP(Multi-Layer Perceptron)模型。在學(xué)習(xí)深度學(xué)習(xí)相關(guān)內(nèi)容時(shí),建議先粗略了解下神經(jīng)網(wǎng)絡(luò)的發(fā)展歷史,所謂的三起三落,對(duì)于每次的興起或是衰落,如果能清楚地知道其興衰原因,就能對(duì)神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)有個(gè)宏觀的了解,便于迅速把握其脈絡(luò)。

首先推薦兩個(gè)深度學(xué)習(xí)入門的博客:

  • Deep learning學(xué)習(xí)筆記整理 這篇文章比較詳細(xì)地介紹了神經(jīng)網(wǎng)絡(luò)到深度學(xué)習(xí)的背景知識(shí),特別是從特征學(xué)習(xí)這個(gè)角度講到了深度學(xué)習(xí)的重要意義。文中也涉及到不少常見的深度學(xué)習(xí)模型,這部分簡(jiǎn)要了解即可。
  • 神經(jīng)網(wǎng)絡(luò)淺講:從神經(jīng)元到深度學(xué)習(xí) 這篇文章側(cè)重于從神經(jīng)網(wǎng)絡(luò)歷史發(fā)展的角度,簡(jiǎn)述了神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)相關(guān)的內(nèi)容。

下面介紹幾個(gè)比較經(jīng)典的深度學(xué)習(xí)教程:

Neural Networks and Deep Learning (Michael Nielsen)

這個(gè)資料可以作為神經(jīng)網(wǎng)絡(luò)/深度學(xué)習(xí)的極佳入門資料。因?yàn)槠渲杏胁簧賱?dòng)畫演示,目前暫時(shí)只能在網(wǎng)頁端查看,作者本人也表示并沒有出pdf等版本的打算。該教程以圖像領(lǐng)域經(jīng)典的mnist手寫數(shù)字識(shí)別任務(wù)為例,幾乎是從零開始,介紹了神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)中很重要的一些基本概念。該教程的主要內(nèi)容如下:

1) Using neural nets to recognize handwritten digits
2) How the backpropagation algorithm works
3) Improving the way neural networks learn
4) A visual proof that neural nets can compute any function
5) Why are deep neural networks hard to train?
6) Deep learning

個(gè)人覺得,該教程的主要亮點(diǎn)在于,不依賴任何第三方機(jī)器學(xué)習(xí)的庫(僅使用了numpy),一步步搭建起深度學(xué)習(xí)網(wǎng)絡(luò)模型,對(duì)BP(反向傳播)算法做了比較詳細(xì)的闡釋和推導(dǎo),并且利用case study描述了為什么神經(jīng)網(wǎng)絡(luò)可以從理論上去逼近任何一個(gè)函數(shù)(但并不是數(shù)學(xué)意義上的證明)。

由于該教程立足于入門,因此僅介紹了DNN,并沒有介紹深度學(xué)習(xí)其他眾多的模型,現(xiàn)在經(jīng)常使用的ReLU激活函數(shù)、dropout技術(shù)等都沒有介紹。實(shí)現(xiàn)上,也沒有采用向量化實(shí)現(xiàn)(這會(huì)嚴(yán)重影響程序執(zhí)行效率)。但這并不妨礙該教程成為一個(gè)經(jīng)典的入門材料。學(xué)習(xí)時(shí),建議按照該教程思路,能夠自己將神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)一遍。

誤。。。前幾天重新看了下這個(gè)教程,發(fā)現(xiàn)作者已經(jīng)加入了關(guān)于ReLU, dropout, Theano等不少新的內(nèi)容,力薦這個(gè)教程??!以及,眾網(wǎng)友們合作出了該教程的LaTeX中文版pdf,可以從這里下載。

Stanford UFLDL(Unsupervised Feature Learning and Deep Learning)教程

這個(gè)教程從名字上就強(qiáng)調(diào)了深度學(xué)習(xí)的重要意義——特征學(xué)習(xí)。該教程作者也是Andrew Ng,如果從Ng的機(jī)器學(xué)習(xí)教程入手,再學(xué)習(xí)該教程會(huì)有比較好的連貫性。教程在Stanford官網(wǎng)有個(gè)主頁,如主頁所述,教程有新版,舊版的英文版中文版。新版相對(duì)于舊版,在知識(shí)架構(gòu)了做了比較大的改動(dòng),但具體到詳細(xì)的知識(shí)點(diǎn),差別不是太大。

Deep Learning Tutorials

Deep Learning Tutorials教程是Bengio團(tuán)隊(duì)LISA lab維護(hù)的一個(gè)深度學(xué)習(xí)教程。該教程最大的特色是,使用基于theano工具,將教程中的各個(gè)模型均實(shí)現(xiàn)了一遍,因此很適合詳細(xì)地去了解每個(gè)模型的細(xì)節(jié)。實(shí)際上,theano工具便是該團(tuán)隊(duì)開發(fā)的。學(xué)習(xí)該教程時(shí),建議按照如下的順序(教程主頁已經(jīng)有閱讀順序的建議):

[重要] Machine Learning, Deep Learning and Theano basics
[重要] Logistic Regression -> MLP (Multi-Layer Perceptron) -> Deep CNN (Convolutional Networks)
Auto Encoders -> Stacked DAE (Denoising Autoencoders)
RBM (Restricted Boltzmann Machines) -> DBN (Deep Belief Networks)
Other Models

以上是幾個(gè)比較經(jīng)典的深度學(xué)習(xí)教程。如果希望系統(tǒng)地按照課程學(xué)習(xí)方式來學(xué)習(xí)相關(guān)知識(shí),可以參考Deep Learning大牛Hinton老師的Coursera課程Neural Networks for Machine Learning。值得注意的是,如果僅是服務(wù)于個(gè)人的研究工作的話,里面涉及到的模型不必面面俱到,比如Restricted Boltzmann Machines現(xiàn)在使用的已經(jīng)不是太廣泛了。06年導(dǎo)致Deep Learning火起來的unsupervised layer-wise pre-training方法,也往往可以用良好的初值選取策略、ReLU和dropout等技術(shù)來替代(但并不完全等價(jià))。

<a name='nlp'></a>

自然語言處理

應(yīng)當(dāng)說,Deep Learning最早是在圖像和語音領(lǐng)域火起來的,但近些年的研究也逐漸發(fā)現(xiàn),Deep Learning在NLP (Natural Languang Processing)領(lǐng)域也開始取得可喜的效果。實(shí)際上,圖像、語音、文本,本來就是信息記載的不同載體,Deep Learning能綜合運(yùn)用在這些領(lǐng)域的不同任務(wù)上,不足為怪。這里引用下Deep Learning Tutorials中的一句話:

Deep Learning is about learning multiple levels of representation and abstraction that help to make sense of data such as images, sound, and text.

重要部分我已經(jīng)加粗顯示了。

實(shí)際上,在使用神經(jīng)網(wǎng)絡(luò)技術(shù)之前,NLP的研究經(jīng)歷了從規(guī)則統(tǒng)計(jì)的過程。這段有趣的歷史可以參考吳軍博士的《數(shù)學(xué)之美》中的前7章內(nèi)容。在學(xué)習(xí)Deep Learning應(yīng)用于NLP之前,建議先了解下簡(jiǎn)單的統(tǒng)計(jì)語言模型的知識(shí),包括語言模型n-gram、VSM (Vector Space Model)One-Hot等基本概念。關(guān)于統(tǒng)計(jì)語言模型,可以參考我們是這樣理解語言的-統(tǒng)計(jì)語言模型這篇文章。

Deep Learning for NLP課程推薦:

Stanford University CS224d: Deep Learning for Natural Language Processing

CS224d是專門介紹Deep Learning for NLP的課程,從基本的語言模型、詞的向量表示開始,介紹了深度學(xué)習(xí)的相關(guān)知識(shí),以及在NLP中常見的模型。目前而言,在NLP中常見的模型包括CNN、Recursive NNRecurrent NN模型,尤以卷積、循環(huán)網(wǎng)絡(luò)居多。

<a name='we'></a>

詞嵌入(Word Embeddings)

DL應(yīng)用于NLP,最激動(dòng)人心的成果當(dāng)屬詞嵌入(Word Embeddings)概念的產(chǎn)生了。簡(jiǎn)單來說,就是用一個(gè)低維、稠密的向量來表示一個(gè)word,這種表示是通過神經(jīng)網(wǎng)絡(luò)語言模型學(xué)習(xí)而來的。當(dāng)?shù)玫竭@些詞向量之后,研究者發(fā)現(xiàn)它有著很好的特定,比如蘊(yùn)含語義特征(man-woman $\approx$ king-queen),用這些詞向量代替原來的特征,可以在各種任務(wù)中取得state of art的效果,等等。

此外,詞向量的獲取往往依賴于語言模型,因此便產(chǎn)生了神經(jīng)網(wǎng)絡(luò)語言模型的概念。從2001/2003年Bengio的工作開始,有不少基于神經(jīng)網(wǎng)絡(luò)的語言模型已被提出,也產(chǎn)生了不少開源工具來產(chǎn)生詞向量,如word2vecGloVe等。

詳細(xì)知識(shí)點(diǎn)不再展開,推薦相關(guān)教程、資料如下:

<a name='comp'></a>

語義組合(Semantic Composition)

在獲取詞向量之后,我們得到了word的向量式表示,因此下一個(gè)很自然的問題是,如果利用這些word是表示,獲取更高層次概念(如phrase, sentence, document)的表示,這其中涉及的概念即為語義組合(Semantic Composition)。

目前,常見的語義組合方法可以分為以下4類:

  • 簡(jiǎn)單的加權(quán)組合 如直接拼接、平均或weighted sum等
  • 卷積神經(jīng)網(wǎng)絡(luò)(CNN) 可參考Understanding Convolutional Neural Networks for NLP這篇文章學(xué)習(xí)了解
  • 遞歸神經(jīng)網(wǎng)絡(luò)(Recursive NN) 借助語法樹等樹狀結(jié)構(gòu),Richard Socher等人的研究為主
  • 循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent NN) 借助有記憶單元的神經(jīng)元結(jié)點(diǎn)保存歷史(或未來)的信息,常用的模型是LSTM (Long Short Term Memory)與GRU (Gated Recurrent Unit)。相比于CNN等模型,LSTM與GRU的學(xué)習(xí)可能稍微難一點(diǎn),可以參考知乎-有哪些LSTM(Long Short Term Memory)和RNN(Recurrent)網(wǎng)絡(luò)的教程。

上面的這些模型在CS224d課程中也均有比較詳細(xì)的介紹。

總結(jié)來說,如果希望比較詳細(xì)地了解神經(jīng)網(wǎng)絡(luò)、深度學(xué)習(xí)的細(xì)節(jié),還是需要不少學(xué)習(xí)的。現(xiàn)在很多第三方的庫(如Caffe、Theano、Keras、Lasagne、TensorFlow等)使得許多深度學(xué)習(xí)模型可以快速實(shí)現(xiàn),但這些庫往往屏蔽了諸多算法的細(xì)節(jié)(如BP、Gradient Descent、AdaDelta等),如果希望進(jìn)一步做一些比較深入的工作,對(duì)相關(guān)模型的深入了解還是必不可少的。

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

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

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