【技術分享】四:搜索排序—數據的採集與構造

  • 2019 年 10 月 28 日
  • 筆記

本文原作者:彭江軍,經授權後發佈。

導語:數據決定了任務的上限,模型方法決定達到上限的能力。在機器學習三要素裏面,經驗數據是極其重要的一環,直接決定了該機器學習任務的最終能達到的效果。尤其是在進入大數據時代,數據獲取上面會比以往容易許多,選取數據集有時候帶來的提升比更改模型帶來的要快速的多。

1:數據的採集

按照有無標註的數據,可以將機器學習任務分為:監督學習,無監督學習,半監督學習。

監督學習,我們知道訓練的特徵和標註。尋找訓練模型來擬合特徵和標註之間的關係。

無監督學習,我們只知道訓練的特徵,而無標註。這個時候能利用的模型比較少,也沒有標註的監督信息指導模型該怎麼去優化。

半監督學習,利用少部分的有標註數據聯合無標註的數據進行學習。在半監督學習中有一個常見的方法——active learning。

剛好之前做過一段時間,這裡講一下。

2: 主動學習

在一些複雜的監督學習任務中,獲取標註樣本是非常困難:既耗時,而且代價昂貴。如,語音識別(Speech recoginition)、信息提取(Information extraction)、分類和聚類(Classification and filtering)等。主動學習系統嘗試解決樣本的標註瓶頸,通過主動選擇一些最有價值的未標註樣本給相關領域的專家進行標註(Active learning systems attempt to overcome the labeling bottleneck by asking queries in the form of unlabeled instances to be labeled by an oracle)。

一般的流程是先基於小樣本訓練一個模型,然後對新的未標註樣本進行標註,挑選樣本擴大有標註的訓練集,再次訓練,如此迭代下去。流程如下所示:

這個裏面在選擇樣本的時候有兩個選擇。

A:選擇模型標註的高置信度的樣本至有標註的數據集

B:選擇模型標註的分不清楚的樣本交給轉給專家(標註人員)再行標註

我當時選擇了A,因為可以避免人工的參與。

BUT結果並不是很明顯。

可能原因是在於小樣本學出來的模型能夠學到的權重組合方式都是基於小樣本的。基於小樣本訓練的模型挑選出來的無標註數據進行預測的高置信度的樣本並沒有帶來更多的信息,從而不能帶來更多的有用的數據。所以數據即使挑選的再多,帶來的新信息也有限。無法對新數據進行更準確的預測。

如果需要選擇擴充樣本,可以通過挑選預測不確信的樣本再次標註的方式來引入新的信息,從而加快模型對於未知樣本的學習能力,加快模型達到最好預測精度的收斂速度。

3: 訓練數據的構造

下面主要針對自己的項目,講一講如何構造樣本的過程。

騰訊視頻做一個有着1.6億DAU的產品,和短視頻不一樣,每天有着億級別的搜索請求,為了最好的掌握到用戶的搜索點擊興趣,比較好的方式就是我們需要對用戶的行為日誌進行搜集和分析,構造訓練數據。大量的訓練樣本可以較好的保持和線上的分佈的一致性,接下來對訓練樣本的訓練,就能對線上的排序起到一個比較好的預測作用。

在第一章寫過需要構造的樣本所需要的特徵包括:

文本相關性類特徵

內容質量分類特徵

內容的時新類特徵

點擊類特徵

用戶畫像類特徵

需要的因變量有:

一次搜索下用戶對於某個視頻的行為結果

融合上述多張日誌表,收集這些維度的上報特徵,和用戶的點擊反饋日誌按照搜索的id進行聚合形成排序的訓練樣本。上報的數據我們是通過TDWbossapi上報的,也可以通過原MIG的taf上報用戶日誌,數據落地到venus平台,然後進行後續的聚合等處理。

這份數據非常重要,它對應了我們第一章說的從哪裡去學的問題。即便如此,有的時候有時,用戶點擊行為也無法衡量真實滿意度。但是至少這份數據可以反映絕大多數用戶的滿意程度。日誌的搜集流程是一個比較常規的流程,就不多講了。

這裡着重說一下,在選擇樣本的時候一些注意的事項。

3.1:樣本採集分佈的一致性

在進行採樣的時候,數據的分佈是需要花大氣力來關注的。因為實際中數據分佈的是很複雜,為了保證模型的泛化能力,需要對採集的數據的分佈做分析。

這裡在採集數據的時候,我們隊採集的訓練數據從視頻一下幾個方面進行確認來保證和線上分佈的一致性。

           用戶點擊分佈情況:僅曝光,短點擊,中點擊,長點擊。

           搜索query的類型情況:如電視劇,電影,少兒,博客,體育等

           搜索query的點擊情況,熱門top query,冷門的query。

           搜索query的時新情況

3.2:訓練數據樣本篩選與清洗

實際中,由於上報的精確性,可能有的平台會增加噪音,或者用戶搜索了一下比較偏門的query,或者異常的點擊(重複點擊)等等,因此需要對訓練樣本做一定清洗與篩選。

比較重要的環節有

1:Label的設置。在構造的過程中,我們將用戶的行為分成了四種,僅曝光,短點擊,中點擊,長點擊。分別給與label,0-3。

2:對冷門熱門query的比列的選擇,在我們預測用戶的點擊和長點擊任務中,我們保持了和線上比較相近的比例。

3:用戶點擊數據需不需要做截斷,因為後面的點擊可能由於頁面的展示,或者量少的原因會引入誤差。在我們這裡截圖了前5屏(100條)的視頻的結果。

4:一次搜索下面,有的用戶可以壓根沒點,這部分排序樣本該如何評定。在我們的樣本選擇過程做的比較粗糙,對於session下沒有點擊的或者點擊次數,以及用戶這次搜索下僅僅點擊曝光了3條以下的視頻的這次session的數據統統不考慮納入訓練樣本。