之所以要文字的向量表示,是因?yàn)槲淖謱W(xué)習(xí)與圖像與音頻的學(xué)習(xí)過程是不一樣的逞敷,圖像或音頻的全部信息都存儲(chǔ)在原始數(shù)據(jù)里雅宾,我們直接對(duì)其中的像素或者功率譜密度強(qiáng)度值進(jìn)行操作,因?yàn)槿祟惐旧砭褪且蕾囋紨?shù)據(jù)進(jìn)行處理的鸭丛,然而文字處理是需要將文字編碼,這些符號(hào)編碼毫無規(guī)律唐责,每個(gè)編碼之間毫無關(guān)聯(lián)性鳞溉,那么我們還怎么利用它們進(jìn)行學(xué)習(xí)呢?
因此就不能讓其拆分成編碼鼠哥,正確的操作是把其化為一個(gè)向量空間中的一個(gè)點(diǎn)熟菲,具有相似語義的點(diǎn)放在一起,那么它們之間就會(huì)有關(guān)聯(lián)性朴恳,那么就易于處理了抄罕。
Word2Vec模型中,主要有Skip-Gram和CBOW兩種模型于颖,從直觀上理解呆贿,Skip-Gram是給定input word來預(yù)測(cè)上下文。而CBOW是給定上下文森渐,來預(yù)測(cè)input word榨崩。本篇文章僅講解Skip-Gram模型。網(wǎng)上的博客大多都是在講Skip-Gram模型章母。
相似的母蛛,本模型也不是為了直接利用訓(xùn)練好的模型,而僅僅是獲得它的參數(shù)乳怎,例如隱層的權(quán)重矩陣彩郊,一些不那么明顯的參數(shù),建模并不是我們的最終目的蚪缀。
其基本原理是建立詞之間的關(guān)聯(lián)度秫逝,那么關(guān)聯(lián)度是如何得出?實(shí)際上是統(tǒng)計(jì)出來的询枚,例如得到一個(gè)詞后违帆,從頭到尾搜索這個(gè)詞,然后把它左右兩邊的詞跟它建立聯(lián)系金蜀,那么刷后,嗯,簡(jiǎn)單來說就是這樣渊抄,雖然簡(jiǎn)單但是有意想不到的有用之處尝胆。如果單詞比較出現(xiàn)的頻率高,那么它的權(quán)重值也會(huì)更大一點(diǎn)护桦,也就是這樣了含衔。
但是有一個(gè)問題是神經(jīng)網(wǎng)絡(luò)只接受數(shù)值輸入,實(shí)際上這個(gè)只是一個(gè)技術(shù)的問題,我們可以給它進(jìn)行onehot編碼贪染,這個(gè)沒什么難的缓呛。例如一共有10000的單詞,就分別設(shè)它們的id為從1-10000就可以了杭隙,這個(gè)時(shí)候哟绊,它的特征幾乎就是它所關(guān)聯(lián)的詞的權(quán)重以及數(shù)量了。
這樣做有很多好處寺渗,例如同義的單詞匿情,它們會(huì)非常相近,有聯(lián)系的單詞信殊,它們會(huì)次要比較接近炬称,甚至兩個(gè)詞的集群之間,它們也會(huì)由于學(xué)習(xí)涡拘,從而逐漸接近或者逐漸拉遠(yuǎn)玲躯,關(guān)鍵是看你怎么用了。
但是有一點(diǎn)的是鳄乏,這種分析僅僅是對(duì)單詞的分析跷车,無法進(jìn)行句子的分析,事實(shí)上橱野,通過單詞的分析對(duì)句子的構(gòu)成模擬度并不是那么好朽缴,針對(duì)句子還是要進(jìn)行句法上的分析才行,然而上述提到的方法并沒有水援。
在這種向量構(gòu)造法中會(huì)有非常有趣的現(xiàn)象發(fā)生密强,向量之間的關(guān)系可以非常形象的描述為詞與詞之間的關(guān)系----平行,例如男人->女人之間的關(guān)系會(huì)與國(guó)王->王后之間的關(guān)系平行蜗元,田徑->跑步之間的關(guān)系會(huì)與泳池->游泳之間的關(guān)系平行或渤,這個(gè)并不是人為參與構(gòu)建的,這些完全是自動(dòng)構(gòu)建的奕扣。