日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Softmax(假神经网络)与词向量的训练

發布時間:2024/7/5 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Softmax(假神经网络)与词向量的训练 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天終于要完成好久之前的一個約定了~在很久很久以前的《如果風停了,你會怎樣》中,小夕提到了“深刻理解了sigmoid的同學一定可以輕松的理解用(假)深度學習訓練詞向量的原理”,今天就來測測各位同學對于sigmoid的理解程度啦~

?

習慣性的交待一下前置鋪墊:

1、詞袋模型、獨熱與詞向量概念掃盲

2、sigmoid到softmax(至關重要)

3、邏輯回歸

4、邏輯回歸到神經網絡

?

總之,請務必清楚詞向量的概念,深刻理解softmax的概念和公式內的意義。尤其是要理解softmax函數具有“兩向量的‘親密度’轉條件概率”的功能:

?

嗯。。。還是開篇掃盲一下。可能有的同學覺得是深度學習興起之后才有的“詞向量”,實際上,最早用來做詞向量的模型并不是神經網絡,而是更加傳統的機器學習算法,如以線性代數中的SVD(奇異值分解)為核心LSA(隱性語義分析),還有后來的以貝葉斯理論為核心LDA(隱含狄利克雷分布,一種NLP中經典的主題模型)。

?

一方面,小夕下面要講的確實是作為一種用神經網絡(人們為了提高逼格,更喜歡叫用深度學習xxx)訓練詞向量的基本理論和方法,但是實際上,小夕并沒有把它當神經網絡看,因為理解了小夕講的softmax后,這種方法不過是用了一下softmax而已,還不如叫“基于softmax分類器”或者“基于改良的邏輯回歸”呢。。。當然啦,對外還是要稱之為神經網絡的。

?

首先,我們來想一下,憑什么可以訓練出《詞向量概念掃盲》中描述的這么棒的可以編碼語義的詞向量呢?其實呀,只要是用無監督的方法去訓練詞向量,那么這個模型一定是基于“詞共現”(word co-occurrence)信息來實現的。

?

設想一下,“萌”的語義跟什么最相近呢?有人會想到“可愛”,有人會想到“妹子”,有人會想到“小夕”(\(//?//)\)。為什么呢?因為很大程度上,這些詞會同時出現在某段文本的中,而且往往距離很近!比如“萌妹子”、“這個妹子好可愛”、“小夕好萌吖”。正是因為這種詞共現可以反映語義,所以我們就可以基于這種現象來訓練出詞向量。

?

既然語義相近的兩個詞(即差別很小的兩個詞向量)在文本中也會趨向于挨得近,那如果我們可以找到一個模型,它可以在給定一個詞向量時,計算出這個詞附近出現每個詞的概率(即一個詞就看成一個類別,詞典中有多少詞,就是多少個類別,計算出給定輸入下,每個類別的概率),那么訓練這個模型不就把問題解決了嘛。是不是突然覺得softmax函數簡直是為這個任務量身定做吶~

?

我們就將詞典大小設為D,用、、...表示詞典中的每個詞。

?

如下圖:

?

看,這不就是簡單的softmax分類器嘛~所以這個model的假設函數就是簡單的:

?

?

從這個model中也能看出,模型的輸入不僅是輸入,而且是其他輸入的參數!所以這個model的參數是維度為?D*embed_dim?的矩陣(每行就是一個用戶定義的embed_dim大小的詞向量,詞典中有D個詞,所以一共有D行),而且輸入也是從這個矩陣中取出的某一行)。

?

假設函數有了,那么根據《一般化機器學習》,我們需要定義損失函數。當然,根據前面所說的詞共現信息來定義啦。

?

為了好表示,我們將模型輸入的詞稱為中心詞(central word),記為,將這個詞兩邊的詞記為目標詞(objected word),記為,假如我們只將中心詞附近的m個詞認為是它的共現詞(也就是中心詞左邊的m個詞以及中心詞右邊的m個詞),那么目標詞一共有2m個,分別記為、、...。(下文將會看到,在整個句子的視角下,m被稱為窗口大小

?

如果我們令m=1,那么對于下面這個長度為T=10句子:

?

今天?我?看見?一只?可愛的?貓?坐?在?桌子?上。

?

那么當我們將“貓”看作中心詞時,目標詞就是“可愛的”和“坐”,即

今天?我?看見?一只 【可愛的?貓?坐】?在?桌子?上。

我們就認為這兩個詞跟貓的語義是相關的,其他詞跟貓是否相關我們不清楚。所以我們要爭取讓P(可愛的|貓)、 P(坐|貓)盡可能的大

?

講到這里,最容易想到的就是使用似然函數了。由于這里類別特別多,所以算出來的每個概率都可能非常小,為了避免浮點下溢(值太小,容易在計算機中被當成0,而且容易被存儲浮點數的噪聲淹沒),更明智的選擇是使用對數似然函數。所以對于一段長度為T的訓練文本,損失函數即:

?

?

當然啦,這里要讓長度為m的窗口滑過訓練文本中的每個詞,滑到每個詞時,都要計算2m次后驗概率。而每次計算后驗概率都要用到softmax函數,而回顧一下softmax函數,它的分母是很恐怖的:

?

?

類別越多,分母越長。而我們這里類別數等于詞典大小啊!所以詞典有10萬個單詞的話,分母要計算10萬次指數函數?所以直接拿最優化算法去優化這個損失函數的話,肯定會訓練到天長地久(好像用詞不當)。那怎么辦呢?

?

一種很巧妙的方法是將原來計算復雜度為D的分母(要計算D次指數函數)通過構造一棵“胡夫曼二叉樹(Huffman binary tree)”來將原來扁平的“softmax”給變成樹狀的softmax,從而將softmax的分母給優化成計算復雜度為log D。這種樹形的softmax也叫分層softmax(Hierarchical Softmax

?

還有一種優化方法是負采樣(Negative Sampling),這種方法可以近似計算softmax的對數概率。對使用分層softmax和負采樣優化模型計算復雜度感興趣的同學,可以看下面這篇論文:

?

Mikolov,T., Sutskever, I., Chen, K., Corrado, G., & Dean, J. (2013, October 17).Distributed Representations of Words and Phrases and their Compositionality.arXiv.org

?

誒誒,說了這么多,這個看起來這么簡潔優美的model叫什么名字呢?

?

它就是Mikolov在2013年提出來的Skip-gram(簡稱SG),這也是大名鼎鼎的開源詞向量工具word2vec背后的主力model之一(另一個模型是更弱雞的連續詞袋模型,即cBoW)。

?

說些題外話,SG和cBoW是Mikolov在2013年的一篇論文中提出來的

?

(Mikolov, T.,Chen, K., Corrado, G., & Dean, J. (2013, January 17). Efficient Estimationof Word Representations in Vector Space. arXiv.org.)

?

并且在同一年,Mikolov又在更上面那篇優化SG計算復雜度的論文中開源了word2vec這個詞向量工具,可謂是深度學習應用于自然語言處理領域的里程碑式的成果。當然啦,要說NLP的超級里程碑,還是要數2003年Bengio大神的這篇論文的,這也是詞向量概念的鼻祖論文:

?

Bengio Y, Ducharme R,Vincent P, et al. A neural probabilistic language model[J]. Journal of machinelearning research, 2003, 3(Feb): 1137-1155.

??

關于在準確度表現上基本可以完爆SG和cbow的model,參考GloVe模型(Global Vector),有興趣的同學可以看一下論文:

?

PenningtonJ, Socher R, Manning C D. Glove: Global Vectors for WordRepresentation[C]//EMNLP. 2014, 14: 1532-1543.

?

當然啦,建議在讀之前先熟悉一下文首提到的LDA模型,否則可能閱讀有點難度哦。

?

總結

以上是生活随笔為你收集整理的Softmax(假神经网络)与词向量的训练的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。