最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

特定領(lǐng)域知識圖譜融合方案:技術(shù)知識前置【一】-文本匹配算法

2023-01-18 17:19 作者:汀丶人工智能  | 我要投稿

特定領(lǐng)域知識圖譜(Domain-specific KnowledgeGraph:DKG)融合方案:技術(shù)知識前置【一】-文本匹配算法、知識融合學(xué)術(shù)界方案、知識融合業(yè)界落地方案、算法測評KG生產(chǎn)質(zhì)量保障

0.前言

本項(xiàng)目主要圍繞著特定領(lǐng)域知識圖譜(Domain-specific KnowledgeGraph:DKG)融合方案:技術(shù)知識前置【一】-文本匹配算法、知識融合學(xué)術(shù)界方案、知識融合業(yè)界落地方案、算法測評KG生產(chǎn)質(zhì)量保障講解了文本匹配算法的綜述,從經(jīng)典的傳統(tǒng)模型到孿生神經(jīng)網(wǎng)絡(luò)“雙塔模型”再到預(yù)訓(xùn)練模型以及有監(jiān)督無監(jiān)督聯(lián)合模型,期間也涉及了近幾年前沿的對比學(xué)習(xí)模型,之后提出了文本匹配技巧提升方案,最終給出了DKG的落地方案。這邊主要以原理講解和技術(shù)方案闡述為主,之后會(huì)慢慢把項(xiàng)目開源出來,一起共建KG,從知識抽取到知識融合、知識推理、質(zhì)量評估等爭取走通完整的流程。

1.文本匹配算法綜述(短文本匹配)

文本匹配任務(wù)在自然語言處理中是非常重要的基礎(chǔ)任務(wù)之一,一般研究兩段文本之間的關(guān)系。有很多應(yīng)用場景;如信息檢索、問答系統(tǒng)、智能對話、文本鑒別、智能推薦、文本數(shù)據(jù)去重、文本相似度計(jì)算、自然語言推理、問答系統(tǒng)、信息檢索等,但文本匹配或者說自然語言處理仍然存在很多難點(diǎn)。這些自然語言處理任務(wù)在很大程度上都可以抽象成文本匹配問題,比如信息檢索可以歸結(jié)為搜索詞和文檔資源的匹配,問答系統(tǒng)可以歸結(jié)為問題和候選答案的匹配,復(fù)述問題可以歸結(jié)為兩個(gè)同義句的匹配。

  1. 如語言不規(guī)范,同一句話可以有多種表達(dá)方式;如“股市跳水、股市大跌、股市一片綠”

  2. 歧義,同一個(gè)詞語或句子在不同語境可能表達(dá)不同意思;如“割韭菜”,“領(lǐng)盒飯”,“蘋果”“小米”等在不同語境下語義完全不同

  3. 不規(guī)范或錯(cuò)誤的輸入;如 “ yyds”,“絕絕子”“奪筍”“耗子尾汁”

  4. 需要知識依賴;如奧運(yùn)冠軍張怡寧綽號“乒乓大魔王”等。

短文本匹配即計(jì)算兩個(gè)短文本的相似度,通常分成無監(jiān)督方式、有監(jiān)督方式、有監(jiān)督+無監(jiān)督方式

常見的文本匹配算法如下表(簡單羅列),按傳統(tǒng)模型和深度模型簡單的分為兩類:

| 算法| 類型 | | -------- | -------- | | Jaccord| 傳統(tǒng)模型| | BM25 | 傳統(tǒng)模型| | VSM | 傳統(tǒng)模型| | SimHash | 傳統(tǒng)模型| | Levenshtein| 傳統(tǒng)模型| | cdssm | 深度模型| | arc-ii| 深度模型| | match_pyramid| 深度模型| | mvlstm| 深度模型| | bimpm| 深度模型| | drcn| 深度模型| | esim| 深度模型| | textmatching| 深度模型| | bert-base| 深度模型| | albert-base| 深度模型| | albert-large| 深度模型| | raberta | 深度模型| | sbert | 深度模型| | DiffCSE | 深度模型| | ERNIE-Gram| 深度模型|

1.1 文本匹配傳統(tǒng)模型(無監(jiān)督方式)

文本表征:詞袋模型(one-hot 、TF)、詞向量預(yù)訓(xùn)練(word2vector、fasttext、glove) 相似度計(jì)算:余弦相似度、曼哈頓距離、歐氏距離、jaccard距離等

1.1.1 Jaccord 杰卡德相似系數(shù)

jaccard相似度是一種非常直觀的相似度計(jì)算方式,即兩句子分詞后詞語的交集中詞語數(shù)與并集中詞語數(shù)之比。

$\text { jaccard }=\frac{A \bigcap B}{A \bigcup B}$

def jaccard(list1, list2): ? ?""" ? ?jaccard相似系數(shù) ? ?:param list1:第一句話的詞列表 ? ?:param list2: 第二句話的詞列表 ? ?:return:相似度,float值 ? ?""" ? ?list1, list2 = set(list1), set(list2) #去重 ? ?intersection = list1.intersection(list2) # 交集 ? ?union = list1.union(list2) ?# 并集 ? ?Similarity = 1.0 * len(intersection) / len(union) #交集比并集 ? ?return Similarity

a.分詞

? ?內(nèi)蒙古 錫林郭勒盟 多倫縣 縣醫(yī)院 ? ?/ ? ?多倫縣 醫(yī)院 ? ?綿陽市 ?四 零 四 醫(yī)院 ? ? / ? ? 四川 綿陽 404 醫(yī)院 ? ?鄧州市 人民 醫(yī)院 ? ? ? / ? ? ? 南召縣 人民 醫(yī)院

b.去重求交集--并集

? ?多倫縣(交集) ? ?-- ? ? ?內(nèi)蒙古、錫林郭勒盟、多倫縣、縣醫(yī)院、醫(yī)院(并集) ? ?醫(yī)院(交集) ? ? ?-- ? ? ? ?綿陽市、四、零、醫(yī)院、四川、綿陽、404(并集) ? ?人民、醫(yī)院(交集) ? ?-- ? ? 鄧州市、人民、醫(yī)院、南召縣(并集)

c.相似度

| 文本對 | 相似度 | 真實(shí)標(biāo)簽 | | -------- | -------- | -------- | | 內(nèi)蒙古 錫林郭勒盟 多倫縣 縣醫(yī)院 / 多倫縣 醫(yī)院 | 1/5=0.2 | 1 | | 綿陽市 四零四醫(yī)院/四川 綿陽 404 醫(yī)院 | 1/7 = 0.14 | 1 | |鄧州市 人民 醫(yī)院 / 南召縣 人民 醫(yī)院 | 2/4 = 0.5 | 0 |

1.1.2.Levenshtein編輯距離

一個(gè)句子轉(zhuǎn)換為另一個(gè)句子需要的編輯次數(shù),編輯包括刪除、替換、添加,然后使用最長句子的長度歸一化得相似度。

def Levenshtein(text1, text2): ? ?""" ? ?Levenshtein編輯距離 ? ?:param text1:字符串1 ? ?:param text2:字符串2 ? ?:return:相似度,float值 ? ?""" ? ?import Levenshtein ? ?distance = Levenshtein.distance(text1, text2) ? ?Similarity = 1 - distance * 1.0 / max(len(text1), len(text2)) ? ?return Similarity

a.分詞-計(jì)字?jǐn)?shù)

? ?內(nèi) 蒙 古 錫 林 郭 勒 盟 多 倫 縣 縣 醫(yī) 院 (14) ? / ? ?多 倫 縣 醫(yī) 院(5) ? ?綿 陽 市 ?四 零 四 醫(yī) 院(8) ? ? / ? ? 四 川 綿 陽 4 0 4 醫(yī) 院(9) ? ?鄧 州 市 人 民 醫(yī) 院 (7) ? ? ?/ ? ? ? 南 召 縣 人 民 醫(yī) 院(7)

b.計(jì)算編輯距離

? 內(nèi) 蒙 古 錫 林 郭 勒 盟 多 倫 縣 縣 醫(yī) 院 ------->刪除內(nèi)、蒙、古、錫、林、郭、勒、盟、縣 ? 綿 陽 市 ?四 零 四 醫(yī) 院 ? ------->加 四、川 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ------->刪除 市 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ------->替換 四(4)、零(0)、四(4) ? 鄧 州 市 人 民 醫(yī) 院 ? ? ? ? ------->替換鄧(南)、 州(召)、 市(縣)

| 文本對 | 距離 | 真實(shí)標(biāo)簽 | | -------- | -------- | -------- | | 內(nèi)蒙古 錫林郭勒盟 多倫縣 縣醫(yī)院 / 多倫縣 醫(yī)院 | 0.357 | 1 | | 綿陽市 四零四醫(yī)院/四川 綿陽 404 醫(yī)院 | 0.333 | 1 | |鄧州市 人民 醫(yī)院 / 南召縣 人民 醫(yī)院 | 0.571 | 0 |

1.1.3 simhash相似度

先計(jì)算兩句子的simhash二進(jìn)制編碼,然后使用海明距離計(jì)算,最后使用兩句的最大simhash值歸一化得相似度。

def simhash_(text1, text2): ? ?""" ? ?simhash相似度 ? ?:param s1: 字符串1 ? ?:param s2: 字符串2 ? ?:return: 相似度,float值 ? ?""" ? ?from simhash import Simhash ? ?text1_simhash = Simhash(text1, f=64) ?#計(jì)算simhash向量 ? ?text2_simhash = Simhash(text2, f=64) ?#計(jì)算simhash向量 ? ?distance = text1_simhash.distance(text2_simhash) ?#漢明距離 ? ?Similarity = 1 - distance / max(len(bin(text1_simhash.value)), len(bin(text2_simhash.value))) #相似度 ? ?return Similarity

a.分詞

? ?內(nèi)蒙古 錫林郭勒盟 多倫縣 縣醫(yī)院 ? ?/ ? ?多倫縣 醫(yī)院 ? ?綿陽市 ?四 零 四 醫(yī)院 ? ? / ? ? 四川 綿陽 404 醫(yī)院 ? ?鄧州市 人民 醫(yī)院 ? ? ? / ? ? ? 南召縣 人民 醫(yī)院

b.計(jì)算詞權(quán)重(此處用tfidf計(jì)算,其他方法也可以)

| Text | Text | Text |

| 內(nèi)蒙古5 | 錫林郭勒盟5 | 多倫縣2 |縣醫(yī)院5 | 多倫縣7 | 醫(yī)院1 | | | | | -------- | -------- | -------- |-------- | -------- | -------- |-------- | -------- | -------- | | 綿陽市3 | 四6| 零3 |四6 | 醫(yī)院1 |四川5 |綿陽5 | 4045 | 醫(yī)院1| | 鄧州市7 | 人民4 | 醫(yī)院1 |南召縣7 | 人民4 | 醫(yī)院1 | | | |

c.hash函數(shù)映射詞向量

  • 先將詞映射到二進(jìn)制編碼,

  • 然后用b步驟中的權(quán)重值替換1,

  • b步驟中權(quán)重值的負(fù)數(shù)替換0

d.合并(將一段文本內(nèi)的詞向量進(jìn)行累加)

e海明距離判斷相似度

海明距離可以理解為:兩個(gè)二進(jìn)制串之間相同位置不同的個(gè)數(shù)。舉個(gè)例子,[1,1,1,0,0,0]和[1,1,1,1,1,1]的海明距離就是3。

1.1.4 Bm25相似度

一句話概況其主要思想:對Query(待查詢語句)進(jìn)行語素解析,生成語素qi;然后,對于每個(gè)搜索結(jié)果D,計(jì)算每個(gè)語素qi與D的相關(guān)性得分,最后,將qi相對于D的相關(guān)性得分進(jìn)行加權(quán)求和,從而得到Query與D的相關(guān)性得分。公式如下:


Q表示Query,qi即Q分詞后的每一個(gè)解析語素(對中文而言,我們可以把對Query的分詞作為語素分析,每個(gè)詞看成語素qi)。d表示一個(gè)搜索結(jié)果文檔,Wi表示語素qi的權(quán)重,R(qi,d)表示語素qi與文檔d的相關(guān)性得分。 判斷一個(gè)詞與一個(gè)文檔的相關(guān)性的權(quán)重定義Wi方法有多種,較常用的是IDF。公式如下:


  • N為索引中的全部文檔數(shù),

  • n(qi)為包含了qi的文檔數(shù)。

根據(jù)IDF的定義可以看出當(dāng)很多文檔都包含了qi時(shí),qi的區(qū)分度就不高,因此使用qi來判斷相關(guān)性時(shí)的重要度就較低。


求Score(qi,d)具體的公式可以參考文本相似度-BM25算法 其中

  • f(qi, D)為單詞在當(dāng)前候選文檔中的詞頻

  • k1、b為調(diào)節(jié)因子,通常設(shè)為k1=2,b=0.75

  • |D|為當(dāng)前候選文本數(shù)(與目標(biāo)文本匹配的總條數(shù))

  • avgdl為語料庫中所有文檔的平均長度。

在做文本匹配的時(shí)候(如重復(fù)問題檢測)可以嘗試BM25的方法,但在搜索領(lǐng)域中,有時(shí)候搜索query和候選文檔的長度是不一樣甚至差距很大,所以BM25在計(jì)算相似性的時(shí)候需要對文檔長度做一定的處理。

文本相似度-BM25算法


1.1.5 VSM(向量空間模型)算法

VSM算法的思路主要分為兩步:

(1) 用向量表示句子,用向量表示句子的方法很多,簡單的有onehot,詞頻法,基于語義的有word2vec/fastText/glove/bert/elmo等,本例中使用基于簡單的詞頻的向量化方式。

(2)計(jì)算兩向量的余弦距離(曼哈頓距離、歐幾里得距離、明式距離、切比雪夫距離)得相似度。


a.句子向量化

a1.取句子對的唯一詞元組

set(內(nèi)蒙古 錫林郭勒盟 多倫縣 縣醫(yī)院 / 多倫縣 醫(yī)院) = (內(nèi)蒙古 錫林郭勒盟 多倫縣 縣醫(yī)院 醫(yī)院)

set(綿陽市 四 零 四 醫(yī)院 / 四川 綿陽 404 醫(yī)院) = (綿陽市 四 零 醫(yī)院 四川 綿陽 404 )

set(鄧州市 人民 醫(yī)院 / 南召縣 人民 醫(yī)院) = (鄧州市 人民 醫(yī)院 南召縣)

a2.根據(jù)每個(gè)句子在元組中的詞頻建立向量表示

b.計(jì)算余弦距離


| 句子 | 距離 |
| -------- | -------- | | 內(nèi)蒙古 錫林郭勒盟 多倫縣 縣醫(yī)院 / 多倫縣 醫(yī)院 | 0.3535 | | 綿陽市 四零四醫(yī)院/四川 綿陽 404 醫(yī)院 | 0.1889 | |鄧州市 人民 醫(yī)院 / 南召縣 人民 醫(yī)院 | 0.6666 |

1.1.6 word2vector + 相似度計(jì)算(BERT模型+余弦相似度為例)

常用做法是通過word2vec等預(yù)訓(xùn)練模型得到詞向量,然后對文本做分詞,通過embedding_lookup得到每個(gè)token對應(yīng)的詞向量,然后得到短文本的句向量。對兩個(gè)文本的句子向量采用相似度計(jì)算方法如余弦相似度、曼哈頓距離、歐氏距離等。無監(jiān)督方式取得的結(jié)果取決于預(yù)訓(xùn)練詞向量的效果。

BERT是谷歌在2018年推出的深度語言表示模型,是關(guān)于語言理解的深度雙向transformers的預(yù)訓(xùn)練模型,開啟了預(yù)訓(xùn)練模型的新篇章。它可以學(xué)習(xí)文本的語義信息,通過向量形式的輸出可以用于下游任務(wù)。也就說,它自己已經(jīng)在大規(guī)模預(yù)料上訓(xùn)練好的參數(shù),我們在用的時(shí)候只需要在這個(gè)基礎(chǔ)上訓(xùn)練更新參數(shù)。bert模型可以解決多種自然語言處理問題,如單文本分類、語句對分類、序列標(biāo)注等。在解決文本匹配任務(wù)時(shí),有兩種思路,第一種直接把文本匹配任務(wù)作為語句對分類任務(wù),模型輸入語句對,輸出是否匹配的標(biāo)簽;第二種利用bert模型預(yù)訓(xùn)練文本對的上下文嵌入向量,再通過余弦相似度等相似度計(jì)算方法驗(yàn)證文本對是否匹配,在此基礎(chǔ)上還有很多基于bert模型的變種,篇幅有限不做一一講述。接下來簡單介紹一下bert預(yù)訓(xùn)練文本嵌入+余弦相似度的算法框架。

a.首先使用大量公域文本數(shù)據(jù)對BERT模型進(jìn)行預(yù)訓(xùn)練(或直接用谷歌預(yù)訓(xùn)練好的模型)

b.將文本直接輸入模型

c.對模型輸出的語義向量C,或中間隱層向量,計(jì)算余弦相似度,得到匹配結(jié)果。

基于深度學(xué)習(xí)的匹配算法種類繁多,如基于CNN網(wǎng)絡(luò)、RNN網(wǎng)絡(luò)、LSTM網(wǎng)絡(luò)等及各種變種層出不窮,在此不一一列舉實(shí)現(xiàn)。

傳統(tǒng)的文本匹配方法主要關(guān)注文本間字與字,詞與詞的匹配關(guān)系,無法準(zhǔn)確識別不同表達(dá)方式下不同文本的同一指向關(guān)系,即語義關(guān)系。因此在這一背景下,要對多源異構(gòu)的海量地址數(shù)據(jù)進(jìn)行匹配,傳統(tǒng)的文本匹配方法已不再適用,深度學(xué)習(xí)方法大行其道。但深度學(xué)習(xí)方法也有自身的局限性,比如對海量文本和算力的高要求等,都使得深度學(xué)習(xí)方法的普適性大打折扣,因此沒有最好的文本匹配算法,只有當(dāng)前條件下最適合的文本匹配算法。

2.有監(jiān)督方式

2.1 孿生神經(jīng)網(wǎng)絡(luò)(Siamese Network)

原文:《Learning a Similarity Metric Discriminatively, with Application to Face Verification》

  1. 要解決什么問題?

  2. 用于解決類別很多(或者說不確定),然而訓(xùn)練樣本的類別數(shù)較少的分類任務(wù)(比如人臉識別、人臉認(rèn)證)

  3. 通常的分類任務(wù)中,類別數(shù)目固定,且每類下的樣本數(shù)也較多(比如ImageNet)

  4. 用了什么方法解決?

提出了一種思路:將輸入映射為一個(gè)特征向量,使用兩個(gè)向量之間的“距離”(L1 Norm)來表示輸入之間的差異(圖像語義上的差距)。 基于上述思路設(shè)計(jì)了Siamese Network。每次需要輸入兩個(gè)樣本作為一個(gè)樣本對計(jì)算損失函數(shù)。

  • [x] 常用的softmax只需要輸入一個(gè)樣本。

  • [x] FaceNet中的Triplet Loss需要輸入三個(gè)樣本。

  • [x] 提出了Contrastive Loss用于訓(xùn)練。

  1. 效果如何?

文中進(jìn)行了一個(gè)衡量兩張人臉的相似度的實(shí)驗(yàn),使用了多個(gè)數(shù)據(jù)庫,較復(fù)雜。siamese network現(xiàn)在依然有很多地方使用,可以取得state-of-the-art的效果。

  1. 還存在什么問題?

  • contrastive loss的訓(xùn)練樣本的選擇需要注意,論文中都是盡量保證了50%的正樣本對和50%的負(fù)樣本對。

分類問題:

  • 第一類,分類數(shù)量較少,每一類的數(shù)據(jù)量較多,比如ImageNet、VOC等。這種分類問題可以使用神經(jīng)網(wǎng)絡(luò)或者SVM解決,只要事先知道了所有的類。

  • 第二類,分類數(shù)量較多(或者說無法確認(rèn)具體數(shù)量),每一類的數(shù)據(jù)量較少,比如人臉識別、人臉驗(yàn)證任務(wù)。

文中提出的解決方案:

learn a similar metric from data。核心思想是,尋找一個(gè)映射函數(shù),能夠?qū)⑤斎雸D像轉(zhuǎn)換到一個(gè)特征空間,每幅圖像對應(yīng)一個(gè)特征向量,通過一些簡單的“距離度量”(比如歐式距離)來表示向量之間的差異,最后通過這個(gè)距離來擬合輸入圖像的相似度差異(語義差異)。

2.1.1 簡介

  • Siamese Network 是一種神經(jīng)網(wǎng)絡(luò)的框架,而不是具體的某種網(wǎng)絡(luò),就像seq2seq一樣,具體實(shí)現(xiàn)上可以使用RNN也可以使用CNN。

  • Siamese network就是“連體的神經(jīng)網(wǎng)絡(luò)”,神經(jīng)網(wǎng)絡(luò)的“連體”是通過共享權(quán)值來實(shí)現(xiàn)的。(共享權(quán)值即左右兩個(gè)神經(jīng)網(wǎng)絡(luò)的權(quán)重一模一樣)

  • siamese network的作用是衡量兩個(gè)輸入的相似程度。孿生神經(jīng)網(wǎng)絡(luò)有兩個(gè)輸入(Input1 and Input2),將兩個(gè)輸入feed進(jìn)入兩個(gè)神經(jīng)網(wǎng)絡(luò)(Network1 and Network2),這兩個(gè)神經(jīng)網(wǎng)絡(luò)分別將輸入映射到新的空間,形成輸入在新的空間中的表示。通過Loss的計(jì)算,評價(jià)兩個(gè)輸入的相似度。

Siamese Network有兩個(gè)結(jié)構(gòu)相同,且共享權(quán)值的子網(wǎng)絡(luò)。分別接收兩個(gè)輸入X1與X2,將其轉(zhuǎn)換為向量Gw(X1)與Gw(X2),再通過某種距離度量的方式計(jì)算兩個(gè)輸出向量的距離Ew。

訓(xùn)練Siamese Network采用的訓(xùn)練樣本是一個(gè)tuple (X1,X2,y)(X1,X2,y),標(biāo)簽y=0表示X1與X2屬于不同類型(不相似、不重復(fù)、根據(jù)應(yīng)用場景而定)。y=1則表示X2與X2屬于相同類型(相似)。

LOSS函數(shù)的設(shè)計(jì)應(yīng)該是

  1. 當(dāng)兩個(gè)輸入樣本不相似(y=0)時(shí),距離Ew越大,損失越小,即關(guān)于Ew的單調(diào)遞減函數(shù)。

  2. 當(dāng)兩個(gè)輸入樣本相似(y=1)時(shí),距離Ew越大,損失越大,即關(guān)于Ew的單調(diào)遞增函數(shù)。

用L+(X1,X2)表示y=1時(shí)的LOSS,L?(X1,X2)表示y=0時(shí)的LOSS,則LOSS函數(shù)可以寫成如下形式:

Lw(X1,X2)=(1?y)L?(X1,X2)+yL+(X1,X2)

簡單來說:孿生體現(xiàn)在使用相同的編碼器(sentence encoder),將文本轉(zhuǎn)為高維向量。具體步驟為,有文本A和文本B分別輸入 sentence encoder 進(jìn)行特征提取和編碼,將輸入映射到新的空間得到特征向量u和v;最終通過u、v的拼接組合,經(jīng)過下游網(wǎng)絡(luò)來計(jì)算文本A和B的相似性

  • 在訓(xùn)練和測試中,模型的編碼器是權(quán)重共享的,編碼器可以選擇CNN、RNN、LSTM等

  • 提取到特征u、v后,可以使用余弦距離、歐氏距離等得到兩個(gè)文本的相似度。

  • 缺點(diǎn)是兩個(gè)文本在編碼時(shí)候沒有交互,缺乏交互的結(jié)構(gòu)沒有充分利用到兩個(gè)文本相互影響的信息

2.2 匹配聚合網(wǎng)絡(luò)(ESIM,BIMPM)

在上述孿生網(wǎng)絡(luò)的基礎(chǔ)上,得到特征u、v但是不直接計(jì)算向量相似度,而是通過注意力機(jī)制將兩個(gè)文本進(jìn)行信息交互,最后通過全連接層得到相似度。

代表的模型有ESIM,BIMPM等

以ESIM為例

  • 首先是對兩個(gè)文本的初期編碼,就是對兩個(gè)文本做分詞、文本表征,即對句子進(jìn)行信息的提取。如果使用LSTM作為encoder,可以得到每個(gè)時(shí)刻(每個(gè)單詞)的輸出,通常維度為[batchsize, seqlen, embedding_dim]。舉例子為,句子A長度10,句子B長度也為10,那么進(jìn)過編碼以后句子A的維度[1,10,300],句子B[1,10,300],這里就得到了上述所提到的u、v

  • 接下來是交互操作,為了操作簡單忽略batchsize維度,交互即矩陣相乘得到[10,10],矩陣需要對句子A做橫向概率歸一,對句子B做縱向概率歸一。上面這句話其實(shí)就是ESIM的核心要點(diǎn)。它是一個(gè)兩個(gè)item之間互相做attention,簡單稱之為both attention。

  • 對attention后得到的向量做拼接后輸出編碼器,輸出再接到全連接層、softmax就可以得到結(jié)果,即兩個(gè)文本相似(label 1)或不相似(label 0)

3.預(yù)訓(xùn)練語言模型

  1. 第一階段,使用通用的預(yù)料庫訓(xùn)練語言模型,

  2. 第二階段預(yù)訓(xùn)練的語言模型(BERT相關(guān)衍生的模型)做相似度任務(wù),得到信息交互后的向量,

  3. 連接全連接層,輸出概率。即將兩個(gè)短文本拼接(CLS A1 A2 … A 10 SEP B1 B2 … B10 SEP),然后CLS向量連接全連接層,判斷相似與否。

這種模型參數(shù)多,并且使用了通用的語料庫,能夠獲取到短文本之間隱藏的交互信息,效果較好。

簡單來說用拼接的方法類似“單塔”,孿生網(wǎng)絡(luò)的方法類似“雙塔”,不完全準(zhǔn)確后續(xù)會(huì)詳細(xì)說明,預(yù)訓(xùn)練模型就不展開講了,大家去官網(wǎng)或者多看幾篇學(xué)術(shù)論文吧,BERT ERNIE。

4.有監(jiān)督方式 + 無監(jiān)督方式

無監(jiān)督:直接相加得到句向量,不能很好的表達(dá)語義信息,并且詞的位置信息沒有得到體現(xiàn),也不包含上下文的語義信息。

有監(jiān)督學(xué)習(xí):時(shí)間復(fù)雜度太高??梢詫?biāo)準(zhǔn)庫中的句向量計(jì)算完成并存儲(chǔ)。新的文本來臨時(shí),只需要解決用戶問題即可,然后與存儲(chǔ)在庫中的標(biāo)準(zhǔn)問句進(jìn)行距離度量。

可以使用BERT代替孿生網(wǎng)絡(luò)的CNN或LSTM結(jié)構(gòu),獲取更多語義信息的句向量,還可以通過蒸餾降低BERT模型的參數(shù),節(jié)約時(shí)間成本。

4.1 Sentence-BERT

文章鏈接:https://arxiv.org/pdf/1908.10084.pdf

論文代碼:https://github.com/UKPLab/

為了讓BERT更好地利用文本信息,作者們在論文中提出了如下的SBERT模型。SBERT沿用了孿生網(wǎng)絡(luò)的結(jié)構(gòu),文本Encoder部分用同一個(gè)BERT來處理。之后,作者分別實(shí)驗(yàn)了CLS-token和2種池化策略(Avg-Pooling、Mean-Pooling),對Bert輸出的字向量進(jìn)一步特征提取、壓縮,得到u、v。

關(guān)于u、v整合,作者提供了3種策略:

  1. 將u、v拼接,接入全連接網(wǎng)絡(luò),經(jīng)過softmax輸出,損失函數(shù)用交叉熵?fù)p失

  2. 直接計(jì)算兩個(gè)文本的余弦相似度,損失函數(shù)用均方根誤差

  1. 如果輸入的是三元組

SBERT直接用BERT的原始權(quán)重初始化,在具體數(shù)據(jù)集微調(diào),訓(xùn)練過程和傳統(tǒng)Siamese Network類似。但是這種訓(xùn)練方式能讓Bert更好的捕捉句子之間的關(guān)系,生成更優(yōu)質(zhì)的句向量。在測試階段,SBERT直接使用余弦相似度來衡量兩個(gè)句向量之間的相似度,極大提升了推理速度。

使用NLI和STS為代表的匹配數(shù)據(jù)集,在分類目標(biāo)函數(shù)訓(xùn)練時(shí),作者測試了不同的整合策略,結(jié)果顯示“(u, v, |u-v|)”的組合效果最好。最重要的部分是元素差:(|u - v|)。句向量之間的差異度量了兩個(gè)句子嵌入維度間的距離,確保相似的pair更近,不同的pair更遠(yuǎn)。

4.2 對比學(xué)習(xí)

深度學(xué)習(xí)的本質(zhì)是做兩件事情:①表示學(xué)習(xí) ②歸納偏好學(xué)習(xí)。對比學(xué)習(xí)(ContrastiveLearning)則是屬于表示學(xué)習(xí)的范疇,它并不需要關(guān)注樣本的每一個(gè)細(xì)節(jié),但是學(xué)到的特征要使其能夠和其他樣本區(qū)分開。對比學(xué)習(xí)作為一種無監(jiān)督表示學(xué)習(xí)方法,最開始也是在CV領(lǐng)域掀起浪潮,之后NLP跟進(jìn),在文本相似度匹配等任務(wù)上超過SOTASOTA。該任務(wù)主要是對文本進(jìn)行表征,使相近的文本距離更近,差別大的文本距離更遠(yuǎn)。

NLP的對比學(xué)習(xí)算法下文將不詳細(xì)講述簡單展示更多內(nèi)容參考鏈接。

4.2.1 BERT-Flow 2020.11

很多研究發(fā)現(xiàn)BERT表示存在問題:未經(jīng)微調(diào)的BERT模型在文本相似度匹配任務(wù)上表現(xiàn)不好,甚至不如Glove?作者通過分析BERT的性質(zhì),如圖:

在理論上BERT確實(shí)提取到了足夠的語義信息,只是這些信息無法通過簡單的consine直接利用。主要是因?yàn)?

  • ①BERT的詞向量在空間中不是均勻分布,而是呈錐形。高頻詞都靠近原點(diǎn),而低頻詞遠(yuǎn)離原點(diǎn),相當(dāng)于這兩種詞處于了空間中不同的區(qū)域,那高頻詞和低頻詞之間的相似度就不再適用;

  • ②低頻詞的分布很稀疏。低頻詞表示得到的訓(xùn)練不充分,分布稀疏,導(dǎo)致該區(qū)域存在語義定義不完整的地方(poorly defined),這樣算出來的相似度存在問題。

針對以上問題,提出了BERT-Flow,基于流式生成模型,將BERT的輸出空間由一個(gè)錐形可逆地映射為標(biāo)準(zhǔn)的高斯分布空間。

4.2.2 BERT-Whitening 2021.03

BERT-Whitening首先分析了余弦相似度為什么可以衡量向量的相似度:向量A 與B 的乘積等于A AA在B BB所在直線上投影的長度。將兩個(gè)向量擴(kuò)展到d維

$\cos (A, B)=\frac{\sum{i=1}^d ai bi}{\sqrt{\sum{i=1}^d ai^2} \sqrt{\sum{i=1}^d b_i^2}}$

$\text { 模的計(jì)算公式: }|A|=\sqrt{a1^2+a2^2+\ldots+a_n^2}$

上述等式的成立,都是在標(biāo)準(zhǔn)正交基(忘了的同學(xué)可以自行復(fù)習(xí)一下)的條件下,也就是說向量依賴我們選擇的坐標(biāo)基,基底不同,內(nèi)積對應(yīng)的坐標(biāo)公式就不一樣,從而余弦值的坐標(biāo)公式也不一樣。 所以,BERT的句向量雖然包含了足夠的語義,但有可能是因?yàn)榇藭r(shí)句向量所屬的坐標(biāo)系并非標(biāo)準(zhǔn)正交基,而導(dǎo)致用基于標(biāo)準(zhǔn)正交基的余弦相似度公式計(jì)算時(shí)效果不好。那么怎么知道具體用了何種基底呢?可以依據(jù)統(tǒng)計(jì)學(xué)去判斷,在給向量集合選擇基底時(shí),盡量平均地用好每一個(gè)基向量,這就體現(xiàn)為每個(gè)分量的使用都是獨(dú)立的、均勻的,如果這組基是標(biāo)準(zhǔn)正交基,那么對應(yīng)的向量集應(yīng)該表現(xiàn)出“各向同性”來,如果不是,可以想辦法讓它變得更加各向同性一寫,然后再用余弦公式計(jì)算,BERT-Flow正是想到了“flow模型”的辦法,而作者則找到了一種更簡單的線性變換的方法。

標(biāo)準(zhǔn)化協(xié)方差矩陣

BERT-Whitening還支持降維操作,能達(dá)到提速和提效的效果。

★PCA和SVD差異分析:PCA可以將方陣分解為特征值和特征向量,SVD則可以分解任意形狀的矩陣。

4.2.3 ConSERT 2021.05

https://arxiv.org/pdf/2105.11741.pdf

美團(tuán)技術(shù)團(tuán)隊(duì)提出了基于對比學(xué)習(xí)的句子表示遷移方法——ConSERT,主要證實(shí)了以下兩點(diǎn):

①BERT對所有的句子都傾向于編碼到一個(gè)較小的空間區(qū)域內(nèi),這使得大多數(shù)的句子對都具有較高的相似度分?jǐn)?shù),即使是那些語義上完全無關(guān)的句子對。我們將此稱為BERT句子表示的“坍縮(Collapse)”現(xiàn)象。

②BERT句向量表示的坍縮和句子中的高頻詞有關(guān)。當(dāng)通過平均詞向量的方式計(jì)算句向量時(shí),高頻詞的詞向量將會(huì)主導(dǎo)句向量,使之難以體現(xiàn)其原本的語義。當(dāng)計(jì)算句向量時(shí)去除若干高頻詞時(shí),坍縮現(xiàn)象可以在一定程度上得到緩解。

為了解決BERT存在的坍縮問題,作者提出了句子表示遷移框架:

對BERT encoder做了改進(jìn),主要包括三個(gè)部分:

*①數(shù)據(jù)增強(qiáng)模塊,作用于embedding層,為同一文本生成不同的編碼。

  1. shuffle:更換position id的順序

  2. token cutoff:在某個(gè)token維度把embedding置為0

  3. feature cutoff:在embedding矩陣中,有768個(gè)維度,把某個(gè)維度的feature置為0

  4. dropout:embedding中每個(gè)元素都有一定概率為0,沒有行或列的約束

數(shù)據(jù)增強(qiáng)效果:Token Shuffle > Token Cutoff >> Feature Cutoff ≈ Dropout >> None

  • ②共享的Bert encoder,生成句向量。

  • ③一個(gè)對比損失層,在一個(gè)Batch內(nèi)計(jì)算損失,拉近同一樣本不同句向量的相似度,使不同樣本之間相互遠(yuǎn)離。損失函數(shù):

$L{i, j}=-\log \frac{\exp \left(\operatorname{sim}\left(ri, rj\right) / \tau\right)}{\sum{k=1}^{2 N} 1{[k \neq i]} \exp \left(\operatorname{sim}\left(ri, r_k\right) / \tau\right)}$

N:Batchsize,2N表示2種數(shù)據(jù)增強(qiáng)方式,sim():余弦相似度函數(shù),r:句向量,τ:實(shí)驗(yàn)0.08?0.12最優(yōu)

除了無監(jiān)督訓(xùn)練之外,作者還提出了三種進(jìn)一步融合監(jiān)督信號的策略:

  • ①聯(lián)合訓(xùn)練(joint):有監(jiān)督的損失和無監(jiān)督的損失通過加權(quán)聯(lián)合訓(xùn)練模型。

  • ②先有監(jiān)督再無監(jiān)督(sup-unsup):先使用有監(jiān)督損失訓(xùn)練模型,再使用無監(jiān)督的方法進(jìn)行表示遷移。

  • ③聯(lián)合訓(xùn)練再無監(jiān)督(joint-unsup):先使用聯(lián)合損失訓(xùn)練模型,再使用無監(jiān)督的方法進(jìn)行表示遷移。

參考鏈接:https://blog.csdn.net/PX2012007/article/details/127614565

4.2.4 SimCSE:2021.04

前幾節(jié)講述了對比學(xué)習(xí)的原理和幾種基于 Bert 的方式獲取句子向量,例如 BERT-flow和 BERT-whitening 等,對預(yù)訓(xùn)練 Bert 的輸出進(jìn)行變換從而得到更好的句子向量。后面將通過 ①構(gòu)造目標(biāo)函數(shù) ②構(gòu)建正負(fù)例 的對比學(xué)習(xí)方法訓(xùn)練模型,取得SOTA的效果。

SimCSE是有大神陳丹琦發(fā)表的《Simple Contrastive Learning of Sentence Embeddings》,簡單高效

SimCSE包含無監(jiān)督(圖左部分)和有監(jiān)督(圖右部分)兩種方法。實(shí)線箭頭代表正例,虛線代表負(fù)例。

  • Unsupervised

創(chuàng)新點(diǎn)在于使用Dropout對文本增加噪音。

1.正例構(gòu)造:利用Bert的隨機(jī)Dropout,同一文本經(jīng)過兩次Bert enconder得到不同的句向量構(gòu)成相似文本。

2.負(fù)例構(gòu)造:同一個(gè)Batch中的其他樣本作為負(fù)例被隨機(jī)采樣。

  • Supervised

1.正例:標(biāo)注數(shù)據(jù) 2.負(fù)例:同Batch內(nèi)的其他樣本

4.2.5 R-Drop(Supervised):2021.06

https://arxiv.org/abs/2106.14448

Dropout雖然可以防止模型訓(xùn)練中的過擬合并增強(qiáng)魯棒性,但是其操作在一定程度上會(huì)使訓(xùn)練后的模型成為一種多個(gè)子模型的組合約束。SimCSE就是希望Dropout對模型結(jié)果不會(huì)有太大影響,也就是模型輸出對Dropout是魯棒的。所以,“Dropout兩次”這種思想是可以推廣到一般任務(wù)的,這就是R-Drop(Regularized Dropout),由微軟亞洲研究院和蘇州大學(xué)提出的更加簡單有效的正則方法。

  • R-Drop與傳統(tǒng)作用于神經(jīng)元或模型參數(shù)的約束方法不同,而是作用于輸出層,彌補(bǔ)了Dropout在訓(xùn)練和測試時(shí)的不一致性。在每個(gè)mini-batch中,每個(gè)數(shù)據(jù)樣本過兩次帶有Dropout的同一個(gè)模型,R-Drop再使用KL-divergence(KL散度)約束兩次的輸出一致。所以,R-Drop約束了由于Dropout帶來的兩個(gè)隨機(jī)子模型的輸出一致性。

  • R-Drop只是簡單增加了一個(gè)KL-散度損失函數(shù)項(xiàng),并沒有其他任何改動(dòng)。雖然該方法看起來很簡單,但在NLP和CV的任務(wù)中,都取得了非常不錯(cuò)的SOTA結(jié)果。

同樣的輸入,同樣的模型,經(jīng)過兩個(gè) Dropout 得到的將是兩個(gè)不同的分布,近似將這兩個(gè)路徑網(wǎng)絡(luò)看作兩個(gè)不同的模型網(wǎng)絡(luò)?;诖?,這兩個(gè)不同的模型產(chǎn)生的不同分布而這篇文章的主要貢獻(xiàn)就是在訓(xùn)練過程中不斷拉低這兩個(gè)分布之間的KL 散度。由于KL 散度本身具有不對稱性,作者通過交換這兩種分布的位置以間接使用整體對稱的KL 散度,稱之為雙向KL 散度。

4.2.6 ESimCSE(Unsupervised):2021.09

https://arxiv.org/abs/2109.04380

SimCSE構(gòu)建正負(fù)例時(shí)存在兩個(gè)兩個(gè)缺點(diǎn):

  • ①構(gòu)造正例長度相等,導(dǎo)致模型預(yù)測時(shí)存在偏差,長度相等的文本會(huì)傾向預(yù)測相似度高。

  • ②對比學(xué)習(xí)理論上負(fù)例越多,對之間模型學(xué)習(xí)的越好,但增大Batch會(huì)受到性能的限制。

ESimCSE針對以上問題做了相應(yīng)的改進(jìn):

  • 正例構(gòu)造:通過引入噪聲較小的“單詞重復(fù)”方式改變正例的長度,設(shè)置重復(fù)率duprate,確定duplen后利用均勻分布隨機(jī)選取dup_len子詞進(jìn)行重復(fù)。

  • 負(fù)例構(gòu)造:為了更有效的擴(kuò)展負(fù)對,同時(shí)不降低性能,通過維護(hù)一個(gè)隊(duì)列,重用前面緊接的mini-batch的編碼嵌入來擴(kuò)展負(fù)對:

    • ①將當(dāng)前mini-batch的句嵌入放入隊(duì)列,同時(shí)將“最老的”句子踢出隊(duì)列。由于排隊(duì)句子嵌入來自前面的mini-batch,通過取其參數(shù)的移動(dòng)平均來保持動(dòng)量更新模型,并利用動(dòng)量模型生成排隊(duì)句子嵌入。

    • 在使用動(dòng)量編碼器時(shí),關(guān)閉了dropout,這可以縮小訓(xùn)練和預(yù)測之間的差距。

4.2.7 PromptBERT(Unsupervised):2022.01

https://arxiv.org/pdf/2201.04337v1.pdf

Prompt Learning比較火熱,號稱NLP的第四范式,

  • 作者發(fā)現(xiàn)BERT在語義相似度方面表現(xiàn)不好,主要由:static token embeddings biases和ineffective layers,而不是high cosine similarity of the sentence embedding。static token embedding是在bert結(jié)構(gòu)中,輸入進(jìn)block前,通過embedding layer產(chǎn)生的結(jié)果,這里強(qiáng)調(diào)是靜態(tài)的embedding,就是embedding metrics中每個(gè)token都唯一對應(yīng)的embedding,是不隨句子環(huán)境而變化的。至于ineffective layers就很好理解了,就是bert中堆疊的block結(jié)構(gòu),比如bert-base中的12層。作者認(rèn)為這些結(jié)構(gòu),對語義相似度的表征這個(gè)方面是無效的。

  • Anisotropy(各向異性):上篇我們已經(jīng)提到,詞向量是有維度的,每個(gè)維度上基向量單位向量長度不一樣,就是各向異性的。這會(huì)造成計(jì)算向量相似度的時(shí)候產(chǎn)生偏差。如何度量Anisotropy:

作者分析了造成embedding bias的原因,除了token frequency是造成bias的原因,作者又提出了:subwords,case sentitive

圖中不同詞頻token的分布情況,顏色越深代表詞頻越高,我們可以看出詞頻高的token,分布比較緊湊,詞頻低的token,分布較分散。作者輸出這個(gè)圖像還有一個(gè)目的是他提出各向異性(anisotropy)和偏差(bias)是不相關(guān)的,各向異性不是導(dǎo)致偏差的原因。 Embedding bias意思是映射分布被一些不相關(guān)的信息所干擾,是可以用降維的方式去可視化的。

更多細(xì)節(jié)參考原論文,Prompt效果就不贅述了,百度開發(fā)的UIE模型在NLP就很強(qiáng)大!

4.2.8 SNCSE(Unsupervised):2022.01

https://arxiv.org/abs/2201.05979

SNCSE同樣是由微軟團(tuán)隊(duì)提出,主要是針對以上方法存在的問題:當(dāng)前對比學(xué)習(xí)的數(shù)據(jù)增強(qiáng)方式,獲取的正樣本都極為相似,導(dǎo)致模型存在特征抑制,即模型不能區(qū)分文本相似度和語義相似度,并更偏向具有相似文本,而不考慮它們之間的實(shí)際語義差異。

為了減輕特征抑制,該論文提出了通過軟負(fù)樣本結(jié)合雙向邊際損失的無監(jiān)督句子嵌入對比學(xué)習(xí)方法。其中,軟負(fù)樣本,即具有高度相似,但與原始樣本在語義上存在明顯的差異的樣本。雙向邊際損失,即通過擴(kuò)大原始樣本與正例和原始樣本與軟負(fù)例之間的距離,使模型更好地學(xué)習(xí)到句子之間的語義差別。 軟負(fù)樣本構(gòu)造:為原文本添加顯示的否定詞。

  • 在獲取句子表征時(shí),受PromptBERT啟發(fā),通過三種模板表示原樣本、正樣本和軟負(fù)樣本:

4.2.9 DiffCSE(Unsupervised):2022.04

https://arxiv.org/pdf/2204.10298.pdf

結(jié)合句子間差異的無監(jiān)督句子嵌入對比學(xué)習(xí)方法——DiffCSE主要還是在SimCSE上進(jìn)行優(yōu)化(可見SimCSE的重要性),通過ELECTRA模型的生成偽造樣本和RTD(Replaced Token Detection)任務(wù),來學(xué)習(xí)原始句子與偽造句子之間的差異,以提高句向量表征模型的效果。

其思想同樣來自于CV領(lǐng)域(采用不變對比學(xué)習(xí)和可變對比學(xué)習(xí)相結(jié)合的方法可以提高圖像表征的效果)。作者提出使用基于dropout masks機(jī)制的增強(qiáng)作為不敏感轉(zhuǎn)換學(xué)習(xí)對比學(xué)習(xí)損失和基于MLM語言模型進(jìn)行詞語替換的方法作為敏感轉(zhuǎn)換學(xué)習(xí)「原始句子與編輯句子」之間的差異,共同優(yōu)化句向量表征。

在SimCSE模型中,采用pooler層(一個(gè)帶有tanh激活函數(shù)的全連接層)作為句子向量輸出。該論文發(fā)現(xiàn),采用帶有BN的兩層pooler效果更為突出,BN在SimCSE模型上依然有效。

  • ①對于掩碼概率,經(jīng)實(shí)驗(yàn)發(fā)現(xiàn),在掩碼概率為30%時(shí),模型效果最優(yōu)。

  • ②針對兩個(gè)損失之間的權(quán)重值,經(jīng)實(shí)驗(yàn)發(fā)現(xiàn),對比學(xué)習(xí)損失為RTD損失200倍時(shí),模型效果最優(yōu)。

參考鏈接:https://blog.csdn.net/PX2012007/article/details/127696477

4.2.10 小結(jié)

SimCSE以來幾種比較重要的文本增強(qiáng)式的對比學(xué)習(xí)算法,按時(shí)間順序,理論上應(yīng)該是距離越近的算法效果越好,但使用時(shí),還是要結(jié)合具體的業(yè)務(wù)場景,算法沒有好壞,還是用看怎么用。對于有些內(nèi)容,可能敘述的不是很細(xì)致或是需要一定的知識鋪墊,感興趣的同學(xué)可以針對性的研讀論文和輔助其他資料。當(dāng)然,算法層出不窮,更新很快,后續(xù)出現(xiàn)比較重要的對比學(xué)習(xí)算法。

5.文本匹配常見思路(技巧提升)

  • TextCNN/TEXTRNN

  • Siamese-RNN

  • 采用多種BERT類預(yù)訓(xùn)練模型

  • 對單模型進(jìn)行調(diào)參

  • 多模型融合

  • BERT后接上RCNN/RNN/CNN/LSTM/Siamese等等

5.1方案一

特征工程

  1. 數(shù)據(jù)清洗:大賽給的數(shù)據(jù)比較規(guī)整,數(shù)據(jù)清洗部分工作不多,簡單做了特殊字符處理等操作。

  2. 數(shù)據(jù)增強(qiáng)

  • 傳遞閉包擴(kuò)充(標(biāo)簽傳遞)

根據(jù)IF A=B and A=C THEN B=C的規(guī)則,對正樣本做了擴(kuò)充增強(qiáng)。

根據(jù)IF A=B and A!=C THEN B!=C的規(guī)則,對負(fù)樣本做了擴(kuò)充增強(qiáng)。

在對負(fù)樣本進(jìn)行擴(kuò)充后, 正負(fù)樣本比例從原始的1.4:1, 變成2.9:1。 所以又對負(fù)樣本進(jìn)行了下采樣, 是的正負(fù)樣本比例1:1。

  • 同義詞替換

  • 使用開源包synormise的效果不太好, 后面可以嘗試使用公開醫(yī)學(xué)預(yù)料訓(xùn)練word2vec模型來做同義詞替換(時(shí)間問題, 沒有嘗試)。

隨機(jī)刪除,隨機(jī)替換, 隨機(jī)交換 句式比較短, 隨機(jī)刪除更短。 很多query僅僅相差一個(gè)單詞, 隨機(jī)替換改變語義。 多數(shù)屬于問句, 隨機(jī)交換改變了語義。

  1. 模型選擇

在預(yù)訓(xùn)練模型的基礎(chǔ)上通過對抗訓(xùn)練增強(qiáng)模型的泛化性能。

  • BRET Bert的一個(gè)下游基礎(chǔ)任務(wù)語句對分類(Sentence Pair Classification Task), [CLS] Bert的輸出有一個(gè)維度的向量表示

  • BERT+CNN(LSTM) 將BERT的輸出特征作為文本的表示向量, 然后后面再接上LSTM或者CNN(效果下降)

  • BERT+siamese 將大賽提供的category信息利用上, 借用孿生網(wǎng)絡(luò)的思想與兩個(gè)Query進(jìn)行拼接(效果下降)。

  1. 結(jié)果分析

  • 單模型線上效果

目前所訓(xùn)練的模型中:

小模型中BERT-wwm-ext表現(xiàn)是最好的,

大模型中RoBERTa-large-pair表現(xiàn)最好。

在現(xiàn)有的資源和模型上, 對單模型的參數(shù)尋優(yōu)到達(dá)一個(gè)天花板,線上最高的分?jǐn)?shù)為0.9603。后面開始探索多模型融合。

  • 多模型融合線上效果

將不同類型的預(yù)訓(xùn)練模型作為基模型進(jìn)行多模型融合?;P偷奶暨x準(zhǔn)則基于單模型的線上提交效果,從不同類型的單模型中挑選線上表現(xiàn)最好的參數(shù), 重新訓(xùn)練融合。

基模型:

BERT-wwm-ext + FGM

RoBERTa-large-pair + FGM

Ernie(BaiDu)+ FGM

模型融合策略使用的是averaging, 為了降低差別比較小的模型對結(jié)果的影響,采用sigmoid反函數(shù)的方式進(jìn)行ensemble。

關(guān)于對抗訓(xùn)練在NLP中的作用,引用大佬的一句話叫緣,妙不可言~

5.2方案二

  1. 探索分析

文本長度:訓(xùn)練集和驗(yàn)證集分布類似,大都集中在10-20個(gè)字

標(biāo)簽分布

總體思路

  1. 數(shù)據(jù)劃分

采用kfold交叉驗(yàn)證(右邊的劃分方式)

?利用全部數(shù)據(jù),獲得更多信息

?降低方差,提高模型性能

  1. 模型設(shè)計(jì)

二分類交叉熵?fù)p失函數(shù):

  1. 模型融合

小模型同時(shí)加入CHIP2019數(shù)據(jù)訓(xùn)練

| 模型 | 特點(diǎn) | 權(quán)重 | 加入外部句對數(shù)據(jù) | | ------------------ | -------------------------- | ---- | ---------------- | | BERT-wwm-ext | 全詞Mask | 1 | YES | | Ernie-1.0 | 對詞、實(shí)體及實(shí)體關(guān)系建模 | 1 | YES | | RoBERTa-large-pair | 面向相似性或句子對任務(wù)優(yōu)化 | 1 | NO |

  1. 數(shù)據(jù)預(yù)處理

對稱擴(kuò)充、傳遞擴(kuò)充(注意要保持原來的分布,否則會(huì)過擬合)

  1. 訓(xùn)練

  • 三種結(jié)構(gòu):(實(shí)際使用差別不大,第一種又好又簡單)

  • 對抗訓(xùn)練


  1. 預(yù)測

  • 算數(shù)平均→幾何平均→sigmoid平均(用反函數(shù)取出sigmoid/softmax歸一化之前的狀態(tài)做平均,信息量更大,提升明顯)

  • 分類閾值微調(diào)(0.47)

  • 偽標(biāo)簽

5.3 更多方案

更多方案就不一一展開了,參考下方鏈接:

https://tianchi.aliyun.com/notebook/101626

https://tianchi.aliyun.com/notebook/101648

https://tianchi.aliyun.com/notebook/101648

參考鏈接:

https://tianchi.aliyun.com/competition/entrance/231776/forum

https://tianchi.aliyun.com/notebook/102057

6.特定領(lǐng)域知識圖譜(Domain-specific KnowledgeGraph:DKG)融合方案(重點(diǎn)!)

在前面技術(shù)知識下可以看看后續(xù)的實(shí)際業(yè)務(wù)落地方案和學(xué)術(shù)方案

關(guān)于圖神經(jīng)網(wǎng)絡(luò)的知識融合技術(shù)學(xué)習(xí)參考下面鏈接:PGL圖學(xué)習(xí)項(xiàng)目合集&數(shù)據(jù)集分享&技術(shù)歸納業(yè)務(wù)落地技巧[系列十]

從入門知識到經(jīng)典圖算法以及進(jìn)階圖算法等,自行查閱食用!

文章篇幅有限請參考專欄按需查閱:NLP知識圖譜相關(guān)技術(shù)業(yè)務(wù)落地方案和碼源

6.1 特定領(lǐng)域知識圖譜知識融合方案(實(shí)體對齊):優(yōu)酷領(lǐng)域知識圖譜為例

方案鏈接:https://blog.csdn.net/sinat_39620217/article/details/128614951

6.2 特定領(lǐng)域知識圖譜知識融合方案(實(shí)體對齊):文娛知識圖譜構(gòu)建之人物實(shí)體對齊

方案鏈接:https://blog.csdn.net/sinat_39620217/article/details/128673963

6.3 特定領(lǐng)域知識圖譜知識融合方案(實(shí)體對齊):商品知識圖譜技術(shù)實(shí)戰(zhàn)

方案鏈接:https://blog.csdn.net/sinat_39620217/article/details/128674429

6.4 特定領(lǐng)域知識圖譜知識融合方案(實(shí)體對齊):基于圖神經(jīng)網(wǎng)絡(luò)的商品異構(gòu)實(shí)體表征探索

方案鏈接:https://blog.csdn.net/sinat_39620217/article/details/128674929

6.5 特定領(lǐng)域知識圖譜知識融合方案(實(shí)體對齊)論文合集

方案鏈接:https://blog.csdn.net/sinat_39620217/article/details/128675199

論文資料鏈接:兩份內(nèi)容不相同,且按照序號從小到大重要性依次遞減

知識圖譜實(shí)體對齊資料論文參考(PDF)+實(shí)體對齊方案+特定領(lǐng)域知識圖譜知識融合方案(實(shí)體對齊)

知識圖譜實(shí)體對齊資料論文參考(CAJ)+實(shí)體對齊方案+特定領(lǐng)域知識圖譜知識融合方案(實(shí)體對齊)

6.6 知識融合算法測試方案(知識生產(chǎn)質(zhì)量保障)

方案鏈接:https://blog.csdn.net/sinat_39620217/article/details/128675698

7.總結(jié)

本項(xiàng)目主要圍繞著特定領(lǐng)域知識圖譜(Domain-specific KnowledgeGraph:DKG)融合方案:技術(shù)知識前置【一】-文本匹配算法、知識融合學(xué)術(shù)界方案、知識融合業(yè)界落地方案、算法測評KG生產(chǎn)質(zhì)量保障講解了文本匹配算法的綜述,從經(jīng)典的傳統(tǒng)模型到孿生神經(jīng)網(wǎng)絡(luò)“雙塔模型”再到預(yù)訓(xùn)練模型以及有監(jiān)督無監(jiān)督聯(lián)合模型,期間也涉及了近幾年前沿的對比學(xué)習(xí)模型,之后提出了文本匹配技巧提升方案,最終給出了DKG的落地方案。這邊主要以原理講解和技術(shù)方案闡述為主,之后會(huì)慢慢把項(xiàng)目開源出來,一起共建KG,從知識抽取到知識融合、知識推理、質(zhì)量評估等爭取走通完整的流程。



特定領(lǐng)域知識圖譜融合方案:技術(shù)知識前置【一】-文本匹配算法的評論 (共 條)

分享到微博請遵守國家法律
雷州市| 涪陵区| 彭山县| 深水埗区| 崇文区| 福海县| 麟游县| 山西省| 牙克石市| 岳普湖县| 榕江县| 陵水| 宜君县| 潞西市| 噶尔县| 维西| 苍梧县| 社旗县| 衡南县| 厦门市| 临江市| 高邑县| 巨野县| 手机| 昌宁县| 蒙阴县| 和龙市| 马尔康县| 含山县| 电白县| 介休市| 永吉县| 嘉义市| 新竹市| 平顺县| 高雄市| 巧家县| 大关县| 鸡西市| 友谊县| 陵水|