基於使用者行為的視訊聚類方案

美圖資料技術團隊發表於2018-09-11

在個性化推薦系統中,通常是由挖掘物品屬性來理解使用者興趣,從而構建推薦模型。從使用者行為去理解物品屬性往往做得比較簡單,通常只是一些簡單的標籤統計。為了深入到使用者行為去理解內容,美拍利用使用者的點選、播放行為對視訊的內容進行聚類,一方面打破了從視覺角度去理解視訊內容的限制,另一方面可以挖掘出非人工總結的分類知識,從而提升個性化推薦的效果。

在第九期美圖技術沙龍中,來自美圖公司的白楊介紹了基於使用者行為的視訊聚類方案,並探討視訊聚類在美拍推薦系統中的一些實踐。


聚類在美拍的應用場景

如下圖所示,最左邊的這個截圖是美拍首頁的 UI 介面,使用者在這個介面能看到 4—6 個視訊,視訊聚類在此頁面的應用場景如下:當介面展示的 6 個視訊有 2 個視訊是屬於同一個聚類時不會間隔展示,這種情況下我們就會對視訊展示做一個同聚類打散的操作,以保證使用者在有限的頁面中看到更多類別,做到推薦結果多樣性。

基於使用者行為的視訊聚類方案

第二是同類視訊檢索的應用場景。我們經常需要去尋找某一個視訊的同類視訊,或者說它相似的視訊,這種情況下可以通過視訊聚類來找到這個視訊屬於哪個聚類,再從這個聚類內找到相似的視訊,達到快速檢索的功能。

第三個應用場景就是通過聚類來發現一些小眾視訊,或者說發現一些短期熱門視訊,幫助產品做更好的運營策略。

第四個場景是推薦策略的擴充,可以用視訊聚類來做一些常見的推薦策略。我們可以通過聚類來發現使用者感興趣的聚類是哪一些,比如使用者感興趣的聚類是美食、美女,那我們根據使用者感興趣的聚類推薦視訊。

最後一個場景是把視訊的聚類當做特徵,加到排序模型來改善效果。以上就是視訊聚類在美拍的五個比較重要的應用場景。

那怎麼發現視訊的內容呢?最直觀的方法就是從視訊內容或圖象的角度來挖掘這個視訊表達的資訊,我們會從圖象的角度挖掘出這個視訊內的實體(例如圖片裡面的美食、寵物);第二,從聲音的角度(如背景音樂或視訊內的音訊);第三,通過視訊的文字(如視訊的描述、評論、字幕等);最後,通過視訊封面、關鍵幀、連續截圖等發現視訊講述的事情。

與此同時以上方法也存在著缺陷:

視訊內容 / 圖象 :

需要先驗知識

文字:

覆蓋率不完整,描述不一定準確

因此我們從使用者行為來挖掘視訊的內容,使用者行為由使用者畫像視訊畫像構成。通過使用者行為挖掘內容的應用場景如下:海量使用者中其中大部分使用者都看某兩個視訊,可推斷出這兩個視訊可能有相同的受眾(即這兩個視訊內容相關),進一步推斷出這兩個視訊屬於同一個聚類,這種方法不需要先驗知識

那麼通過使用者行為視訊聚類需要解決什麼問題?

1.海量資料。美拍每天的使用者行為是以 T 級別為單位的海量資料,模型每天需要處理海量資料。

2.模型更新迅速。由於每天使用者上傳的新視訊非常多,因此要以最快的速度去找到這個視訊所屬的聚類。

3.可解釋性。要明白每一個聚類隱含的意思,例如這個視訊同時屬於美食和美女,那可以推斷出這個是美女吃秀視訊。


視訊聚類方案的演進

針對以上問題我們提出了四個解決方案,如圖所示,是我們四個方案的演化歷程。我們從最開始的 TopicModel 主題模型到 Item2vec 到關鍵詞傳播到 DSSM,我們接下來主要講這四個模型的演化過程,以及線上的效果。

基於使用者行為的視訊聚類方案

1.TopicModel

首先介紹視訊的主題聚類 TopicModel,TopicModel 其實是一個在自然語言處理領域裡很經典模型,可以從眾多文件中挖掘出各文件的主題。通過這樣的一個模型可以挖掘出各個文件都屬於哪一個主題、挖掘出文件中的單詞屬於哪個主題。假設寫文件的時候總共有 100 個主題,我們會先從 100 個主題里根據文件的主題分佈選定文件的主題,選出主題之後又在從一個單詞的主題分佈中選取出單詞,以此來完成寫作。那麼 TopicModel 是通過統計各個文件裡面的詞頻、單詞的共現,來推測出文件及單詞的主題分佈。

那麼它如何應用在美拍的推薦呢?首先可以把使用者行為理解為文件,然後把使用者播放或者點贊過的視訊理解成單詞,這樣就可以把使用者行為資料用在 TopicModel 裡得到聚類結果。

那麼 TopicModel 如何滿足前面說的三個需求呢?

1.處理海量資料。TopicModel 可以通過資料並行的方式來解決海量資料的問題;
2.更新迅速。針對新的視訊,很快就能得到使用者對新視訊的行為,我們可以根據使用者是屬於哪個主題來推測出這個新的視訊屬於哪個主題,以此快速更新主題模型。
3.TopicModel 的可解釋性是非常好的,我們可以很直觀的去理解主題(聚類)大概是什麼意思,也能得到視訊在各個主題的分佈情況,以此去判斷分佈結果是否符合現實中人們的理解。

解決了三個問題後就可以用 TopicModel 來做第一個方案,要解決四個主題模型最常見的問題:

1.模型評估。在做主題模型模型評估的時候,需要合適的方法來評估這個模型的質量。
2.建模方式。上文中提到根據使用者行為來建模,就是以視訊為單詞來做建模,但是還有其它建模方式。
3.主題(聚類)的個數。主題個數在主題模型裡面是經常需要調整的引數。
4.重複聚類。主題模型結構經常有非常多的相似聚類,這樣會影響到聚類打散的場景,導致無法正確打散。

首先要解決的是模型評估,只有找到準確的模型評估方法,才能去對比各個方案的結果。

基於使用者行為的視訊聚類方案

如上圖所示,前面是主題模型裡面比較常用的兩個指標,下面這張圖是兩個指標在一次模型訓練中的走勢。可以利用這兩個指標來判斷模型是否收斂,當然這兩個指標也可以簡單來判斷模型質量的可靠。將主題(聚類)的結果引入到排序模型中,利用排序模型的指標可以判斷聚類模型效果的可靠性。想知道這樣的聚類方案在後續應用上的效果如何,因此我們引入了第三個指標:排序模型。

有了這些指標之後解決第二個問題:建模方式。上文第一個例子是以視訊為單詞來構建的,那麼反過來可以以使用者為單詞來做建模,即以視訊為文件、使用者為單詞,對比這兩種方案的三個指標可以發現:以使用者作為單詞時,三個指標都比視訊作為單詞高,但是它的訓練時間卻比視訊單詞來得長,需要達到 5 個小時。因為一個熱門視訊可能有 100 萬個使用者播放過,那麼這個文件就有 100 萬個單詞,所以訓練時間就會更長。

基於使用者行為的視訊聚類方案

如上圖所示,這兩種建模方式在排序模型裡面的效果,最下面的淺藍色是線上的 baseline,縱座標是排序模型的 AUC,我們發現引入了主題模型之後,不管什麼方案都比線上的 baseline 有所提高,所以主題模型是有比較好的效果。

再對比第二個問題,我們發現這兩個建模方案的 AUC 差別不大,為了讓訓練時間更短,傾向於以單詞為方案。在取不同主題個數時,我們發現深藍色的 AUC 和黃色的 AUC 也存在著一定的差別,那麼這時候就要解決第三個問題,就是主題個數的選擇

主題個數與應用場景非常相關,根據上文提到的應用場景分類討論:

1.小眾視訊聚類發現。儘量尋找低頻、長尾的聚類,得去擴大主題的個數,根據經驗發現主題個數在一千或者一千以上的時候,它的長尾視訊聚類效果比較好。

基於使用者行為的視訊聚類方案

2.把主題模型引入到排序模型。對比了各個主題個數 AUC 的情況,最下面依然是 baseline。上圖的每一條線都代表著不同主題個數 AUC 的情況,我們發現主題個數提高到 100 到 200 的時候 AUC 變化不明顯,截圖是調研試驗的結果,我們做了非常多次的調研試驗之後,根據排序模型的各項指標 AUC、GAUC 等把主題個數定為 150 個。

3.聚類打散。在聚類打散場景下,我們發現在主題個數越少對分享指標會越有利。例如主題個數取 100 時,線上的人均分享提高了 8%,播放的指標卻有一定的下降,然後把主題個數提高到 200 的時候,分享指標只提高了 2%,但它的播放指標也有一定的提升。

基於使用者行為的視訊聚類方案

為什麼會出現這種情況呢?可以這樣理解,當主題個數比較少的時候,聚類粒度就會比較粗,也就是說使用者在一屏 6 個視訊中,會看到更多的類別。假設一個女生在朋友圈分享一個造型或編髮視訊,她一天可能只會分享一個造型、編髮視訊,即一個使用者在一天中同一類視訊分享的次數較少,因此增加她的視訊推薦類別之後,更大概率的命中使用者想分享的類別,從而提升了分享指標。但打散了之後使用者感興趣的視訊類別會往後靠,使用者的播放會有所變低。

那在提高主題個數的時候為什麼兩個指標都會有所提升?主要是因為打散提高了視訊的多樣性,聚類粒度較細,感興趣視訊不容易後靠,改善了使用者的體驗,增加了使用者下拉,自然就帶來了指標的提高。

最後一個問題就是相似主題。舉個例子,一次模型訓練之後我們得到兩個相似的主題,這兩個主題都是抓娃娃的視訊,如果沒有對這兩個聚類做處理就沒辦法對抓娃娃視訊做準確的一個打散。主題模型結果可以得到視訊的主題分佈,那對視訊的主題分佈做轉置就會得到一個主題向量,這個主題向量每個維度都是視訊屬於該主題的一個概率,那麼得到主題向量之後就可以做對每個話題做相似度計算,然後就可以合併相似話題,這樣就能把兩個抓娃娃甚至是別的一些其他相似聚類做合併,提高聚類打散的準確性,以上就是我們把主題模型運用到視訊聚類的一些問題。

基於使用者行為的視訊聚類方案

總結一下 TopicModel 的優缺點:

優點:

主題模型用起來比較簡單,只需整理好使用者行為,然後將整個的使用者行為理解為文件用到主題模型裡就會產生想要的聚類效果。

缺點:

聚類粒度比較粗。例如在 NLP 領域對很多新聞的語料做主題挖掘,可能會得到一個娛樂類新聞的主題,這個娛樂類的主題其實可以更細粒度(得到娛樂類新聞是哪些明星的聚類),而主題模型很難做細粒度的優化。


如何得到更細粒度的聚類呢?可以引入第二個方案 Item2vec。

2.Item2vec

Item2vec 其實是把 Word2vec 應用在我們推薦場景下的一個變種。

基於使用者行為的視訊聚類方案

首先簡單介紹一下其中的 SkipGram 模型。如上圖右側所示,這是一次正樣本取樣的例子,SkipGram 的主要目的是挖掘出各個單詞和它語境相似的單詞有哪一些。可以這樣理解,是不是可以把模型用在使用者行為上,和主題模型建模類似,把視訊理解為單詞,利用模型找出相似的視訊有哪些。那怎麼訓練模型呢?圖中藍色框代表一個輸入的單詞,那白色框代表輸出的單詞,我們把輸入和輸出這兩個單詞整合成一個單詞對,這樣的單詞對輸入到網路結構中,網路就能學習出每個單詞語境相似的單詞有哪些。

這個模型跟主題模型對比有什麼優勢呢?為什麼它的粒度會更細?將它取樣的這個視窗跟主題模型進行對比,主題模型分析的是使用者完整的行為,比如使用者的一個月行為理解為一個文件,那麼主題模型統計的是一個月內視訊的共現資訊,而 Item2vec 更注重的是這個視訊附近的視訊的共現情況,因此今天點過的視訊之間相關性明顯比今天點過的視訊與1個月前點過的視訊相關性高。因此這個模型的粒度會比主題模型更細。第二個優勢就是它是一個簡單網路結構,可以加入到其他深度學習的任務裡做 end to end 的優化。

詞向量在 NLP 領域有個有趣的類比關係,那視訊向量也有一些比較有趣的類比結果。比如說在去年比較火的微信小遊戲「跳一跳」,我們去找一個貓玩跳一跳的視訊時找到這樣一個向量,然後把它減去狗玩跳一跳視訊向量,就可以類比出它是約等於貓的視訊向量減狗的視訊向量,這個類比代表產出的視訊向量。它隱含的不僅是簡單的實體資訊,它可能還隱藏著一些其他的層次資訊,同理可得,美女跳舞然後減去帥哥跳舞的視訊向量可以類比成美女視訊減帥哥視訊的視訊向量。

接下來是聚類的對比,為了讓聚類的粒度更細,我們以一個視訊的相似視訊來對比聚類的力度。以美食視訊為例,找到主題模型及 Item2vec 裡面最相似的視訊做一個對比,發現主題模型內聚類的含義是較高層面的資訊,這些相似視訊都是屬於美食,只有少數視訊可以細分為食譜、做菜的食譜,Item2vec 得到的兩個相似視訊很明顯地從封面上就能感覺到更準確:都是吃秀視訊,甚至內容非常相似的,顯而易見新的聚類方案粒度更細。

基於使用者行為的視訊聚類方案

我們把視訊聚類作為一個特徵加到排序模型中,AUC 得到了很大的提升,回顧上文提到地主題模型 AUC,當時的提升只有千分之一到千分之二,而 Item2vec 的聚類特徵達到了千分之九,效果十分顯著。

第二個場景是擴充套件推薦策略的一個方案,就是利用模型產出的視訊向量對視訊做聚類,找到使用者感興趣的聚類之後這個來召回推薦的視訊,排序召回視訊後做一個推薦,這個推薦策略線上上效果有 4%的提升,效果同樣非常明顯。

介紹完 Item2vec 總結一下優缺點:

優點:

聚類力度更細。

缺點:

穩定性差。

為什麼要說它穩定性比較差呢?假設現在有一堆視訊向量要做聚類,用最簡單的方法(比如 kmeans )來做聚類,第一次聚類後 ID 為 0 的這個聚類可能代表的是美食,那第二次我們用這些向量再做聚類,ID 為 0 的這個聚類還是美食嗎?肯定不是,所以說它的穩定性比較差。

穩定性差有什麼影響呢?如果把聚類 ID 做為特徵加到排序模型中,但是聚類 ID 隱藏的含義每次訓練都不一樣,對特徵工程會有很大的影響,需要去做一些繁瑣的工程工作,因此我們是想做一個穩定性較強的聚類結果。


基於使用者行為來做存在一些低頻的視訊,所以準確率較差

那如何解決以上兩個問題呢?我們引入文字資訊,利用文字總結聚類的含義、提升低頻視訊的準確度。

3.KeywordPropagation

而用文字來做聚類也會出現問題,首先文字的覆蓋率會比較低,以美拍為例,上傳視訊時不是每個使用者都願意填寫視訊的描述;第二個問題是視訊描述的錯誤,填寫描述時使用者可能想蹭熱點,就會寫一些熱點話題在描述裡,但實際上視訊並不屬於這個話題;第三是抽取關鍵詞時需要維護一個長尾單詞庫,因為我們想找出一些小眾、新鮮的視訊聚類。

為了解決這三個問題我們調研了傳播方式。假設現在面前有一張圖,圖裡面的節點是視訊,然後視訊與視訊之間的關係為圖中節點與節點之間的邊。有些視訊有關鍵詞,有些視訊沒有,於是可以利用節點之間的邊把關鍵詞傳播到沒有關鍵詞的視訊上去。

基於使用者行為的視訊聚類方案

首先將圖內的節點初始化,給每一個節點(視訊)一個唯一的標籤,那有關鍵指標的視訊就直接給它賦值關鍵詞,沒有關鍵詞的節點保持初始化的唯一標籤;第二步利用視訊與視訊之間的關係傳播標籤;標籤傳播之後我們會更新每個視訊的標籤,一個視訊可能會獲得從其他視訊傳播過來的很多標籤,最簡單的合併方式就是取本次傳到該視訊中數量最多的標籤作為該節點的新標籤。然後判斷傳播過程後整個圖的標籤變化情況,如果整張圖的變化情況比較少(小)可以認為已經收斂。

那如何利用使用者行為來解決呢?可以使用使用者行為來構建這張圖,比如有 100 個使用者同時看了視訊 A 和視訊 B,那視訊 A 和 B 這兩個節點就會用一條權重為 100 的邊相連,而圖裡的節點和邊可以用來傳播關鍵詞。

回顧前面的流程:首先會從視訊的描述、評論和字幕中提取出視訊的關鍵詞,然後通過使用者行為來構建這張圖,接著利用圖傳播關鍵詞,這樣每個視訊都能得到傳播關鍵詞,最後使用 N-Gram 進行聚類,線上則採用 Bi-Gram 的方式。

這個關鍵詞傳播效果如下:

  • 提升覆蓋率

    非常多的沒有關鍵詞的視訊可以通過傳播得到關鍵詞,覆蓋率現在已經達到了95%。

基於使用者行為的視訊聚類方案

  • 文字描述糾錯

    如上圖所示,左下角的視訊是一個編髮、造型視訊,但它的描述是「#好想你手勢舞#雙擊支援一下哦」,這個描述與視訊完全無關,只是單純的蹭熱點行為。通過使用者行為構建的圖,這個造型編髮視訊周圍也是一些造型編髮視訊,那就可以用準確的關鍵詞覆蓋原有的錯誤關鍵詞,完成視訊描述的糾錯。

  • 發現小眾視訊的聚類

    如果關鍵詞庫內沒有「藏舞」這個詞就抽取不出這些視訊的準確關鍵詞,自然也完成不了聚類,但是利用關鍵詞傳播能實現這樣小眾聚類的發現。比如有一百個「藏舞」視訊,在關鍵詞初始化第一步,由於抽不到關鍵詞就會給這一百個視訊都賦值一個唯一的標籤,那在做標籤傳播的時候,它就會跟周圍的「藏舞」視訊做傳播,最後他們的標籤(關鍵詞)都會趨於一致,收斂成它們節點之間權重最高的標籤。因此就可以找出本來沒有在關鍵詞庫裡維護的小眾聚類。

回顧聚類模型 Item2vec:首先用主題模型和詞向量做聚類,屬於無監督,緊接著利用關鍵詞傳播做一個半監督,利用存在關鍵詞的視訊以及視訊與視訊之間的關鍵詞完成一個半監督的模型。那是否有一種有監督的方式來提高視訊聚類的效果?這時候我們引入了深度模型 DSSM。

4.DSSM

DSSM 初始應用場景是搜尋。簡單介紹搜尋場景,在百度搜尋輸入「美拍」這個單詞就會得到非常多跟美拍相關的網頁,可能有美拍官網、美拍相關新聞或美拍的百度百科,我們可能會選擇點選美拍官網,那一次點選行為就可以理解為正樣本,同理也可以把一次視訊的點選理解為是一個正樣本,然後把使用者不喜歡的行為、視訊理解為負樣本,若不喜歡的視訊較少可以用曝光未點選的資料來充當負樣本。

基於使用者行為的視訊聚類方案

在 NLP 場景下解釋 DSSM:首先得輸入內容,如上圖所示,左邊的 Q 可以理解為在百度輸入單詞,那右邊的 D 可以理解為搜尋後展示的網頁標題。緊接看第二層 word hashing,主要是 NLP 場景下的降維,比如五十萬個的單詞的維度降到三萬,那在美拍視訊場景上怎麼做呢?可以利用上文提出的模型(如主題模型、Item2vec)來接入這層。接著是 DNN 對映到 128 維度的語義空間,然後是匹配層,一個利用 cosine 相似度來計算 Q 和 D 的相似度。最後是用 softmax 把相似度轉化為後驗概率。那模型應用於美拍推薦時,Q 就可以理解為使用者,D 理解為視訊,然後利用使用者行為做弱監督學習。為什麼說它是弱監督的模型呢?主要是因為負樣本(即曝光未點選的視訊)不一定是使用者不喜歡的,有些未點選的視訊可能只是排序較靠後,因此說是弱監督模型。

DSSM 在美拍採用瞭如下改進方案:首先在美拍播放視訊分很多種場景,最常見的是在首頁播放,除此之外還有其他來源,比如在關注的作者列表裡播放視訊、搜尋之後點選視訊等,在不同來源裡使用者點選的目的或者行為特徵是不一樣的。我們把不同來源進行拆分,讓它們共享一個使用者模式,學習使用者在不同來源播放視訊的目的;上文提到 DSSM 最下面的輸入是 bag of word 的形式,因此我們引入了 LSTM,希望模型能學到更多的上下文資訊來改善模型學習出一些使用者長期的一些興趣。

回顧 DSSM 帶來的效果,最開始主題模型 AUC 的提升是 0.1%,Item2vec 提升了 0.9%,到最後 DSSM 提升了 1.3%,效果非常明顯。而且需要注意的是前兩個模型(特別是主題模型)需要訓練資料非常龐大,可能要利用兩週甚至一個月的使用者行為,而 DSSM 只需兩三天的行為資料就能得到一個比較好的結果。

基於使用者行為的視訊聚類方案

回顧我們四個聚類方案發展路徑,最開始之所以用主題模型,是因為它用起來比較簡單,而且它的可解釋性非常強;緊接著有細粒度聚類的的場景,因此引用了 Item2vec 聚類方案;第三個方案關鍵詞傳播主要是用文字來穩定聚類,並且提升一些低頻、小眾視訊的聚類效果;最後一個方案 DSSM 利用有監督的方式提升使用者、視訊向量的結果。


未來展望

首先是多層次,我們視訊聚類目前都是隻有單一層次,其實可以得到非常多的聚類,就比如說美食還能得到麻辣燙、麵食、蛋糕等聚類,並且這三個聚類是有層次關係的,但目前我們的方案都是沒有層次感,可以利用文字的層次感來解決層次聚類的問題。

基於使用者行為的視訊聚類方案

第二是實時性,我們希望能讓聚類線上分析、更新視訊屬於哪個聚類,更想線上得到新的視訊,當它有了少量的使用者行為後,馬上得到該視訊的聚類。

第三是準確率,對於準確率有非常多的方案,比如可以在 DSSM 上引入使用者畫像特徵或視訊畫像來改進視訊向量,完善視訊向量之後就能得到更準確的視訊聚類。

以上就是我們短期內要實現的三個方向。


相關文章