科技

【短視訊內容理解和推薦演算法比賽大揭祕】

不知不覺,你是否發現身邊的小夥伴們都在瘋狂的玩抖音,刷微博,你的購物APP也變得越來越聰明,很瞭解你想要的東西,就連點個外賣,美團和餓了麼都知道你想要吃什麼呢?是什麼黑科技讓這些APP變得如此神通,能深深的吸引著你的目光和味蕾呢?其實,之所以你覺得它越來越聰明越來越懂你,當然少不了你跟它之間的親密“溝通”,看似不經意的一次點選,一次停留,它都默默的記了下來,等待你的再次臨幸。這位神祕的幕後主使就是我們今天要講的——個性化推薦演算法。目前它已經深入到網際網路的各類產品中,也經歷了數次更新迭代,變得越來越貼心了。接下來,我將通過一個近期我們參加比賽具體講解一些其中的演算法原理。

這次比賽是由今日頭條主辦的短視訊內容理解與推薦競賽,我們的成績在大規模億級的賽道中拿了第四名,千萬級資料規模的賽道中第五名。這也是我們極鏈AI實驗室首次嘗試推薦演算法。

首先,來講講什麼是推薦演算法。推薦演算法大致可以分為三類:基於內容的推薦演算法,協同過濾推薦演算法和混合推薦演算法。基於內容的推薦演算法,原理是將使用者喜歡和自己關注過的Item在內容上類似的Item推薦給使用者,比如你看了復仇者聯盟1,基於內容的推薦演算法發現復仇者聯盟2、3、4,這些與你以前觀看的item在內容上有很大關聯性。協同過濾演算法,包括基於使用者的協同過濾和基於item的協同過濾,其中基於使用者的協同過濾是通過使用者之間的相似性,挖掘與使用者具有相似興趣的使用者喜歡過的item,比如你的朋友喜歡復仇者聯盟,那麼就會推薦給你。基於item的協同過濾是找到跟使用者喜好最相似的商品,然後推給他。混合推薦演算法,則會融合以上方法,以加權或者串聯、並聯等方式進行建模。常用的包括傳統機器學習演算法如因子分解機(FM,FFM),LR,GBDT,RF和近幾年流行起來的DNN和FM結合的演算法。

這三種類型的推薦演算法各有千秋,內容推薦演算法的優點在於可以避免Item的冷啟動問題(冷啟動:如果一個Item從沒有被關注過,其他推薦演算法則很少會去推薦,但是基於內容的推薦演算法可以分析Item之間的關係,實現推薦),但弊端在於推薦的Item可能會重複,典型的就是新聞推薦,如果你看了一則關於某某明星出軌的新聞,很可能推薦的新聞和你瀏覽過的,內容一致;協同過濾演算法可以隨著使用者對商品的互動記錄增加更準確的捕捉使用者行為習慣,進而使得模型能夠不花費額外的人工的方式來提高精度(但在初期會面臨冷啟動問題的困擾)。

無論哪種推薦演算法,都離不開特徵工程、模型學習這兩個重要的步驟。接下來,通過比賽這個例項,來講解每個步驟具體是如何實現的。這次比賽的任務是通過一個視訊及使用者互動行為資料集對使用者興趣進行建模,然後預測該使用者在另一視訊資料集上的點選行為。該任務屬於機器學習中兩個基本任務之一分類,而且是二分類即給給定的資料打標籤(0,1),0代表unlike,unfinish,1代表like或者finish.

一.特徵工程

眾所周知,短視訊App中的視訊一般都有一個醒目的標題,有一段內容豐富的連續畫面,和一段有趣的聲音組成,通過nlp,cv,audio等深度學習模型提取這些資訊特徵就組成了視訊item的特徵;對於使用者來說,使用者的身份(年齡,性別,地域)等組成使用者特徵,使用者點選視訊的過程,停留的時間,點贊等行為則構成了基本的互動資訊。比賽提供的互動資訊欄位,我們將它劃分為三個部分包括使用者資訊(user_id,user_city),視訊資訊(item_id,item_city,author, songs, duration time)和互動資訊(did, channel)。除此之外,視頻特徵,音訊特徵,人臉特徵等都屬於視訊資訊。

接下來,資訊有了,怎麼去挖掘這些資訊中隱藏的祕密呢?這就是特徵工程的意義所在,儘可能多的挖掘使用者和item之間的相關資訊,然後將這些資訊送入後面的模型進行學習。

比賽初期,主辦方提供了一個簡單的特徵構建和模型訓練的框架,上文提過的FM演算法,公式如下:

該演算法利用互動資訊,構建矩陣,通過因子分解,來挖掘資訊的互動特徵。其中x代表特徵屬性,y是預測結果,n就是特徵的互動階數,階數越高,求解越難。因為特徵x分為category特徵(離散)和numeric特徵(稠密)兩種,category特徵需要進行one-hot編碼,一旦進行互動,特徵的維度將會非常高,使得計算機的算力不夠。實際應用中,一般只取二階特。那麼,還有其他方法去挖掘更多更深的互動資訊嗎?別急,下面我會介紹比賽中我們嘗試的重要的特徵工程方法。

推薦演算法的資料記錄的是使用者的歷史行為資訊,而資料的先後順序反映了時間資訊,那麼利用所有的歷史資料去計算未來的行為的特徵生成我們暫時稱之為全域性特徵,只利用一部分歷史資料來計算特徵的生成方式我們稱之為區域性特徵。

基於全域性的特徵我們主要從svd分解、統計特性、和時間相關特徵,三個方面去考慮進行特徵提取。

區域性特徵的構造,是根據時間順序,劃分出一部分作為歷史資料,另一部分作為訓練資料(即現在和未來),通過歷史資料構造特徵組合(只針對category),並統計訓練資料需要的資訊,如圖1所示,按照時間的遠近,靠近測試資料的30%資料作為訓練資料,前面70%資料作為歷史資料,可以去除最後5%的資料之後多次劃分,訓練多模型來提升效果。根據馬爾可夫理論,當前的狀態一般只和前面一個狀態相關,這也是為何如此劃分資料集的依據。提取的特徵描述如表格1所示。

圖1.區域性特徵構造示意圖

Tabel 1:local feature deion

上述所有特徵中,mean和regression只針對目標finish和like進行計算,這些特徵只記錄了使用者的歷史行為,count_from_past, count, count_from_future, 這些特徵從時間角度上統計了使用者從歷史-現在-未來的行為。matrix_factorization 特徵是通過FM演算法計算的只利用user和item資訊的一個特徵,這樣即利用了fm的資訊,計算量又小。

二.模型訓練

特徵構造完成後,後續的任務就可以交給強大的機器學習演算法來進行訓練。常用的演算法有基於boost演算法的決策樹和dnn演算法(比賽中我們僅使用了前面的演算法,是因為dnn的演算法在增加全域性特徵後有提升的,但是和其他模型的結果進行融合後並沒有提升,而且也沒有boost的效果好)。如圖2所示,針對不同特徵使用不同的訓練器訓練流程,feature0代表區域性特徵,feature1代表全域性特徵,最後將兩個框架的結果進行融合。每個階段的比賽成績如表2所示,只列出來賽道二中的部分成績,“——”代表沒有進行該項實驗,由於全域性特徵在like任務的表現一直不理想,所以基於該特徵的xdeepfm並未進行實驗。中間關於引數選擇和特徵選擇的成績未列出。Final是最終提交的public成績。

圖2 模型訓練示意圖

Tabel2:比賽資料(Track2)

Reference:科技日報

看更多!請加入我們的粉絲團

轉載請附文章網址

不可錯過的話題