揭祕微信「看一看」 是如何為你推薦的

在過去的幾年裡,質量控制作為微信看一看推薦的基石,我們在不斷的迭代升級中積累了一定的技術和經驗。本文主要跟大家分享一下總體框架的設計思路,以及如何通過平臺通用化來解決組合爆炸的問題。文章為了儘可能的給讀者描述一個完整質量控制體系的框架,這裡既有技術上,架構上考慮,也會有產品上,業務上的考慮。

一、看一看介紹

1.1 看一看的場景

微信作為國內最大用戶群體的應用,在人們的生活,工作,學習中提供社交功能的同時,還提供了工具,遊戲,購物,支付,內容,搜索,小程序等服務。看一看作為微信的重要組成部分,在原有公眾平臺資訊閱讀的基礎上,為用戶提供中心化的內容消費平臺,旨在提升內容發現效率,優化內容質量,豐富內容種類。

1.2 看一看的質量控制

與其他很多資訊產品上線初的野蠻生長不一樣,質量控制一開始就作為看一看上線標準被提出並進行了大量的投入。質量控制的必要性是由於多方面的因素決定的。

揭秘微信「看一看」 是如何為你推薦的

  1. (內在屬性)一個產品的出身和環境決定了其的調性,微信內在也決定了看一看的調性。在這裡,調性這個詞更多的是形容內容質量可以被用戶接受的底線。用戶對微信的期待也提高了這個底線。
  2. (外部壓力)微信的每一次改動都會受到廣泛的關注,在功能上線初期面臨著比其他應用更大的輿論壓力和監管壓力。
  3. (黑產對抗)因為用戶多,流量大,強大的經濟效益引來黑產的參與,使得內容生產的大環境很差,低質量數據充斥各個角落;問題也在不斷地的變化,識別控制難度也在持續加大。


二、總體框架

既然質量控制作為推薦系統必不可少的一部分,那麼在推薦系統中處質量控制處於什麼位置,包含哪些子模塊,又是從哪幾方面方面進行控制?

首先,我們先看一下內容數據在推薦系統的一生。

2.1 數據的一生

揭秘微信「看一看」 是如何為你推薦的

  1. 數據從內容生產方發表產生,由平臺收集數據。這裡生產方來自四面八方,生產的內容五花八門,質量也是參差不齊。所以,平臺將數據接入之後第一件事情就是將這些內容進行格式化和特徵提取,方便後面的流程能通用化地處理這些內容數據。
  2. 內容經過前面的初步處理後,質量控制模塊根據已有的特徵對內容進行過濾,主要是過濾不符合平臺規則的低質量數據和提供後面排序需要考慮的質量因子。這裡面涉及到過濾效率的問題,一般會分為粗過濾還有細過濾。排序推薦模塊將根據內容特徵還有用戶行為對數據進行排序。
  3. 最後,平臺將內容推薦給用戶進行消費,消費的過程中會與內容產生很多交互行為。這些行為數據,可以用於平臺的質量控制和推薦排序;也可以反饋給生產者,讓生產者能夠了解到內容被消費的情況,生產更多符合用戶需求的內容。


2.2 多維度控制

數據的一生中,我們可以看到平臺都是通過對發表內容本身進行檢測來進行質量控制,這顯然是不夠的。一個控制框架的有效運行不能僅僅在一個地方進行監控,需要全面,多維度共同作用。我們可以抽象一下平臺,生產,還有用戶。我們會發現其實除了對平臺自身檢測能力進行提升外,也可以對生產者和用戶進行引導,評估。

揭秘微信「看一看」 是如何為你推薦的

  1. 根據生產者生產內容的質量,還有用戶對內容的反饋,平臺可以對生產者進行分級分類。對不同等級的生產者,使用不同質量控制策略,如,高質量的賬號頒發個免檢標籤,在質量控制的時候避免誤傷。而對於一些已經被檢測到有低質量內容的賬號進行一定時間的封禁,減少相似問題的爆發,增加長尾問題的召回,提升系統的響應速度。不同類目也是同樣的道理,比如高危的內容類(社會民生,養生健康,娛樂)需要加強控制。
  2. 而對於用戶,我們同樣可以根據一下用戶的基礎數據(地域,年齡,性別)和用戶在微信內的一下閱讀信息,對用戶進行分類。不同用戶可以使用不同的控制策略。這樣在保證了用戶對體驗有不同要求的前提下,儘可能地保證推薦系統的效率。


2.3 輔助模塊

除了上面說的三個部分之外,還有幾個同樣非常重要的質量控制輔助模塊,這些模塊對保證整個質量控制的正常運行至關重要。

揭秘微信「看一看」 是如何為你推薦的

  1. 監控系統:監控系統需要對平臺,生產,用戶的各個方面進行監控,有些數值監控指標可以通過機器持續監控,而有些數據本身的問題則需要人工的輪詢與審核,還有就是新問題的發現與歸納彙總。其中最重要的是能夠進行全方位覆蓋,不同範圍,不同領域,有時候問題可能隱藏的茫茫大盤數據中。
  2. 干預系統:干預系統是對問題出現後,進行快速處理的手段。這樣能夠在模型策略迭代較慢的時候暫時壓制問題,減少影響範圍。干預系統除了生效快之外,還有一個重要的能力是相似內容的查找(去重指紋),如相似標題的封禁和相似圖片的封禁。
  3. 標註系統:標註系統作為一個提升樣本收集效率的平臺,不僅能有效提升標註人員的標註效率,進而有效提升模型的迭代效率;而且標註系統方便對問題的收集,總結,歸納,形成各個領域的知識庫。


三、數據與質量

前面介紹了質量控制的必要性,也介紹了質量控制的大體框架。那麼到底數據是指哪些數據?所謂的質量又指的是哪些質量指標?這些數據跟這些質量指標帶給我們什麼問題與挑戰呢?

3.1 內容數據源

看一看的數據從來源上分包括公眾平臺,騰訊新聞,騰訊視頻,企鵝號,微視,快手等。從內容形式上分有文章,新聞,視頻,圖片等。樣式豐富的數據在滿足不同用戶的內容需求的同時也加大了監管的難度。

揭秘微信「看一看」 是如何為你推薦的


3.2 質量指標

同時,看一看以用戶的體驗為出發點結合具體業務需要建立了一套質量指標體系。這裡指標隨著業務的發展不斷在增加,含義也在不斷的豐富。多維度的指標可以為業務的質量過濾和推薦排序提供更多的個性化的選擇。

揭秘微信「看一看」 是如何為你推薦的


3.3 問題與挑戰

那麼,我們的問題和挑戰是什麼呢?我們先來看一下日常工作中經常遇到的一些對話。事情的本質往往隱藏在複雜的表面下。

揭秘微信「看一看」 是如何為你推薦的

豐富的數據源,多維度的質量指標,個性化的業務場景帶來的其實是組合爆炸問題。如果對每一種組合都單獨處理,不僅導致大量人力的浪費;同時,也無法對速度要求高的質量控制問題進行快速響應。毫無疑問從體系上進行通用化,模板化,可複用,可遷移是我們解決問題的方向。下一節,我們會從一個普通任務的迭代週期出發,分析上面對話對應的迭代過程的那一部分,並對相應的部分進行相應的通用化。

揭秘微信「看一看」 是如何為你推薦的


四、體系演進

4.1 規則,特徵,樣本,模型

下圖展示了一個迭代週期裡面幾個關鍵的過程。

揭秘微信「看一看」 是如何為你推薦的

1.規則制定:規則制定可以說是質量問題解決中最重要的工作,問題分析清楚了,解法也就出來了。這裡簡單列幾個小原則,不進行展開。

  • 主要組成:需要對問題進行全面的分析,包括場景數據是什麼,問題有多少子類型,問題比例有多大,影響範圍有多廣,業界是否也有同樣的問題,做法是什麼。
  • 基於需求:這個階段更應該從需求出發進行問題的分解,儘量減少技術性的考慮。很多時候人會往往會混淆“需要做”和“怎麼做”。因為覺得這個東西難做,或者不能做而將這個東西認為不需要做。
  • 基於數據:規則的制訂需要結合數據進行討論,不能幾個人憑主觀想法就定下規則。數據往往會提供很多我們意想不到的衝突情況。
  • 衡量標準:規則必須能在人與人之間傳遞。

2.特徵提取:這裡涉及如何將業務需求轉化為技術需求。根據問題分析的結論,對直接特徵進行提取,如標題,正文,封面圖,隱藏內容,頁面結構,跳轉鏈接,錨文本,賬號,統計特徵等。

3.樣本收集:根據需要從原始數據中收集一定量的正負樣本,這些樣本可以通過相似樣本挖掘,也可以通過人工標註。

4. 模型訓練:使用模型對提取的特徵進行組合,並對收集的樣本分佈進行擬合。

  • 特徵組合:模型將問題需要考慮的特徵進行組合。有些問題只需要考慮標題(標題黨),有些問題需要考慮文章標題的匹配程度(文不對題),有些問題需要同時考慮文本與圖片的結合(低俗色情);有些問題只需要考慮主題詞(廣告),有些問題需要考慮上下文語境(假新聞)。
  • 數據分佈:模型會盡可能貼合樣本數據的分佈,降低 Loss。有些數據源問題比例高,有些數據源問題比例低。切換數據源的時候,如果樣本分佈與目標數據源的分佈不一致,效果往往有較大的差異。

4.2 通用化

看完上一小節的描述,不知道大家有沒有把對話跟迭代週期的過程對應起來。接下來嘗試對迭代週期裡面的各個部分進行通用化,包括細粒度化,共享特徵,樣本增強,模型複用,模型遷移。

揭秘微信「看一看」 是如何為你推薦的

1.細粒度化:在進行規則制定階段,要避免指定一個很大的質量問題進行優化,儘量把問題定義成“獨立”,“明確”,“與業務無關”的細粒度問題。這樣可以減少後面因為業務變化導致的不確定監督問題,提升模型適用性。舉個例子:我們之前有個質量問題是黑四類(廣告,活動,通知,招聘),標註的時候沒有區分,訓練的時候也是用一個模型。這樣在有新的業務出現的時候突然發現我們不需要黑四類,而是黑三類。還有其他一些不建議的問題類型:"標題不規範","正文質量差","內容不優質"。

2.共享特徵:雖然不同數據源的樣式不一樣,這樣需要對不同的數據源通過頁面解析進行特徵抽取,統計。但是對於同一個數據源,不同的質量問題,往往會用到很多相同的特徵。一個數據源抽取後的結果可以保存在結構化的數據結構中方便各個質量模型,還有其他的業務模型使用。如文本的位置,是否有鏈接,是否隱藏,是否模板內容等。

3.樣本增強:通過相似樣本挖掘和人工標註容易導致過擬合,標註效率低的問題。這裡可以結合數據增強提升模型的魯棒性,結合主動學習提升標註效率。


4.3 模型複用

在處理不同的質量問題的時候,我們發現有些問題用到的特徵,擬合的方法都是相似的。像越來越多平臺算法庫對基礎模型提供支持一樣,通過從具體問題中抽象問題,構建通用模型框架可以有效提高我們的工作效率。而構建通用模型框架需要結合的前面提到的共享特徵在設計之初就其保證通用性,適配性,可擴展性。

4.3.1 通用模型

揭秘微信「看一看」 是如何為你推薦的

4.3.2 廣告模型

這裡介紹一下廣告識別模型在構建過程中,涉及的幾個通用問題模型。廣告模型主要是負責識別文章裡面的廣告內容。從內容上,分為文字廣告,圖片廣告,圖文廣告。從位置上分頂部廣告,中間廣告,底部廣告。從篇幅上分主體廣告,插播廣告。那麼這裡可以抽象成 3 個通用的問題:

1.問題內容的定位(插播廣告);2. 多類型特徵的融合(圖文廣告);3.文章結構的序列化(頂部,中部,尾部,篇幅)。

揭秘微信「看一看」 是如何為你推薦的


  • 問題內容的定位:這類問題與圖像中的物體檢測相似,都是需要識別相應目標及其對應的位置。據此,我們提供一個全新的用於文本問題檢測的框架 TADL。通過滑動窗口的檢測方法將大段文本切分成多個小片段,並對每個小片段進行廣告概率打分和反推定位,從而在一個模型框架內同時實現了廣告文字的識別和定位,並且只需要文章級別的標註就能完成訓練。


揭秘微信「看一看」 是如何為你推薦的


揭秘微信「看一看」 是如何為你推薦的

  • 多類型特徵的融合:圖片廣告定義廣泛,廣告的程度需要同時考慮多種類型的特徵(文本大小,文本位置,文本語義,圖片場景,圖片內容)。相對於端到端的需要大規模標註的深度模型,對問題進行分而治之的 wide&deep 模型框架具有更好的解釋性,更高的召回。
揭秘微信「看一看」 是如何為你推薦的

  • 文章結構的序列化:一篇文章是否有廣告問題,需要對整篇文章中多模態廣告的佔比,位置進行綜合考慮。將不同廣告文章中的文本廣告概率和圖片廣告概率進行序列化的可視化展示,發現通過對有限的序列模式進行識別檢測可以用來解決多模態文章分類問題。模型通過 Multi-CNN 檢測異常“突起”,通過 BiLSTM 檢測概率變化趨勢。
揭秘微信「看一看」 是如何為你推薦的

揭秘微信「看一看」 是如何為你推薦的


4.4 模型遷移

數據源之間的數據分佈一定是會存在差異的。模型遷移主要是想要解決數據分佈不一致的問題。這裡我們以色情低俗識別為例子,分“詞向量”和“特徵分佈”兩個方面來考慮遷移問題。

揭秘微信「看一看」 是如何為你推薦的

4.4.1 詞向量統一

詞向量在不同的場景中會表現不一樣的語義,如“下面”在圖文和視頻標題裡面就有不同的語義。多數據源數據訓練的詞向量因為獲得了更多的信息量要好於多個數據源單獨訓練的向量。到後來基於更大量訓練集的 bert 的出現更是極大的豐富了詞向量的信息量。

揭秘微信「看一看」 是如何為你推薦的

4.4.2 特徵空間統一

這裡面的方法主要有 finetune,多任務學習,還有對抗學習。

揭秘微信「看一看」 是如何為你推薦的

  • Finetune 的目的是使用已有模型的特徵提取能力,然後目標數據源進行組合調整達到較好的效果。這個模型在源領域數據標註量要比較大,模型框架能夠表示足夠多的共同特徵時比較有效,如 bert。


揭秘微信「看一看」 是如何為你推薦的

  • 多任務學習通過不同任務間建立共享層,學習不同 domain 之間的共享知識,進而實現雙贏。缺點是需要大量的目標領域的有標數據。
揭秘微信「看一看」 是如何為你推薦的


  • 對抗學習充分利用了大量的無標數據消除一些鄰域間分佈不同的差異。
揭秘微信「看一看」 是如何為你推薦的


揭秘微信「看一看」 是如何為你推薦的


五、持續對抗

5.1 動態數據

前面所提到的多樣化的問題,更多的是平臺內部因為業務需求主動引入更多的數據和質量指標導致。這些問題相對來說是靜態的。在業務上線之前,平臺會進行摸底優化,不會有太多的意外。

接下來我們討論數據動態變化的問題。在日常的內容生產過程中,內容生產者根據平臺的環境和用戶的反饋不斷修改內容的樣式,類目。這些變化會改變數據的分佈,從而導致平臺對新數據出現漏召或者誤判。其中,黑產的持續不斷的有意對抗最為頻繁,花樣最多,也是我們最為關注的。這些對抗具有形式類目多,迭代週期多的特徵。

  • 形式類目多:問題數據類型不斷變化演進,從文本,圖片,視頻一直到鏈接。類目上也是在多個高危類目上來回切換,不斷創新。
揭秘微信「看一看」 是如何為你推薦的

揭秘微信「看一看」 是如何為你推薦的


  • 迭代週期短:某個特殊的色情標題黨樣式,在某一時間短獲得不錯的曝光後,黑產立即進行了大規模的投產,而在受到打壓後又迅速的轉向其他類型的 case。
揭秘微信「看一看」 是如何為你推薦的


5.2 解決體系

由於敵暗我明,完全杜絕幾乎是不可能的。原則上是提高黑產的作弊成本,降低平臺的維護成本。我們還是從前面提到質量控制體系的三部分入手。

揭秘微信「看一看」 是如何為你推薦的

平臺:每天都有少量的標註人工對線上數據進行輪詢,對有問題的數據進行屏蔽收集。

用戶:對大量用戶反饋有問題的數據進行限制。

生產:

  • 黑名單:對歷史上劣跡斑斑的賬號進行封禁,同時,對跟這些賬號關聯緊密的賬號進行挖掘封禁。
  • 沙盒機制:對新註冊的,發文較少,未被平臺驗證的賬號,限制其推廣範圍。

樣本擴散,模型迭代:

  • 用戶反饋和平臺監控,雖然能發現新的問題,但是泛化性不夠。
  • 賬號打壓雖然具有泛化性,但是無法將新問題,新賬號發現。
  • 為了解決原有體系的不足,我們嘗試結合兩部分,通過人工監控跟負反饋收集樣本進行擴散,然後提供給模型進行迭代提升召回。最後再從賬號維度進行泛化打擊。這裡跟前文提到的樣本增強的區別在於樣本擴散更多的是對新問題樣本的收集。


5.3 擴散迭代

5.3.1 正常流程

那麼怎麼進行樣本擴散,加快模型的迭代週期呢?下面是一個樣本收集週期裡面大概需要做些什麼事情。

  • 首先根據發現的問題數據通過相似度計算,我們在源數據(source data)找到一批跟問題數據(sample data)相似度較高的未標註數據(unlabeled data)。
  1. 賬號:一個賬號的內容大部分比較相似,同一個黑產內容跟也往往相同。
  2. 類目:對問題比較集中的類目進行數據挖掘。
  3. 關鍵詞:用一些匹配式框定一個範圍。
  4. 聚類模型:簡單的計算樣本內容的文本相似性。
  5. 分類模型:構建簡單的分類模型進行初篩。
  • 然後對這批未標註的數據進行人工標註,這樣可以篩選出一批能有效提升模型對新問題識別效率的標註樣本(selected data)。
  • 最後將篩選的樣本跟原有的標註數據(labeld data)進行合併作為訓練樣本進行模型訓練。訓練好模型之後在測試數據(test data)上面進行測試效果。
揭秘微信「看一看」 是如何為你推薦的

5.3.2 加速流程

工作週期主要的工作量是在兩個部分,一是相似樣本的挖掘,二是人工標註樣本;相似樣本挖掘的精度越高,覆蓋的樣式越全,人工標註的樣本量就越少。而這兩方面我們可以使用半監督學習跟強化學習的方法來進行優化。

揭秘微信「看一看」 是如何為你推薦的

5.3.3 自動化流程

更進一步我們嘗試使用強化學習代替整個問題樣本的挖掘過程,強化學習選擇器從源數據裡面選擇樣本,跟已有標註樣本送入判別器訓練,然後將判別器在測試數據和問題數據的表現當成 Reward 反饋給強化學習選擇器。

揭秘微信「看一看」 是如何為你推薦的


六、總結展望

前面討論了框架內部的通用性,那麼這個框架整體是否具有通用性,能否在其他平臺適用呢?其實因為各類內容平臺在問題類型跟數據類型本身就存在大量的共性;所以看一看的控制框架和技術,在面對如搜一搜,公眾平臺,朋友圈等其他場景時,依然可以提供相應的經驗和能力。近半年來,搜一搜作為用戶獲取內容重要場景,我們在複用看一看能力的基礎上也構建了類似的控制框架。

雖然我們已經掌握了各式各樣的能力,能夠解決很多問題,但是相比起知道的知識,我們不瞭解的內容更多,經常會出現讓我們意想不到的狀況。質量控制,乃至於機器學習的主要矛盾在於用有限的知識處理無限的未知。持續的知識獲取意味著自主學習,也意味著持續的與現實交互。

一個平臺的質量控制系統就像是人體的免疫組織,當病毒來臨,免疫細胞產生抗體,消滅病毒。人類在漫長的進化過程中,構建了複雜的免疫系統,同時,病毒也在不斷的進步。越是複雜的系統,出現問題的可能性越高,出現問題後解決問題的成本難度也越大。在構建強健的內部免疫系統的同時,我們同樣需要營造良好的外部環境,讓更多優質的內容生產者進來,才是解決質量問題之根本。

作者:harryzhong,騰訊 WXG 應用研究員


分享到:


相關文章: