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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Word2Vec(Efficient Estimation of Word Representations in Vector Space)

發布時間:2025/4/5 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Word2Vec(Efficient Estimation of Word Representations in Vector Space) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本篇論文的整體結構如下:

  • 對比模型:
  • NNLM
  • RNNLM
  • Word2Vec
  • Skip-Gram
  • CBOW
  • 關鍵技術
  • 層次softmax
  • 負采樣
  • 實驗結果
  • 與對比模型的直接對比結果
  • 不同參數的實驗
  • 不同模型的效率分析
  • ?

    一、對比模型

    ?

    語言模型基本思想: 句子中一個詞出現和前面的詞是有關系的,可以使用前面的詞預測下一個詞

    ?

    NNLM:

    輸入層: 將詞映射成向量,相當于一個1*v的one-hot向量乘以一個v*d的向量得到一個1*d的向量

    隱藏層: 一個以tanh為激活函數的全連接層 a = tanh(d+ux),? ?u、d為參數

    輸出層: 一個全連接層,后面接一個softmax函數來生成概率分布,y = b + wa, 其中y是一個1*v的向量

    P(wt|wt-n+1........wt-1) = exp(ywt)/sum(exp(yi))

    參數個數:

    ? ? ? ?1) 每一個詞映射為1*D的向量N個詞concat,參數個數為N*D

    ? ? ? ?2) 隱藏層大小為H,所以w參數矩陣大小為N*D*H

    ? ? ? ?3) 詞表大小為V,所以u的參數個數為H*V

    所以NNLM參數個數Q = N*D + N*D*H + H*V

    ?

    RNNLM:

    輸入層: 和NNLM一樣,需要將當前步轉化為詞向量

    隱藏層: 對輸入和上一個時間步的隱藏輸出進行全連接層操作:

    ? ? ? ? ? ? ? ? ? ? ? ? ?s(t) = Uw(t) + ws(t-1) + d

    輸出層: 一個全連接層后面接一個softmax函數來生成概率分布

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? y(t) = b + vs(t)

    其中y是一個1*v的向量,P(wt|wt-n+1........wt-1) = exp(ywt)/sum(exp(yi))

    參數個數:

    ? ? ? ? ?s(t) = Uw(t) + Ws(t-1)? ?

    ? ? ? ? ?y(t) = Vs(t)? -- softmax --> p(xi|xi-N,.....xi-1)

    ? ? ? ? ?y = [y1,y2,.....yv] = e^yi/(sum(e^yi))

    ? ? ? ? ?w(t)表示t時刻當前輸入的單詞詞向量,s(t-1)表示隱藏層的前一層輸出,y(t) 表示輸出的詞的index

    ? ? ? ? ?w維度是H, s維度是H, W維度是H*H, U維度是H*H, V維度是H*V(V表示詞表大小)

    ?所以RNNLM 參數個數Q = H*H + H*V

    ?

    評價語言模型常用指標-困惑度

    Loss : L = -1/Tlogp(wi|wi-n+1,.....wi-1)

    pp(s) = p(w1,w2,....wt)^(-1/T)

    logpp(s) = -1/Tlog(p(w1)p(w2|w1)....(wt/wt-n+1...wt-1))

    logpp(s) = -1/T(log(p(w1)) + log(p(w2|w1)) + ...... log(p(wt|wt-n+1.....wt-1)))

    logpp(s) = -1/Tsumi=1->Tlogp(wi|wi-n+1....wi-1)

    pp(s) = e^Loss

    ?

    上述模型存在的問題:

    1、僅對一部分有意義的詞進行梯度傳播(如 the,a無意義)

    2、引入先驗知識,如詞性等

    3、解決一詞多意問題

    4、加速softmax層

    ?

    二、Word2Vec

    ?

    word2vec基本思想是句子中相近的詞之間是有聯系的,用詞預測詞

    skip-gram: 中心詞預測周圍詞

    CBOW: 周圍詞預測中心詞

    ?

    Skip-gram:

    1、中心詞預測周圍詞

    2、中心詞生成2*windowsize個樣本,中心詞詞向量和周圍詞做內積的方式得到周圍詞的概率,并進行優化

    訓練 W*,W, 詞向量可以為W或者為(W + W*)/2

    ?

    CBOW

    1、周圍詞預測中心詞

    2、周圍詞向量求和或者平均 之后和中心詞向量內積,進行softmax,然后反向優化

    ?

    模型復雜度(模型參數個數)

    Skip-gram: Q = C(D + D*V) C表示周圍詞,D表示每個中心詞D維詞向量

    負采樣:Q = C(D + D*(K+1)) K個負樣本,1個正樣本

    CBOW:Q= N*D + D*V 因為sum或者avg所以向量維度與詞向量維度一致,不是concat

    層次softmax: Q = N*D + D*log2V

    負采樣: Q = N*D + D*(K+1)?

    N表示N個周圍詞,D表示每一個詞詞向量維度

    ?

    三、實驗結果

    ?

    1、任務描述

    2、最大化正確率

    ? ? ? 數據集越大、維度越大,效果越好

    3、不同模型間比較

    ? ? ?與其它人開源的詞向量比較,Skip-gram比CBOW稍微慢一些,但是效果較好

    4、大規模并行模型訓練

    ? ? ?詞與詞之間的關系,給一個詞五個句子選擇最合適的句子

    5、微軟研究院相關比賽

    6、學習到句子間的關系

    ?

    四、論文小結

    關鍵點:

    1、更簡單的預測模型 -- word2vec

    2、更快的分類方案 -- HS和NEG

    創新點:

    1、使用詞對的預測來替代語言模型的預測

    2、使用HS和NEG降低分類復雜度

    3、使用subsampling 加快訓練

    4、新的詞對推理數據集來評估詞向量的質量

    啟發點:

    1、大數據集上的簡單模型往往強于小數據集上的復雜模型

    2、理解數據 + 模型應用

    一些經驗:

    超參數選擇: 利用gensim做word2vec的時候,詞向量的維度和單詞數目有沒有一個比較好的對照范圍

    1、dim一般在100-500之間選擇

    2、初始值詞典大小V的1/4次方V = 10K,dim=100

    3、min_count(詞頻出現的最少次數) 一般在2-10之間選擇

    4、時間比較多,可以用網格搜索grid_search

    ?

    五、相關復現代碼

    代碼詳見:?https://github.com/wangtao666666/NLP/tree/master/Word2Vec

    ?

    總結

    以上是生活随笔為你收集整理的Word2Vec(Efficient Estimation of Word Representations in Vector Space)的全部內容,希望文章能夠幫你解決所遇到的問題。

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