深度学习应用篇-自然语言处理[10]:N-Gram、SimCSE介绍,更多技术:数据增强、智能标注、多分类算法、文本信息抽取、多模态信息抽取、模型压缩算法等
【深度學(xué)習(xí)入門到進(jìn)階】必看系列,含激活函數(shù)、優(yōu)化策略、損失函數(shù)、模型調(diào)優(yōu)、歸一化算法、卷積模型、序列模型、預(yù)訓(xùn)練模型、對(duì)抗神經(jīng)網(wǎng)絡(luò)等
專欄詳細(xì)介紹:【深度學(xué)習(xí)入門到進(jìn)階】必看系列,含激活函數(shù)、優(yōu)化策略、損失函數(shù)、模型調(diào)優(yōu)、歸一化算法、卷積模型、序列模型、預(yù)訓(xùn)練模型、對(duì)抗神經(jīng)網(wǎng)絡(luò)等
本專欄主要方便入門同學(xué)快速掌握相關(guān)知識(shí)。后續(xù)會(huì)持續(xù)把深度學(xué)習(xí)涉及知識(shí)原理分析給大家,讓大家在項(xiàng)目實(shí)操的同時(shí)也能知識(shí)儲(chǔ)備,知其然、知其所以然、知何由以知其所以然。
聲明:部分項(xiàng)目為網(wǎng)絡(luò)經(jīng)典項(xiàng)目方便大家快速學(xué)習(xí),后續(xù)會(huì)不斷增添實(shí)戰(zhàn)環(huán)節(jié)(比賽、論文、現(xiàn)實(shí)應(yīng)用等)
專欄訂閱:
- 深度學(xué)習(xí)入門到進(jìn)階專欄
- 深度學(xué)習(xí)應(yīng)用項(xiàng)目實(shí)戰(zhàn)篇
深度學(xué)習(xí)應(yīng)用篇-自然語(yǔ)言處理[10]:N-Gram、SimCSE介紹,更多技術(shù):數(shù)據(jù)增強(qiáng)、智能標(biāo)注、多分類算法、文本信息抽取、多模態(tài)信息抽取、模型壓縮算法等
1.N-Gram
N-Gram是一種基于統(tǒng)計(jì)語(yǔ)言模型的算法。它的基本思想是將文本里面的內(nèi)容按照字節(jié)進(jìn)行大小為N的滑動(dòng)窗口操作,形成了長(zhǎng)度是N的字節(jié)片段序列。每一個(gè)字節(jié)片段稱為gram,對(duì)所有g(shù)ram的出現(xiàn)頻度進(jìn)行統(tǒng)計(jì),并且按照事先設(shè)定好的閾值進(jìn)行過(guò)濾,形成關(guān)鍵gram列表,也就是這個(gè)文本的向量特征空間,列表中的每一種gram就是一個(gè)特征向量維度。
該模型基于這樣一種假設(shè),第N個(gè)詞的出現(xiàn)只與前面N-1個(gè)詞相關(guān),而與其它任何詞都不相關(guān),整句的概率就是各個(gè)詞出現(xiàn)概率的乘積。這些概率可以通過(guò)直接從語(yǔ)料中統(tǒng)計(jì)N個(gè)詞同時(shí)出現(xiàn)的次數(shù)得到。常用的是二元的Bi-Gram和三元的Tri-Gram。
N-gram的用途很廣,比如搜索引擎或者輸入法提示,詞性標(biāo)注,垃圾短信分類,分詞,機(jī)器翻譯,語(yǔ)音識(shí)別能等等等。
- 概率計(jì)算
假設(shè)我們有一個(gè)由n nn個(gè)詞組成的句子 S = ( w 1 , w 2 , . . . , w n ) S=(w_{1},w_{2},...,w_{n}) S=(w1?,w2?,...,wn?),如何衡量它的概率呢?讓我們假設(shè),每一個(gè)單詞 w i w_{i} wi?都要依賴于從第一個(gè)單詞 w 1 w_{1} w1?到到它之前一個(gè)單詞 w i ? 1 w_{i-1} wi?1?的影響:
p ( S ) = p ( w 1 w 2 . . . w n ) = p ( w 1 ) p ( w 2 ∣ w 1 ) . . . p ( w n ∣ w n ? 1 . . . w 2 w 1 ) p(S)=p(w_{1}w_{2}...w_{n})=p(w_{1})p(w_{2}|w_{1})...p(w_{n}|w_{n-1}...w_{2}w_{1}) p(S)=p(w1?w2?...wn?)=p(w1?)p(w2?∣w1?)...p(wn?∣wn?1?...w2?w1?)
這個(gè)衡量方法有兩個(gè)缺陷:
為了解決第一個(gè)問(wèn)題,引入馬爾科夫假設(shè)(Markov Assumption):一個(gè)詞的出現(xiàn)僅與它之前的若干個(gè)詞有關(guān)。
p ( w 1 . . . w n ) = ∏ p ( w i ∣ w i ? 1 . . . w 1 ) ≈ ∏ p ( w i ∣ w i ? 1 . . . w i ? N + 1 ) p(w_{1}...w_{n})=\prod{p(w_{i}|w_{i-1}...w_{1})} \approx \prod{p(w_{i}|w_{i-1}...w_{i-N+1})} p(w1?...wn?)=∏p(wi?∣wi?1?...w1?)≈∏p(wi?∣wi?1?...wi?N+1?)
如果一個(gè)詞的出現(xiàn)僅依賴于它前面出現(xiàn)的一個(gè)詞,那么我們就稱之為 Bi-gram:
p ( S ) = p ( w 1 w 2 . . . w n ) = p ( w 1 ) p ( w 2 ∣ w 1 ) . . . p ( w n ∣ w n ? 1 ) p(S)=p(w_{1}w_{2}...w_{n})=p(w_{1})p(w_{2}|w_{1})...p(w_{n}|w_{n-1}) p(S)=p(w1?w2?...wn?)=p(w1?)p(w2?∣w1?)...p(wn?∣wn?1?)
如果一個(gè)詞的出現(xiàn)僅依賴于它前面出現(xiàn)的兩個(gè)詞,那么我們就稱之為 Tri-gram:
p ( S ) = p ( w 1 w 2 . . . w n ) = p ( w 1 ) p ( w 2 ∣ w 1 ) . . . p ( w n ∣ w n ? 1 w n ? 2 ) p(S)=p(w_{1}w_{2}...w_{n})=p(w_{1})p(w_{2}|w_{1})...p(w_{n}|w_{n-1}w_{n-2}) p(S)=p(w1?w2?...wn?)=p(w1?)p(w2?∣w1?)...p(wn?∣wn?1?wn?2?)
N-gram的 N NN 可以取很高,然而現(xiàn)實(shí)中一般 bi-gram 和 tri-gram 就夠用了.
用極大似然估計(jì)來(lái)計(jì)算每一項(xiàng)的條件概率,即頻數(shù):
p ( w n ∣ w n ? 1 ) = C ( w n ? 1 w n ) C ( w n ? 1 ) p(w_{n}|w_{n-1})=\frac{C(w_{n-1}w_{n})}{C(w_{n-1})} p(wn?∣wn?1?)=C(wn?1?)C(wn?1?wn?)?
p ( w n ∣ w n ? 1 w n ? 2 ) = C ( w n ? 2 w n ? 1 w n ) C ( w n ? 2 w n ? 1 ) p(w_{n}|w_{n-1}w_{n-2})=\frac{C(w_{n-2}w_{n-1}w_{n})}{C(w_{n-2}w_{n-1})} p(wn?∣wn?1?wn?2?)=C(wn?2?wn?1?)C(wn?2?wn?1?wn?)?
p ( w n ∣ w n ? 1 . . . w 2 w 1 ) = C ( w 1 w 2 . . . w n ) C ( w 1 w 2 . . . w n ? 1 ) p(w_{n}|w_{n-1}...w_{2}w_{1})=\frac{C(w_{1}w_{2}...w_{n})}{C(w_{1}w_{2}...w_{n-1})} p(wn?∣wn?1?...w2?w1?)=C(w1?w2?...wn?1?)C(w1?w2?...wn?)?
具體地,以Bi-gram為例,我們有這樣一個(gè)由三句話組成的語(yǔ)料庫(kù):
I am Sam Sam I am I do not like apple容易統(tǒng)計(jì),“I”出現(xiàn)了3次,“I am”出現(xiàn)了2次,因此能計(jì)算概率:
p ( a m ∣ I ) = 2 3 p(am|I)=\frac{2}{3} p(am∣I)=32?
同理,還能計(jì)算出如下概率:
p ( S a m ∣ a m ) = 0.5 p(Sam|am)=0.5 p(Sam∣am)=0.5
p ( d o ∣ I ) = 0.33 p(do|I)=0.33 p(do∣I)=0.33
等等
2.SimCSE
句向量表征技術(shù)一直都是NLP領(lǐng)域的熱門話題,在BERT前時(shí)代,一般都采用word2vec訓(xùn)練出的word-embedding結(jié)合pooling策略進(jìn)行句向量表征,或者在有訓(xùn)練數(shù)據(jù)情況下,采用TextCNN/BiLSTM結(jié)合Siamese network策略進(jìn)行句向量表征。在BERT時(shí)代,人們借助預(yù)訓(xùn)練語(yǔ)言模型的固有優(yōu)勢(shì),一般采用BERT模型的[CLS]向量(即句子的起始字符向量)作為句向量表征;SimCSE采用對(duì)比學(xué)習(xí)的方法,進(jìn)行句向量表征,在BERT模型上獲取更好的句向量表征,詳細(xì)介紹如下:
2.1.介紹
SimCSE(simple contrastive
sentence embedding framework),即簡(jiǎn)單的對(duì)比句向量表征框架。SimCSE共包含了無(wú)監(jiān)督和有監(jiān)督的兩種方法。無(wú)監(jiān)督方法,采用dropout技術(shù),對(duì)原始文本進(jìn)行數(shù)據(jù)增強(qiáng),從而構(gòu)造出正樣本,用于后續(xù)對(duì)比學(xué)習(xí)訓(xùn)練;監(jiān)督學(xué)習(xí)方法,借助于文本蘊(yùn)含(自然語(yǔ)言推理)數(shù)據(jù)集,將蘊(yùn)涵-pair作為正例,矛盾-pair作為難負(fù)例,用于后續(xù)對(duì)比學(xué)習(xí)訓(xùn)練。并且通過(guò)對(duì)比學(xué)習(xí)解決了預(yù)訓(xùn)練Embedding的各向異性問(wèn)題,使其空間分布更均勻,當(dāng)有監(jiān)督數(shù)據(jù)可用時(shí),可以使正樣本直接更緊密。模型結(jié)構(gòu)如下圖所示:
其中,圖a為無(wú)監(jiān)督SimCSE,圖b為有監(jiān)督SimCSE,詳細(xì)模型介紹見(jiàn)第3節(jié)和第4節(jié)。
下面將從對(duì)比學(xué)習(xí)背景、無(wú)監(jiān)督SimCSE、有監(jiān)督SimCSE、各向異性問(wèn)題、實(shí)驗(yàn)細(xì)節(jié)五個(gè)方面進(jìn)行詳細(xì)介紹。
2.2.對(duì)比學(xué)習(xí)背景
2.2.1定義
對(duì)比學(xué)習(xí)就是以拉近相似數(shù)據(jù),推開(kāi)不相似數(shù)據(jù)為目標(biāo),有效地學(xué)習(xí)數(shù)據(jù)表征。給定一個(gè)pair對(duì)樣本集合 D = { ( x i , x i + ) } i = 1 m D=\{(x_{i}, x_{i}^{+})\}^{m}_{i=1} D={(xi?,xi+?)}i=1m?,其中 x i x_{i} xi?和 x i + x_{i}^{+} xi+?為相似樣本,優(yōu)化目標(biāo)一般采用通過(guò)批內(nèi)負(fù)樣本(in-batch negatives)交叉熵?fù)p失函數(shù),如下,
l i = ? log ? e s i m ( h i , h i + ) / τ ∑ j = 1 N e s i m ( h i , h j + ) / τ l_{i}=-\log\frac{e^{sim(h_{i},h_{i}^{+})/\tau}}{\sum_{j=1}^{N} e^{sim(h_{i},h_{j}^{+})/\tau}} li?=?log∑j=1N?esim(hi?,hj+?)/τesim(hi?,hi+?)/τ?
其中, h i h_{i} hi?和 h i + h_{i}^{+} hi+?為 x i x_{i} xi?和 x i + x_{i}^{+} xi+?的句向量表示, N N N為訓(xùn)練過(guò)程中batch的大小, s i m ( h i , h i + ) sim(h_{i},h_{i}^{+}) sim(hi?,hi+?)為向量 h i h_{i} hi?和 h i + h_{i}^{+} hi+?余弦相似度, τ \tau τ為溫度超參。
在SimCSE論文中,采用BERT模型對(duì)句子進(jìn)行句向量表征,即 h = f θ ( x ) h=f_{\theta}(x) h=fθ?(x),其中, f θ f_{\theta} fθ?為BERT模型參數(shù),并通過(guò)對(duì)比學(xué)習(xí)損失優(yōu)化網(wǎng)絡(luò)全部參數(shù)。
2.2.2構(gòu)造正樣本
對(duì)比學(xué)習(xí)中的一個(gè)關(guān)鍵問(wèn)題是如何構(gòu)建 ( x i , x i + ) (x_{i}, x_{i}^{+}) (xi?,xi+?)數(shù)據(jù)對(duì)。在計(jì)算機(jī)視覺(jué)中,通過(guò)對(duì)一張圖片進(jìn)行簡(jiǎn)單地裁剪,翻轉(zhuǎn),扭曲和旋轉(zhuǎn)就可以獲取質(zhì)量很高的 x i + x_{i}^{+} xi+?;而在自然語(yǔ)言處理中,構(gòu)造 x i + x_{i}^{+} xi+?的方法與圖像類似,一般對(duì)原始句子進(jìn)行轉(zhuǎn)譯、重排,或?qū)Σ糠衷~語(yǔ)刪除、插入、替換等;但是由于離散性,導(dǎo)致NLP中的數(shù)據(jù)擴(kuò)充往往會(huì)引入大量的負(fù)面噪聲,使得 x i + x_{i}^{+} xi+?的質(zhì)量難以保證。
在SimCSE論文中,提出使用標(biāo)準(zhǔn)dropout操作構(gòu)造高質(zhì)量 x i + x_{i}^{+} xi+?,并達(dá)到比上述數(shù)據(jù)擴(kuò)充更好的效果。
2.2.3對(duì)齊性和均勻性
在對(duì)比學(xué)習(xí)中,通常使用對(duì)齊性(alignment)和均勻性(uniformity)來(lái)衡量表征質(zhì)量的好壞。
alignment是計(jì)算 ( x i , x i + ) (x_{i}, x_{i}^{+}) (xi?,xi+?)數(shù)據(jù)對(duì)向量表征之間的距離,表示數(shù)據(jù)之前的緊密程度,
l a l i g n ? E ( x i , x i + ) p p o s ∣ ∣ f ( x ) ? f ( x + ) ∣ ∣ 2 l_{align} \triangleq \mathop{E}\limits_{(x_{i}, x_{i}^{+})~p_{pos}} ||f(x)-f(x^+)||^2 lalign??(xi?,xi+?)?ppos?E?∣∣f(x)?f(x+)∣∣2
uniformity是計(jì)算 x i x_{i} xi?向量表征在整體特征分布上的均勻程度,
l u n i f o r m ? l o g E x , y ~ i . i . d . p d a t a e ? 2 ∣ ∣ f ( x ) ? f ( y ) ∣ ∣ 2 l_{uniform} \triangleq log \mathop{E}\limits_{x,y \mathop{\sim}\limits^{i.i.d.} p_{data}} e^{-2||f(x)-f(y)||^2} luniform??logx,y~i.i.d.pdata?E?e?2∣∣f(x)?f(y)∣∣2
其中, p d a t a p_{data} pdata?表示數(shù)據(jù)分布。
這兩個(gè)指標(biāo)與對(duì)比學(xué)習(xí)的目標(biāo)是一致的:正例之間應(yīng)該保持緊密,而任意向量的語(yǔ)義特征應(yīng)該盡可能地分散在超球體上。
2.3.無(wú)監(jiān)督SimCSE
無(wú)監(jiān)督SimCSE的思想非常簡(jiǎn)單,給定一個(gè)句子集合 { x i } i = 1 m \{x_i\}_{i=1}^{m} {xi?}i=1m?,將 x i x_{i} xi?分別輸入到編碼器中兩次,分別得到向量 z i z_{i} zi?的正例和 z i ’ z_{i}^{’} zi’?;由于隨機(jī)dropout masks機(jī)制存在于模型的fully-connected layers和attention probabilities上,因此相同的輸入,經(jīng)過(guò)模型后會(huì)得到不同的結(jié)果;將 z i ’ z_{i}^{’} zi’?向量作為 z i z_{i} zi?的正例,其他向量作為負(fù)例,SimCSE的訓(xùn)練目標(biāo)變成:
l i = ? log ? e s i m ( h i z i , h i z i ’ ) / τ ∑ j = 1 N e s i m ( h i z i , h j z j ’ ) / τ l_{i}=-\log\frac{e^{sim(h_{i}^{z_i},h_{i}^{^{z_i^{’}}})/\tau}}{\sum_{j=1}^{N} e^{sim(h_{i}^{z_i},h_{j}^{z_j^{’}})/\tau}} li?=?log∑j=1N?esim(hizi??,hjzj’??)/τesim(hizi??,hizi’??)/τ?
注意: z z z為Transformers中的標(biāo)準(zhǔn)dropout mask,在無(wú)監(jiān)督SimCSE沒(méi)有額外增加任何dropout。
2.3.1Dropout數(shù)據(jù)增強(qiáng)與其他的比較
通過(guò)dropout masks機(jī)制進(jìn)行數(shù)據(jù)增強(qiáng)構(gòu)造正例的方法,可以視為一種最小形式的數(shù)據(jù)擴(kuò)充,正例與原始樣本之間采用完全相同的句子,只有在向量表征過(guò)程中的dropout mask有所不同。
在STS-B的開(kāi)發(fā)集上,比較該方法與其他數(shù)據(jù)增強(qiáng)方法的差異。在英文維基上隨機(jī)抽取 1 0 6 10^6 106個(gè)句子進(jìn)行訓(xùn)練,學(xué)習(xí)速率=3e-5,批次大小為64。并訓(xùn)練過(guò)程中沒(méi)有使用STS訓(xùn)練集。
- 裁剪,刪除和替換等數(shù)據(jù)增強(qiáng)方法,效果均不如dropout masks機(jī)制,即使刪除一個(gè)詞也會(huì)損害性能,詳細(xì)如下表所示,
- 使用下一句作為目標(biāo)訓(xùn)練,或者采用兩個(gè)獨(dú)立的編碼器進(jìn)行編碼的效果,不如采用一個(gè)編碼器的dropout masks機(jī)制,詳細(xì)如下表所示,
3.2為什么該方法可以work?
- 為了進(jìn)一步理解dropout噪聲在無(wú)監(jiān)督SimCSE中的作用,論文嘗試了不同的dropout率,如下表所示,
可以發(fā)現(xiàn)僅在默認(rèn)dropout概率p=0.1時(shí)效果最優(yōu),并且當(dāng)dropout概率p=0,或者相同輸入有同樣的dropout mask時(shí),效果顯著下降。
- 在訓(xùn)練過(guò)程中,每隔10步檢查一次模型,并可視化alignment和uniformity在訓(xùn)練過(guò)程中的變化,如下圖所示,
可以發(fā)現(xiàn),在訓(xùn)練過(guò)程中,所有模型的均勻性都在提高,但是對(duì)于no-dropout和fixed-0.1模型來(lái)說(shuō)對(duì)齊性急劇下降,而無(wú)監(jiān)督SimCSE和delete-one-word模型進(jìn)本持平。雖然delete-one-word模型的對(duì)齊性好于無(wú)監(jiān)督SimCSE,但是均勻性相差較多,因此在整體效果上,無(wú)監(jiān)督SimCSE更勝一籌。
2.4.有監(jiān)督SimCSE
對(duì)比學(xué)習(xí)的關(guān)鍵是如何構(gòu)建 ( x i , x i + ) (x_{i}, x_{i}^{+}) (xi?,xi+?)數(shù)據(jù)對(duì),在無(wú)監(jiān)督SimCSE中,借助dropout mask機(jī)制,構(gòu)造高質(zhì)量 x i + x_{i}^{+} xi+?數(shù)據(jù),已經(jīng)獲得了較好的句向量表征;在有監(jiān)督SimCSE中,如何通過(guò)監(jiān)督數(shù)據(jù),進(jìn)一步提高句向量表征,具體如下:
2.4.1監(jiān)督數(shù)據(jù)的選擇
共存在四種數(shù)據(jù)集,適合構(gòu)造對(duì)比學(xué)習(xí) ( x i , x i + ) (x_{i}, x_{i}^{+}) (xi?,xi+?)數(shù)據(jù)對(duì),分別是:
- QQP:Quora問(wèn)題對(duì);
相似的問(wèn)題對(duì)為正樣本,如下:
正樣本 How can I improve my communication and verbal skills? What should we do to improve communication skills?不相似的問(wèn)題對(duì)為負(fù)樣本,如下:
負(fù)樣本 Why are you so sexy? How sexy are you?- Flickr30k:每個(gè)圖像都有5個(gè)人進(jìn)行描述,可以認(rèn)為同一圖像的任意兩個(gè)描述為一對(duì) ( x i , x i + ) (x_{i}, x_{i}^{+}) (xi?,xi+?)數(shù)據(jù)對(duì);
以下圖為例:
對(duì)圖片中的人物的5段描述,如下:
人物描述 Gray haired man in black suit and yellow tie working in a financial environment. A graying man in a suit is perplexed at a business meeting. A businessman in a yellow tie gives a frustrated look. A man in a yellow tie is rubbing the back of his neck. A man with a yellow tie looks concerned.- ParaNMT:大規(guī)模的回譯數(shù)據(jù)集;
針對(duì)原數(shù)據(jù)進(jìn)行機(jī)器翻譯,獲得回譯數(shù)據(jù),如下:
原數(shù)據(jù):so, what’s half an hour? 回譯數(shù)據(jù):half an hour won’t kill you.- NLI datasets:自然語(yǔ)言推理數(shù)據(jù)集,包括:SNLI和MNLI。
自然語(yǔ)言推理數(shù)據(jù)集,包含蘊(yùn)含、矛盾和中立;蘊(yùn)含表示第二句話可以推理出第一句話;矛盾表示第二句話不能推理出第一句話;中立表示兩句話無(wú)關(guān);舉例如下:
蘊(yùn)含樣本 well you see that on television also You can see that on television, as well. 矛盾樣本 but that takes too much planning It doesn't take much planning. 中立樣本 Conceptually cream skimming has two basic dimensions - product and geography. Product and geography are what make cream skimming work.在四種數(shù)據(jù)集上,直接使用 ( x i , x i + ) (x_{i}, x_{i}^{+}) (xi?,xi+?)數(shù)據(jù)對(duì)進(jìn)行訓(xùn)練的結(jié)果如下表所示,
可以發(fā)現(xiàn),NLI數(shù)據(jù)集上,采用語(yǔ)義蘊(yùn)含對(duì)作為 ( x i , x i + ) (x_{i}, x_{i}^{+}) (xi?,xi+?)數(shù)據(jù)對(duì)的效果最好;并且統(tǒng)計(jì)發(fā)現(xiàn),語(yǔ)義蘊(yùn)含對(duì)(SNLI + MNLI)的詞匯重疊僅占比39%,而QQP和ParaNMT數(shù)據(jù)集占比60%和55%。最終,選擇NLI數(shù)據(jù)集進(jìn)行監(jiān)督學(xué)習(xí)。
2.4.2難負(fù)例的使用
NLI數(shù)據(jù)集中,一個(gè)前提假設(shè)文本,具有對(duì)應(yīng)的蘊(yùn)含文本和矛盾文本,將矛盾文本作為難負(fù)例;即, ( x i , x i + ) (x_{i}, x_{i}^{+}) (xi?,xi+?)數(shù)據(jù)對(duì)變成 ( x i , x i + , x i ? ) (x_{i}, x_{i}^{+}, x_{i}^{-}) (xi?,xi+?,xi??)數(shù)據(jù)組,其中, x i + x_{i}^{+} xi+?為蘊(yùn)含文本, x i ? x_{i}^{-} xi??為矛盾文本;監(jiān)督學(xué)習(xí)SimCSE的訓(xùn)練目標(biāo)變成:
l i = ? log ? e s i m ( h i , h i + ) / τ ∑ j = 1 N ( e s i m ( h i , h j + ) / τ + e s i m ( h i , h j ? ) / τ ) l_{i}=-\log\frac{e^{sim(h_{i},h_{i}^{+})/\tau}}{\sum_{j=1}^{N} (e^{sim(h_{i},h_{j}^{+})/\tau} +e^{sim(h_{i},h_{j}^{-})/\tau})} li?=?log∑j=1N?(esim(hi?,hj+?)/τ+esim(hi?,hj??)/τ)esim(hi?,hi+?)/τ?
通過(guò)上表可以發(fā)現(xiàn),增加矛盾文本作為難負(fù)例后,效果有所提高。
直觀上,區(qū)分難負(fù)例(矛盾文本)和Batch內(nèi)其他負(fù)例可能是有益的,將監(jiān)督學(xué)習(xí)SimCSE的訓(xùn)練目標(biāo)變成:
l i = ? log ? e s i m ( h i , h i + ) / τ ∑ j = 1 N ( e s i m ( h i , h j + ) / τ + α 1 i j e s i m ( h i , h j ? ) / τ ) l_{i}=-\log\frac{e^{sim(h_{i},h_{i}^{+})/\tau}}{\sum_{j=1}^{N} (e^{sim(h_{i},h_{j}^{+})/\tau} + \alpha^{1_{i}^{j}} e^{sim(h_{i},h_{j}^{-})/\tau})} li?=?log∑j=1N?(esim(hi?,hj+?)/τ+α1ij?esim(hi?,hj??)/τ)esim(hi?,hi+?)/τ?
用不同的α值訓(xùn)練SimCSE模型,并在STS-B開(kāi)發(fā)集上對(duì)訓(xùn)練的模型進(jìn)行評(píng)價(jià),發(fā)現(xiàn)當(dāng)α為1時(shí)效果最優(yōu),并且中性數(shù)據(jù)不會(huì)帶來(lái)更多的收益,如下表所示,
2.5.各向異性問(wèn)題
最近的研究發(fā)現(xiàn)了語(yǔ)言表征中的各向異性問(wèn)題,即訓(xùn)練后的embeddings僅占據(jù)在向量空間中狹窄的部分,嚴(yán)重限制了向量的表現(xiàn)力。
緩解這個(gè)問(wèn)題的一個(gè)簡(jiǎn)單方法是后處理,可以消除主要的主成分或?qū)mbeddings映射到各向同性分布。另一種常見(jiàn)的解決方案是在訓(xùn)練過(guò)程中添加正則項(xiàng)。
而對(duì)比學(xué)習(xí)的優(yōu)化目標(biāo)可以改善緩解各向異性問(wèn)題,當(dāng)負(fù)例數(shù)趨近于無(wú)窮大時(shí),對(duì)比學(xué)習(xí)目標(biāo)的漸近表示為:
? 1 τ E ( x i , x i + ) ~ p p o s [ f ( x ) T f ( x + ) ] + E x ~ p d a t a [ log ? E x ? ~ p d a t a [ e f ( x ) T f ( x ? ) / τ ] ] - \frac{1}{\tau}\mathop{E}\limits_{(x_{i}, x_{i}^{+}) \sim p_{pos}}[f(x)^{T}f(x^+)] + \mathop{E}\limits_{x \sim p_{data}}[\log \mathop{E}\limits_{x^- \sim p_{data}}[e^{f(x)^{T}f(x^-)/ \tau}]] ?τ1?(xi?,xi+?)~ppos?E?[f(x)Tf(x+)]+x~pdata?E?[logx?~pdata?E?[ef(x)Tf(x?)/τ]]
其中,第一項(xiàng)使正例之間更相似,第二項(xiàng)使將負(fù)例之間分開(kāi)。而第二項(xiàng)在優(yōu)化過(guò)程中,會(huì)壓平向量空間的奇異譜,因此對(duì)比學(xué)習(xí)有望緩解表征退化問(wèn)題,提高句向量表征的均勻性。并通過(guò)下圖,可以發(fā)現(xiàn),
- 雖然預(yù)訓(xùn)練embeddings具有良好的對(duì)齊性,但其均勻性較差;
- 后處理方法,大大改善均勻性,但也使其對(duì)齊性變差;
- 無(wú)監(jiān)督SimCSE有效地提高了預(yù)訓(xùn)練embeddings的均勻性,同時(shí)保持了良好的對(duì)齊性;
- 有監(jiān)督SimCSE,可以進(jìn)一步提高對(duì)齊性。
2.6.實(shí)驗(yàn)細(xì)節(jié)
對(duì)7個(gè)語(yǔ)義文本相似度(STS)任務(wù)進(jìn)行了實(shí)驗(yàn),將無(wú)監(jiān)督和有監(jiān)督的SimCSE與STS任務(wù)中的最先進(jìn)的句子嵌入方法進(jìn)行了比較,可以發(fā)現(xiàn),無(wú)監(jiān)督和有監(jiān)督的SimCSE均取得了sota的效果,具體如下表所示,
2.6.1訓(xùn)練參數(shù)
對(duì)于有監(jiān)督的SimCSE,對(duì)模型進(jìn)行3個(gè)輪的訓(xùn)練,在STS-B的開(kāi)發(fā)集上每訓(xùn)練250步進(jìn)行一次模型驗(yàn)證,并保存測(cè)試集上最優(yōu)效果的節(jié)點(diǎn)。對(duì)于無(wú)監(jiān)督的SimCSE與有監(jiān)督的SimCSE操作一致,但僅訓(xùn)練一個(gè)epoch。并對(duì)批次大小和學(xué)習(xí)率進(jìn)行網(wǎng)格搜索,找尋最優(yōu)參數(shù),如下圖所示,
實(shí)驗(yàn)發(fā)現(xiàn),只要相應(yīng)地調(diào)整學(xué)習(xí)速率,SimCSE對(duì)批量大小并不敏感,這與對(duì)比學(xué)習(xí)需要大批次的發(fā)現(xiàn)相矛盾。可能原因?yàn)樗蠸imCSE模型都是在原有預(yù)訓(xùn)練模型基礎(chǔ)上繼續(xù)訓(xùn)練的,已經(jīng)提供了較好的初始化參數(shù)。
2.6.2MLP Layer
對(duì)于無(wú)監(jiān)督和有監(jiān)督的SimCSE,訓(xùn)練過(guò)程均采用在帶有一個(gè)MLP層的[CLS]向量作為句向量表征。但,對(duì)于無(wú)監(jiān)督的SimCSE,在測(cè)試中丟棄了MLP層,僅使用[CLS]向量作為句向量表征,詳細(xì)實(shí)驗(yàn)如下表所示,
2.6.3MLM
在訓(xùn)練過(guò)程中引入masked language modeling變量,可以提到模型的遷移效果,如下表所示,
但值得注意的是,遷移性的提高,會(huì)造成原始任務(wù)上的效果下降。
2.6.4溫度
溫度主要用于調(diào)整softmax函數(shù)的平滑程度,在訓(xùn)練過(guò)程中,溫度為0.05時(shí),效果最佳。
SimCSE論文,在無(wú)監(jiān)督句向量表征上,通過(guò)簡(jiǎn)單的dropout方式,構(gòu)造了對(duì)比學(xué)習(xí)的正例,達(dá)到堪比監(jiān)督學(xué)習(xí)效果,堪稱大道至簡(jiǎn)。并且在監(jiān)督學(xué)習(xí)上,對(duì)比學(xué)習(xí)框架效果也取得了SOTA。
- 參考文獻(xiàn)
- SimCSE: Simple Contrastive Learning of Sentence Embeddings
更多文章請(qǐng)關(guān)注公重號(hào):汀丶人工智能
3.NLP更多詳細(xì)介紹:數(shù)據(jù)增強(qiáng)、智能標(biāo)注、意圖識(shí)別算法|多分類算法、文本信息抽取、多模態(tài)信息抽取、可解釋性分析、性能調(diào)優(yōu)、模型壓縮算法等
前人栽樹(shù)后人乘涼,本專欄提供資料:數(shù)據(jù)增強(qiáng)、智能標(biāo)注、意圖識(shí)別算法|多分類算法、文本信息抽取、多模態(tài)信息抽取、可解釋性分析、性能調(diào)優(yōu)、模型壓縮算法等項(xiàng)目代碼整合,省去你大把時(shí)間,效率提升。 幫助你快速完成任務(wù)落地,以及科研baseline。
NLP專欄簡(jiǎn)介:數(shù)據(jù)增強(qiáng)、智能標(biāo)注、意圖識(shí)別算法|多分類算法、文本信息抽取、多模態(tài)信息抽取、可解釋性分析、性能調(diào)優(yōu)、模型壓縮算法等
總結(jié)
以上是生活随笔為你收集整理的深度学习应用篇-自然语言处理[10]:N-Gram、SimCSE介绍,更多技术:数据增强、智能标注、多分类算法、文本信息抽取、多模态信息抽取、模型压缩算法等的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 重庆电信强化线上渠道基础管理
- 下一篇: NLP for Quant:使用NLP和