這一章,我們來一起看一下語音助手中用到的那些分類模型,首先,什么地方需要用到分類模型呢?有以下幾種情況:
- 場景分類
- 任務、閑聊、問答分類
- BOT內部分類
這一類分類主要起的作用為:
- 輔助DM進行BOT的分發和排序
- 避免全量query流經某個BOT,減輕下游服務壓力
- 各個BOT應該有具備識別query是否屬于自己領域的能力
除此之外,還有一些地方也會用到分類模型,比如:情感識別,意圖識別等,這里主要講一下助手中用到的幾個主要分類模型的組成關系,如下圖:

有同學可能會問,為什么要這么組織模型呢?各個分類模型有什么區別和相同點嗎?
關于為什么需要這些分類模型,除了上面提到的作用外,還有幾個原因:
1、任務、閑聊、問答分類:
閑聊BOT、問答BOT幾乎總是能對所有query給出一個結果,而且由于其BOT的特性,導致并沒有一個統一的評判標準來決策哪個BOT的結果更好,此時任務、閑聊、問答分類模型,就可以輔助DM盡心BOT的排序,同時,對于部分指令型話術,如果助手目前沒有覆寫,也是需要能夠識別到的,對于這一類query,可以給出一些合適的引導或者推薦,此時該三分類模型也可以用于兜底識別指令話術,該分類模型就是一個典型的三分類模型,
2、場景分類:
助手中會包含很多很多的BOT,DM要實作對BOT的合理分發,有一個分類模型是必要的,該模型一般為多分類模型,即一個query經過該模型會給出幾個類別,代表其可能所屬的場景和置信度,
同時,考慮到產品需求的快速變化,每個新場景的提出,就要對應的增加分類類別,所以一般場景分類是有模型+模板來共同組成,對于一些成熟的場景,加入到模型中,對于一些簡單或者新增的場景,直接使用模板(關鍵詞)來進行分類,所以該分類模型是一個集合體,而非單個深度學習模型,
3、BOT內二分類、n分類:
考慮到對于一個query,DM需要盡可能激活所有可能與其有關的BOT,所以BOT分發是不止參考場景分類模塊,還會參考一些其他資訊,這就會導致一些誤分發,同時,場景分類模塊可能要識別40+類別,其各個類別的準召是很難平衡的,我們一般要求場景分類是重召回的,這也會導致一些誤識別,所以對于每個BOT,我們要求其:具備識別query是否屬于自己BOT處理范圍的能力,所以就有了二分類,其需要對于一些場景間的易混淆話術,進行區分,提高進入BOT的query的準確性,所以它是重準確的,
看到這里,有同學就會有疑問,可不可以只要分類模型,不要二分類, 或者將二分類直接提前到場景分類的位置,即將全量query分發給BOT,讓BOT利用自己的分類去識別呢?答案是可以的,但是需要注意以下兩點:
- 每個BOT獨立承擔全量query流量,其性能可能扛不住,需要更多服務器,而線上實際屬于該場景的query可能并不多,此時就需要一個流量和效果的平衡,如果該BOT是一個核心BOT,流量較多,且更新頻繁,則將該BOT的二分類位置提前是可行的,
- 場景分類+二分類這種組織關系,可以使二分類只關注與其本身BOT易混淆的BOT間的區別,而不必關心其他無關的BOT,比如音樂BOT,其內部的二分類可以只關心其與視頻BOT、電臺BOT之間的差別,而不用關心天氣BOT的話術特征,這就可以使得其二分類訓練時,訓練資料更具有針對性,可能使用更少的資料量,給開發效率也帶來了提升,
關于模型的結構
其實沒有太多可說的,就是最簡單的text_cnn+騰訊詞向量就可以了,我們試過很多其他模型,比如bert,LSTM,RNN,transformer,或者進行對抗訓練,帶噪學習等方案,其效果可以說相對于text_cnn一般并沒有很大的提升,在0.5-1個點之間,有些效果還會變差,所以這里的模型結構沒有太多可以優化的地方了,
相對于模型結構的優化,對于資料層面、流程層面的優化更加有效,在資料層面,可以使用主動學習的方案來標注少量資料提升模型效果,在流程層面,可以使用模型蒸餾的方案來實作資料增強、模型效果提升,
還有一個很經典的問題:分類模型中各個類別的資料量如何平衡,如果某個類別效果不好該怎么辦?
對于資料量,一般建議是使各個類別的資料量能夠和線上資料量的比例盡可能接近,但是對于某個類別也不要太少,因為資料量太少其效果必然會受到影響,或者也可以使各個場景的資料量均衡,但這個其實很難,對于線上每個場景的重要度是不同的,其復雜度也是不同的,有些場景既重要又復雜而且流量也很多,其場景可以很容易獲取到大量資料,進行人工清洗后可以獲得比較好的資料,而對于一些流量少又沒那么重要的場景,想獲取與其匹配的資料量,是比較難的,
對于某個類別效果不好怎么辦,能怎么辦,洗資料唄,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/302589.html
標籤:其他
