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 算法與業務緊密結合解題的實戰經驗。目前這些方法與經驗已在其他項目中很好的付諸實施,并且在持續的積累和完善中。在不斷提升使用者滿意度的前提下,盡可能的高效自動化的處理問題,将産品的每一個細節争取做到極緻, 是我們前進的原動力和堅持不懈的目标。