什麼是NLP的可解釋性
NLP的可解釋性,是NLP未來發展最重要的方向之一。
可解釋性有兩方面含義,一是NLP的輸出結果符合業務的預期,是確定的結果,而不是一堆人看不懂的概率值。二是NLP的輸出結果與業務知識之間有明確的因果關係,因為什麼樣的業務知識,所以得到這樣的結果。
可解釋性,是指NLP系統輸出的結果,應該符合基本的語言學規律,符合領域知識的預期,可以用語言學的術語和業務領域的語言進行解釋,而不是讓演算法給出一堆雜亂無章的概率資料,讓使用者費盡洪荒之力從沙子裡找金子,並從資料中解析出其業務價值。
可解釋性是存在於場景應用和NLP技術之間的最大的鴻溝。包括當前流行的深度學習演算法,在場景應用下遇到的最大的尷尬也是可解釋性差,即使業務人員看到一個明顯的錯誤,也很難調整模型以更正。經常能聽到這樣的對話:
可解釋性也是場景應用和實驗室環境之間的最大的區別。實驗室環境下,有標準答案可以參考,處理物件是靜態的,NLP技術的輸出結果只要和標準答案進行比對,算出來得分就行,無需解釋結果為什麼是這樣的。近幾年各大AI公司刷榜的閱讀理解評測(如史丹佛問答資料集SQuAD),其實都是實驗室環境下的探索。而場景應用下,沒有標準答案可以參考,處理物件是動態的,不斷有新資料出現,這時候實驗室得分已沒有任何意義,需要的是明確的因果判斷,對了能知道如何保持,錯了能知道如何改進。
NLP場景應用中的可解釋性,可以直觀的表述為,業務人員可以看懂的、符合業務知識預期的NLP處理結果。
02
NLP可解釋性,從哪裡來?
1.必須基於語言特徵
NLP的可解釋性,應該與我們的語言直覺相一致,從模型、演算法的輸入,到每個處理環節,再到最終的輸出,都可以用基本的語言特徵和語言結構來解釋。比如用詞向量計算詞語關聯,計算“高興”的關聯詞語時,給出“興奮”、“嗨起來”這樣的結果,是符合語言知識的,但如果給出“傷心”這樣的結果,即使概率值再高,也是不合理的、不可解釋的,因為“傷心”與“高興”是反義詞,雖然他們的上下文環境經常很類似。更進一步來說,“不傷心”這樣的搭配,“不”作為否定詞,在詞向量中如何表示,是否和“高興”有關聯,這是基本常識的對錯問題,而不僅僅是概率大小的解釋問題。
因果關係的簡單表示就是“因為A,所以B”,比如在快遞客服場景下,對這樣的一段文字“等了2個小時還沒有來取件”,因為其中有“等待時間長”(從“等了2個小時”這樣的文字中得到)和“沒有取件”這樣的概念,所以這段文字的投訴分類是“取件延誤”。與因果關係容易混淆的是相關性(或相似性),比如資料中發現,購買尿布的使用者更容易購買啤酒,這說明“啤酒與尿布”之間有相關性,但是“啤酒與尿布”之間沒有因果關係。目前常用的機器學習演算法(包括深度學習),輸出的都是相關性,對這些相關性所體現的領域知識進行解釋,是當前可解釋性的主流。但這種解釋面臨著“千人千面”的困境,在同樣的應用場景下,針對不同的訓練語料、採取不同的演算法,其給出的結果差異很大,一致性很難保證。
NLP的可解釋性,最低的要求是,領域知識與輸出結果之間的因果關係是一致的、穩定的。比如在快遞客服場景中,針對“取件延誤”的投訴分類,不管採用什麼演算法,也不管文字表達的多樣性多麼複雜(如“取件的人怎麼還不來啊”、“2個小時都過了還沒有來取件”等),只要文字表達的意義一樣,都包含“等待時間長”“沒有取件”這樣的概念,都應該給出一致的結果(“取件延誤”)。
3.應該追求處理結果的可解釋性,而非NLP演算法過程的可解釋性
應該將重點放到對輸出結果的可解釋性,承認演算法過程是個黑盒子,對輸出結果做好統籌規劃。通過對訓練語料的控制,儘可能的縮小每個模型的覆蓋範圍,把不確定性限制在每個模型內部。換句話說,不能追求對大模型的擬合過程和具體引數值的解釋,而應該將一個問題,拆分成多個小模型來表示,提高小模型與領域知識之間的因果關係。
泰嶽語義工廠,可解釋的NLP服務
NLP的可解釋性,目前還沒有成熟的方法可以實現,只能在具體的應用場景下,面對具體的輸入資料,因地制宜,選擇正確的策略來面對。實際應用場景中,經典的符號系統、形式化規則的可解釋性往往表現更好,而大多數人迷戀的深度學習,則因為可解釋性差而經常被詬病。
泰嶽語義工廠,在場景化的自然語言處理上,已經耕耘了8年時間,積累了豐富的場景化的技術和經驗,在NLP可解釋性,積累了豐富的實踐經驗,已經在16個行業的上百個典型客戶實現了落地應用。
1.語義與計算的結合,提高NLP技術的可解釋性
下文的例子,包含著4層語言結構的巢狀關係。
例句:
含有從燃料電池排出的氫廢氣的陽極廢氣向系統外排出的氣體流路貫穿了整個通道。
第一層: 核心句
. .....氣體流路貫穿了整個通道
第二層: "氣體"的限定語也是一個句子
. .....陽極廢氣向系統外排出的氣體[流路]
第三層: "陽極廢氣"的限定語也是一個句子
含有......氫廢氣的陽極廢氣
第四層: "氫廢氣"的限定語也是一個句子
從燃料電池排出的氫廢氣
泰嶽語義工廠對這種具有複雜結構的句子,除了利用詞語組合、概率統計等表層特徵和方法,還加入了遠距離的語義約束計算,以及句子序列的切分和層級處理。目前我們已經可以識別出3層以上語言結構的遞迴巢狀。對複雜語言結構的有效處理,不僅可以提升NLP在歸一化、遞迴處理等方面的能力,而且可以把包含在複雜語言現象下的語言特徵,像剝洋蔥一樣,一層層開啟,這將大大增強NLP的可解釋性。
2.本體論的領域知識建模,提高因果關係的可解釋性
建模工具的價值在於,將服務於業務人員的領域知識的表示,與服務於NLP演算法人員的演算法、語言資源等完全隔離,讓業務人員聚焦在業務知識的因果關係上,從而提高應用的可解釋性。業務人員只需要對業務知識進行分類,對業務規則中的因果關係進行形式化描述,即可完成建模。建模過程中,可以使用預定義概念資源來定義業務知識,一個預定義概念的引用,本質上是對底層的NLP演算法模組的呼叫,對其輸出結果的使用,建模人員不用考慮其背後複雜的NLP演算法,建模工具已經對其做了封裝。
對下面的一段例子。業務人員只需要關注客服投訴分類,是應該分到“信用卡->額度->臨時提額”,還是“信用卡->額度不夠”,而不需要關心用到的NLP演算法,如命名實體識別、情緒識別等。
面向場景的應用開發框架的價值在於,讓應用開發者聚焦在應用邏輯的開發上,而無需關注NLP相關的資料標註、調參,訓練等工作。以本文開始的業務人員與NLP開發人員的對話為例,在場景應用開發框架下,應用開發人員不用關心深度學習模型是否有2億引數,而只需要關心如何把“態度不好”和“額度”的模型分開,給兩個模型的訓練資料更加細分,以增加模型的區分度。這兩類區分度提高了,輸出結果不容易混淆了,自然而然,結果的可解釋性也就提高了。
可解釋性,是NLP場景應用成功的關鍵。泰嶽語義工廠,可以助力NLP場景應用提高可解釋性。