溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

BERT中怎么實現(xiàn)嵌入層

發(fā)布時間:2021-06-26 14:22:49 來源:億速云 閱讀:209 作者:Leah 欄目:大數(shù)據(jù)

本篇文章為大家展示了BERT中怎么實現(xiàn)嵌入層,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

Token嵌入

目的

如前一節(jié)所述,token嵌入層的作用是將單詞轉(zhuǎn)換為固定維的向量表示形式。在BERT的例子中,每個單詞都表示為一個768維的向量。

 

實現(xiàn)

假設(shè)輸入文本是“I like strawberries”。下圖描述了token嵌入層的作用:


BERT中怎么實現(xiàn)嵌入層

在將輸入文本傳遞到token嵌入層之前,首先對其進行token化。另外,在tokens的開始([CLS])和結(jié)束([SEP])處添加額外的tokens。這些tokens的目的是作為分類任務(wù)的輸入表示,并分別分隔一對輸入文本(更多細節(jié)將在下一節(jié)中介紹)。

tokens化是使用一種叫做WordPiece token化的方法來完成的。這是一種數(shù)據(jù)驅(qū)動的token化方法,旨在實現(xiàn)詞匯量和非詞匯量之間的平衡。這就是“strawberries”被分成“straw”和“berries”的方式。對這種方法的詳細描述超出了本文的范圍。感興趣的讀者可以參考Wu et al. (2016)和Schuster & Nakajima (2012)中的第4.1節(jié)。單詞token化的使用使得BERT只能在其詞匯表中存儲30522個“詞”,而且在對英語文本進行token化時,很少會遇到詞匯表以外的單詞。

token嵌入層將每個wordpiece  token轉(zhuǎn)換為768維向量表示形式。這將使得我們的6個輸入token被轉(zhuǎn)換成一個形狀為(6,768)的矩陣,或者一個形狀為(1,6,768)的張量,如果我們包括批處理維度的話。

 

Segment嵌入

 

目的

BERT能夠解決包含文本分類的NLP任務(wù)。這類問題的一個例子是對兩個文本在語義上是否相似進行分類。這對輸入文本被簡單地連接并輸入到模型中。那么BERT是如何區(qū)分輸入的呢?答案是Segment嵌入。

 

實現(xiàn)

假設(shè)我們的輸入文本對是(“I like cats”, “I like dogs”)。下面是Segment嵌入如何幫助BERT區(qū)分這個輸入對中的tokens :


BERT中怎么實現(xiàn)嵌入層

Segment嵌入層只有兩個向量表示。第一個向量(索引0)分配給屬于輸入1的所有tokens,而最后一個向量(索引1)分配給屬于輸入2的所有tokens。如果一個輸入只有一個輸入語句,那么它的Segment嵌入就是對應(yīng)于Segment嵌入表的索引為0的向量。

 

Position嵌入

 

目的

BERT由一堆Transformers 組成的,廣義地說,Transformers不編碼其輸入的順序特征。在這個博客文章:https://medium.com/@init/how-self-attention-with-relatedposition-representations-works-28173b8c245a的動機部分更詳細地解釋了我的意思??傊蠵osition嵌入將允許BERT理解給定的輸入文本,比如:

I think, therefore I am

第一個“I”不應(yīng)該與第二個“I”具有相同的向量表示。

 

實現(xiàn)

BERT被設(shè)計用來處理長度為512的輸入序列。作者通過讓BERT學(xué)習每個位置的向量表示來包含輸入序列的順序特征。這意味著Position嵌入層是一個大小為(512,768)的查找表,其中第一行是第一個位置上的任意單詞的向量表示,第二行是第二個位置上的任意單詞的向量表示,等等。因此,如果我們輸入“Hello world”和“Hi there”,“Hello”和“Hi”將具有相同的Position嵌入,因為它們是輸入序列中的第一個單詞。同樣,“world”和“there”的Position嵌入是相同的。

 

合并表示

我們已經(jīng)看到,長度為n的token化輸入序列將有三種不同的表示,即:

  • token嵌入,形狀(1,n, 768),這只是詞的向量表示
  • Segment嵌入,形狀(1,n, 768),這是向量表示,以幫助BERT區(qū)分成對的輸入序列。
  • Position嵌入,形狀(1,n, 768),讓BERT知道其輸入具有時間屬性。

對這些表示進行元素求和,生成一個形狀為(1,n, 768)的單一表示。這是傳遞給BERT的編碼器層的輸入表示。

上述內(nèi)容就是BERT中怎么實現(xiàn)嵌入層,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI