
資料內(nèi)容:
Sentence-BERT(SBERT),對預(yù)訓(xùn)練的BERT進行修改:使用孿生(Siamese)和三級(triplet)網(wǎng)絡(luò)結(jié)構(gòu)來獲得語義上有意義的句子embedding,以此獲得定長的sentence embedding,使用余弦相似度或Manhatten/Euclidean距離等進行比較找到語義相似的句子
其中左圖是訓(xùn)練的模型,右圖是訓(xùn)練好模型之后利用句向量計算2個句子之間的相似度。
u,v分別表示輸入的2個句子的向量表示,|u-v|表示取兩個向量的絕對值,(u, v, |u-v|)表示將三個向量在-1維度進行拼接,因此得到的向量的維度為 3*d,d表示隱層維度。
AMBERT(李航)
細粒度token不能像lexical unit表達完整,但是他們更容易學(xué)習(xí)。因為他們會產(chǎn)生更少的token類型,在訓(xùn)練集中更多出現(xiàn)。
粗粒度能像lexical unit完整表達,但它們更難學(xué)習(xí)。因為他們會產(chǎn)生更token類型,在訓(xùn)練集中也會較少出現(xiàn)。
AMBERT簡單的采用兩個encoder,一個encoder以細粒度作為輸入,另一個encoder以粗粒度作為輸入,這兩個encoder在除了embedding部分共享了所有參數(shù),最后能分別學(xué)到字粒度和詞粒度的上下文表達。
AMBERT有兩個Encoders, 一個用來處理細粒度token序列,另一個用來處理粗粒度token序列。每個encoder有著與BERT一樣的結(jié)構(gòu)。兩個Encoder除了embedding層,其它層參數(shù)共享。細粒度編碼器從細粒度token學(xué)習(xí)到上下文表達向量,同時,粗粒度編碼器從粗粒度token學(xué)習(xí)到上下文表達向量。
ChineseBERT
漢字的最大特性有兩個方面:一是字形,二是拼音。漢字是一種典型的意音文字,從其起源來看,它的字形本身就蘊含了一部分語義。比如,“江河湖泊”都有偏旁三點水,這表明它們都與水有關(guān)。
而從讀音來看,漢字的拼音也能在一定程度上反映一個漢字的語義,起到區(qū)別詞義的作用。比如,“樂”字有兩個讀音,yuè與lè,前者表示“音樂”,是一個名詞;后者表示“高興”,是一個形容詞。而對于一個多音字,單單輸入一個“樂”,模型是無法得知它應(yīng)該是代表“音樂”還是“快樂”,這時候就需要額外的讀音信息進行去偏。
為此,本文提出ChineseBERT,從漢字本身的這兩大特性出發(fā),將漢字的字形與拼音信息融入到中文語料的預(yù)訓(xùn)練過程。一個漢字的字形向量由多個不同的字體形成,而拼音向量則由對應(yīng)的羅馬化的拼音字符序列得到。二者與字向量一起進行融合,得到最終的融合向量,作為預(yù)訓(xùn)練模型的輸入。模型使用全詞掩碼(Whole Word Masking)和字掩碼(Character Masking)兩種策略訓(xùn)練,使模型更加綜合地建立漢字、字形、讀音與上下文之間的聯(lián)系。
下圖是ChineseBERT的整體模型框架,主要的改進點在底層的融合層(Fusion Layer)融合了除字嵌入(Char Embedding)之外的字形嵌入(Glyph Embedding)和拼音嵌入(Pinyin Embedding),得到融合嵌入(Fusion Embedding),再與位置嵌入相加,就形成模型的輸入。