版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
前言前工作是點(diǎn)擊率預(yù)測(cè),而之前聽說DeepLearning最大的突破還是在圖像語音領(lǐng)域而在NLP和點(diǎn)擊預(yù)測(cè)方面的突破還不夠大但后來聽說就可以把feature映射到K維向量空間,應(yīng)該可以為現(xiàn)有模型提供的有用信息,基于這個(gè)出發(fā)點(diǎn),作者對(duì)word2vec的相關(guān)代碼和算法做了相關(guān)調(diào)研,本文就是作者關(guān)于word2vec調(diào)研的總結(jié),也是作為自己以后備用。存在疏漏之處, 一、什么是word2vec是在2013年年中開源的一款將詞表征為實(shí)數(shù)值向量的高效工具,采用的模型有CBOW(ContinuousBag-Of-Words,即連續(xù)的詞袋模型)和Skip-Gram兩種。word2vec代碼為:https 遵循ApacheLicense2.0開源協(xié)議,是一種對(duì)商業(yè)應(yīng)好的,當(dāng)然需要充因,可能word2vec的作TomasMikolovDeepLearning背景以及word2vec是模型。當(dāng)然如果word2vec上層再套一層與具體應(yīng)用相關(guān)的輸出層,比如等等。而word2vec廣為傳頌的地方是其向量的加法組合運(yùn)算(AdditiveCompositionality),vector('Paris')-vector('France')+vector('Italy')≈vector('Rome'),vector('king')-vector('man')+vector('woman')≈vector('queen')。但我們認(rèn)為這個(gè)多少有點(diǎn)被過度了,很多其他降維或word2vec也只是少量的例子完美符合這種加減法操作,并不是所有的case都滿足。word2vec大受歡迎的另一個(gè)原因是其高效性,Mikolov在[2]中一個(gè)二、快速代碼:makefilelinux系統(tǒng)就需要把makefile編譯選項(xiàng)中的-Ofast要更改為-O2或者-g(調(diào)試時(shí)用,同時(shí)刪除編譯器無法辨認(rèn)的-march=native和-Wno-unused-result選項(xiàng)。有些系統(tǒng)可能還需要修改相關(guān)的c語言頭文件,具體網(wǎng)上搜搜應(yīng)該可以解決。詞,但不含標(biāo)點(diǎn)符號(hào),一共有1600多萬個(gè)單詞。 ogyvectors.bin即可。相關(guān)結(jié)果如下:整體來看待。distance的相關(guān)測(cè)試如下:三、作者八卦人,TomasMikolovBengioDeepLearningSENNARonanCollobert則是SamyBengio(也是張棟的博士生導(dǎo)師)SamyBengioYoshuaBengio的親弟弟。四、背景知識(shí)詞向量One-hotNLP相關(guān)任務(wù)中最常見的第一步是創(chuàng)建一個(gè)詞表庫(kù)并把每個(gè)詞順序編號(hào)。這為1,其他都為0。當(dāng)然在實(shí)際應(yīng)用中,一般采用稀疏編碼,主要采用詞的其是在DeepLearning相關(guān)的一些應(yīng)用中。DistributedrepresentationHinton1986年提出[8]。其基本思想是K維實(shí)數(shù)向量(K一般為模型中的超參數(shù)word2vec使用的就是這種Distributedrepresentation的詞向量表示方式。統(tǒng)計(jì)語言模型??(s)=??(????)=??(??1,??2,…, ??( ??(??|Context)=??(??
= 計(jì)模型。實(shí)際應(yīng)用中,常被應(yīng)用到一些語音識(shí)別系統(tǒng)中。(2)n-gram模型(Context=?????n+1,?????n+2,n=1n-gramN>=2是n=2Bigram語言模型,直觀的想,在自然語言中“白色汽車”的概率比“白色飛翔”的概率要大很多,也就是p(汽車|白色)>p(飛翔|白色)。n>2也類似,只是往前看n-1個(gè)詞而不是一個(gè)詞。
??(??
,
,…,
,
,…,
n-gramTrigram,就算使用高階的模型,其統(tǒng)計(jì)到的概率可信度就大打折扣,還有一些比較小的問題采用Bigram。算一整句話的概率為0。解決這個(gè)問題有兩種常用方法:k次的某n元組就會(huì)k+1次,原0n元組就會(huì)記為出現(xiàn)1次。這種也稱為L(zhǎng)ace平滑。當(dāng)然還有很多更復(fù)雜的其他平滑方法,其本質(zhì)都n元的概率不到,那就往上回退一步,用n-1元的概率乘上一個(gè)權(quán)重來模擬。(3)n-pos模型(Context=??(?????n+1),??(?????n+2),的語能的。n-pos模型就是基于這種假設(shè)的模型,它將詞按照其語能進(jìn)行分類,由這些詞類決定下一個(gè)詞出現(xiàn)的概率。這樣的詞類稱為詞性??(s)=??(????)=??(??1,??2,…,????)=∏????(????|??(?????n+1),??(?????n+2),…, (1=<K<=Tn-gram中?????n+1,?????n+2,?????1TN-1減少到??(?????n+1)??(?????n+2),??(?????1)KN-1,同時(shí)這種減少還采用了語 上面提到的上下文無關(guān)語言模型、n-gram語言模型、n-pos最大熵原理是E.T.Jayness于上世紀(jì)50年代,其基本思想是:對(duì)一個(gè)??∑??
OnlineLearning的過程,即根據(jù)少量新數(shù)據(jù)動(dòng)態(tài)調(diào)整模NNLMNeuralNetworkLanguageModel的縮寫,即神經(jīng)網(wǎng)絡(luò)語言模型。神DeepLearningBengio的《ANeuralProbabilisticLanguageModelJMLR2003。1??(????,?????1,…,?????n+2,???????+1)=1??(????,?????1,…,?????n+2,???????+1)>∑??(i,?????1,…,?????n+2,???????+1)=?????1的詞向量。g1=1MaxLikelihood=max1∑??????????(????,?????1,…,?????n+2,???????+1;θ)+??(????|?????1,…,?????n+2,???????+1)=∑??=??+????+??tanh(??+b,W,U,dH都是參數(shù),??為輸入,需要主要的是,一般的神經(jīng)網(wǎng)絡(luò)輸入是不需要優(yōu)化,而在這里,??=(??(?????1),??(?????2),…,??(???????+1)),也是需要優(yōu)化的參如果下層原始輸入x不直接連到輸出的b=0,?log??(????|?????1,…,?????n+2,θ←θ+x也是參數(shù)(C中,也是需要優(yōu)化的。優(yōu)化結(jié)束Softmax模型使得概率取值為(0,1)0的情況,也就是自帶平滑,無需傳統(tǒng)n-gram模型中那些復(fù)雜的平滑算法。Bengio在APNews數(shù)據(jù)集上做的對(duì)比實(shí)驗(yàn)也表明他的模型效果比精心設(shè)計(jì)平滑算法的普通n-gram算法要好10%到20%。C&W的M&H的MikolovHuangLog-LinearLog-linearWord2vec所用模型的前身。Log-linearfX
,即將任意的(x,y)K一個(gè)K維的實(shí)數(shù)參數(shù)向量v 。對(duì)任的,,型定的件率為p(y|x;v)
evf(x,yevf(x,yy可以看出,各種n元語言關(guān)系及其變種都可以作為映射函數(shù),當(dāng)然Log-linear模于otherwise分支,即為0,所以計(jì)算上也是可以接受的。Log-Bilinearf(x,y)K維實(shí)數(shù)向量,Log-bilinear模型中則是直接y對(duì)應(yīng)的vy。因?yàn)檩攙vy都是變量,所以這個(gè)模型就log后成雙線性了,因此成Log-bilinear。這樣帶中的層次化Log-bilinear模型。4.6Log-BilinearHinton進(jìn)一步結(jié)合Bengio的層次化概率語言模型[14提出了層次化??(wn=w|w1:n-1)= ??(????|????,??(????|????,??1:???1)= ???其中????????????????Skip-gram采用的是輸入詞input對(duì)應(yīng)的向量,CBOW中是??1:???1n-1個(gè)向量之和,當(dāng)然你還能帶權(quán),你哪天你搞出一個(gè)更好的xxx-gram一點(diǎn)也不稀奇。CBOWContinuousBag-of-WordsModelNNLM類似CBOW去掉了最耗時(shí)的非線性隱層且所有詞共享隱層。如下圖所示??梢钥闯觯珻BOWP(wt|wt-k,wt-(k-1)…,wt-1,wt+1,wt+2…,wt+k)。sentence_positionwordABCDwordA,sentence_position0。b是一0window-1的詞,整個(gè)窗口的大小為(2*window+1–2*bwindow-b個(gè)詞??梢钥闯鲭S著窗口的從左往右滑動(dòng),其大小也是隨機(jī)的3(b=window-1)到2*window+1(b=0)之間隨通,即隨機(jī)值b的大neu1即為隱層向量,也就是上下文(窗口內(nèi)除自己之外的詞)對(duì)應(yīng)vector之和。CBOWSoftmaxNegativeSampling。這一部分Mikolov并沒有在中進(jìn)行闡述,下面的相關(guān)討論均來自于本文作者對(duì)word2vecSoftmaxHuffmanwword2vec首創(chuàng),作者在他之前的[4]和[5]中就有提到。假n(wj)jL(w)j1開n(w1)=root,n(wL(wwjSoftmax定義的Label1code[j]Labelcode[j],得到的向量也差不多,而輸出f為:??=??(??????1???????????=?????????????????????=?(1?????????[??])?????????????????[??]log(1?那么梯度為Gradient =?(1?????????[??])?(1???)???????1+????????[??]????
=?(1?????????[??]???)?Gradient =?(1?????????[??])?(1???)???????1+????????[??]????=?(1?????????[??]???)?需要注意的是,word2vec源碼中的g實(shí)際為負(fù)梯度中公共的部分與Learningratealpha的乘積,Mikolov的注釋有點(diǎn)坑爹,也以改為:’g’istheerrormultipliedbythelearningrate。CBOWNegativeSampling,這種方法的原理說簡(jiǎn)單很簡(jiǎn)單,就是隨機(jī)搞點(diǎn)負(fù)例,說復(fù)雜也很復(fù)雜,Mikolov硬是扯上了一個(gè)理論比較復(fù)雜的NoiseContrastiveEstimation(NCE),感的不妨仔細(xì)研究一下。NegativeSamplingnegative個(gè)(也有可能少一點(diǎn),??=??(??????1???LossLog似然(word中的一層),????????=???????????????????????????=?????????????????????(1???????????)???????(1?那么梯度為Gradient??????1 =????????????(1???)???????1+(1???????????)????=?(?????????????)?Gradient??????1 =????????????(1???)???????1+(1???????????)????=?(?????????????)?errr
因此輸入層的梯度即為隱層梯度(注意每次循環(huán)neu1e都被置零了。1 ????????( |?? ??=1vvewO veww窗口內(nèi),則wt也必然在以wk為中心詞的同樣大小窗口內(nèi),也就是:1∑
1 ????????( ??+?? =??
????????(????|????+????=1
??=1同時(shí),Skip-gram中的每個(gè)詞向量表征了上下文的分布。Skip-gramskipCBOW類似,Skip-GramSoftmaxNegativeSampling。層Softmax算法也結(jié)合huffman編碼,每個(gè)w都可以從樹的根結(jié)點(diǎn)沿著唯一一條路徑被到假設(shè)n(w,j)為這條路徑上的第j個(gè)結(jié)點(diǎn),且L(w)Softmax定義的概率p(w|wI)為:p(w|????)=∏??(???(??,??+1)=????(??(??,??))?? 其中
????={ ?????????? ch(n(w,j))既可以是n(w,j)的左子結(jié)點(diǎn)也可以是n(w,j)的右子結(jié)點(diǎn),word2veccode[j]????????????????=???????==?∑??(??)?1log(??(???(??,??+1)=????(??(??,??))?? 式其實(shí)是很類似的唯一不同是把??(??????1???????1)變成了 ??????)這里順[2]的推導(dǎo)一下梯度。因?yàn)椴捎秒S機(jī)梯度下降,每次只要w的一層,假設(shè)為第j層,那么對(duì)應(yīng)的該層loss為:Loss=?LogLikelihood=?log(??(???(??,??+1)=????(??(??,??))????′ 1)如果???(??,??+1)=????(??(??,??))?為true,即當(dāng)前結(jié)點(diǎn)為左子結(jié)點(diǎn),那么Loss=?log(??(??′( 那么梯度為 =?(1???(????(??,??)????))? ?? =?(1? ????))? 2)如果???(??,??+1)=????(??(??,??))?為false????,?? Loss=?log(??(???′ )??????))=?log(1???(??????,?? 那么梯度為Gradient??′
=
??(??,??)????)??? = ????)? Gradient
=?(1?code[j]? ????))?
????????
) =?(1?code[j]? ????))? g就是梯度中的公共部分(1code[j??(????(??
)??????))learningratealphaWvW
) e
vewwp(wo|wi)的分母要對(duì)所有詞匯表里的單詞求和,這使得計(jì)算HierarchicalSoftmax則是介于兩者之間的法,使用的辦法其實(shí)是借助樹來說,則是使用二分類近似原來的多分類。例如給定wi,先讓模型判斷wo是word2vec里,作者是使用哈夫曼編碼構(gòu)造的一連串兩分類。但是在訓(xùn)對(duì)應(yīng)的所有子結(jié)點(diǎn)。因?yàn)檎嬲膯卧~公用了這些抽象結(jié)點(diǎn)的向量,所以HierarchicalSoftmax方法和原始問題并不是等價(jià)的,但是這種近似并不會(huì)顯著帶NegativeSampling也是用二分類近似多分類,區(qū)別在于使用的是one-versus-one的方式近似,即采樣一些負(fù)例,調(diào)整模型參數(shù)使得模型可以區(qū)分六、不完全追求其理論解釋,這個(gè)其實(shí)也是整個(gè)DeepLearning研究領(lǐng)域的一貫作風(fēng)RBMtrick。除Huffman編碼,NegativeSamplingword2vec本節(jié)主要講解這些trick,只對(duì)原理感的同學(xué)可以跳過。由于word2vec大量采用logistic,所以訓(xùn)練開始之前預(yù)先算好這些指數(shù)EXP_TABLE_SIZE1000,當(dāng)然這個(gè)值越大,精度越高,同時(shí)內(nèi)存占用也會(huì)越多。MAX_EXP為常數(shù)6。循環(huán)內(nèi)的代碼實(shí)質(zhì)為:expTable[i]=exp((i-500)/500*6) 即e^-6~e^6expTable[i]=1/(1+e^6)~1/(1+e^-6) 即0.01~1的樣子。相當(dāng)于把橫坐標(biāo)從-661000份,每個(gè)等分點(diǎn)上(1001個(gè))記錄相應(yīng)的logistic函數(shù)值方便以后的查詢。感覺這里有個(gè)bug,第1001個(gè)等分點(diǎn)(下標(biāo)為EXP_TABLE_SIZE)并未賦值,是對(duì)應(yīng)內(nèi)存上的一個(gè)隨機(jī)值。相關(guān)查詢的代碼如下所示。前面三行保證f的取值范圍為[-MAX_EXP,MAX_EXP],這樣(fMAX_EXP)/MAX_EXP/2的范圍為[0,1]expTable的所說的bug。也就是需要根據(jù)詞的分布進(jìn)行抽樣。這個(gè)問題實(shí)際是經(jīng)典的Categorical參考百科相關(guān)資料:distribution,distribution#SamplingCategoricalDistributionSampling的基本問題是:已知一些枚舉變量(比如a,b,c1/2,1/3,1/6,設(shè)計(jì)一個(gè)算法能夠隨機(jī)抽樣a,b,c使得他們滿足前面的出現(xiàn)概率。word2vec中的實(shí)現(xiàn)采用了一種近似但更方法計(jì)算每個(gè)類別或詞的未歸一化分布值(對(duì)于詞來即詞頻計(jì)算每個(gè)類別或詞的未歸一化分布值(對(duì)于詞來即詞頻CDF中小于或等于該隨機(jī)數(shù)的最大值,該操作如果使用二分查找可以在O(log(k))時(shí)間內(nèi)完成;k方法二rr=s=for(i=1;i<=k;i++)vvbinomial(np[ir)進(jìn)行抽樣得到的整數(shù)。//期望值應(yīng)該是n*p[i]/rfor(j=1;j<=v;j++)z[s++]=i;nn rr }返回z。方法類似于方法一,先將概率以類似于方法一,先將概率以CDF形式排列在一條線段上,以字符a,b,c1/2,1/3,1/60,右端點(diǎn)為1,中間分割點(diǎn)分別為1/2,(1/2+1/3),(1/2+1/3+1/6) m段,00,m對(duì)應(yīng)右端點(diǎn),而是與詞頻的power次方成正比。其他方法率或者計(jì)數(shù)映射到了0-m。隨機(jī)數(shù)數(shù)字再加11然后取模再歸一化?;剀嚪@個(gè)trick其實(shí)不太優(yōu)美,這里提一下的原始是這塊可能有一點(diǎn)小bug。前首先占據(jù)了index0。但是在刪除長(zhǎng)尾詞時(shí),如果下標(biāo)為a的詞詞頻小于mi_cout(可設(shè)置,默認(rèn)為),則刪除最后一個(gè)字符。如果回車換行符過少,少于min_cout,這里會(huì)導(dǎo)致多mitg無傷大雅。高頻詞亞采樣[2]這種亞采樣能夠帶來2到10倍的性能提升,并能夠提升低頻詞的表示精度。這個(gè)策略mikolov來說,肯定是哪個(gè)好就用哪個(gè),所以這種地方都是可以結(jié)合應(yīng)用進(jìn)行調(diào)整的地方。中每個(gè)詞wi被p(??)=1? sample是一個(gè)可以設(shè)置的參數(shù),demo-word.sh10-3,freq(wi)從具體代碼可以看出,wi p(??)=1?(√ ???????????? 七、分布式實(shí)現(xiàn)JeffreyDean在《LargeScaleDistributedDeepNetworks》[9]中介紹了異SGD訓(xùn)練大規(guī)模深度網(wǎng)絡(luò)的方法。我們借鑒該的思想實(shí)現(xiàn)了分布式版本的word2vec。server,server收到梯度后立即更新所有相關(guān)的詞向量。server總是保存一份的參數(shù),worker參數(shù)可能是陳舊的,worker每隔一段時(shí)間會(huì)到server拉取的參數(shù)。servercowork提供的機(jī)制,serverodis.rpc2,實(shí)現(xiàn)了(pushworker同時(shí)傳遞梯度或拉取參數(shù),使用信號(hào)量實(shí)現(xiàn),worker在每次(acquireacquire方法是阻塞的,128worker的處理速度大概是~100kwords/s。進(jìn)一步優(yōu)果拿到了,那么push或pull,否則馬上返回繼續(xù)處理自己的數(shù)據(jù),累計(jì)梯度,下次再來試。這種方法顯著提高了訓(xùn)練速度,達(dá)到了~1000kwords/s。server發(fā)送,由server匯總后輸出。Negativeword2vec可調(diào)整的超參數(shù)有很多,其中比較重要的有(不分先后:模型架構(gòu):Skip-gram高頻詞亞采樣:對(duì)大數(shù)據(jù)集合可以同時(shí)提高精度和速度,sample的取值在1e-3到1e-5之間效果最佳。窗口大?。篠kip-gram10左右,CBOW5利用的,尤其word2vec中所用的模型和策略非常值得借鑒。代碼:/svn/trunk/400行C++11代碼 Python版本:http: java版本: CUDA版本 TomasMikolov,KaiChen,GregCorrado,andJeffreyDean.EfficientEstimationofWordRepresentationsinVectorSpace.InProceedingsofWorkshopatICLR,2013.TomasMikolov,IlyaSutskever,KaiChen,GregCorrado,andJeffreyDean.DistributedRepresentationsofWordsandPhrasesandtheirCompositionality.InProceedingsofNIPS,2013.TomasMikolov,Wen-tauYih,andGeoffreyZweig.LinguisticRegularitiesinContinuousSpaceWordRepresentations.InProceedingsofNAACLHLT,2013.TomasMikolov,StefanKombrink,LukasBurget,JanCernocky,andSanjeevKhudanpur.Extensionsofrecurrentneuralnetworklanguagemodel.InAcoustics,SpeechandSignalProcessing(ICASSP),2011,IEEEInternationalConferenceon,pages5528–5531.IEEE,2011.TomasMikolov,KaiChen,GregCorrado,andJeffreyDean.Efficientestimationofwordrepresentationsinvectorspace.ICLRWorkshop,2013.FredericMorinandYoshuaBengio.Hierarchicalprobabilisticneuralnetworklanguagemodel.InProceedingsoftheinternationalworkshoponartificialinligenceandstatistics,pages246–252,2005.Andri
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 機(jī)場(chǎng)地下車庫(kù)施工合同
- 墻體廣告發(fā)布合作協(xié)議
- 建筑工程服務(wù)器托管勞務(wù)合同
- 風(fēng)力發(fā)電鋼筋套筒施工合同
- 2025標(biāo)準(zhǔn)個(gè)人借款合同范本(民間借貸)
- 航空航天工程師聘用合同樣本
- 河流防汛及疏浚工程協(xié)議
- 咖啡館裝修施工協(xié)議
- 咖啡館玻璃吧臺(tái)施工合同
- 釀酒行業(yè)采購(gòu)合同管理辦法
- T∕ZSQX 008-2020 建設(shè)工程全過程質(zhì)量行為導(dǎo)則
- ISO-IEC17025-2017實(shí)驗(yàn)室管理體系全套程序文件
- 業(yè)務(wù)員手冊(cè)內(nèi)容
- pH值的測(cè)定方法
- 深圳智能水表項(xiàng)目商業(yè)計(jì)劃書_參考模板
- 輸出軸的機(jī)械加工工藝規(guī)程及夾具設(shè)計(jì)
- 元旦文藝匯演校長(zhǎng)致辭
- 國(guó)家開放大學(xué)電大本科《管理案例分析》2023-2024期末試題及答案試卷編號(hào):1304
- 離合器接合叉機(jī)械工藝說明書
- PWM脈寬直流調(diào)速系統(tǒng)設(shè)計(jì)及 matlab仿真驗(yàn)證
- 蜂窩煤成型機(jī)設(shè)計(jì)方案.doc
評(píng)論
0/150
提交評(píng)論