色屁屁www影院免费观看入口,欧美性猛交ⅹxxx乱大交妖精,欧美激情第5页,欧美性猛交xxxx三人,欧美一a级做爰片大开眼界

達觀動態(tài)

達觀愿與業(yè)內(nèi)同行分享 助力各企業(yè)在大數(shù)據(jù)浪潮來臨之際一起破浪前行

DeepNLP的表示學(xué)習(xí)·詞嵌入來龍去脈·深度學(xué)習(xí)(Deep Learning)·自然語言處理(NLP)·表示(Representation)

 

〇、序
一、DeepNLP的核心關(guān)鍵:語言表示(Representation)
二、NLP詞的表示方法類型

1、詞的獨熱表示one-hot representation
2、詞的分布式表示distributed representation
三、NLP語言模型
四、詞的分布式表示
1. 基于矩陣的分布表示
2. 基于聚類的分布表示
3. 基于神經(jīng)網(wǎng)絡(luò)的分布表示,詞嵌入( word embedding)
五、詞嵌入( word embedding)
1、概念
2、理解
六、神經(jīng)網(wǎng)絡(luò)語言模型與word2vec
1、神經(jīng)網(wǎng)絡(luò)語言模型
2.word2vec與CBOW、Skip-gram
3.個人對word embedding的理解
七、后言
References

 

〇、序
之前一段時間,在結(jié)合深度學(xué)習(xí)做自然語言處理的時候一直有思考一些問題,其中有一個問題算是最核心一個:究竟深度網(wǎng)絡(luò)是怎么做到讓各種NLP任務(wù)解決地如何完美呢?到底我的數(shù)據(jù)在NN中發(fā)什么了什么呢?
并且,不少的terms like: 詞向量、word embedding、分布式表示、word2vec、glove等等,這一鍋粥的名詞術(shù)語分別代表什么,他們具體的關(guān)系是什么,他們是否處于平級關(guān)系?
出于對知識結(jié)構(gòu)追求完整梳理的強迫癥的老毛病,于是不停地查資料、思考、keep revolving……
然后就感覺有一點小進展了。想到,不如將個人對其的理解,無論對錯,先拿出來跟peer分享下,或許能交換出更有意義的東西呢?
整篇文章的構(gòu)架是按照屬于概念在邏輯上的先后大小順序,一層一層一級一級地往下剖析、比較、說明。
另外說明下,here整篇文字內(nèi)容相對是比較入門,甚至有的點可能描述的不太客觀正確,限于當(dāng)前的認知水平……還請您海涵,希望您在評論中指正!

 

一、DeepNLP的核心關(guān)鍵:語言表示(Representation)
最近有一個新名詞:Deep Learning + NLP = ?DeepNLP。當(dāng)常規(guī)的機器學(xué)習(xí)Machine Learning升級發(fā)展到了一定的階段后,慢慢的被后起的深度學(xué)習(xí)Deep Learning奪勢而去,并如火如荼地引領(lǐng)了一波新高潮,因為Deep Learning有machinelearning過而不及之處!那當(dāng)Deep Learning進入自然語言處理領(lǐng)域,自然是要橫掃ACL一批paper才是。事實也是這樣的。
先提下數(shù)據(jù)特征表示問題。數(shù)據(jù)表示是機器學(xué)習(xí)的核心問題,在過去的Machine Learning階段,大量興起特征工程,人工設(shè)計大量的特征解決數(shù)據(jù)的有效表示問題。而到了Deep Learning,想都別想,end-2-end,一步到位,hyper-parameter自動幫你選擇尋找關(guān)鍵的特征參數(shù)。
那么,Deep Learning如何能在自然語言處理中發(fā)揮出應(yīng)有的real power呢?很明顯,先不提如何設(shè)計出很強勢的網(wǎng)絡(luò)結(jié)構(gòu),不提如何在NLP中引入基于NN的解決例如情感分析、實體識別、機器翻譯、文本生成這些高級任務(wù),咱們首先得把語言表示這一關(guān)過了——如何讓語言表示成為NN能夠處理的數(shù)據(jù)類型。
我們看看圖像和語音是怎么表示數(shù)據(jù)的:

?1

在語音中,用音頻頻譜序列向量所構(gòu)成的matrix作為前端輸入喂給NN進行處理,good;在圖像中,用圖片的像素構(gòu)成的matrix展平成vector后組成的vector序列喂給NN進行處理,good;那在自然語言處理中呢?噢你可能知道或者不知道,將每一個詞用一個向量表示出來!想法是挺簡單的,對,事實上就是這么簡單,然而真有這么簡單嗎?可能沒這么簡單。
有人提到,圖像、語音屬于比較自然地低級數(shù)據(jù)表示形式,在圖像和語音領(lǐng)域,最基本的數(shù)據(jù)是信號數(shù)據(jù),我們可以通過一些距離度量,判斷信號是否相似,在判斷兩幅圖片是否相似時,只需通過觀察圖片本身就能給出回答。而語言作為人類在進化了幾百萬年所產(chǎn)生的一種高層的抽象的思維信息表達的工具,其具有高度抽象的特征,文本是符號數(shù)據(jù),兩個詞只要字面不同,就難以刻畫它們之間的聯(lián)系,即使是“麥克風(fēng)”和“話筒”這樣的同義詞,從字面上也難以看出這兩者意思相同(語義鴻溝現(xiàn)象),可能并不是簡單地一加一那么簡單就能表示出來,而判斷兩個詞是否相似時,還需要更多的背景知識才能做出回答。
那么據(jù)上是不是可以自信地下一個結(jié)論呢:如何有效地表示出語言句子是決定NN能發(fā)揮出強大擬合計算能力的關(guān)鍵前提!

 

二、NLP詞的表示方法類型
接下來將按照上面的思路,引出各種詞的表示方法。按照現(xiàn)今目前的發(fā)展,詞的表示分為獨熱表示one-hot、分布式表示distributed。
1、詞的獨熱表示one-hot representation
NLP 中最直觀,也是到目前為止最常用的詞表示方法是 One-hot Representation,這種方法把每個詞表示為一個很長的向量。這個向量的維度是詞表大小,其中絕大多數(shù)元素為 0,只有一個維度的值為 1,這個維度就代表了當(dāng)前的詞。關(guān)于one-hot編碼的資料很多,街貨,這里簡單舉個栗子說明:
“話筒”表示為 [0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 …]
“麥克”表示為 [0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 …]

每個詞都是茫茫 0 海中的一個 1。這種 One-hot Representation 如果采用稀疏方式存儲,會是非常的簡潔:也就是給每個詞分配一個數(shù)字 ID。比如剛才的例子中,話筒記為 3,麥克記為 8(假設(shè)從 0 開始記)。如果要編程實現(xiàn)的話,用 Hash 表給每個詞分配一個編號就可以了。這么簡潔的表示方法配合上最大熵、SVM、CRF 等等算法已經(jīng)很好地完成了自然語言處理領(lǐng)域的各種主流任務(wù)。
現(xiàn)在我們分析他的不當(dāng)處。1、向量的維度會隨著句子的詞的數(shù)量類型增大而增大;2、任意兩個詞之間都是孤立的,根本無法表示出在語義層面上詞語詞之間的相關(guān)信息,而這一點是致命的。


2、詞的分布式表示distributed representation

傳統(tǒng)的獨熱表示( one-hot representation)僅僅將詞符號化,不包含任何語義信息。如何將語義融入到詞表示中?Harris 在 1954 年提出的分布假說( distributional hypothesis)為這一設(shè)想提供了理論基礎(chǔ):上下文相似的詞,其語義也相似。Firth 在 1957 年對分布假說進行了進一步闡述和明確:詞的語義由其上下文決定( a word is characterized by thecompany it keeps)。
到目前為止,基于分布假說的詞表示方法,根據(jù)建模的不同,主要可以分為三類:基于矩陣的分布表示、基于聚類的分布表示和基于神經(jīng)網(wǎng)絡(luò)的分布表示。盡管這些不同的分布表示方法使用了不同的技術(shù)手段獲取詞表示,但由于這些方法均基于分布假說,它們的核心思想也都由兩部分組成:一、選擇一種方式描述上下文;二、選擇一種模型刻畫某個詞(下文稱“目標(biāo)詞”)與其上下文之間的關(guān)系。

 

三、NLP語言模型
在詳細介紹詞的分布式表示之前,需要將自然語言處理中的一個關(guān)鍵概念描述清楚:語言模型。語言模型包括文法語言模型和統(tǒng)計語言模型。一般我們指的是統(tǒng)計語言模型。之所以要將語言模型擺在詞表示方法之前,是因為后面的表示方法馬上要用到這一概念。
統(tǒng)計語言模型: 統(tǒng)計語言模型把語言(詞的序列)看作一個隨機事件,并賦予相應(yīng)的概率來描述其屬于某種語言集合的可能性。給定一個詞匯集合 V,對于一個由 V 中的詞構(gòu)成的序列S = ?w1, · · · , wT ? ∈ Vn,統(tǒng)計語言模型賦予這個序列一個概率P(S),來衡量S 符合自然語言的語法和語義規(guī)則的置信度。
用一句簡單的話說,就語言模型就是計算一個句子的概率大小的這種模型。有什么意義呢?一個句子的打分概率越高,越說明他是更合乎人說出來的自然句子。
就是這么簡單。常見的統(tǒng)計語言模型有N元文法模型(N-gram Model),最常見的是unigram model、bigram model、trigram model等等。形式化講,統(tǒng)計語言模型的作用是為一個長度為 m 的字符串確定一個概率分布 P(w1; w2; :::; wm),表示其存在的可能性,其中 w1 到 wm 依次表示這段文本中的各個詞。一般在實際求解過程中,通常采用下式計算其概率值:

?3

同時通過這些方法均也可以保留住一定的詞序信息,這樣就能把一個詞的上下文信息capture住。
具體的語言模型詳情屬于街貨,詳細請自行搜索。

 

四、詞的分布式表示
1. 基于矩陣的分布表示
基于矩陣的分布表示通常又稱為分布語義模型,在這種表示下,矩陣中的一行,就成為了對應(yīng)詞的表示,這種表示描述了該詞的上下文的分布。由于分布假說認為上下文相似的詞,其語義也相似,因此在這種表示下,兩個詞的語義相似度可以直接轉(zhuǎn)化為兩個向量的空間距離。
常見到的Global Vector 模型( GloVe模型)是一種對“詞-詞”矩陣進行分解從而得到詞表示的方法,屬于基于矩陣的分布表示。

2. 基于聚類的分布表示
基于聚類的分布表示我也還不是太清楚,所以就不做具體描述。

3. 基于神經(jīng)網(wǎng)絡(luò)的分布表示,詞嵌入( word embedding)
基于神經(jīng)網(wǎng)絡(luò)的分布表示一般稱為詞向量、詞嵌入( word embedding)或分布式表示( distributed representation)。這正是我們的主角today。
神經(jīng)網(wǎng)絡(luò)詞向量表示技術(shù)通過神經(jīng)網(wǎng)絡(luò)技術(shù)對上下文,以及上下文與目標(biāo)詞之間的關(guān)系進行建模。由于神經(jīng)網(wǎng)絡(luò)較為靈活,這類方法的最大優(yōu)勢在于可以表示復(fù)雜的上下文。在前面基于矩陣的分布表示方法中,最常用的上下文是詞。如果使用包含詞序信息的 n-gram 作為上下文,當(dāng) n 增加時, n-gram 的總數(shù)會呈指數(shù)級增長,此時會遇到維數(shù)災(zāi)難問題。而神經(jīng)網(wǎng)絡(luò)在表示 n-gram 時,可以通過一些組合方式對 n 個詞進行組合,參數(shù)個數(shù)僅以線性速度增長。有了這一優(yōu)勢,神經(jīng)網(wǎng)絡(luò)模型可以對更復(fù)雜的上下文進行建模,在詞向量中包含更豐富的語義信息。

 

五、詞嵌入( word embedding)
1、概念
? ? ? ??基于神經(jīng)網(wǎng)絡(luò)的分布表示又稱為詞向量、詞嵌入,神經(jīng)網(wǎng)絡(luò)詞向量模型與其它分布表示方法一樣,均基于分布假說,核心依然是上下文的表示以及上下文與目標(biāo)詞之間的關(guān)系的建模。
前面提到過,為了選擇一種模型刻畫某個詞(下文稱“目標(biāo)詞”)與其上下文之間的關(guān)系,我們需要在詞向量中capture到一個詞的上下文信息。同時,上面我們恰巧提到了統(tǒng)計語言模型正好具有捕捉上下文信息的能力。那么構(gòu)建上下文與目標(biāo)詞之間的關(guān)系,最自然的一種思路就是使用語言模型。從歷史上看,早期的詞向量只是神經(jīng)網(wǎng)絡(luò)語言模型的副產(chǎn)品。
2001年, Bengio 等人正式提出神經(jīng)網(wǎng)絡(luò)語言模型( Neural Network Language Model ,NNLM),該模型在學(xué)習(xí)語言模型的同時,也得到了詞向量。所以請注意一點:詞向量可以認為是神經(jīng)網(wǎng)絡(luò)訓(xùn)練語言模型的副產(chǎn)品。
2、理解
前面提過,one-hot表示法具有維度過大的缺點,那么現(xiàn)在將vector做一些改進:1、將vector每一個元素由整形改為浮點型,變?yōu)檎麄€實數(shù)范圍的表示;2、將原來稀疏的巨大維度壓縮嵌入到一個更小維度的空間。如圖示:

?2

這也是詞向量又名詞嵌入的緣由了。

 

六、神經(jīng)網(wǎng)絡(luò)語言模型與word2vec
好了,到目前為止我們已經(jīng)對的分布式表示以及詞嵌入的概念的層級關(guān)系有了個理性的認識了,那這跟word2vec有什么聯(lián)系?
1、神經(jīng)網(wǎng)絡(luò)語言模型
上面說,通過神經(jīng)網(wǎng)絡(luò)訓(xùn)練語言模型可以得到詞向量,那么,究竟有哪些類型的神經(jīng)網(wǎng)絡(luò)語言模型呢?個人所知,大致有這么些個:
a)?Neural Network Language Model ,NNLM
b)?Log-Bilinear Language Model, LBL
c)?Recurrent Neural Network based Language Model,RNNLM
d)?Collobert 和 Weston 在2008 年提出的 C&W 模型
e)?Mikolov 等人提出了 CBOW( Continuous Bagof-Words)和 Skip-gram 模型
到這,估計有人看到了兩個熟悉的term:CBOW、skip-gram,有看過word2vec的同學(xué)應(yīng)該對此有所了解。我們繼續(xù)。


2.word2vec與CBOW、Skip-gram

現(xiàn)在我們正式引出最火熱的另一個term:word2vec。
上面提到的5個神經(jīng)網(wǎng)絡(luò)語言模型,只是個在邏輯概念上的東西,那么具體我們得通過設(shè)計將其實現(xiàn)出來,而實現(xiàn)CBOW( Continuous Bagof-Words)和 Skip-gram 語言模型的工具正是well-known word2vec!另外,C&W 模型的實現(xiàn)工具是SENNA。
所以說,分布式詞向量并不是word2vec的作者發(fā)明的,他只是提出了一種更快更好的方式來訓(xùn)練語言模型罷了。分別是:連續(xù)詞袋模型Continous Bag of Words Model(CBOW)和Skip-Gram Model,這兩種都是可以訓(xùn)練出詞向量的方法,再具體代碼操作中可以只選擇其一,不過據(jù)論文說CBOW要更快一些。
順便說說這兩個語言模型。統(tǒng)計語言模型statistical language model就是給你幾個詞,在這幾個詞出現(xiàn)的前提下來計算某個詞出現(xiàn)的(事后)概率。CBOW也是統(tǒng)計語言模型的一種,顧名思義就是根據(jù)某個詞前面的C個詞或者前后C個連續(xù)的詞,來計算某個詞出現(xiàn)的概率。Skip-Gram Model相反,是根據(jù)某個詞,然后分別計算它前后出現(xiàn)某幾個詞的各個概率。
以“我愛北京天安門”這句話為例。假設(shè)我們現(xiàn)在關(guān)注的詞是“愛”,C=2時它的上下文分別是“我”,“北京天安門”。CBOW模型就是把“我” “北京天安門” 的one hot表示方式作為輸入,也就是C個1xV的向量,分別跟同一個VxN的大小的系數(shù)矩陣W1相乘得到C個1xN的隱藏層hidden layer,然后C個取平均所以只算一個隱藏層。這個過程也被稱為線性激活函數(shù)(這也算激活函數(shù)?分明就是沒有激活函數(shù)了)。然后再跟另一個NxV大小的系數(shù)矩陣W2相乘得到1xV的輸出層,這個輸出層每個元素代表的就是詞庫里每個詞的事后概率。輸出層需要跟ground truth也就是“愛”的one hot形式做比較計算loss。這里需要注意的就是V通常是一個很大的數(shù)比如幾百萬,計算起來相當(dāng)費時間,除了“愛”那個位置的元素肯定要算在loss里面,word2vec就用基于huffman編碼的Hierarchical softmax篩選掉了一部分不可能的詞,然后又用nagetive samping再去掉了一些負樣本的詞所以時間復(fù)雜度就從O(V)變成了O(logV)。Skip gram訓(xùn)練過程類似,只不過輸入輸出剛好相反。
補充下,Word embedding的訓(xùn)練方法大致可以分為兩類:一類是無監(jiān)督或弱監(jiān)督的預(yù)訓(xùn)練;一類是端對端(end to end)的有監(jiān)督訓(xùn)練。無監(jiān)督或弱監(jiān)督的預(yù)訓(xùn)練以word2vec和auto-encoder為代表。這一類模型的特點是,不需要大量的人工標(biāo)記樣本就可以得到質(zhì)量還不錯的embedding向量。不過因為缺少了任務(wù)導(dǎo)向,可能和我們要解決的問題還有一定的距離。因此,我們往往會在得到預(yù)訓(xùn)練的embedding向量后,用少量人工標(biāo)注的樣本去fine-tune整個模型。
相比之下,端對端的有監(jiān)督模型在最近幾年里越來越受到人們的關(guān)注。與無監(jiān)督模型相比,端對端的模型在結(jié)構(gòu)上往往更加復(fù)雜。同時,也因為有著明確的任務(wù)導(dǎo)向,端對端模型學(xué)習(xí)到的embedding向量也往往更加準(zhǔn)確。例如,通過一個embedding層和若干個卷積層連接而成的深度神經(jīng)網(wǎng)絡(luò)以實現(xiàn)對句子的情感分類,可以學(xué)習(xí)到語義更豐富的詞向量表達。
3.個人對word embedding的理解
現(xiàn)在,詞向量既能夠降低維度,又能夠capture到當(dāng)前詞在本句子中上下文的信息(表現(xiàn)為前后距離關(guān)系),那么我們對其用來表示語言句子詞語作為NN的輸入是非常自信與滿意的。
另外一點很實用的建議,在你做某一項具體的NLP任務(wù)時如你要用到詞向量,那么我建議你:要么1、選擇使用別人訓(xùn)練好的詞向量,注意,得使用相同語料內(nèi)容領(lǐng)域的詞向量;要么2、自己訓(xùn)練自己的詞向量。我建議是前者,因為……坑太多了。

 

七、后言
說到這里,其實我并沒有想繼續(xù)說下去的打算了,即并沒有打算將word2vec的數(shù)學(xué)原理、詳解啥的統(tǒng)統(tǒng)來一頓講了,因為我發(fā)現(xiàn)網(wǎng)上關(guān)于講解word2vec的文章實在是太多了,多到幾乎所有的文章都是一樣的。所以我也沒有必要再copy一份過來咯。


所以,要詳細了解word2vec、cbow、skip-gram細節(jié)的請您仔細搜索。我相信,在了解了這一系列的前提上下文知識的背景下,你再去讀word2vec相關(guān)的細節(jié)文章時,一定不會感到有多吃力。

另外這也反映出來了一個更大的問題,即網(wǎng)絡(luò)文章缺少critical思維的原創(chuàng)性。
網(wǎng)上隨便一搜“word2vec”、“詞向量”,然后一大堆的關(guān)于word2vec、cbow、skip-gram數(shù)學(xué)公式的講解,并且還都是千篇一律的東西……但最讓人無法理解的是,基本上沒有人去詳細地提一提這些東西他的出現(xiàn)他的存在的上下文、他的發(fā)展的過程、他在整個相關(guān)技術(shù)框架的所處位置等等。這讓我很郁悶……
References:
《How to Generate a Good Word Embedding?》,Siwei Lai, Kang Liu, Liheng Xu, Jun Zhao
《基于神經(jīng)網(wǎng)絡(luò)的詞和文檔語義向量表示方法研究》,來斯惟
《面向自然語言處理的分布式表示學(xué)習(xí)》,邱錫鵬
《Deep?Learning 實戰(zhàn)之 word2vec》

http://www.cnblogs.com/iloveai/p/word2vec.html

word2vec原理推導(dǎo)與代碼分析

Deep Learning in NLP 詞向量和語言模型


https://zhuanlan.zhihu.com/p/22477976
http://blog.csdn.net/itplus/article/details/37969519
http://www.tuicool.com/articles/fmuyamf

《How to Generate a Good Word Embedding?》導(dǎo)讀


http://blog.csdn.net/ycheng_sjtu/article/details/48520293

 

原作者:Scofield_Phil

轉(zhuǎn)載出處:[?Mr.Scofield??http://blog.csdn.net/scotfield_msn/article/details/69075227? ]