參考: 目錄
1)基於詞向量的詞袋模型
— 平均詞向量與tfidf加權平均詞向量
— sif加權平均詞向量
發表於2023年的**a ****** but tough-to-beat baseline for sentence embeddings提出了一種非常簡單但是具有一定競爭力的句子向量表示演算法。演算法包括兩步,第一步是對句子中所有的詞向量進行加權平均,得到平均向量grevsvs;第二步是移出(減去)vsvs在所有句子向量組成的矩陣的第乙個主成分(principal component / singular vector)上的投影,因此該演算法被簡記為wr(w:weighting, r: removing)。
第一步主要是對tfidf加權平均詞向量表示句子的方法進行改進。**提出了一種平滑倒詞頻(smooth inverse frequency, sif)方法用於計算每個詞的加權係數,具體地,詞ww的權重為a/(a+p(w))a/(a+p(w)),其中aa為平滑引數,p(w)p(w)為(估計的)詞頻。直觀理解sif,就是說頻率越低的詞在當前句子出現了,說明它在句子中的重要性更大,也就是加權係數更大。事實上,如果把乙個句子認為是一篇文件並且假設該句中不出現重複的詞(tf=1),那麼tfidf將演變成if,即未平滑的倒詞頻。但是相較於tfidf這種經驗式公式,**通過理論證明為sif提供理論依據。對於第二步,個人的直觀理解是移出所有句子的共有資訊,因此保留下來的句子向量更能夠表示本身並與其它句子向量產生差距。演算法描述如下(其中vs,uvs,u的shape均為[d, 1],uutuut為[d,d]的矩陣,d為詞向量維度):
2)doc2vec
3)基於encoder-decoder的skip-thought vectors
思想:是word2vec的skip-gram在句子上的推廣,用中間句子**上下的句子。
4)基於autoencoder的序列去噪自編碼器(sdae)
5)基於詞袋模型的fastsent
2023年發表的**learning distributed representations of sentences from unlabelled data提出的第二種模型稱為fastsent,skip-thought模型採取語言模型形式的編碼解碼方式,導致其訓練速度會很慢。fastsent採取了bow(詞袋)形式的編碼方式,使得模型訓練速度大幅提高,因此稱為fastsent。具體地,給定乙個連續的句子三元組si−1,si,si+1si−1,si,si+1,對中間的句子sisi進行編碼,編碼方式是sisi中所有詞的詞向量之和,即si=∑w∈siuwsi=∑w∈siuw,然後根據sisi對w∈si−1∪si+1w∈si−1∪si+1進行**,這與word2vec模型中的skip-gram基本一致,而無需像skip-thought一樣按照句子中詞的順序生成(**)。因此fastsent的損失函式如下:
∑w∈si−1∪si+1ϕ(si,vw)∑w∈si−1∪si+1ϕ(si,vw)
其中ϕ(v1,v2)ϕ(v1,v2)為softmax函式,vwvw為目標句子中的詞ww的embedding。**還提出了一種變體模型fastsent+ae,該變體不光是**前後兩個句子中的詞,還**本身句子的詞,損失函式即為:
∑w∈si−1∪si∪si+1ϕ(si,vw)∑w∈si−1∪si∪si+1ϕ(si,vw)
模型訓練後,測試階段,fastsent能夠通過計算句子中所有詞向量的和迅速得到句子embedding,即:s=∑w∈suws=∑w∈suw。
**通過兩種型別的下游任務來評測句子分布式表示的質量,分別為監督型別(包括釋義識別,文字分類)和非監督型別(語義相關性:sick資料集與sts資料集,直接計算句子向量的余弦相似度並與人類打分進行比較)。實驗結果為sdae模型在監督型別評測上比cbow(將cbow型別詞向量直接相加得到句子向量)和skipgram等簡單模型要好,但是在非監督型別評測上結果卻相反。類似地,skip-thought模型在監督型別評測上比fastsent模型效果好,但在非監督型別評測上,fastsent要好於skip-thought。實驗結果表明,最佳方法主要取決於預期的應用。 更深,更複雜的模型(同時也需要更多的計算資源和訓練時間)更適用於監督型別評測,但淺的對數線性模型更適合無監督型別評測。
6)利用n-grams embedding
2023年發表的**unsupervised learning of sentence embeddings using compositional n-gram features 提出利用n-grams來學習句子表示模型sent2vec,是word2vec模型中cbow形式的擴充套件:不僅僅使用視窗中的詞(uni-gram)來**目標詞,而是使用視窗中所有的n-grams來**目標詞(uni-gram)。為了得到句子向量,將句子看成乙個完整的視窗,模型的輸入為句子中的n-grams,目標是**句子中的missing word(目標詞),而句子向量是所有n-grams向量表示的平均。本文的模型與**enriching word vectors with subword information(fasttext)很類似,主要區別有兩點,其一是本文的模型輸入是詞級別的n-grams序列而fasttext是字元級別的n-grams序列,其二是本文最終的表示是對輸入的n-grams embedding進行平均而fasttext是相加。**開源在
7)quick-thought vectors
2023年發表的**an efficient framework for learning sentence representations提出了一種簡單且有效的框架用於學習句子表示。和常規的編碼解碼類模型(如skip-thoughts和sdae)不同的是,本文採用一種分類器的方式學習句子表示。具體地,模型的輸入為乙個句子ss以及乙個候選句子集合scandscand,其中scandscand包含乙個句子sctxtsctxt是ss的上下文句子(也就是ss的前乙個句子或後乙個句子)以及其他不是ss上下文的句子。模型通過對ss以及scandscand中的每個句子進行編碼,然後輸入到乙個分類器中,讓分類器選出scandscand中的哪個句子是sctxtsctxt。實驗設定候選句子集合大小為3,即scandscand包含1個上下文句子和兩個無關句子。模型結構如下:
模型有如下兩個細節需要注意:
模型使用的分類器(得分函式)cc非常簡單,是兩個向量內積,即c(u,v)=utvc(u,v)=utv,計算ss的embedding與所有scandscand中的句子向量內積得分後,輸入到softmax層進行分類。使用簡單分類器是為了引導模型著重訓練句子編碼器,因為我們的目的是為了得到好的句子向量表示而不是好的分類器。
雖然某些監督任務模型如文字蘊含模型是引數共享的,ss的編碼器引數和候選句子編碼器引數是不同的(不共享),因為句子表示學習往往是在大規模語料上進行訓練,不必擔心引數學習不充分的問題。測試時,給定待編碼句子ss,通過該模型得到的句子表示是兩種編碼器的鏈結 [f(s);g(s)][f(s);g(s)]。
**將上述模型命名為quick thoughts(qt),意味著該模型能夠迅速有效地學習句子表示向量。模型使用gru作為encoder,為了和skip-tought模型進行比較,模型包含三種變體,使用單向gru稱為uni-qt,雙向gru稱為bi-qt,將uni-qt和bi-qt生成的sentence embedding進行concat稱為combine-qt。此外,**將同時使用預訓練詞向量和隨機初始化詞向量的模型稱為multichannel-qt(mc-qt),這種設定是參照multi-channel cnn模型。
**通過多個句子分類任務證明qt模型了的優越性:
**還通過image-sentence ranking和nearest neighbors兩個實驗來為qt有效性提供依據。**開源在
無監督和有監督演算法的區別
無監督和有監督的理解方法有很多,主要可以從以下幾方面來理解 1 無監督與監督學習的區別在於乙個無教學值,乙個有教學值。但是,個人認為他們的區別在於無監督學習一般是採用聚簇等演算法來分類不同樣本。而監督學習一般是利用教學值與實際輸出值產生的誤差,進行誤差反向傳播修改權值來完成網路修正的。但是無監督學習...
無監督和有監督演算法的區別
監督學習 supervised learning 通過已有的訓練樣本 即已知資料以及其對應的輸出 來訓練,從而得到乙個最優模型,再利用這個模型將所有新的資料樣本對映為相應的輸出結果,對輸出結果進行簡單的判斷從而實現分類的目的,那麼這個最優模型也就具有了對未知資料進行分類的能力。在社會中,我們在很小的...
無監督和有監督演算法的區別
有監督學習 對具有概念標記 分類 的訓練樣本進行學習,以盡可能對訓練樣本集外的資料進行標記 分類 這裡,所有的標記 分類 是已知的。因此,訓練樣本的岐義性低。無監督學習 對沒有概念標記 分類 的訓練樣本進行學習,以發現訓練樣本集中的結構性知識。這裡,所有的標記 分類 是未知的。因此,訓練樣本的岐義性...