機器學習在高德用戶反饋信息處理中的實踐

阿里云云棲號 發佈 2020-01-08T13:02:11+00:00

1.背景作為國內領先的出行大數據公司,高德地圖擁有眾多的用戶和合作廠商,這為高德帶來了海量的出行數據,同時通過各個渠道,這些用戶也在主動地為我們提供大量的反饋信息,這些信息是需要我們深入挖掘並作用於產品的,是高德地圖不斷進步和持續提升服務質量的重要手段。

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算法與業務緊密結合解題的實戰經驗。目前這些方法與經驗已在其他項目中很好的付諸實施,並且在持續的積累和完善中。在不斷提升用戶滿意度的前提下儘可能的高效自動化的處理問題,是我們堅持不懈的願景和目標。

作者:高德技術小哥

本文為阿里雲原創內容,未經允許不得轉載。

關鍵字: