在智能對話項目搭建的過程當中,高效篩選、處理對話日誌並將其轉化爲新的訓練數據,是對話系統效果持續提高的重要環節,也是當前開發者面臨的難題之一。爲此百度大腦UNIT推出學習反饋閉環機制,提供數據獲取、輔助標註工具DataKit,幫助企業提高數據處理效率。html
【快速瞭解什麼是DataKit】python
DataKit是面向開發者提供的數據生產工具集,能夠利用交互式學習、規則樣本生成和多模型一致性檢驗等技術方法自動獲取大量數據,並從中篩選出帶標註、半標註和無標註3類樣本,這些樣本通過高效的預處理後造成新的訓練數據,可進一步提高語義解析效果,有效提高對話系統的優化人效。json
一、樣本獲取工具
利用DataKit,用戶能夠從生產環境的日誌中不斷挖掘樣本數據,逐步優化語義理解效果。post
二、輔助標註學習
經過數據生產、自動篩選與輔助標註,可以使訓練數據集構造效率平均提升8倍,幫助開發者更低成本地優化模型理解效果。測試
【DataKit背後的技術解讀】優化
1. 交互式學習技術spa
在對話系統的效果迭代優化中,利用用戶的多輪對話行爲做爲對話效果的反饋,幫助發現當前系統效果的瓶頸,並挖掘有意義的對話樣本供開發者標註以解決效果瓶頸。交互學習就是這樣一種以用戶交互行爲數據爲基礎,積累交互樣本,解決系統效果瓶頸的迭代優化輔助方案。3d
交互學習主要包含話術干預技術和異常樣本發現技術:
話術干預技術
當用戶認爲系統的理解結果有誤時,每每會試圖經過強調的方式來澄清理解錯誤的部分。那麼,用戶用於強調的話術就是對於理解結果的一種干預。例如,
系統經過語義理解技術,將用戶的干預話術識別爲修改意圖、詞槽等操做,而後對被幹預的理解結果進行意圖和詞槽上的修改。修改完成後會做兩步處理:對於當前進行話術干預的用戶,系統會記錄該用戶的話術偏好,從而下一次會按照用戶的干預結果進行解析;同時,被幹預的樣本會在頁面上展現給對話系統的開發者,由開發者決定是否將該樣本加入訓練數據從而對全局用戶生效。
異常樣本發現技術
異常樣本發現主要用於挖掘對話系統內部理解異常和用戶反饋異常的樣本。
當用戶認爲系統的理解結果有誤時,儘管會不斷強調錯誤信息,但可能不會明確指出錯在哪裏和如何修正;同時,語義理解結果可能存在歧義、意圖不識別等異常狀況。例如:
①理解歧義—— U:明天北京 R:您是查天氣仍是查機票
②複述強調—— U1:貸款 U2:保單貸款
③複述強調—— U1: k21點會議室 U2: 1點的k2會議室
以上狀況雖然沒法經過多輪的技術來肯定理解結果,可是能夠經過異常樣本發現技術進行異常樣本挖掘。
異常樣本發現的原理是:根據對話理解系統的中間狀態來斷定理解歧義和意圖不識別的狀況,並利用用戶複述(當前問法強調上文中出現的關鍵信息)識別技術來斷定用戶在指出上文理解錯誤。異常樣本被挖掘後展現給開發者,幫助開發者發現系統理解效果的瓶頸,有選擇性的進行異常樣本標註,並有針對性的調整模板。
2. 規則樣本生成技術
在UNIT平臺上用戶能夠方便地配置模板獲得語義解析結果,實現語義解析的快速冷啓動。在模板配置達到比較好的語義解析效果時,能夠利用規則樣本生成技術,產生帶標註的樣本集合供UNIT進行深度訓練,更進一步提高語義解析效果。其方法是利用用戶已經標註的模板和上傳的詞表,經過模板和詞槽的組合關係,產生帶標註結果的樣本集合。這批樣本能夠直接用於深度訓練,提高語義解析效果,可以有效下降人力投入。
在使用上,首先,冷啓動階段經過配置模板,使技能的解析效果達到比較好的程度。同步積累了必定的模板、詞槽和關鍵詞數據。而後,基於當前模板、詞槽和關鍵詞,觸發樣本生成功能,得到必定數量的帶標註樣本。最後,將該樣本加入到訓練數據中,進行深度訓練,進一步提高模型的解析效果。
3. 多模型一致性檢驗技術
多模型一致性檢驗是日誌挖掘的一種有效方法,其輸入是用戶的請求日誌,輸出有三類:帶標註結果的正例樣本,當前解析爲負例的樣本和當前沒有解析結果的樣本。其方法是檢驗UNIT上多個解析模型的結果,假設多個模型的解析結果越一致,其解析正確率越高。其中,具備高正確率的樣本能夠直接做爲訓練正例,解析爲負例的樣本能夠直接做爲負例,當前沒有解析結果的樣本能夠進一步進行人工校驗,不斷優化解析效果。
【快速上手DataKit】
一、週期性的在UNIT平臺下載生產環境的日誌
進入UNIT平臺技能的「對話日誌」頁面選擇「生產環境」,導出日誌明細(文件類型選擇「JSON文件」),開發者能夠一週一次或者一個月一次下載生產環境的日誌,若是沙盒環境的對話日誌是真實的用戶對話(非內部測試的)也可使用。
二、執行挖掘對話日誌的Python腳本挖掘日誌
好比上面下載的對話日誌文件爲:unit_1000.json.txt
執行命令:python extract_train_data.py unit_1000.json.txt 1正例樣本.txt 2負例樣本.txt 3無結果樣本.txt
上述Python代碼下載連接:https://pan.baidu.com/s/16g9l40aqT8GdcGzDLWB5Yw 密碼:0p6t;須要在Python2.7 環境下運行
3.對挖掘出來對話樣本文件進行後續處理
「1正例樣本.txt」通常狀況下,能夠直接導入對話技能的樣本集裏做爲訓練數據便可(已是標註好的格式)。
「2負例樣本.txt」 爲當前平臺識別爲SYS_OTHER的樣本,可簡單審閱後在對話技能的訓練數據中建立一個單獨的負例樣本集,導入該文件,做爲負例訓練數據,再下次訓練時選擇使用。
「3無結果樣本.txt」爲當前平臺沒有解析結果的對話樣本,這些建議重點關注,看看那些應該識別卻沒有識別,篩選出來導入樣本集進行人工標註。那些不該該識別的樣本,導入負例樣本集,標註成SYS_OTHER意圖。
DataKit的一些使用建議:
一、週期性的下載存儲平臺上的JSON格式的對話日誌;
二、週期性從日誌裏挖掘對話樣本;
三、針對不一樣樣本繼續不一樣處理,對話技能模型效果會有明顯提高。
另外,下載、挖掘日誌的週期能夠根據技能的對話日誌量以及能挖掘出來的正例樣本量來評估,通常狀況下挖掘出1000條以上的正例樣本結合已有的樣本和對話模板用來訓練模型才能在模型上效果上帶來正向的提高。而須要從多少條對話日誌、多長時間段的對話日誌裏才能挖掘出1000條正例樣本,這主要取決於技能的使用狀況(好比生產環境的對話數據真實,會更好),也與對話場景、模型已有的對話效果有關,須要開發者進行一些嘗試,找到符合本身的一個日誌挖掘週期。
相關文章: