成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

智能問答:基于 BERT 的語義模型

原創 精選
移動開發 移動應用
作為企業級 SaaS 應用,飛書對數據安全和服務穩定性都有極高的要求,這就導致了訓練數據存在嚴重的不足,且極大的依賴于公開數據而無法使用業務數據。

作者 | 羅子健

背景

飛書智能問答應用于員工服務場景,致力于減少客服人力消耗的同時,以卡片的形式高效解決用戶知識探索性需求。飛書智能問答整合了服務臺、wiki 中的問答對,形成問答知識庫,在綜合搜索、服務臺中以一問一答的方式將知識提供給用戶。

作為企業級 SaaS 應用,飛書對數據安全和服務穩定性都有極高的要求,這就導致了訓練數據存在嚴重的不足,且極大的依賴于公開數據而無法使用業務數據。在模型迭代過程中,依賴公開數據也導致模型訓練數據存在與業務數據分布不一致的情況。通過和多個試點服務臺的合作,在得到用戶充分授權后,以不接觸數據的方式進行訓練。即模型可見數據,但人工無法以任何方式獲取明文數據。

基于以上原因,我們的離線測試數據均為人工構造。因此在計算 AUC(Area Under Curve)值進行評估,會存在與業務數據分布不一致的情況,只能作為參考驗證模型的性能,但不能作為技術指標進行優化迭代。因此轉而采用用戶點擊行為去佐證模型效果的是否出現提升。

在業務落地的過程中,是否展示答案由模型計算的相似度決定。控制展示答案的 Threshold,會同時對點擊率和展示率產生重大影響。因此為了避免 Threshold 的值對指標的干擾,飛書問答采用 SSR(Session Success Rate)作為決定性指標去評估模型的效果。其計算方式如下,其中 total_search_number 會記錄用戶的每一次提問,search_click_number 會記錄用戶每一次提問后是否點擊、及點擊了第幾個答案。

bot_solve_rate(BSR):用來評估機器人攔截的效果,機器人攔截越多的工單則會消耗越少的人力。

飛書智能問答模型技術

原始的 1.0 版本模型

問答服務最早采用的模型是 SBERT(Sentence Embeddings using Siamese BERT) 模型(1),也是業內普遍使用的模型。其模型結構如下所示:

通過將 Query 和 FAQ 的 Question 輸入孿生 BERT 中進行訓練,并通過二分類對 BERT 的參數進行調整。我們可以離線的將所有的 question 轉換為向量存在索引庫中。在推理時,將用戶的 Query 轉換為 Embedding,并在索引庫中進行召回。向量的相似度均采用余弦相似度進行計算,下文簡稱為相似度。

此方案相對于交互式模型,最大的優點在于文本相似度的計算時間與 Faq 的數量脫鉤,不會線性增加。

改進的 2.0 版本模型

1.0 版本的模型在表示學習上的表現依然不夠好,主要體現在即使是不那么相似的兩句話,模型依舊會給出相對較高的分數,導致整體的區分度很低。2.0 版本的模型考慮通過增加兩句話的交互,進而獲得更多的信息,能夠更好的區分兩句話是否相似。并且引入了人臉識別的思想,讓相似的內容分布更加緊湊,不相似的內容類間距更大,進而提高模型的區分度。其結構如下所示:

相對于 1.0 版本的模型,2.0 版本更加強調交互的重要性。在原先 concat 的基礎上,新增了 u*v 作為特征,并增加了 interaction layer(本質上是 MLP layer)去進一步增強交互。除此之外,引入了 CosineAnnealingLR(2)和 ArcMarinLoss(3)去優化訓練過程。除此以外,根據 Bert-Whitening(3)的實驗啟示,在 pooling 的時候采用了多種 pooling 的方法,去尋找最優的結果。

CosineAnnealingLR

余弦退火學習率通過緩慢下降+突然增大的方法,在模型即將到達局部最優的時候,可以“逃離”局部最優空間,并且進一步檢索到更好的局部最優解。下圖源自 CosineAnnealingLR 的 paper,其中 default 是 StepLR 的衰減,其他則為余弦周期性衰減,并在衰減為 0 時恢復最大值。

相比于傳統的 StepLR 衰減,余弦退火的衰減方法,可以讓模型更容易找到更好的局部最優解,下圖模擬了 StepLR 和 CosineAnnealingLR 梯度下降過程(4):

同樣的,由于余弦退火模型會找到多個局部最優,因此訓練時間也會長于傳統的 StepLR 衰減。另一方面,由于學習率的突然增大,會導致 loss 的上升,因此在訓練過程中 Early Stopping 的控制可以根據 Steps 而不是 Epoches。

在服務臺落地場景中,不同的服務臺的語義空間明顯不同,不同的服務臺數據量(包括正負例比例)也存在較大的差異,模型不可避免的存在 bias,余弦退火可以一定程度解決這個問題。

ArcMarinLoss

采用 Arcface 損失函數的靈感來自 SBERT 論文中的 TripletLoss,其最早被用于人臉識別中。然而,TripletLoss 依賴于三元組輸入,構建模型的當時不存在這樣的條件去獲取數據,因此沿著思路找到了 ArcMarginLoss:最新用于人臉識別的損失函數,在人臉識別領域達到了 SOTA,在 Softmax 基礎上在對各類間距離進行了加強。

然而,我們無法像人臉識別那樣,將語義分成 Group,并對 Group 進行 N 分類。NLP 相關問題遠比人臉識別要復雜得多,訓練數據也難以像人臉識別那樣獲得。但我們仍然可以通過二分類,將相關/不相關這兩類拆分的更開。

實驗結果

根據 AB 實驗的結果,1.0 版本模型和 2.0 版本模型的指標如下所示:


Top1 SSR

Top10 SSR

Top1 Click Rate

BSR

相對提高

+7.75%

+6.43%

+1.24%

+3.55%

其中 Top1 SSR 只是只考慮點擊第一位的 SSR,而 Top10 SSR 則是點擊前 10 位的 SSR。由于對于用戶的一次請求,最多只會召回 10 個相似的結果,因此 Top10 SSR 就是整體的 SSR。

Top1 Click Rate 是指在點擊的條件下,點擊第一條信息的概率是多少,即 Top1SSR/Top10SSR。

由上表可以看出,整體的 SSR 出現了明顯的上升,且 Top1 的點擊占比也出現了小幅提高。因此從業務指標來推測 2.0 版本的模型明顯好于 1.0 版本的模型。BSR 作為業務側最關心的指標,受到用戶行為和產品策略的影響很大,但通過 AB 實驗也可以看出,新的模型通過機器人攔截的工單數明顯上升,可以減少下游客服人力的消耗。

消融實驗

針對 ArcMarginLoss 的效果進行消融實驗,在其他條件都不變的情況下,采用相同的人造測試集,分別采用 ArcMarginLoss 和 CrossEntropyLoss 進行模型訓練。

在這里采用 AUC 的原因,是為了觀測:


ArcMarginLoss

CrossEntropyLoss

AUC 的值

0.925

0.919

因此通過消融實驗可以看出,ArcMarginLoss 雖然在測試集上有少許提升,但提升并不明顯。原因可能是用于人臉識別訓練模型的 ArcMarginLoss 通常以海量相似圖片作為一個 label 去進行訓練,而在此任務的數據為兩句間關系的 0/1 分類,導致其和人臉識別目標并不相同,無法產生較好的效果。

基于 Contrastive Learning 的 3.0 版本

2.0 版本的模型雖然緩解了分數相對集中的問題,但依然無法解決數據整體分布不均勻的問題(正負樣本 1:10),即正樣本的數量遠小于負樣本,導致模型更傾向于學習負樣本的內容。3.0 版本的模型借鑒了 Contrastive Learning 的思想,將二分類問題轉化為 N 分類問題,負樣本不再是多個 Item 進而保證模型會更好的學習到正樣本的內容。

Contrastive Learning

在 3.0 版本的模型中,參考了最新的論文 SimCSE(5),將 Contrastive Learning 的思想引入了模型中并進行訓練。其思想利用兩次 dropout 得到同一句話的不同表示,并進行訓練。如下圖所示:

在實際訓練中,采用了 Supervised SimCSE 的思想,將<query_i,question_i>作為正樣本的 Pair 輸入到模型中。每一個 query 都與其他的 question 作為負樣本進行訓練,但不與其他的 query 交互(原文不同的 query 間也是負例)。一個例子如下所示,假設輸入 3 個 pair,則 label 如下:


query1

query2

query3

question1

1

0

0

question2

0

1

0

question3

0

0

1

通過 BERT 可以將文本轉換為 embedding,并計算相似度。根據上述構造 label 的方法,使用 CrossEntropyLoss 計算并更新參數。

因此,Contrastive Learning 的目標函數可以用以下表達:

其中 sim 是余弦相似度計算,<hi,hi+>為一個 Sentence Pair。

從 Momentum contrastive 而來的 trick

原始的 SimCSE 采用 CrossEntropyLoss 直接得到 loss 的值,然而由于超參數 T 的存在,導致余弦相似度的值被放大,最終在 softmax 后概率分布更加集中傾向于相似度高的值,而相似度低的值概率會趨近于 0。因此,超參數 T 的值會嚴重影響反向傳播的時候梯度的大小,并且隨著 T 的縮小梯度不斷增大,使得實際的 lr 遠大于 CrossEntropyLoss 中定義的 lr,導致模型訓練收斂速度變慢。為了緩解這個問題,在 Momentum contrastive(6)中采用了 loss_i = 2 * T * l_i 的方法,本文應用了該方法作為 loss 進行訓練。

實驗結果

根據 AB 實驗的結果,2.0 版本和 3.0 版本的模型業務指標如下:


Top1 SSR

Top8 SSR

Top1 Click Rate

BSR

相對變化

+7.10%

+5.88%

+1.19%

+4.07%

首先由于不同時期的業務數據存在波動,因此 2.0 版本的 top1 SSR 與前文的數據存在一定的偏差。且業務側進行了改動,總展示數量從 10 個變成了 8 個,因此 Top10 SSR 修改為了 Top8 SSR。

最后,BSR 在該 AB 實驗中的表現與上文的 AB 實驗中 1.0 版本模型相似,是因為修改了進入機器人工單的統計口徑。原先搜索中展示了問題,會直接跳轉進入機器人并記錄為機器人解決問題,現在搜索會直接展示答案而無需進入服務臺。因此,搜索側攔截了一部分的工單,且未被記入機器人攔截,導致了 BSR 的下降,而非數據波動導致。但對比 AB 實驗的結果,新模型的 BSR 仍然提高了 4.07%,提升顯著。

綜上所屬,很顯然模型在核心技術指標上均有明顯提高。不僅在用戶需求的滿足率上提高了 5.88%,答案排名在第一位的比例也提高了 1.19%,模型效果有了全面的提高。

模型提高的原因

  • 數據的組織方式不同。Contrastive Learning 僅使用數據集中正例,采用同一個 batch 內的其他 Question 作為負例,這意味著對于同一個 query 負例的數量遠大于原始數據集。相比于 2.0 版本的模型,對于所有的正例模型都有更多的負例去更好的識別真正相似的句子。
  • 損失函數決定了訓練目標不同。2.0 版本的損失函數僅需要考慮兩句話之間的關系,而 3.0 版本模型需要同時考慮一個 batch 內的所有句子間的關系,進行 batch_size = N 的 N 個句子中找到正例。
  • 根據論文,通過 Contrastive Learning 可以消除 BERT 的各向異性(Anisotropy)。具體體現在 BERT 的語義空間集中在一個狹窄的錐形區域,導致余弦相似度的值會顯著偏大,即使完全不相關的兩句話也能得到比較高的分數。該觀點在 Ethayarajh(6)和 Bohan Li(7)對預訓練模型的 embedding 研究中得到了證明。而使用 Contrastive Learning 或各種 postprocessing(如 whitening(8), flow(9))可以消除這一問題。

  • 高頻的詞匯嚴重影響了 BERT 中句子的 embedding,少量的高頻詞匯決定了 embedding 的分布,導致 BERT 模型的表達能力變差,Contrastive Learning 可以消除此影響。根據論文 ConSERT(10)的實驗,證明了高頻詞確實會嚴重影響 embedding 的表達,如圖所示:

消融實驗

為了探索 Loss 和數據對模型的影響,該消解實驗采用與 Contrastive Learning 一樣的正負樣本及比例進行訓練,其訓練方法如下:

  1. 令 batch_size = 32, 則根據 Contrastive Learning 的思想得到余弦相似度矩陣,維度為[32,32]。
  2. 根據 Contrastive Learning 生成 label 矩陣,即[32,32]的單位矩陣。
  3. 將余弦矩陣和 label 矩陣,均轉換為[32*32,1]的矩陣,在此條件下數據組織模式完全相同,只有損失函數和訓練方式不同。用以上方式進行訓練,并在離線測試集上進行 AUC 計算。

簡單來說,Contrastive Learning 從 32 個句子中找到了最相似的 1 個,而 CrossEntropyLoss 則是進行了 32 次二分類。通過上述方法,分別對 Contrastive Learning 和 CrossEntropyLoss 的二分類進行訓練,結果如下:


Contrastive LearningN 分類

CrossEntropyLoss 二分類

AUC 的值

0.935

0.861

通過進一步研究發現,CrossEntropyLoss 的二分類會傾向于將文本的相似度標為 0,因此過量的負樣本使得模型忽略了對正樣本的學習,僅通過判斷 label = 0 的情況即可在訓練集上達到 98%的準確率。

通過消解實驗也證明了損失函數對該模型的訓練存在顯著的影響,當負樣本足夠多,在相同數據組織方式的條件下,Contrastive Learning 的效果要優于 CrossEntropyLoss。由于在真實業務中,正樣本的數量遠小于負樣本,因此基于 Contrastive Learning 的訓練方法更適合應用于業務中。

責任編輯:未麗燕 來源: 字節跳動技術團隊
相關推薦

2025-05-28 01:00:00

大模型智能問答AI

2024-01-05 08:00:00

大型語言模型自然語言處理BERT

2025-04-01 02:22:00

2025-05-28 03:00:00

AI人工智能大數據

2024-04-29 08:50:26

Python模塊BERT

2024-07-12 11:35:20

2023-11-08 08:42:23

Python語法機器學習

2017-07-03 15:22:51

達觀數據技術研究

2024-05-06 07:58:25

大模型AI智慧芽

2023-11-09 08:44:17

2023-12-06 08:01:32

虛擬主播技術

2023-06-28 08:23:41

搜索語義模型

2025-06-06 03:11:00

LangGraphDeepSeek-RRAG

2023-05-08 15:48:13

智能音箱鴻蒙

2019-03-26 16:05:10

AI

2024-03-04 15:06:38

鴻蒙智能教室應用開發

2011-09-19 14:16:22

2020-06-15 10:42:42

谷歌Android開發者

2025-05-16 10:01:31

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩中文一区二区三区 | 欧美久久精品 | 日韩毛片免费看 | 欧美在线高清 | 在线精品国产 | 超碰97人人人人人蜜桃 | 中文字幕日韩在线 | 久久久国产精品 | 国产精品久久久久无码av | 91久久婷婷 | 中文字幕日韩欧美一区二区三区 | 日本 欧美 三级 高清 视频 | 国产精品看片 | 精产国产伦理一二三区 | 精品视频一区二区三区在线观看 | 玖玖免费| 午夜视频一区二区三区 | 亚洲精品www | 国产精品久久久久久久久久久久 | 午夜视频在线免费观看 | 欧美精品三区 | 日韩av一二三区 | 成人亚洲一区 | 免费观看www | 中文字幕亚洲欧美 | 成人小视频在线观看 | 日本欧美国产在线观看 | 97国产成人| 午夜电影网站 | 亚洲中国字幕 | 色射综合 | 国产在线一区二区三区 | 欧美一区二区三区在线观看 | 久久久久久免费观看 | 91国内视频在线 | 四色永久 | 日本三级日产三级国产三级 | 亚洲自拍偷拍欧美 | 国产精品一区二区久久 | 欧美日韩视频在线 | 久久精品国产一区二区电影 |