帶你輕鬆入門 Bert

語言: CN / TW / HK

這是我參與更文挑戰的第22天,活動詳情檢視: 更文挑戰

什麼是 BERT

BERT 的全稱是 Bidirectional Encoder Representations from Transformers ,其實 BERT 的目的就是預訓練 Transformers 模型的 Encoder 網路,從而大幅度提高效能。本文沒有講具體的技術細節,只介紹主要想法。 具體內容可以看論文: http://arxiv.org/pdf/1810.04805.pdf

第一個任務

BERT 的第一個訓練模型的任務就是,隨機地遮擋一個或者多個單詞,然後讓模型預測遮擋的單詞。具體過程如圖所示。

bert-1.jpg

  • 圖中的輸入的第二個單詞原本為 cat ,但是被 MASK 符號代替。

  • MASK 會被 Embedding 層轉換為詞向量 xM

  • 該時刻的輸出即為 uM ,而 uM 不僅依賴於 xM ,而且依賴於所有的 x1 到 x6 的所有輸入向量。也就是說 uM 知道所有的輸入資訊。正因為 uM 知道上下文的所有資訊,所以可以用來預測被遮擋的單詞 cat 。

  • 將 uM 作為特徵向量輸入到 Softmax ,得到一個概率分佈 p ,可以通過字典得到最大概率所對應的單詞。這裡被遮擋的是 cat 單詞,所以要訓練模型,使得模型的輸出概率分佈 p 中 cat 的概率值儘量最大。

第一個任務有什麼用

BERT 在訓練時候不需要人工標註資料集,可以大大節省成本和時間,訓練資料也很好獲得,可以用任何的書籍,文章等作為訓練資料,它可以自動生成標籤,輕鬆進行模型的預訓練。

第二個任務

BERT 的第二個訓練模型的任務就是,給出兩個句子,判斷這兩個句子是不是相鄰的。

首先準備訓練資料,訓練資料中 50% 的樣本用真實相鄰的兩個句子,剩下的 50% 的樣本用隨機抽樣的方式選取任意兩個不相鄰的句子。

選用真實相鄰的句子的處理方式如下圖所示拼接起來,拼接的時候用到了符號 CLS 和 SEP ,CLS 是表示“分類”的符號,SEP 是表示“分割”兩個句子的符號。因為這兩句話確實是相鄰的句子,所以他們的標籤為 true 。

bert-3.jpg

選用不相鄰的句子的處理方式如下圖所示拼接起來,但因為這兩句話不是相鄰的句子,所以他們的標籤為 false 。

bert-4.jpg

處理好訓練資料,然後我們訓練模型,用模型判斷兩個句子是否是上下相鄰的。具體過程如下圖所示。

bert-2.jpg

  • 將 [CLS][第一個句子][SEP][第二個句子] 拼接的字元序列輸入到模型中。

  • 通過 Embedding 層轉換成詞向量。

  • [CLS] 位置的最終輸出為向量 c ,由於向量 c 中經過模型提取得到了整個輸入的兩句話的資訊,所以靠向量 c 可以判斷兩句話是否是真實相鄰。

  • 把向量 c 輸入一個二分類器,輸出的值是 0 或者 1 ,0 代表 false ,1 代表 true 。可以訓練模型使得兩個句子的預測標籤可以儘可能接近它們的真實標籤。

第二個任務有什麼用

相鄰的兩句話通常有關聯,通過做二分類判斷,可以強化這種關聯,訓練 Embedding 的詞向量強化這種內在關聯。

Transformer 的 Encoder 層中有 Self-Attention 機制,而 Self-Attention 的作用就是去找輸入之間的相關性,而這個任務也可以加強以尋找輸入之間的正確的相關性。

第三個任務

第一個任務就是預測遮擋單詞,第二個任務就是判斷兩句話是否相鄰。BERT 還能將這兩個任務結合起來預訓練 Transformer 的 Encoder 結構。

我們需要準備資料,如下圖所示我們用到了真實相鄰的兩個句子作為訓練資料,並且隨機遮擋了 15% (這裡是兩個)的單詞,這裡一共有三個目標,因為是真實相鄰的句子所以第一個目標為 true ,第二個目標就是真實遮擋的單詞 branch ,以及第三個目標是真實遮擋的單詞 was 。

bert-5.jpg

另外需要找不是真實相鄰的句子作為訓練資料,並且同樣遮擋單詞,這裡只遮擋一個單詞,所以有兩個目標,第一個目標分別為 false ,第二個目標為單詞 south 。

bert-6.jpg 假如像上面有三個目標則有三個損失函式(如果有兩個目標則有兩個損失函式),第一個目標是二分類任務,第二個和第三個目標是多分類任務。目標函式是三個損失函式的和,然後關於模型引數求梯度,然後通過梯度下降來更新模型引數。

BERT 優點

BERT 可以自動生成標籤,不需要人工標註資料,這是個很耗時耗力的工作,而且很昂貴。

BERT 可以用各種文字資料,書,網頁,新聞等

BERT 表現出來的成績確實很優異

BERT 缺點

BERT 的想法簡單,模型也有效,但是代價很大,普通人難以有時間和精力去訓練 BERT ,幸好已經公開了,可以自行下載

參考

[1] Devlin J , Chang M W , Lee K , et al. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding[J]. 2018.

[2] Vaswani A , Shazeer N , Parmar N , et al. Attention Is All You Need[J]. arXiv, 2017.