機器學習在高德使用者反饋資訊處理中的實踐
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演算法與業務緊密結合解題的實戰經驗。目前這些方法與經驗已在其他專案中很好的付諸實施,並且在持續的積累和完善中。在不斷提升使用者滿意度的前提下儘可能的高效自動化的處理問題,是我們堅持不懈的願景和目標。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69941357/viewspace-2672291/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 機器學習在高德起點抓路中的應用實踐機器學習
- 探討遊戲反饋的處理方法遊戲
- 人肉工程在機器學習實踐中的作用機器學習
- 友盟:最美應用 CEO 馬力談處理使用者反饋的四點心得
- 在 Swoole 伺服器程式中如何實現壓力反饋伺服器
- Flink 在又拍雲日誌批處理中的實踐
- 決策樹在機器學習的理論學習與實踐機器學習
- .NET中異常處理的最佳實踐
- Java中的異常處理最佳實踐Java
- UI自動化技術在高德的實踐UI
- 機器學習在滴滴網路定位中的探索和實踐機器學習
- Serverless 在大規模資料處理的實踐Server
- 自然語言處理在eBay的技術實踐自然語言處理
- .NET中異常處理的最佳實踐(譯)
- 持續交付體系在高德的實踐歷程
- 實驗者偏差:獨立遊戲測試中的“反饋陷阱”遊戲
- 競技遊戲中的反饋迴圈遊戲
- 高德在提升定位精度方面的探索和實踐
- 大規模機器學習在愛奇藝視訊分析理解中的實踐機器學習
- 文字分析在收集產品反饋時的作用
- [BUG反饋]模型管理的編輯處有問題模型
- 衛星影像識別技術在高德資料建設中的探索與實踐
- 自然語言處理的最佳實踐自然語言處理
- JavaScript 錯誤處理的最佳實踐JavaScript
- MOBA類遊戲地圖中的反饋設計遊戲地圖
- [BUG反饋]模型中刪除欄位的BUG模型
- DBA實踐---壞塊處理
- 異常處理最佳實踐
- 高德技術團隊:深度學習在導航速度預測中的探索與實踐深度學習
- 深度學習在高德駕車導航歷史速度預測中的探索與實踐深度學習
- 反饋工具BIC
- 在oracle中處理日期Oracle
- 異常處理的反模式模式
- 如何搭建一個更高效的使用者反饋機制?
- 在實際工作中,異常處理的準則
- 在Oracle中實現各種日期處理(1)Oracle
- 在Oracle中實現各種日期處理(2)Oracle
- 程式中的敏感資訊如何優雅的處理?