1.背景
作為國內領先的出行大資料公司,高德地圖擁有眾多的用戶和合作廠商,這為高德帶來了海量的出行資料,同時通過各個渠道,這些用戶也在主動地為我們提供大量的反饋資訊,這些資訊是需要我們深入挖掘并作用于產品的,是高德地圖不斷進步和持續提升服務質量的重要手段,
本文將主要介紹針對用戶反饋的文本情報,如何利用機器學習的方法來提高大量用戶資料的處理效率、盡可能實作自動化的解題思路,
先來解釋一下重點名詞,
情報:是一種文本、圖片或視頻等資訊,用來解決高德地圖生產或者導航中的具體問題,本質上是指與道路或交通相關的知識或事實,通過一定空間和時間通知給特定用戶,
用戶反饋:是指用戶借助一定的媒介,對所使用的軟體等提供一些反饋資訊,包括情報、建議和投訴等,
典型的用戶反饋型別和選項如下圖所示:

2.問題及解法
用戶反饋的方式可以通過手機的Amap端、PC端等進行上報,上報時選擇一些選擇項以及文本描述來報告問題,以下是一個用戶反饋的示例,其中問題來源、大型別、子型別和道路名稱是選擇項,用戶描述是填寫項,一般為比較短的文本,這些也是我們可以使用的主要特征,

每個用戶在上報了問題之后,均希望在第一時間內問題能夠得到解決并及時收到反饋,但是高德每天的用戶反饋量級在幾十萬,要想達到及時反饋這個目標非常的不容易,
針對這些用戶反饋資訊,當前的整體流程是先采用規則進行分類,其中與道路相關的每條反饋都要經過人工核實,找到用戶上報的問題型別和問題發生的地點,及時更新道路資料,作用于導航,
針對一條反饋的操作需要經過情報識別、情報定位、情報驗證等環節:
1) 情報識別主要是判斷問題型別即給情報打標簽:①分析用戶上報的資訊包括問題來源、大型別、子型別和用戶描述等,②查看上傳的圖片資料,包括手機自動截圖和用戶拍照;
2) 情報定位主要是找到問題發生的位置資訊即定位坐標:①分析用戶反饋問題時戳的位置點即戳點的有效性,②查看用戶上報問題時車輛行駛的位置即自車位置,③分析用戶使用高德軟體程序中的規劃和實走軌跡等日志資訊;
3) 情報驗證:通過以上兩步確定了情報標簽和位置坐標,此環節需要驗證情報標簽(含道路名稱):①分析影像和大資料熱力圖或路網基礎資料,②查看用戶上傳的資料和采集的多媒體圖片資料,
整個業務處理流程如下圖所示:

在處理用戶反饋問題整個程序秉持的原則是完全相信用戶的問題存在,若用戶上報的資訊不足以判斷問題型別和問題發生地點,則會盡量通過用戶規劃和實走軌跡等日志資訊進行推理得出偏向用戶的結論,
目前整個用戶反饋問題處理流程存在的主要問題有:規則分發準確率低,人工核實流程復雜、技能要求高且效率低,去無效誤殺嚴重等,
為了解決以上問題,我們希望引入機器學習的方法,以資料驅動的方式提高作業能力,在進行機器學習化的探索程序中,我們首先對業務進行了拆解及層級化分類,其次使用演算法來替代規則進行情報分類,再次工程化拆解人工核實作業流程為情報識別、情報定位和情報驗證等步驟,實作單人單技能快速作業,最后將工程化拆解后的情報識別步驟使用演算法實作其自動化,
3.機器學習解題
3.1 業務梳理與流程層級化拆解
原始的用戶反饋問題經由規則分類后,再進行人工情報識別、定位和驗證,最終確認問題及其所在是屬于近百種小分類項中的哪一個,進而確定上一級分類以及整個層級的對應關系,
由此可以看出,整個問題處理流程只有一個步驟,處理程序相當復雜,對人工的技能要求很高,且效率低下,而且一千個人眼中就有一千個哈姆雷特,個人的主觀性也會影響對問題的判斷,
針對這種情況,我們對原有業務流程進行梳理和拆解,希望能夠利用機器學習和流程自動化等方式解決其中某些環節,提升整體問題處理的效率,
首先進行有效情報和無效情報的分類即去無效,接著將整個流程拆解為六個層級,包括業務一級、業務二級、業務三級、情報識別、情報定位和情報驗證,

如上圖所示,拆解后的前三個級別為情報分類環節,只有后三個級別需要部分人工干預,其他級別均直接自動化處理,這樣通過層級化、自動化和專人專職等方法極大地簡化了問題同時提高了效率,
3.2 業務與模型適配
我們可以看到用戶反饋中既有選擇項又有輸入項,其中選擇項如問題來源等都是有默認值的,需要點擊后選擇相應細分項,用戶不一定有耐心仔細選擇,有耐心的用戶可能會由于不知道具體分類標準而無法選擇正確的分類,而用戶描述,是需要用戶手動輸入的內容,是用戶表達真實意圖的主要途徑,是一條用戶反饋當中最有價值的內容,
用戶描述一般分為三種情況:無描述、有描述但無意義的、有描述且有意義的,前兩種稱之為無效描述,后一種稱之為有效描述,
根據業務拆解結果,業務流程第一步即為去無效,在這之后,我們將有效、無效描述的用戶反饋進行區分,分別建立相應的流程進行處理,
1) 有效描述的用戶反饋,逐級分類,第一級分為資料、產品、轉發三類,其中產品和轉發兩類直接進行自動化處理,資料類別會在第二級中分為道路和專題,專題是指非道路類的限行、步導、騎行等,
2) 無效描述的用戶反饋,進行同樣的分類,并走一樣的流程,但是樣本集和模型是不同的,并且最后沒有演算法處理的步驟,直接走人工或者規則處理,
3) 最終根據實際業務需要進行層層拆解后形成了下圖所示的業務與模型適配的結構,

由以上分析可見,情報分類和情報識別均為多分類的文本分類問題,我們針對各自不同的資料特點,進行相應的操作:
情報分類,每一級類別雖不同,但是模型架構卻是可以復用的,只需要有針對性的做微小改動即可,且有以前人工核實過(包含情報識別、情報定位、情報驗證等程序)具有最終結果作為分類標簽的歷史資料集作為真值,樣本集獲得相對容易,
情報識別,其分類標簽是在情報驗證之前的中間結果,只能進行人工標注,并且需要在保證線上正常生產的前提下,盡量分配人力進行標注,資源非常有限,所以我們先在情報分類資料集上做Finetuning來訓練模型,然后等人工標注樣本量積累到一定量級后再進行情報識別上的應用,
3.3 模型選擇
首先,將非結構化的文本用戶描述表示成向量形式即向量空間模型,傳統的做法是直接使用離散特征one-hot表示,即用tf-idf值表示詞,維度為詞典大小,但是這種表示方式當統計樣本數量比較大時就會出現資料稀疏和維度爆炸的問題,
為了避免類似問題,以及更好的體現詞語之間的關系如語意相近、語序相鄰等,我們使用word embedding的方式表示,即Mikolov提出的word2vec模型,此模型可以通過詞的背景關系結構資訊,將詞的語意映射到一個固定的向量空間中,其在向量空間上的相似度可以表示出文本語意上的相似度,本質上可以看作是語境特征的一種抽象表示,
其次,也是最重要的就是模型選擇,相對于傳統的統計學習方法復雜的特征工程步驟,深度學習方法更受青睞,NLP中最常用的是回圈神經網路RNN,RNN將狀態在自身網路中回圈傳遞,相對于前饋神經網路可以接受更廣泛的時間序列結構輸入,更好的表達背景關系資訊,但是其在訓練程序中會出現梯度消失或梯度爆炸等問題,而長短時記憶網路LSTM可以很好的解決這個問題,
3.4 模型架構
將每個用戶反饋情報的詞向量結果作為LSTM的輸入,接著將LSTM的最后一個單元的結果作為文本特征,與其他用戶選擇項問題一起merge后作為模型輸入,然后經過全連接層后使用softmax作為輸出層進行分類,得到的0~1之間的實數即為分類的依據,多分類的網路架構如下圖所示:

4.實戰經驗總結
理清業務邏輯、確定解題步驟、確認樣本標注排期并跑通了初版的模型后,我們覺得終于可以松一口氣,問題應該已經解決過半了,剩下的就是做做模型調參和優化、坐等樣本積累,訓練完模型就可以輕松上線了,
但實際情況卻是面臨著比預想更多的問題和困難,訓練資料量不夠、單個模型效果不好、超參設定不理想等問題接踵而至,漫長而艱難的優化和迭代程序才剛剛開始,
4.1 Fine-tuning
選定了模型之后,情報識別首先面臨的問題是樣本量嚴重不足,我們采用Fine-tuning的辦法將網路上已經訓練過的模型略加修改后再進行訓練,用以提升模型的效果,隨著人工標注樣本逐漸增加,在不同大小的資料集上都可以取得大約3個百分點的提升,
4.2 調參
模型的調參是個修煉內功煉制金丹的程序,實際上取得的效果卻不一定好,我們一共進行了近30組的調參實驗,得出了以下飽含血淚的寶貴經驗:
1)初始化,一定要做的,我們選擇 SVD初始化,
2) dropout也是一定要用的,有效防止過擬合,還有Ensemble的作用, 對于LSTM,dropout的位置要放到LSTM之前,尤其是bidirectional LSTM是一定要這么做的,否則直接過擬合,
3) 關于優化演算法的選擇,我們嘗試了Adam、RMSprop、SGD、AdaDelta等,實際上RMSprop和Adam效果相差不多,但基于Adam可以認為是RMSprop 和 Momentum 的結合,最終選擇了Adam,
4) batch size一般從128左右開始調整,但并不是越大越好,對于不同的資料集一定也要試試batch size為64的情況,沒準兒會有驚喜,
5) 最后一條,一定要記住的一條,盡量對資料做shuffle,
4.3 Ensemble
針對單個模型精度不夠的問題,我們采用Ensemble方式解決,進行了多組試驗后,最終選定了不同引數設定時訓練得到的最好模型中的5個通過投票的方式做Ensemble,整體準確率比單個最優模型提高1.5個百分點,
另外為了優化模型效果,后續還嘗試了模型方面的調整比如雙向LSTM和不同的Padding方式,經過對比發現在情報識別中差異不大,經分析是每個用戶描述問題的方式不同且分布差異不明顯所致,
4.4 置信度區分
當情報識別多分類模型本身的結構優化和調參都達到一定瓶頸后,發現模型最終的效果離自動化有一定的差距,原因是特征不全且某些特征工程化提取的準確率有限、類別不均衡、單個類別的樣本數量不多等,
為了更好的實作演算法落地,我們嘗試進行類別內的置信度區分,主要使用了置信度模型和按類別設定閾值兩種辦法,最終選擇了簡單高效的按類別設定閾值的方法,
置信度模型是利用分類模型的標簽輸出結果作為輸入,每個標簽的樣本集重新分為訓練集和驗證集做二分類,訓練后得到置信度模型,應用高置信的結果,
在置信度模型實驗中,嘗試了Binary和Weighted Crossentropy、Ensemble的方式進行置信度模型實驗,Weighted Crossentropy的公式為:

為了避免溢位,將公式改為:

其中,表示:

實驗的結果是Binary方式沒有明顯效果提升,Ensemble在95%置信度上取得了較高的召回率,但是沒有達到98%置信度的模型,
借鑒了情報分類演算法模型落地時按照各個類別設定不同softmax閾值的方式做高置信判斷即按類別設定閾值的方式,在情報識別中也使用類似的方法,取得的效果超過了之前做的高置信模型效果,所以最終選擇了此種方式,這部分可以很大地提高作業員的作業效率,同時為了減少作業員的操作復雜性,我們還提供了低置信部分的top N推薦,最大程度節省作業時間,
5.演算法效果及應用成果
5.1 情報分類
演算法效果:根據實際的應用需求,情報分類演算法的最終效果產品類準確率96%以上、資料類召回率可達99%,
應用成果:與其他策略共同作用,整體自動化率大幅提升,在通過規則優化后實際應用中取得的效果,作業人員大幅度減少,單位作業成本降低4/5,解決了用戶反饋后端處理的瓶頸,
5.2 情報識別
演算法效果:根據使用時高置信部分走自動化,低置信走人工進行標注的策略,情報識別演算法的最終效果是有效描述準確率96%以上,
應用成果:完成情報標簽分類模型接入平臺后通過對高低置信標簽的不同處理,最終提升作業人員效率30%以上,
6.總結與展望
通過此專案我們形成了一套有效解決復雜業務問題的方法論,同時積累了關于NLP演算法與業務緊密結合解題的實戰經驗,目前這些方法與經驗已在其他專案中很好的付諸實施,并且在持續的積累和完善中,在不斷提升用戶滿意度的前提下盡可能的高效自動化的處理問題,是我們堅持不懈的愿景和目標,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/53488.html
標籤:其他
