深度学习(三)——Autoencoder, 词向量
https://antkillerfarm.github.io/
粗看起來,這類恒等變換沒有太大意義。然而這類恒等變換之所以能夠成立,最根本的地方在于,隱藏層的神經元具有表達輸出樣本的能力,也就是用低維表達高維的能力。反過來,我們就可以利用這一點,實現數據的降維操作。
但是,不是所有的數據都能夠降維,而這種情況通常會導致Autoencoder的訓練失敗。
和Autoencoder類似的神經網絡還有:Denoising Autoencoder(DAE)、Variational Autoencoder(VAE)、Sparse Autoencoder(SAE)。
參考:
http://ufldl.stanford.edu/tutorial/unsupervised/Autoencoders/
http://blog.csdn.net/changyuanchn/article/details/15681853
深度學習之autoencoder
http://www.cnblogs.com/neopenx/p/4370350.html
降噪自動編碼器(Denoising Autoencoder)
https://zhuanlan.zhihu.com/p/27549418
花式解釋AutoEncoder與VAE
https://mp.weixin.qq.com/s/lODy8ucB3Bw9Y1sy1NxTJg
無監督學習中的兩個非概率模型:稀疏編碼與自編碼器
詞向量
One-hot Representation
NLP是ML和DL的重要研究領域。但是多數的ML或DL算法都是針對數值進行計算的,因此如何將自然語言中的文本表示為數值,就成為了一個重要的基礎問題。
詞向量顧名思義就是單詞的向量化表示。最簡單的詞向量表示法當屬One-hot Representation:
假設語料庫的單詞表中有N個單詞,則詞向量可表示為N維向量[0,…,0,1,0,…,0]
這種表示法由于N維向量中只有一個非零元素,故名。該非零元素的序號,就是所表示的單詞在單詞表中的序號。
One-hot Representation的缺點在于:
1.該表示法中,由于任意兩個單詞的詞向量都是正交的,因此無法反映單詞之間的語義相似度。
2.一個詞庫的大小是105以上的量級。維度過高,會妨礙神經網絡學習到稀疏特征。
Word Embedding
針對One-hot Representation的不足,Bengio提出了Distributed Representation,也稱為Word Embedding。
Word Embedding的思路如上圖所示,即想辦法將高維的One-hot詞向量映射到低維的語義空間中。
Bengio自己提出了一種基于神經網絡的Word Embedding的方案,然而由于計算量過大,目前已經被淘汰了。
參考:
http://www.cnblogs.com/neopenx/p/4570648.html
詞向量概況
word2vec
除了Bengio方案之外,早期人們還嘗試過基于共生矩陣(Co-occurrence Matrix)SVD分解的Word Embedding方案。該方案對于少量語料有不錯的效果,但一旦語料增大,計算量即呈指數級上升。
這類方案的典型是Latent Semantic Analysis(LSA)。參見《機器學習(二十一)》。
Tomas Mikolov于2013年對Bengio方案進行了簡化改進,提出了目前最為常用的word2vec方案。
介紹word2vec的數學原理比較好的有:
《Deep Learning實戰之word2vec》,網易有道的鄧澍軍、陸光明、夏龍著。
《word2vec中的數學》,peghoty著。該書的網頁版:
http://blog.csdn.net/itplus/article/details/37969519
老慣例這里只對最重要的內容進行摘要。
CBOW & Skip-gram
上圖是word2vec中使用到的兩種模型的示意圖。
從圖中可知,word2vec雖然使用了神經網絡,但是從層數來說,只有3層而已,還談不上是Deep Learning。但是考慮到DL,基本就是神經網絡的同義詞,因此這里仍然將word2vec歸為DL的范疇。
注:深度學習不全是神經網絡,周志華教授提出的gcForest就是一個有益的另類嘗試。
研究一個神經網絡模型,最重要的除了神經元之間的連接關系之外,就是神經網絡的輸入輸出了。
CBOW(Continuous Bag-of-Words Model)模型和Skip-gram(Continuous Skip-gram Model)模型脫胎于n-gram模型,即一個詞出現的概率只與它前后的n個詞有關。這里的n也被稱為窗口大小.
上圖中,窗口大小為5,即一個中心詞{wt}+前面的兩個詞{wt?1,wt?2}+后面的兩個詞{wt+1,wt+2}。
| 輸入 | {wt?1,wt?2,wt+1,wt+2} | {wt} |
| 輸出 | {wt} | {wt?1,wt?2,wt+1,wt+2} |
| 目標 | 在輸入確定的情況下,最大化輸出值的概率。 | 在輸入確定的情況下,最大化輸出值的概率。 |
Hierarchical Softmax
word2vec的輸出層有兩種模型:Hierarchical Softmax和Negative Sampling。
Softmax是DL中常用的輸出層結構,它表征多分類中的每一個分類所對應的概率。
然而在這里,每個分類表示一個單詞,即:分類的個數=詞匯表的單詞個數。如此眾多的分類直接映射到隱層,顯然并不容易訓練出有效特征。
Hierarchical Softmax是Softmax的一個變種。這時的輸出層不再是一個扁平的多分類層,而變成了一個層次化的二分類層。
Hierarchical Softmax一般基于Huffman編碼構建。在本例中,我們首先統計詞頻,以獲得每個詞所對應的Huffman編碼,然后輸出層會利用Huffman編碼所對應的層次二叉樹的路徑來計算每個詞的概率,并逆傳播到隱藏層。
由Huffman編碼的特性可知,Hierarchical Softmax的計算量要小于一般的Softmax。
Negative Sampling
在CBOW模型中,已知w的上下文Context(w)需要預測w,則w就是正樣本,而其他詞是負樣本。
負樣本那么多,該如何選取呢?Negative Sampling就是一種對負樣本采樣的方法。
上圖是Negative Sampling的原理圖。L軸表示的是詞頻分布,很明顯這是一個非等距剖分。而M軸是一個等距剖分。
每次生成一個M軸上的隨機數,將之映射到L軸上的一個單詞。映射方法如上圖中的虛線所示。
除了word2vec之外,類似的Word Embedding方案還有SENNA、RNN-LM、Glove等。但影響力仍以word2vec最大。
Skip-Gram Negative Sampling,又被簡稱為SGNS。
doc2vec
我們知道,word是sentence的基本組成單位。一個最簡單也是最直接得到sentence embedding的方法是將組成sentence的所有word的embedding向量全部加起來。
顯然,這種簡單粗暴的方法會丟失很多信息。
doc2vec是Mikolov在word2vec的基礎上提出的一種生成句子向量的方法。
論文:
《Distributed Representations of Sentences and Documents》
http://cs.stanford.edu/~quocle/paragraph_vector.pdf
上圖是doc2vec的框架圖,可以看出doc2vec的原理與word2vec基本一致,區別僅在于前者多出來一個Paragraph Vector參與CBOW或Skip-gram的訓練。
Paragraph Vector可以和Word Vector一起生成,也可以單獨生成,也就是訓練時,采用預訓練的Word Vector,并只改變Paragraph Vector的值。
https://www.zhihu.com/question/33952003
如何通過詞向量技術來計算2個文檔的相似度?
FastText
Word2Vec作者Mikolov加盟Facebook之后,提出了文本分類新作FastText。
FastText模型架構和Word2Vec中的CBOW模型很類似。不同之處在于,FastText預測標簽,而CBOW模型預測中間詞。
http://www.algorithmdog.com/fast-fasttext
Github:
https://github.com/facebookresearch/fastText
Item2Vec
本質上,word2vec模型是在word-context的co-occurrence矩陣基礎上建立起來的。因此,任何基于co-occurrence矩陣的算法模型,都可以套用word2vec算法的思路加以改進。
比如,推薦系統領域的協同過濾算法。
協同過濾算法是建立在一個user-item的co-occurrence矩陣的基礎上,通過行向量或列向量的相似性進行推薦。如果我們將同一個user購買的item視為一個context,就可以建立一個item-context的矩陣。進一步的,可以在這個矩陣上借鑒CBoW模型或Skip-gram模型計算出item的向量表達,在更高階上計算item間的相似度。
論文:
《Item2Vec: Neural Item Embedding for Collaborative Filtering》
word2vec/doc2vec的缺點
1.word2vec/doc2vec基于BOW(Bag Of Word,詞袋)模型。該模型的特點是忽略詞序,因此對于那些交換詞序會改變含義的句子,無法準確評估它們的區別。
總結
以上是生活随笔為你收集整理的深度学习(三)——Autoencoder, 词向量的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网络杂谈, Docker, MongoD
- 下一篇: 深度学习(四)——RNN, LSTM,