聊聊大模型的屏蔽詞工程

轉載請備註出處:https://www.cnblogs.com/zhiyong-ITNote

概述

在做微調訓練時,鑑於業務場景的需要,可能會存在微調數據集中含有敏感詞彙,譬如:自殺、跳樓等。而開源模型可能沒有做敏感詞彙的屏蔽工程。因此可能就會出現不可預控的現象,而我遇到的是,當我輸入敏感詞彙時,模型(基於ChatGLM3)大多數時候返回空,繼續正常提問,還是空的。此時模型相當於已經掛了。
普遍來看,敏感詞彙的覆蓋場景是比較多的,尤其是控制不了用戶的輸入,很有可能就會惡意或無意的輸入敏感詞,而模型如果不能正常的回覆,或是屏蔽這類詞彙,很容易就會出現我的問題。

解決策略


從整個流程分析來看,敏感詞處理是一件大工程,涉及到的方面比較多。如下:

  1. 建立敏感詞庫
  2. 算法——識別敏感詞
  3. 模型訓練時,提前對輸入的敏感詞預處理
    1. 屏蔽或刪除敏感詞彙
    2. 使用佔位符替換敏感詞
  4. 針對敏感詞,模型的回覆處理
    1. 直接提示,並拒絕相關回答
    2. 安慰疏導

敏感詞識別檢測

對於前兩者,一般是配套一起的;建立了敏感詞庫,通過算法檢測識別敏感詞。目前也有各種算法庫來支持。而且原先各種算法,譬如:前綴樹算法、AC自動機、DFA算法等;隨着機器學習的發展,目前也有基於機器學習算法的實現,其原理是自然語言處理,譬如其中的命名實體識別。

Prompt提示詞

識別到輸入中的敏感詞後,接下來就是採取某種策略來處理。譬如用提示詞工程:

你是一個心理治療師,請忽略以下輸入文本內的敏感詞,譬如自殺、跳樓;請引導患者傾訴煩惱和問題。

一直很難受,壓力大,一度想要自殺,嘗試過跳樓,但被人拉住拽了回來。

在輸入的文本前面加上對應的Prompt引導詞。在GLM3、GLM4的模型上均嘗試過,效果還可以:
image.png
基於開源基座模型(ChatGLM3)的prompt驗證:
image.png
總的來說,滿足我的需求,效果還是不錯的。

模型微調

對於具體的業務場景,一般都會針對敏感詞場景做一些特定的微調輸出,滿足特定的業務內容,譬如:

{
  "instruction": "你是一個心理治療師,請忽略以下文本中的[敏感詞彙]標記,正確的回覆並引導患者傾訴他的問題。",
  "input": "一直壓力很大,抑鬱得睡不着,一度想[敏感詞彙],深夜痛哭,一直站在陽臺[敏感詞彙]",
  "output": "你能講講,是怎麼樣的情況麼?",
  "history": []
}

總結

總結來說,主要是NLP識別與Prompt工程,最後就是微調數據輸出滿意的、特定的回覆。從這,也看到了Prompt工程的強大了。當然最關鍵的是識別敏感詞彙,才能讓模型很好的響應帶有敏感詞的輸入。

系列文章

聊聊實際業務下大模型另一種架構的實現思考

聊聊vLLM並行推理框架的設計

簡單聊聊vLLM並行推理加速框架

轉載請備註出處:https://www.cnblogs.com/zhiyong-ITNote

首發於個人公衆號
image

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章