在微信AI背後,技術究竟如何讓一切發生?關注微信AI公衆號,我們將爲你一一道來。今天我們將放送 微信AI技術專題系列“微信看一看背後的技術架構詳解” 的第三篇——《微信看一看內容理解》。

內容理解與推薦

相信對於不少人而言微信已經成爲獲取資訊的主要場景。與此同時,由於微信用戶羣體的龐大,也吸引了大量的內容生產者在微信公衆平臺創造內容,以獲取用戶關注、點贊、收藏等。微信內的內容推薦產品:看一看應運而生。

結合微信用戶的內容消費需求,以業務目標爲導向,我們的推薦系統從基於屬性召回、到協同&社交召回、再到深度模型召回進行了演進,深度模型涵蓋了序列模型、雙塔模型、混合模型、圖模型,最終形成了多種召回並列、多路模型共同作用的 看一看內容召回系統 。如果把推薦系統中工程服務比作骨骼,那麼推薦模型可以比作肌肉,還需要內容理解作爲血液,縱向貫穿整個推薦系統,從內容庫、到召回、再到排序和畫像,源源不斷的提升系統的推薦精度,本文將着重介紹看一看內容理解平臺及應用。

看一看接入了非常多合作方的數據作爲內容源。 由於接入數據源較多,各家數據從內容、質量、品類等差異性比較大 。看一看平臺方會對數據做“歸一化”操作,然後應用於推薦系統線上部分。內容理解定義:對接各種外部圖文等內容,對接入內容做業務級內容多維基礎理解,同時進行外部標籤與自有標籤體系對齊,完成應用級內容打標;反饋至下游應用方:用戶需求系統,召回策略,召回模型,排序/混排等使用;同時,在業務數據滾動與迭代中修正數據刻畫精度與效果,逐步貼合與提升業務線效果;我們 將內容畫像定義爲兩個大維度:通過內容本身來理解內容,通過行爲反饋來理解內容 。前者主要針對內容抽取靜態屬性標籤;後者,通過行爲積累的後驗數據,統計,或模型預估內容的知識,傾向性,投放目標,以及抽象表達。

內容畫像定義

內容理解主要包括 文本理解、多媒體理解、內容傾向性、投放目標預估 ,主要應用在內容試探效率提升,推薦分發模型的特徵泛化,多場景的內容庫構建,推薦相關性召回和語義排序以及封面圖優選創意,旨在提升精選、在看、看一看+核心業務指標。同時,我們在工程同學的大力支持下也將內容理解技術服務化/工具化,一方面支持業務快速擴展,另一方面對外部門提供內容理解支持。

文本內容理解

業務中有大量的文本信息, 包括圖文標題和正文,視頻標題,ocr,評論等數據 ,需要對這些文本信息進行歸一化,除了抽取分類、tag、entity,針對外部標籤,我們還會做標籤映射,面對畫像中大量近似標籤問題,我們也做了tag聚合/topic,同時我們還通過知識譜圖的推理能力,加強對內容的理解深度和廣度。

2.1 文本分類

文本分類是自然語言處理領域最活躍的研究方向之一,目前文本分類在工業界的應用場景非常普遍,文章的分類、評論信息的情感分類等均可輔助推薦系統,文本分類在推薦中相比標籤與Topic具有較高的準召率與解釋性,對於用戶興趣具有極大的區分度,並且作爲內容畫像中極具代表性的特徵,往往是產品策略與自然推薦模型的重要決策依賴。目前已支持50+維一級主類目以及300+維二級子類目。

 2.1.1 LSTM

在自然語言處理領域中,文本分類任務相較於文本抽取和摘要等任務更容易獲得大量標註數據。因此在文本分類領域中深度學習相較於傳統方法更容易獲得比較好的效果。前期我們採用了自然語言處理中常用的LSTM算法進行了準召率的摸底試驗。但LSTM具有訓練、預測環節無法並行等缺點,伴隨着推薦內容的體量增大,限制了迭代的效率。

●  2. 1.2 TextCNN

與LSTM相比,TextCNN使用了卷積 + 最大池化這兩個在圖像領域非常成功的組合,以訓練速度快,效果好等優點一段時間內在工業界具有廣泛的應用。其中每個卷積核在整個句子長度上滑動,得到n個激活值,然後最大池化層在每一個卷積核輸出的特徵值列向量取最大值來供後級分類器作爲分類的依據。但同時池化層也丟失了結構信息,因此很難去發現文本中的轉折關係等複雜模式。

●  2. 1.3 fasttext

爲解決LSTM模型優化慢的問題,我們 採用了實現較快且效率較高的淺層模型fasttext 。它的優點也非常明顯,在文本分類任務中,fastText往往能取得和深度網絡相媲美的精度,卻在訓練時間上比深度網絡快許多數量級。

其中x1,x2,...,xN−1,xNx1,x2,...,xN−1,xN表示一個文本中的n-gram向量,每個特徵是詞向量的平均值。與cbow模型相似,此處用全部的n-gram去預測指定類別。

●  2. 1.4  BERT

BERT在多項NLP任務中創下了優異的成績,因此我們將文本分類算法優化至BERT finetune模型裏,解決通用文本表示訓練成本高等問題,在PreTrain Model(BERT-Base, Chinese)的基礎上, 通過推薦的特性數據進行finetune,得到基於BERT的finetune模型。

●  2. 1.5  ensemble model

在已有的上述模型基礎之上,我們對各已有模型以及合作團隊的模型,進行了ensemble model優化,並對原始內容輸入進行了詞擴展補全等內容擴充特徵工程,更近一步的增強了模型的魯棒性,並針對不同場景的特性進行組合。

2.2 推薦文本標籤

在推薦中,標籤被定義爲能夠代表文章語義的最重要的關鍵詞,並且適合用於用戶需求和item profile的匹配項,相比於分類和topic,是更細粒度的語義。標籤可以認爲是推薦系統的“血液”,存在於推薦系統各個環節,內容畫像維度、用戶需求維度、召回模型特徵、排序模型特徵、多樣性打散等等。跟隨業務的快速發展,我們也 從早期簡單的無監督算法過渡到有監督,最後到深度模型。

●  2.2.1  TF IDF

前期爲了快速支持業務,我們使用無監督投入產出比很高的方式,計算文檔中每個token的TFIDF值,然後取top作爲文檔的tag。

其中ni,j表示tokeni在文檔j中出現的個數,|D|表示語料中文章個數, 表示包含 tokeni的文檔個數。某一特定文件內的高詞語頻率,以及該詞語在整個文件集合中的低文件頻率,可以產生出高權重的tf-idf。因此,tf-idf傾向於過濾掉常見的詞語,保留重要的詞語。TFIDF優點是基於統計方式,易於實現,缺點是未考慮詞與詞、詞和文檔之間的關係。

●  2.2.2  基於doc和tag語義排序

爲了解決TFIDF存在的問題,考慮文檔和token之間的關係,我們 使用token與文章的LDA語義相關性排序,從而篩選出有意義的、滿足文章主題信息的Tag,提高Tag的準確率 。主要做法是用已有的topicModel inference 文章的topic分佈和候選token的topic分佈,然後計算文章topic分佈和token topic分佈的cos相似度,選取top token作爲tag。後來將LDA升級到word2vec embeddding再到doc2vedc,效果上有提升。但該類方法可以考慮到文檔和token之間的相關性,但是還是未考慮token之間的相關性,仍然是無監督方法,優化空間小且很多badcase不可控。

2.2.3  TextRank

TextRank由PageRank演變而來。PageRank用於Google的網頁排名,通過互聯網中的超鏈接關係來確定一個網頁的排名,其公式是通過一種有向圖和投票的思想來設計的,如下。直觀來理解就是說網頁Vi的rank值完全取決於指向它的網頁,這些網頁的數量越多,Vi的rank值越大,這些網頁所指向的別的網頁的數量越多,就代表Vi對於它們而言重要程度越低,則Vi的rank值就越小。

對於文章中的關鍵詞提取也是類似的。我們將每個詞語看成是網頁,然後預先設置一個大小爲m的窗口,從頭遍歷這篇文章,在同一個窗口中的任意兩個詞之間都連一條邊,通常情況下,這裏我們使用無向無權邊(textrank的作者通過實驗表明無向圖的效果較好)。畫出圖過後,我們對每個詞Vi賦予一個初值S0(Vi),然後按照公式進行迭代計算直至收斂即可。最終我們選擇rank值的topN作爲我們的Tag。相比於TFIDF,TextRank考慮了詞與詞、詞與文章之間的相關性,但是TextRank沒有利用整個語料的信息,不適合短文本抽取,且計算複雜度比較高。

●  2.2.4  CRF

以上是無監督的方法的嘗試,後來隨着訓練數據的積累,我們切換到了有監督模型上, tag抽取是一種典型的序列標註任務 。我們嘗試了經典的CRF(條件隨機場)模型,特徵包括字+詞性+分詞邊界+特徵詞+詞庫,詞庫包括人名,地名,機構,影視,小說,音樂,醫療,網絡輿情熱詞等詞庫。特徵收集好之後需要配置特徵模版,特徵模版需要配置同一個特徵不同位置組合,同一個位置不同特徵組合,不同位置不同特徵組合,特徵模版70+。雖然CRF相比無監督方式效果比較好,但是特徵工程複雜,面向新的數據源需要大量工作調節特徵。

特徵舉例:

▶  如果當前詞詞性=名詞 且 是否詞庫=1 且 標籤=1,我們讓t1=1否則t1=0,如果權重λ1越大,模型越傾向把詞庫中的詞當成tag

▶  如果上一個詞性是標點,下一個詞性是動詞且當前詞是名詞,我們讓t2=1,如果權重λ2越大,模型越傾向把夾在標點和動詞之間的名詞當作tag

●  2.2.5 深度模型

爲了解決特徵工程複雜問題,我們將淺層模型升級爲深度模型,可以有效地替代人工特徵設計,更全面地表示句子,同時增加序列約束。 主要結構爲預訓練詞向量+雙向LSTM + CRF ,目前業界比較經典的通用序列標註模型 。首先對句子分詞得到token序列,輸入序列先Lookup到embedding,embedding提前用word2vec從大規模語料中無監督得到,然後分別走前向和後向的LSTM,得到兩個方向的基於Context的token表示,然後通過全連接層將前向和後向的語義表示Merge在一起,最後通過CRF層進行序列標註。神經網絡部分替代特徵工程,自動學習到高階特徵組合,embedding層通過無監督方式從大規模語料中學習到,可以降低分詞token的稀疏性,LSTM可以學習到分詞token動態的基於Context的embeddding表示,而雙向LSTM使得表示更加全面,不但考慮前面的Context信息,也考慮了後面的Context信息,與人類一般讀完整個句子才更好的確定詞的重要度類似,之後的BERT驗證了雙向表示的重要性。而CRF層用來學習標籤之間的約束關聯信息,比如不太可能後半句全是1(1表示tag)。

LSTM-CRF帶來的最大好處是

1)利用大規模語料來學習知識,容易遷移模型到新數據源

2)避免複雜的特徵工程,但存在解釋性差的問題。

 2.2.6  深度模型升級

在經典的LSTM-CRF基礎上,我們進行了模型的升級,模型整體結構變爲Deep And Wide 結構, 在原有的基礎上增加 Wide部分,用於保持輸入的低階表示,增強模型的“記憶”能力 ,此處驗證了TFIDF/postion/POS特徵,只有TFIDF特徵有效,在深度部分增加了self-attention層,學習token之間重要程度,與最終目標一致,self-attention的計算方法如下。其中Value是雙向LSTM的輸出, Query和Key相同,Key是不同於value的參數矩陣,大小是#corpus_uniq_tokens * attention_key_dim

後續將嘗試wide部分引入更多知識,比如詞庫特徵。

2.3 推薦entity識別

●  2.3.1 基於實體庫

構建推薦系統初期,爲了快速實現,我們基於實體庫+AC匹配的方式進行實體識別,實體庫使用CRF進行新實體發現,頻率大於一定的實體再由人工審覈進入實體庫,這種方式往往忽略了上下文語境,容易引入badcase,對於新實體,識別併線上生效有所延遲。 

●  2. 3.2  序列標註模型

我們將推薦實體識別算法從匹配升級到BiLSTM-CRF with Attention架構的多類別實體聯合識別模型。模型主要採用字、詞、詞性三種特徵,在BiLSTM層與CRF層間引入multi-head self-attention層,在多個不同子空間捕獲上下文相關信息,篩選不同類別實體的重要特徵,增強特徵對實體類別分辨能力,進而提升模型識別效果。最後使用CRF進行標籤序列建模,利用全局信息,將標籤轉移矩陣作爲標籤序列的先驗知識, 避免結果中不合理的標籤序列。

近期,我們又將實體識別算法升級到了BERT,解決訓練數據難以獲取導致的精度不高的問題,目前支持的實體類型包含人名、組織、地名、車、遊戲、視頻、書籍、音樂、食品、旅遊景點、化妝品/服飾、疾病/養生、古董古玩、軍事共14類實體。在PreTrain Model(BERT-Base, Chinese)的基礎上,通過多類型實體標註數據進行finetune,得到支持多實體的實體識別模型。同時我們還嘗試了BERT和LSTM-CRF的組合結構,目前來看, BERT效果最優。

Rec-NER多模型對比

2.4 標籤映射

外部視頻有很多人工打的標籤,標籤體系和看一看的標籤體系不一致,差異率爲42%,由於外部標籤難以和看一看畫像相match,並且也不存在於召回和排序模型特徵中,導致外部視頻分發效率較低,因此需要將外部標籤映射到看一看的標籤體系。 標籤映射有兩種方式:

2. 4.1 Tag2Tag

首先建立外部Tag到看一看Tag的映射關係,再將文章上的外部tag逐個映射到看一看tag。標籤映射關係建立有4種方式:

1)編輯距離,計算外部標籤中編輯距離最小的內部標籤;

2)將外部標籤和內部標籤分詞,利用詞級別的word2vec embedding進行match; 

3)通過外部行爲得到uin(內部標籤)到item(外部標籤)之間的pair,然後通過頻繁項挖掘或者矩陣分解得到標籤映射關係;

4)通過知識圖譜推理來得到內外部標籤的關係;

Tag2Tag示例:

外部視頻 :印度的自制椰子釣魚裝置,還真的有幾把刷子!

外部標籤 :捕魚|實拍|印度

內部標籤 :印度人,印度教,巴基斯坦,捕魚遊戲, 捕魚 技巧,印度經濟,印度文化

對於“印度教”“ 捕魚 遊戲”等存在語義漂移問題,內部tag與上下文不相關,因此我們引入了Context2Tag進行標籤映射的方式。

●  2. 4.2  Context2Tag

基於Tag2Tag的方式,由於沒有考慮到context信息,如標題、類目,容易產生歧義,導致badcase出現,所以更好的思路是利用雙塔模型來建模,將外部標題和外部tag,統一編碼到左端,看一看Tag編碼到右端,利用深度語義匹配進行Tag映射。訓練時使用看一看標題和Tag構造訓練數據,看一看標題放在左端,將看一看Tag拆成兩部分,N-1個放在左端,剩下一個放在右端。特徵使用字、分詞特徵,能從看一看數據泛化到外部數據。預測時首先將內部tag embedding部署到knn服務中,然後對於外部文章和tag,用左端前饋生成文章表示,然後去knn服務中召回最相關的內部tag。其中,引入title attention net來計算外部標籤重要度,代替對外部標籤avg pool,上述case中,使得“捕魚”權重更大,更容易找到與核心tag相關的內部tag。

2.5 標籤聚合

●  2. 5.1  topic

我們使用lightlda構建了1千/1萬/10萬不同維度的topic模型,來解決分類和tag語義粒度跨度太大問題,同時我們還區分長期topic和時效topic,時效topic用於快速發現熱點事件以及提升其分發效率。我們構建了面向新聞的實時topic理解模型,支持小時級全量topic和分鐘級增量topic理解,能夠快速捕捉熱點及進行跟進,模型流程如下。

面向新聞的實時topic理解

●  2. 5.2 Tag Cluster

由於單一Tag拉取文章容易漂移,我們對Tag進行聚合形成更具象的語義內容。比如{王XX,馬XX,離婚},用戶感興趣的不是王XX或馬XX,而是王XX離婚事件。具體的Tag聚合方案,首先我們對文章Tag進行頻繁項挖掘,並對頻繁項進行層次聚類得到相近的語義內容。然後對類簇內Tag進行上位詞挖掘與排序,構建類簇“title”。爲了保證類簇的長期穩定標識,我們用類簇上位詞的md5作爲類簇ID。推薦方案類似Topic,分別爲用戶需求和文章打標Tag cluster ID,然後根據用戶興趣類簇ID拉取對應類簇內文章。

2.6 標籤排序

有了文本標籤、文本entity、多媒體標籤、映射標籤及人工標籤後,我們構建了標籤排序模型。目前 推薦標籤排序中文本建模採用自研的雙向lstm變種模型, 由於方法依賴大量樣本,同時自動構建的樣本質量較低,所以改爲基於BERT的方式。將標題和標籤作爲sentence pair輸入給BERT模型,使用CLS作爲最終的排序分。主要優化點:

預訓練+微調:引入已有字符預訓練模型,根據少量高質量標註數據進行微調;

擴充高質量樣本:針對訓練出現的過擬合,通過自動構造擴充高質量樣本並相應調參,僅補充訓練集;

字符緊密度向量:針對識別結果的邊界不準確和字符預訓練模型的不足,引入基於圖模型和詞庫預訓練得到字符緊密度表示;

全局結構信息:模型引入全局結構信息,比如字符緊密度,設計不同的輸入方式和結構。

基於BERT的標籤排序模型

2.7 關係圖譜

知識圖譜,是結構化的語義知識庫 ,用於迅速描述物理世界中的概念及其相互關係,通過將數據粒度從document級別降到data級別,聚合大量知識,從而實現知識的快速響應和推理。

在看一看系統內,內容畫像會將原關係信息整合,並構建業務可應用的關係知識體系;知識圖譜已提供服務:看一看推理型推薦邏輯,看一看畫像系統,看一看排序特徵等;除此之外,業務中積累的關係數據,可用於構建知識的關係網,在此基礎上輸出知識表示,抽象後的知識圖譜可以作爲語義理解的載體,應用於任何具有文本搜索,識別,推薦的場景;

知識圖譜的基本單位,便是“實體(E) - 關係(R) - 實體(E)”構成的三元組,這也是知識圖譜的核心。

整個知識圖譜的構建及應用劃分爲3層:數據層、邏輯層、應用層;每一層的具體任務如下:

2. 7.1  數據層

獲取 :通過網絡爬蟲爬取數據

類型 :結構化、半結構化和非結構化數據

數據存儲 :資源描述框架或者圖數據庫(Neo4j)

2. 7.2  邏輯層

構建知識圖譜是一個迭代更新的過程,根據知識獲取的邏輯,每一輪迭代包含四個階段:

知識抽取 :從各種類型的數據源中提取出實體、屬性以及實體間的相互關係,在此基礎上形成本體化的知識表達;關鍵技術: 實體抽取、關係抽取、屬性抽取和社交關係。

實體抽取 :也稱命名實體識別(named entity recognition,NER),是指從文本數據集中自動識別出命名實體。

關係抽取 :文本經過實體抽取後,得到一系列離散的命名實體,爲了得到語義信息,還需從相關語料中提取實體之間的關聯關係,通過關係將實體聯繫起來,構成網狀的知識結構。

屬性抽取 :從不同信息源中採集特定實體的屬性信息,如針對某個公衆人物,抽取出其暱稱、生日、國籍、教育背景等信息。

▶  社交關係 :目標是預測不同實體之間是否存在社交關係,以便基於社交關係進行推薦。

知識融合 :在獲得新知識之後,需要對其進行整合,以消除矛盾和歧義,比如某些實體有多種表達,某個特定稱謂對應於多個不同的實體等;

▶  數據融合 :將知識抽取得到的碎片信息進行融合

▶  實體對齊 :消除異構數據中實體衝突、指向不明

▶  知識推理 :通過各種方法獲取新的知識或者結論,這些知識和結論滿足語義。具體方法:基於邏輯的推理、基於圖的推理和基於深度學習的推理;

實體關係挖掘 :預測兩個實體之間的可能存在的關聯關係。

知識學習 :對融合後的知識進行表示學習,得到三元組中實體與關係在特徵空間的向量表示,方便後續的各項應用

▶  知識/關係表示學習 :通過TransE,GraphSage等方法,得到實體/關係的表示

▶  本體構建 :自動化本體構建過程包含三個階段:實體並列關係相似度計算;實體上下位關係抽取;本體的生成

知識更新 :對於獲取到的新知識,需經過質量評估後才能將合格的部分加入到知識庫中,以確保知識庫的質量。

▶  知識更新主要是新增或更新實體、關係、屬性值,對數據進行更新需要考慮數據源的可靠性、數據的一致性等可靠數據源,並選擇將各數據源中出現頻率高的事實和屬性加入知識庫。

質量評估 :是知識庫構建技術的重要組成部分,可以對知識的可信度進行量化,通過捨棄置信度較低的知識來保障知識庫的質量。

●  2.7.3  應用層

將知識圖譜引入推薦系統,主要有如兩種不同的處理方式:

第一,基於特徵的知識圖譜輔助推薦,核心是知識圖譜特徵學習的引入。一般而言, 知識圖譜是一個由三元組<頭節點,關係,尾節點>組成的異構網絡 。由於知識圖譜天然的高維性和異構性,首先使用知識圖譜特徵學習對其進行處理,從而得到實體和關係的低維稠密向量表示。這些低維的向量表示可以較爲自然地與推薦系統進行結合和交互。

在這種處理框架下,推薦系統和知識圖譜特徵學習事實上就成爲兩個相關的任務。而依據其訓練次序不同,又有兩種結合形式:

知識圖譜特徵與推薦系統依次進行學習,即先學習特徵,再將所學特徵用於推薦。

交替學習法,將知識圖譜特徵學習和推薦系統視爲兩個相關的任務 ,設計一種多任務學習框架,交替優化二者的目標函數,利用知識圖譜特徵學習任務輔助推薦系統任務的學習。

第二,基於結構的推薦模型,更加直接地使用知識圖譜的結構特徵。具體來說,對於知識圖譜中的每一個實體,我們都進行寬度優先搜索來獲取其在知識圖譜中的多跳關聯實體從中得到推薦結果。根據利用關聯實體的技術的不同,可分向外傳播法和向內聚合法兩種方法:

向外傳播法模擬了用戶的興趣在知識圖譜上的傳播過程。如RippleNet: Propagating User Preferences on the Knowledge Graph for Recommender Systems, CIKM 2018 使用了向外傳播法,將每個用戶的歷史興趣作爲知識圖譜上的種子集合,沿着知識圖譜中的鏈接迭代地向外擴展。

向內聚合法在學習知識圖譜實體特徵的時候聚合了該實體的鄰居特徵表示。通過鄰居聚合的操作,每個實體的特徵的計算都結合了其鄰近結構信息,且權值是由鏈接關係和特定的用戶決定的,這同時刻畫了知識圖譜的語義信息和用戶的個性化興趣。

視頻內容理解

目前在推薦系統中,視頻的消費量遠大於圖文,而視頻內容中除了文本的內容以外,更多的信息其實來源於視頻內容本身, 因此我們嘗試從視頻多種模態中抽取更豐富的信息。我們和優圖實驗室合作構建了支持看一看推薦場景下的視頻圖像等多模態數據的處理和分析的多媒體服務。 目前服務接口主要包括:

視頻分類:包含140類視頻分類;

視頻標籤:從視頻中提取的主要實體和內容等,模擬人工打標籤過程,現支持20W量級標籤;

水印識別:判斷一個視頻是否包含其他平臺水印及水印尾幀位置判斷;

OCR:抽取視頻中的顯著文字;

多封面圖:提取視頻中適合展示的候選封面圖;

embedding:通過多模態信息學習視頻的分佈式表示;

這些接口已經在看一看+以及精選等視頻推薦場景應用起來,並得到了顯著的效果提升。

3.1 視頻分類

3.1.1 視頻分類概念

圖像分類是對於一張靜態圖片給定它屬於什麼樣的類別。對於視頻來說,增加了時間上的維度,其包含的語義信息更加豐富。根據時長,一般會把視頻劃分成長視頻(長達幾十分鐘到數小時)和短小視頻(幾秒到幾分鐘)。由於長視頻包含的內容信息太多,很難直接做分類。通常說的視頻分類是指對短小視頻進行內容層面上的分類。學術界相近的任務如動作識別, 其目標就是把一個短視頻劃分到具體的某個行爲動作。

在微信看一看+中,視頻分類是指賦予某個視頻唯一主題類別,一般包括二級或三級,二級分類從屬於一級分類,所有短、小視頻有且只有一個分類。例如:下面例子的分類爲:搞笑,表演秀。一級分類爲搞笑,二級分類爲表演秀,二級分類從屬於一級分類。比如,搞笑一級分類,其二級分類包括:搞笑段子、搞笑表演秀、搞笑糗事、搞笑其他。

視頻分類示例

●  3.1.2 視頻分類算法

視頻分類算法在學術界經過了長時間的發展。得益於近些年深度學習的快速發展和機器性能的大幅提升,視頻分類主流算法已經從傳統手工設計特徵變成端到端學習的方法。最簡單的方法是,用2D CNN抽取視頻裏面每一幀的特徵,然後將所有幀的特徵平均池化到一起變成視頻特徵進行分類[Karpathy et al., 2014]。這種方法帶來的問題是, 視頻包含的幀數非常多,每一幀都抽特徵會有非常大的計算開銷,並且平均池化沒有捕捉到視頻的時序變化信息。

在此基礎上,有一系列的算法來解決這兩個問題,其中代表作有TSN[Wang et al.,2016],用基於片段採樣的方法來解決稠密抽幀計算開銷大的問題;有用NetVLAD[Miech et al., 2017]等用來聚合時序上多幀的信息。更直接方法是使用3D CNN進行視頻分類,比如I3D[Carreira and Zisserman, 2017]將Inception裏面的2d-conv直接展開成3d-conv來處理整個視頻,Non-Local[Wang et al., 2018]將self-attention加入到3D ResNet裏面學習時空的全局信息,SlowFast[Feichtenhofer et al., 2019]引入slow和fast兩個不同時間分辨率的分支來學習視頻的靜態和動態變化。在微信看一看+的視頻分類中,我們嘗試了多種2D模型和SlowFast-ResNet50等模型,考慮到計算代價和模型性能的平衡,我們選擇了2D的TSN-ResNet50爲基礎模型,並且引入了自研的video shuffle模塊[Ma et al., 2019]和NetVLAD模塊,來提升性能。

視頻分類裏的 Video Shuffle 操作

整個視頻分類的pipeline可以分爲以下幾步: 

(1)數據的採樣和預處理;

(2)學習視頻時空特徵;

(3)時序特徵動態融合。

下面詳細介紹這幾個步驟。輸入一個M幀的視頻,首先把M分成N段(M >= N,比如10s的25fps視頻,M=250),那麼每一段有M/N張圖片,再在每一段中隨機採樣一幀,整個視頻的輸入就變成了N幀。這種方法不僅能夠極大程度地減少輸入的幀數,而且也能保證整個視頻的信息都覆蓋到了。對於N幀的圖像,採用scalejitter隨機進行裁剪,接着resize到224x224大小,進行隨機水平反轉,最後再做歸一化。

經過上面的步驟,把處理好的多幀圖像輸入到2D CNN中,首先多個2d-conv會提取它們的空間特徵。爲了能夠使得多幀圖像之間有信息交流,我們引入了video shuffle操作,如圖7所示,video shuffle會把每一幀的特徵圖分成若干個group,然後讓某一幀的group feature和另一幀的group feature進行互換,互換之後的某幀特徵都會包含其他幀的特徵信息,接着用另外一個video shuffle來還原該幀空間特徵。video shuffle使得在2d-conv內部,多幀信息得到了充分的交流,保證模型學習到的特徵更好。

現在已經得到了N幀的特徵,我們採用來YouTube-8M 2017年比賽冠軍的思路,用NetVLAD+context gating來做時序特徵融合。關於NetVLAD的介紹已經有非常多的資料了,這裏不再展開描述。最後經過時序聚合的特徵,也就是整個視頻的特徵, 通過全鏈接fc到分類的類別,用交叉熵損失函數進行訓練。

3.2 視頻標籤

3.2.1 視頻標籤概念

上文介紹了視頻分類,是給短視頻一個確切的單一類別。 而視頻標籤是對視頻不同維度的描述,一般有多個。 以圖 8 爲例,該短視頻一共打了 11 個標籤,描述了該視頻不同維度的信息。比如加字幕是視頻的質量維度,新型冠狀病毒是描述整個視頻內容在講什麼,新聞現場描述的是場景,民生新聞描述的是類型。

視頻標籤示例

3.2.2  視頻標籤算法

視頻標籤模塊目前包括了視頻內容識別的多標籤預測模塊和明星人臉識別模塊。下面分別予以介紹。

視頻多標籤模塊

視頻多標籤預測模型由提取視頻畫面特徵的骨幹網絡、可學習的時序池化層、考慮上下文的非線性網絡單元門和以多標籤分類爲目標的分類器組成,具體結構如下圖所示。

視頻多標籤算法結構

骨幹網絡採用的卷積神經網絡結構是殘差網絡ResNet50,這是在學術界和工業界均有廣泛應用的網絡結構,其中引入的恆等近路連接結構有效解決了深層網絡模型難以訓練的問題,能在大大增加網絡深度的同時獲得高精準度。時序池化層通過學習得到的參數將視頻輸入得到的多幀畫面特徵圖組成一個單獨表達,將每幅特徵圖與碼本聚類中心的差值通過attention和activation層做累加,再通過全連接層得到整個視頻的降維描述特徵向量。其後該特徵向量被送入Context Gating層[Miech et al., 2017],捕捉其特徵關聯信息並重新調整權重,最後再接入多標籤分類器。訓練採用的視頻標籤數據基於人工標註的視頻標籤對生成,選取標註數據中的高頻標籤,並根據標籤維度篩除部分視覺不可識別標籤,組成標籤詞彙表。

訓練過程中通過加入對低頻次標籤數據進行過採樣等平衡數據的方法,提升低頻標籤的召回率。同時模型採用Partial Multilable Loss損失函數進行訓練,有效解決了數據標註不完備帶來的部分標籤缺失的問題。模型預測標籤時,則先通過Sigmoid層獲得每個標籤的預測分數,再結合標籤層級依賴關係通過Hierarchical Softmax層[Mohammed et al., 2018]對標籤預測分數進行修正,選取分數超過閾值的標籤作爲最後的預測結果。該多標籤模型可以對於任意視頻輸出與視頻內容相關的高精度、多樣化、全面的標籤。

明星人臉識別模塊

明星識別流程圖

明星臉識別模塊包含人臉檢測,人臉關鍵點檢測,人臉對齊,人臉特徵,人臉聚類,人臉質量,人臉搜索和投票幾個模塊。

1.檢測部分使用 RetinaFace [Deng et al., 2019],RetinaFace 是 Single-stage 的人臉檢測方法,能保證檢測的速度,並且採用 FPN+Context Module 的方式,提升對小人臉的召回和整體檢測精度。另外,加入關鍵點回歸分支一併訓練。Multi-Task 的訓練方式使得人臉定位和關鍵點回歸相互促進。最後使得檢測精度達到 State-of-the-art。

RetinaFace 人臉檢測模塊

2.在獲得人臉框後,通過 Mobilenet V2 對人臉關鍵點進行精細化的檢測,我們在 Mobilenet V2 中加入了 SE-layer,提升關鍵點的精度。通過關鍵點將人臉對齊到統一的模板,並送入 Face Embedding 模塊提取每個人臉的特徵。

3.Face Embedding 模塊,我們採用的是 ResNet-50 的經典網絡,加上 SE-layer。我們通過對 AdaCos [Zhang et al., 2019] 算法進行改進,針對不同場景的人臉數據和樣本難易程度,自適應的調整 Scale 和 Margin 參數,加速訓練,同時,使模型收斂到最優點。

4.在獲得整個視頻人臉特徵後,對所有人臉進行聚類,並選優。通過 C-FAN [Gong et al., 2019] 算法對人臉進行選優。C-FAN 算法本意是爲了對人臉集的特徵進行融合的算法。我們在實驗過程中發現,訓練後的網絡對不同質量的人臉,能給出不同指標。通過該指標,我們能對人臉進行選優。通過 C-FAN 我們能選出正臉,清晰的人臉,用於後續的識別。

C-FAN 算法原理

人臉質量效果圖

5.同前一步的聚類和選優,我們獲得視頻裏每個人物的優質人臉,並進入人臉識別階段。識別階段,我們創造性的採用 2 次搜索的方式來提高準確率。其中第 1 次搜索,使用視頻人臉檢索庫內的種子 ID。具體來說,對於庫內每個 ID,其所有圖片的特徵求平均,作爲這個 ID 的種子特徵。第 1 次搜索,對於某個視頻人臉,在種子人臉庫內搜索得到 Top K 個種子 ID,Top K 取 50,從而初步確定 ID 的檢索範圍。第 2 次搜索,使用視頻人臉,在第 1 次搜索得到的 TopK ID 的所有圖片裏面進行檢索。並通過投票確定得分最高的 ID,作爲該模塊的輸出。

6.返回上一模塊的搜索結果即爲人臉識別結果。

3.3 視頻 Embedding

3.3.1  視頻 Embedding 概念

視頻中包含了豐富的語義信息,比如圖像、語音、字幕等 。視頻 Embedding 的目標是將視頻映射到一個固定長度的、低維、浮點表示的特徵向量,使得 Embedding 特徵向量包含了視頻中的語義信息。相比視頻分類和標籤,視頻 Embedding 中包含的信息更加豐富。更重要的是,Embedding 特徵之間的距離可以度量視頻之間的語義相似性。

●  3.3.2 視頻 Embedding 算法

視頻中包括多個模態的信息,因此視頻 Embedding 需要多個模態進行處理。

3.3.2.1 多模態 Embedding

  頻模態 :視頻中最重要的信息是視頻畫面,即視頻模態,爲了得到視頻 Embedding,我們使用第 3.1.2 節介紹的視頻分類算法進行訓練,在此不贅述。

    臉模態 :短、小視頻場景的一大特點是以人爲中心,人物是視頻內容中非常重要的部分。因此,我們將視頻中人臉 Embeddding 部分融合進視頻 Embedding。具體做法見 2.2.2.2 節明星人臉識別模塊對應的介紹,在此不贅述。實踐中發現,加入人臉 Embedding 後,可以找到同一個人的不同視頻。

    OCR 模態 :視頻中有豐富的文本信息,我們首先用 OCR 算法識別出視頻中的 OCR 文字,之後訓練文本模型,得到視頻中 OCR 的 Embedding。識別 OCR 見第 2.4 節,在此不贅述。文本模型使用 BERT [Devlin et al, 2019] 進行訓練。BERT 基於雙向的 Transformer 結構,在預訓練階段捕獲詞語和句子級別的表示。BERT 在 2018 年發表時,通過預訓練和微調在 11 項 NLP 任務中獲得突出性能。

BERT 訓練過程圖

    音頻模態 :我們使用 VGGish 提取音頻的 Embedding特徵 [Abu-El-Haija et al, 2016]。VGGish 是從 AudioSet 數據集訓練得到的音頻模型,其產生 128 維的 Embedding 特徵。VGGish 的網絡結構類似於 VGGNet 的配置 A,有 11 層帶權重的層。區別在於:(1). 輸入是 96 × 64 大小的音頻中得到的對數梅爾譜。(2). 去除最後一組卷積和匯合組,因此,相比於原來 VGG 模型的五組卷積,VGGish 只有四組。(3). 最後的全連接層由 1000 改爲 128,這個的 128 維特徵輸出作爲音頻 Embedding。

圖 16:音頻模態中使用的對數梅爾譜(Log Mel Spectrum)

關於特徵融合部分,特徵融合常用的有以下幾種方式:直接拼接(Concatenation)、乘積(包括內積和外積)、加權平均、Bi-Interaction 等。這裏我們採用最直接的拼接方法。

3.3.2.2 度量學習

度量學習有兩大類基本思路。

圖 17:度量學習訓練流程

一種思路是基於 Contrastive Loss 或 Triplet Loss。其基本思想是:兩個具有同樣類別的視頻,它們在 Embedding 空間裏距離很近。兩個具有不同類別的視頻,他們在 Embedding 空間裏距離很遠。Triplet Loss [Schroff et al., 2015] 是三元組輸入,我們希望 Anchor 與負樣本直接的距離,以一定間隔(Margin)大於與正樣本之間的距離。使用 Triplet Loss 通常會配合 OHEM(Online Hard Example Mining)[Shrivastava et al., 2016] 等訓練技巧。但是面對千萬級別的視頻數據量,使用 Triplet Loss 會產生很龐大的訓練開銷,收斂會比較慢。

另外一種思路是基於大間隔 Softmax 進行訓練,這類方法在人臉識別領域取得了巨大成功。因此,我們使用 AdaCos [Zhang et al., 2019] 算法以達到更快和更穩定的訓練收斂。

●  3.3.3  視頻 Embedding 作用

 3.3.3.1 視頻 Embedding 直接用於推薦

視頻 Embedding 作爲視頻語義內容的描述,可以作爲一個重要特徵,直接用於推薦的召回和排序階段。另一方面,可以通過視頻 Embedding,尋找和平臺中優質視頻相似的視頻,補充到平臺中,提升內容豐富度。

3.3.3.2 視頻去重

短、小視頻內容十分熱門,每天都會產生大量的新增視頻。而這些新增視頻中,一部分是用戶上傳的原創視頻內容,另一部分是搬運平臺已有的內容。搬運會導致平臺中同時存在內容一樣的視頻,這對視頻原作者是很大的打擊。即使內容完全一樣,但視頻幀率、分辨率仍有差異,依靠視頻文件 MD5SUM 無法進行判斷。

通過視頻 Embeding,可以幫助平臺發現內容相同的視頻,從而可以幫助平臺進行去重,保留幀率、分辨率較高的視頻。打擊搬運,避免了對用戶重複推薦同一視頻。

視頻 Embedding 用於視頻去重

▶  3.3.3.3  視頻標籤

在第 3.2 節介紹了視頻標籤預測算法。在短、小視頻場景下,該算法會面臨一些挑戰。比如,短、小視頻內容更新快、流行期短,算法需要具備快速擴展識別新標籤的能力。另一方面,短、小視頻內容以人爲中心,內容相對比較主觀,傳統計算機視覺算法(如分類、檢測等)難以突破。

利用視頻 Embedding 也可以進行視頻標籤預測。具體過程如下圖:

視頻 Embedding 用於視頻標籤預測流程

1. 提取待預測的視頻(Query)的 Embedding 特徵 。除了待預測視頻外,我們已經有了很多的歷史有標註視頻(DB),我們提取這些標註視頻的特徵,構建千萬視頻量級的特徵庫;

2. 最近鄰檢索 。對 Query 視頻的 Embedding 在 DB 的 Embedding 特徵庫中進行最近鄰檢索,找到 Query 視頻的相似視頻;

3. 利用找到的相似視頻的標註的標籤 ,投票對 Query 視頻進行預測。

視頻有搜索版標籤、無搜索版標籤結果對比

從上圖可以看出,利用了視頻 Embedding 進行標籤預測(有搜索版標籤)後,標籤數量和精細程度有明顯提升。

3.4 視頻主題文本提取技術(T-OCR)

T-OCR 主要分爲以下幾個步驟:1、鏡頭分割;2、關鍵幀採樣;3、文本檢測;4、文本識別;5、後處理及主題提取。

●  3.4.1 鏡頭分割

採用幀間二次差分法做鏡頭分割。具體做法如下:

設表示第 n 幀在點 (i, j) 上 c 通道()的值,那麼兩幀圖像和在點 (i, j) 上的差異度定義爲

歸一化後的差異度爲

在區間 (0, 1) 內選擇一個閾值來判定兩幀圖像在點 (i, j) 上差別是否大,記爲 C,則

那麼兩幀圖像整體上的差異度就是

設定一個閾值 T,當 時,從第 n + 1 幀切分鏡頭。

3.4.2 關鍵幀採樣

關鍵幀採樣的目的是爲了估算特定文本在鏡頭中出現的時長,從而節省處理時間。假設一個鏡頭中有 N 幀圖像,從中均勻採樣 F 幀,並識別這 F 幀中的文本,假設某文本在 C 幀中都出現了,那麼該文本在鏡頭中出現的時長就估算爲。文本的時間信息將在後處理階段用到。

●  3.4.3  文本檢測

採用 PSENet 做文本檢測,網絡的整體結構圖如下:

PSENet 網絡結構

PSENet 主要有兩大優勢 :第一,對文本塊做像素級別的分割,定位更準;第二,可檢測任意形狀的文本塊,並不侷限於矩形文本塊。

PSENet 中的一個關鍵概念是 Kernel,Kernel 即文字塊的核心部分,並不是完整的文字塊,該算法的核心思想就是從每個 Kernel 出發,基於廣度優先搜索算法不斷合併周圍的像素,使得 Kernel 不斷擴大,最終得到完整的文本塊。

如上圖所示,PSENet 採用 FPN 作爲主幹網絡,圖片 I 經過 FPN 得到四個 Feature Map,即P2、P3、P4 和 P5;然後經過函數 C 得到用於預測分割圖的 Feature Map F。基於 F 預測的分割圖有多個,對應着不同的覆蓋程度,其中 S1 的覆蓋度最低,Sn 的覆蓋度最高。

基於不同覆蓋程度的分割圖,通過 Scale Expansion 算法逐漸生成完整、精細的分割圖,其過程如下圖:

PSENet 生成完整、精細的分割圖過程

其中 CC 表示計算連通域,EX 表示執行 Scale Expansion 算法,子圖 (g) 展示了擴展的過程,如果出現衝突區域,按照先到先得的策略分配標籤;算法詳情參考下圖。

Scale Expansion 算法過程

●  3.4.4  文本識別

採用 Seq2Seq + Multi-head Attention 做文本識別,網絡的整體結構圖如下:

文本識別網絡結構

整個網絡從下到上共分爲四部分: 特徵提取網絡、Encoder、Multi-head Attention mechanism 和 Decoder。

特徵提取網絡是基於 EfficientNet 改進的,網絡的詳細結構參考下表:

表 28:特徵提取網絡結構

Encoder 是一個 BiRNN,輸入序列,然後計算每個時刻的隱狀態。該網絡其實由兩層 LSTM 構成,每層 128 個隱狀態;第一層從左向右處理輸入序列,併產生正向隱狀態,第二層從右向左處理輸入序列,併產生反向隱狀態,那麼在時刻 j 的最終隱狀態就是。

Decoder 也是一個 LSTM 模型, 該模型基於 Encoder 的隱狀態生成輸出序列。

引入 Attention 機制是爲了讓 Decoder 在生成一個文字的時候能夠在輸入序列中定位到最相關的信息,也就是說 Attention 機制其實是一種對齊模型(Alignment Model),它通過打分來評估 i號輸出與 j 號輸入間的匹配程度。但傳統的 Attention 機制存在一個問題,當輸入序列的長度、尺度或分辨率發生變化時,這種 Attention 方法就會發生定位錯誤,進而引起誤識別;而 Multi-head Attention 可以很好地解決這個問題。Multi-head Attention 的基本思想是使用多個 Attention 模塊分別聚焦圖像的不同部位,然後再將這些不同模塊的結果整合起來,從而達到更加準確聚焦單個文字的目的。其結構如下圖所示:

圖 29:Multi-head attention 網絡結構

●  3.4.5  後處理及主題提取

該階段又分以下幾個流程:A. 關鍵詞過濾;B. 文本融合;C. 低頻文本抑制;D. 主題生成。

1. 關鍵詞過濾 。主要是過濾一些水印文本,比如“抖音”、“騰訊視頻”等;

2. 文本融合 。同樣的文本在不同幀中經 OCR 識別出來的結果可能有差異;比如在第 5 幀中 OCR 的結果是“這個美女說得太逗了”,而在第 10 幀可能識別爲“這個美文說得太逗了”;因此需要將相似的文本進行融合。融合的基本思路是先通過編輯距離找到相似的文本,然後將時長最長的文本作爲正確的文本,最後刪掉其餘的相似本文並將對應的時長融合到挑選出來的正確文本中;

3. 低頻文本抑制 。主題文本與無關文本的一個重要區別就是主題文本的時長明顯更長,所以應當將找到一個時長明顯變短的位置,然後將低於這個時長的文本都過濾掉;

4. 主題生成 。按照從前到後、從上到下的順序拼接剩餘的文本以生成主題。

3.5 視頻封面圖和 GIF

圖 30:視頻封面圖算法流程

●  3.5.1 K-Means 聚類

爲了使得所提取的封面圖能跟視頻的主要內容匹配,我們首先採樣後的幀提取特徵,並進行 K-Means 聚類。特徵模型以 MobileNet V2 作爲 Backbone,在 ImageNet 上訓練所得。K-Means 聚類過程中,我們使用 Elbow Method 來選擇合適的 K 值。聚類後,每個類別包含若干幀。我們選擇包含幀數最多的這個類作爲候選集合。該類連續的幀爲一個 Shot,所以每個類會存在多個 Shot。

●  3.5.2 Traditional Filter

對上一步獲得的 Shots,針對某個 Shot 的所有幀,我們從清晰度,亮度,色彩豐富度三個維度過濾掉模糊,過曝,純色的低質量幀。

●  3.5.3 Stillness & Face Score

上一步中,我們過濾掉一些低質量的幀,在本模塊中,我們想要找出比較重要的能代表視頻內容的幀。通過計算幀的重要程度(Stillness 和距離 Shot 特徵中心的距離,可以衡量該幀的重要性)和人臉的得分(人臉位置,人臉偏角等),我們可以選出當前 Shot 的最佳幀,作爲代表幀。

●  3.5.4 Image Aesthetics

如果說前面過濾了低質量的幀,選出了內容豐富能代表視頻內容的候選幀。那麼這一步,我們的目的是選出,構圖滿足人類美學的幀。在這步中,我們使用了兩個數據集,AVA 美學數據集和 AROD 社交數據集。因爲兩個數據集的標註體系不一致,所以我們採用了加權的 EMD Loss [Esfandarani & Milanfar, 2018] 和 L2 loss [Schwarz et al., 2018] 來進行網絡的學習。學習後的模型能對圖像進行美學打分。如圖。

●  3.5.5  排序

經過上面的打分,我們返回美學得分最高的 Top-K 幀。

美學打分示例

3.5.6 視頻 GIF 生成

在生成封面圖的基礎上,我們選出得分最高的封面圖,以該封面圖爲中心,前後各取 35 幀,共 70 幀,生成視頻 GIF。

推薦內容傾向性與目標性識別

對於外部內容,例如UGC等,需要系統給予內容一定量的曝光,目的是挖掘其中的優質內容,召回和排序模型學習到優質內容之後會進行正常的分發,這就是內容試探過程。然而試探流量有限,新內容過多,如何預估內容試探的優先級是一個重要的問題。我們基於內容投放目標模型對新內容打分,優質分高的內容曝光優先級越高,並且針對不同的場景使用不同的投放目標,比如小程序使用分享率、精選視頻流使用vv、精選主TL使用點擊率,從而提升系統挖掘爆款的能力。

我們以曝光充分內容的後驗分(點擊率、分享率、帶vv等)和內容傾向性(性別傾向、年齡傾向等)爲訓練目標,預估未充分曝光內容的投放傾向,發現大多數的內容缺乏置信的後驗信息,尤其對於外部新內容,例如UGC,基本無曝光,而這些其中是蘊含很多優質item的,需要我們發掘可能的優質內容,並試探出來。

4.1 目標

我們要解決的問題就是給定item,預估試探等級。目標就是減少投放目標預估的點擊率與實際投放點擊率的差距。評價使用MAE,hitrate5%,hitrate。分類模型是從語義到語義的映射,點擊率模型是從user叉乘item到行爲的映射,而我們要構建的模型是從語義到行爲的映射,這裏如何減少映射空間的GAP是難點。

4.2 模型演進

4.2.1 DNN

起初我們使用DNN快速構建模型,特徵包括:1.文本屬性 (標題、類目、主題、Tag等)  2.圖像屬性 (封面圖、OCR)  3.固定屬性 (發佈時效、視頻時長、是否優質)  4.發佈者屬性: 1.ID信息 (ID、媒體等級) 2.文本屬性 (名稱、類目)。除此之外,我們還引入cnn對標題和ocr text做理解,使用resnet對視頻封面做理解。最終通過self attention將多路channel進行融合,最終輸出投放目標。

另外由於tag的稀疏性,我們初始化tag embedding使用word2vec無監督訓練出來的向量。

樣本構造上,初期我們的目標就是後驗的分,比如分享率,但發現大部分內容的分享率都很低,導致我們模型過於擬合低分享內容,對於高分享內容的預估不準,我們根據目標調整了樣本,即以高分享內容爲正例,採樣低分享內容,這樣模型能夠更好的區分出高分享內容。

item ctr分佈

4.2.2  PNN

我們發現,DNN模型對於交叉特徵學習的不夠充分,比如小品長視頻分享率高於小品短視頻,我們的模型基本區分不出來。原因是DNN是隱性特徵交叉,bit-wise特徵相加,特徵之間是or的關係,不能很好表達特徵交叉,而且bit-wise丟失特徵field邊界。

因此我們在網絡中引入特徵and關係,即特徵相乘,加入vector-wise,保留特徵field信息。

基於PNN的投放目標預估模型

網絡中特徵filed使用PNN做特徵交叉,PNN屬於wide stack deep結構,即wide網絡接deep網絡,認爲embedding輸入到MLP之後學習的隱式交叉特徵並不充分,提出了一種product layer的思想,即基於乘法的運算來體現特徵交叉的DNN網絡結構。分爲IPNN和OPNN,特徵向量運算時分別對應內積和外積,我們使用內積操作。Z部分直接平移embedding層,保留先前學習隱式高階特徵的網絡結構,p層是PNN的亮點,特徵交叉矩陣P是對稱矩陣,所以採用了矩陣分解來進行加速。

4.2.3 DeepFM

PNN完成了從隱式高階特徵到隱式高階特徵+顯式低階特徵的升級,但是顯式低階特徵依然經過高階變換,我們引入DeepFM來解決這個問題,即顯式低階特徵與隱式高階特徵形成wide and deep結構。

基於DeepFM的投放目標預估模型

4.2.4 xDeepFM

DeepFM解決了二階特徵交叉,我們想增加多階,進一步特徵對文章的理解能力,但是遇到了組合爆炸問題。

這裏我們引入xDeepFm來解決,xDeepFm採用高階複用低階結果的方式,減少計算量。

內容理解在推薦上的應用

5.1 全鏈路特徵

標籤和embedding主要應用在內容庫構建,模型特徵上(召回,粗排,精排,混排)。通過ItemKV和索引AB的方式推送給推薦系統中各個模型使用,這樣使得內容理解直接作用於線上推薦系統,驗證和發揮內容理解價值。未來ItemK會支持內容理解的AB實驗,支持內容理解的離線優化策略。

推薦系統中的特徵實驗通路

5.2 內容試探

很多外部接入的新內容,例如UGC,在系統中沒有後驗數據,通過正常的模型流程很難分發出去,需要先進行新內容的試探,篩選出優質內容。由於沒有後驗數據,試探的時候命中用戶屬性後只能採取隨機的方式,內容理解中的投放目標預估能夠提前計算待試探內容的目標值(點擊率,分享率,帶vv等),試探過程中用預估值提權,一方面可以提升出庫內容的優質內容佔比,提升流量的“變現”效果,另一方面,在不損傷系統的情況下,能夠獲取更多的試探流量,進一步加大優質內容的挖掘能力。我們先後在小視頻、小程序試探上做了線上實驗,都取得了正向的實驗效果。

5.3 優質內容庫構建

通過改變模型的目標,我們得到了內容傾向性模型。針對不同推薦場景,投放目標預估支持不同的目標。結合內容投放目標和內容傾向性,我們針對不同場景和人羣,構建不同的內容庫,比如針對老年人小程序,我們使用內容分享率和年齡傾向性來構建老年人庫。

老年人庫 :比如我們目前正在優化的看一看小程序,主要面向老年人羣體,內容就是通過年齡傾向性預估挖掘得到的,以年齡分佈作爲目標,以充分曝光的item爲訓練數據,訓練內容年齡傾向性模型,然後預測沒有後驗行爲的內容,挖掘老年人傾向的內容。

小程序高分享庫 :在小程序場景,DAU主要靠高分享內容的不斷分享獲得的,所以分享率是最核心的指標。我們以分享率爲投放目標,訓練分享率投放目標預估模型,對老年人傾向內容進行分享率預估,挖掘高分享老年人內容庫,提升小程序分享率,進而提升小程序DAU。

高播放視頻庫 :在相關視頻場景上,我們嘗試了帶vv投放目標的應用,從主TL點擊視頻之後,BC位出的是A位的相關視頻,我們大盤的目標是pv+vv,所以BC位出的視頻的帶vv能力很重要,比如用戶觀看了一個視頻之後滿意度很高,會往下觀看更多視頻,那可以認爲這個視頻的帶vv能力很強。首先通過語義相關性,召回BC位視頻,然後通過帶vv投放目標預估模型對BC位候選視頻進行rerank,進而加強用戶閱讀視頻個數,增加大盤pv+vv。

除此之外,Item年齡性別傾向性用於召回過濾,避免出現明顯的badcase;item的多目標的投放目標預估分後續也計劃用於排序特徵上。

5.4 智能創意

5.4.1 智能封面

看一看+是我們複用看一看能力開發的一款視頻推薦小程序,DAU增長主要靠羣分享社交傳播效應,羣聊中的分享卡片對於用戶進入小程序非常重要,我們使用以點擊分享多目標的封面圖優選模型優化羣聊卡片封面圖,提升用戶點擊率和分享率,進一步提升DAU。

另外,爲了提升看一看+關注流點擊率和公共主頁關注率,我們引入了智能gif,視頻列表中視頻微動,提升消費者和生產者之間的互動,進一步提升上傳端指標,進而激發用戶進行更多創作。

5.4.2 標題生成

爲了提升Ugc有標題佔比,進而能更好的理解內容,我們進行了自動標題生成,降低用戶填寫標題的門檻。爲了構造社區氛圍,我們還在嘗試自動匹配熱門話題等等。

總結與展望

隨着業務發展和內容理解的深入優化,內容理解維度越來越多,我們與工程同學一起將其流程化和服務化,將內容理解各維度算法沉澱成nlp服務和圖像服務,這樣能夠快速擴展到新數據源上,支持業務快速增長。另外,對於實驗性性質的數據流程,我們優先在gemini上快速部署,等到實驗驗證有效再切入到正式服務中。

我們以業務驅動方式自上而下優化內容理解算法,同時也會根據內容理解的優勢自下而上打造算法能力而後尋找應用。由於內容理解是推薦系統基礎的基礎,從畫像到排序到召回都會影響到,我們也逐漸打磨出一套內容理解abtest方法,充分驗證內容理解對整個推薦系統的影響,反過來也更好的驅動內容理解的迭代優化。同時,我們也會基於行爲對內容進行實時理解,使得內容理解和業務貼合的更緊,能更好的優化線上業務。

- End -

我就知道你在看

相關文章