• 萬字長文讀懂微信“看一看”內容理解與推薦

    /2020-07-31 13:59:35/

  • 編輯導讀:用戶通過微信看一看可以獲取到更豐富的資訊,有利于打破信息繭房。那么,微信看一看是怎么做到的呢?本文將從內容理解與推薦角度出發,進行深入的分析,希望對你有幫助。

    \

    一、內容理解與推薦

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

    結合微信用戶的內容消費需求,以業務目標為導向,我們的推薦系統從基于屬性召回、到協同&社交召回、再到深度模型召回進行了演進,深度模型涵蓋了序列模型、雙塔模型、混合模型、圖模型,最終形成了多種召回并列、多路模型共同作用的看一看內容召回系統。

    如果把推薦系統中工程服務比作骨骼,那么推薦模型可以比作肌肉,還需要內容理解作為血液,縱向貫穿整個推薦系統,從內容庫、到召回、再到排序和畫像,源源不斷的提升系統的推薦精度,本文將著重介紹看一看內容理解平臺及應用。

    看一看接入了非常多合作方的數據作為內容源。由于接入數據源較多,各家數據從內容、質量、品類等差異性比較大。看一看平臺方會對數據做“歸一化”操作,然后應用于推薦系統線上部分。

    內容理解定義:對接各種外部圖文等內容,對接入內容做業務級內容多維基礎理解,同時進行外部標簽與自有標簽體系對齊,完成應用級內容打標。

    反饋至下游應用方:用戶需求系統,召回策略,召回模型,排序/混排等使用;同時,在業務數據滾動與迭代中修正數據刻畫精度與效果,逐步貼合與提升業務線效果。

    我們將內容畫像定義為兩個大維度:通過內容本身來理解內容,通過行為反饋來理解內容。前者主要針對內容抽取靜態屬性標簽。后者,通過行為積累的后驗數據、統計、或模型預估內容的知識、傾向性、投放目標以及抽象表達。

    \

    內容畫像定義

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

    二、文本內容理解

    業務中有大量的文本信息,包括圖文標題和正文,視頻標題,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 TFIDF

    前期為了快速支持業務,我們使用無監督投入產出比很高的方式,計算文檔中每個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帶來的最大好處是:

    • 利用大規模語料來學習知識,容易遷移模型到新數據源。
    • 避免復雜的特征工程,但存在解釋性差的問題。

    \

    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.1Tag2Tag

    首先建立外部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到224×224大小,進行隨機水平反轉,最后再做歸一化。

    經過上面的步驟,把處理好的多幀圖像輸入到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 視頻標簽算法

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

    3.2.2.1 視頻多標簽模塊

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

    \

    3.2.2.2 視頻多標簽算法結構

    骨干網絡采用的卷積神經網絡結構是殘差網絡ResNet50,這是在學術界和工業界均有廣泛應用的網絡結構,其中引入的恒等近路連接結構有效解決了深層網絡模型難以訓練的問題,能在大大增加網絡深度的同時獲得高精準度。

    時序池化層通過學習得到的參數將視頻輸入得到的多幀畫面特征圖組成一個單獨表達,將每幅特征圖與碼本聚類中心的差值通過attention和activation層做累加,再通過全連接層得到整個視頻的降維描述特征向量。

    其后該特征向量被送入Context Gating層[Miech et al., 2017],捕捉其特征關聯信息并重新調整權重,最后再接入多標簽分類器。

    訓練采用的視頻標簽數據基于人工標注的視頻標簽對生成,選取標注數據中的高頻標簽,并根據標簽維度篩除部分視覺不可識別標簽,組成標簽詞匯表。

    訓練過程中通過加入對低頻次標簽數據進行過采樣等平衡數據的方法,提升低頻標簽的召回率。同時模型采用Partial Multilable Loss損失函數進行訓練,有效解決了數據標注不完備帶來的部分標簽缺失的問題。

    模型預測標簽時,則先通過Sigmoid層獲得每個標簽的預測分數,再結合標簽層級依賴關系通過Hierarchical Softmax層[Mohammed et al., 2018]對標簽預測分數進行修正,選取分數超過閾值的標簽作為最后的預測結果。

    該多標簽模型可以對于任意視頻輸出與視頻內容相關的高精度、多樣化、全面的標簽。

    3.2.2.3 明星人臉識別模塊

    \

    明星識別流程圖

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

    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 層帶權重的層。

    區別在于:

    • 輸入是 96 × 64 大小的音頻中得到的對數梅爾譜。
    • 去除最后一組卷積和匯合組,因此,相比于原來 VGG 模型的五組卷積,VGGish 只有四組。
    • 最后的全連接層由 1000 改為 128,這個的 128 維特征輸出作為音頻 Embedding。

    \

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

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

    3.3.2.2 度量學習

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

    \

    圖 17:度量學習訓練流程

    一種思路是基于 Contrastive Loss 或 Triplet Loss。其基本思想是:兩個具有同樣類別的視頻,它們在 Embedding 空間里距離很近。

    兩個具有不同類別的視頻,他們在 Embedding 空間里距離很遠。T

    riplet 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 用于視頻標簽預測流程

    • 提取待預測的視頻(Query)的 Embedding 特征。除了待預測視頻外,我們已經有了很多的歷史有標注視頻(DB),我們提取這些標注視頻的特征,構建千萬視頻量級的特征庫;
    • 最近鄰檢索。對 Query 視頻的 Embedding 在 DB 的 Embedding 特征庫中進行最近鄰檢索,找到 Query 視頻的相似視頻;
    • 利用找到的相似視頻的標注的標簽,投票對 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快速構建模型,特征包括:

    • 文本屬性 (標題、類目、主題、Tag等) 。
    • 圖像屬性 (封面圖、OCR) 。
    • 固定屬性 (發布時效、視頻時長、是否優質)。
    • 發布者屬性: 1.ID信息 (ID、媒體等級)。
    • 文本屬性 (名稱、類目)。

    除此之外,我們還引入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方法,充分驗證內容理解對整個推薦系統的影響,反過來也更好的驅動內容理解的迭代優化。

    同時,我們也會基于行為對內容進行實時理解,使得內容理解和業務貼合的更緊,能更好的優化線上業務。

<
上一篇: 貴陽APP開發:有效提高物料數據質量 下一篇: 個性化推薦如何滿足用戶口味?微信看一看的技術這樣做

Hi,互相認識一下

很高興遇見你,友誼往往從第一次握手開始, 微信聯系: 13765801787

传奇扑克直播