信息流推薦在鳳凰新聞的業務實踐

信息流推薦在鳳凰新聞的業務實踐


分享嘉賓:馬迪 鳳凰網 技術總監

文章整理:吳雪松

出品平臺:DataFun


導讀:作為資訊閱讀的用戶產品,鳳凰新聞一直在探索將AI賦能到內容生產和消費的全鏈路上。不斷嘗試調和AI算法與人的智慧相互約束和補位,將"人"的價值發揮到最大,讓推薦引擎不是迎合用戶,而是嘗試引領用戶,從而做到真正的"價值閱讀"。本次分享主要從業務特點、推薦整體架構、特徵和召回以及一些延展應用等方面,介紹鳳凰新聞在資訊信息流推薦上的一些更貼近業務的經驗。

信息流推薦在鳳凰新聞的業務實踐

信息流推薦在鳳凰新聞的業務實踐

對於推薦,可以理解為信息的分發與匹配,讓內容與用戶有一個很好的match,將兩者連接起來。這自然就會產生兩個維度:用戶和內容,從這兩個維度出發,來定義問題:

  • 用戶視角:在每一刷獲得感興趣的內容,從而讓使用App的週期內的滿意度最大化
  • 內容視角:內容生產後迅速的觸達匹配分類的人群或用戶,產生足夠的影響力

相對應的,就會存在如下難點:

  • Item量級:決定了我們要不要做推薦這個事情,如果僅僅是幾十幾百,一個榜單List就能解決問題;當item量級達到幾十幾百萬的時候,信息流的分發或者推薦才會更加有作用、有意義。
  • User量級:決定了系統的負載能力,到底能夠承擔多大的流量、負載與計算力,決定了整個業務的複雜度,用戶的量級越大,系統擴展性的要求就會越高。
  • 產品形態:是否支持用戶產生反饋,並與用戶進行很好的交互。以上這些會產生許多信號,並促使你完成推薦,也是非常重要的點。
  • 內容的時效性:任何一個內容,包括視頻或者圖文,是有生命週期在裡面的,內容有長有短,其中預測一個內容的生命週期是一個挺難的事情,不論通過算法也好或者其它技術也好;假設我們已經知道內容的生命週期,如何在有效的週期內給予內容有效的曝光量,也是個很難的問題。如何Balance這兩個問題,時效性是非常重要的,因為過了內容的生命週期,再給用戶推薦,是沒有意義的,用戶體驗會非常差。
  • 用戶滿意度的評價指標:做過推薦的同學可能會熟悉一些指標,比如驚喜度、覆蓋度、新穎度之類的,這些可以歸類於非業務場景的指標。此外還有一些業務場景的指標,有點擊率、CTR、時長、完成比、交互的頻次、訪問深度、多樣性、甚至是留存率等等,這些指標和用戶的滿意度是否真的是正相關的,以及用戶的滿意度真的就能用這幾個指標完整的刻畫?這些都是我們需要思考的。
  • 內容質量的判定:怎樣判定一個內容質量到底是好還是壞,好的標準到底是什麼,以及我們如何去建模,如果可以建模,特徵是什麼,以及我們的模型如何有效的利用特徵去判別,也是一個難題。
  • 冷啟動問題:分為內容冷啟動與用戶冷啟動。內容冷啟動就是一個新內容進入平臺,沒有被分發出來;而用戶冷啟動就是一個新的用戶,交互數據和行為非常的稀疏,如何做比較好的推薦、能夠引導進行後續更加稠密的交互,增加粘性,以此來提升用戶體驗,更好的滿足用戶的需求。
  • 人工運營規則VS機器算法:在資訊信息流推薦系統承擔的可能不止是一個長尾興趣的分發,還會有一些運營行為和人為規則的引入。所以兩者的效果如何調和、平衡甚至是互補,也是一個難題。其中,我們要明確算法的邊界是什麼,哪些能做,哪些達不到,比如讓機器去做文本分類,業界已經有很成熟的解決方案了,但是讓機器去判別文風或者文采,就會很難。首先如何定義這些就是主觀的標準,對人來說,尚且不容易,讓機器去評判一個非常主觀的標準,本身就是很難的。所以如何確定機器算法的邊界是什麼,以及邊界之外人是否可以有效的進行互補,是最後這個問題的難點所在,可能就需要大量的經驗,以及實驗才能知道。
信息流推薦在鳳凰新聞的業務實踐

信息流推薦在鳳凰新聞的業務實踐

整體架構跟業內是相似的,也是基於召回和排序的框架。左邊的內容池是百萬的量級,經過召回部分的初篩,規則過濾,粗排序後,可以得到size在幾千量級的召回候選集;在精排階段,經過多目標排序的優化,可以將集合降到幾百的量級;最後經過重排和人工規則的過濾,將數據集合可以降到幾十的數量集,推送給用戶。

信息流推薦在鳳凰新聞的業務實踐

目前線上的模型都切換到Deep,以前也嘗試過傳統的機器學習模型,但是隨著模型的迭代演進,發現Deep模型相對於傳統模型在業務指標上有較大的提升,當在做模型結構、特徵工程的時候,對業務的收益是更大的,並且可以更好的貼近業務。

從底往上介紹模型,模型的右下角是用戶的信息、交互信息與內容的信息,左下的部分是用戶歷史的行為集合;再往上一層是數據的Embedding層,稠密的向量;第三層的左面是FM模型的Pooling,FM以前在CTR中也用過,相比GBDT和LR傳統的模型在排序結果中表現是非常好的,適合資訊信息流的Ranking,在這裡主要捕捉的是低階的交叉特徵;中間的DNN模型捕捉的是更高階的變化;右面是Attention的部分,NLP中的一個概念,在這裡用來捕捉Session 序列,包括用戶的行為序列,所以自然想到用Attention去建模。大致看起來,模型的左半邊部分像DeepFM,而右邊像阿里的DIN。再往上一層,將子網絡的各個部分做一個concat,然後幾層Dense,做一個多目標的學習,目標不止有CTR、Duration時長,還有會有Like/Comment 點贊、評論的目標等。最後可以根據業務需求去調整指標的權重,有針對性的去優化,當然這部分我們也計劃嘗試用強化學習來學習這些超參數。

信息流推薦在鳳凰新聞的業務實踐

在模型更新中,這裡主要還是以增量更新為主,在模型設計之初,有兩條路向前推進:一個是模型的實時性,一個是特徵的實時性。我們面臨過這個問題的選擇,其實兩者代表系統實時性不同的維度,每個方向去提升實時性的話,都意味著會付出大量的代價,有工程的代價,也有系統設計難度的代價。基於自身業務去考慮,我們最終選擇了重特徵的實時性,輕模型的實時性。在示意圖中,左面是小時級的特徵,通過訓練,增量的對模型進行更新;右面是通過全量樣本對模型進行全量的full-batch更新,因為如果一直使用增量模型,時間長了會產生一定的偏差,偏差累積效應會影響線上效果,因此,定期的全量更新是必須的。

相比離線特徵,現在的實時這塊已經做到了秒級的更新。而如果增加模型的實時性意味著能更快的捕捉新的特徵,或者讓模型學習到特徵與特徵之間的泛化關係。在資訊信息流的推薦中,能捕捉到的比如當前的熱點、人群的、興趣的全局變化,通過結合自身的業務,發現,比如說熱點、興趣、人群的變化在一段時間內是穩定的,特徵之間的泛化並不會那麼大,比如看美食類的用戶多半也看看養生、娛樂等等。所以這裡模型的更新選擇小時級是一個比較好的對資源的權衡。

信息流推薦在鳳凰新聞的業務實踐

樣本的Reweight對於實際業務有一個挺大的提升,對於解釋模型也是一個很好的例子。

比如在定義任務目標時,我們除了想優化用戶的點擊率,還想讓用戶有更高的刷新次數。所以,rewight定義了一個用戶的跳出率,即文章的跳出率=用戶最後一刷的曝光除以文章的總曝光。將文章跳出率乘在原始樣本標籤上,對用戶的一個Session最後一刷的樣本進行調權,懲罰跳出率高的,獎勵跳出率低的。這個非常容易理解,即如果一個內容造成非常高的跳出率,就是說內容本身可能有問題,那麼對它進行降權。結合Reweight,可以更好的指導模型的權重優化,提高模型對具體目標的優化能力。

在跳出率分段-權重模型圖中可以看出,橫座標是跳出率的分段,縱座標是模型的權重,對於內容來說,模型的權重越高,就證明內容質量越好,對於點擊刷新率是一個正的貢獻,左面模型權重很低,就證明內容質量比較差,對於點擊刷新率是一個負的貢獻。模型上線後,線上ABTest的絕對值提升有將近1%,還是不錯的。

信息流推薦在鳳凰新聞的業務實踐

推薦本身就是各種Metric的權衡,對於推薦來說,是非常重要的。因為系統需要科學的衡量指標,但是衡量指標之間往往存在一定的關聯、因果和矛盾,為了更好的撬動核心指標,我們需要理清這些指標的關係。

按照事件發生的邏輯順序,先有曝光,列表曝光時間,點擊,閱讀時長,閱讀完成比,最後用戶會產生分享、收藏、點贊、評論等一些動作;與這些對應的是推薦品質的衡量級別:曝光與列表曝光時間產生的是曝光質量以及曝光的負反饋;而曝光與點擊的數據對應著CTR的轉化率;閱讀時長和閱讀完成比則是對於內容的自身質量的評價指標;最後,一個用戶的交互行為,如分享、收藏、點贊、評論等信息,則是在用戶看完內容之後產生了共鳴,才會去完成這些動作,才會有衝突點和傳播價值。

PPT下面是在實際業務中,不同指標的組合,對應優化目標變化的結果,最後優化CTR、閱讀時長與交互,即優化目標是讓CTR穩定,閱讀時長提升,互動率提升,則系統就會傾向於推薦品質相對較好的視頻和文章,並且能夠激發用戶互動,助推留存的提升。留存率的指標是比較難去直接優化的,因為是長期的指標,所以難以建立模型去優化,假設定義留存率是7日留存,那麼可能需要通過7天之後的樣本數據建立因果聯繫,但是這個因果聯繫未必是正相關,因為中間會有很多變量來決定這個用戶留存或者流失,所以說這個指標是很難優化的,我們需要找到順序相關的指標進行間接優化。而我們這裡使用的CTR+閱讀時長+交互信息,三個指標都是正向的,從實際的效果來看對業務的提升是比較好的。

信息流推薦在鳳凰新聞的業務實踐

信息流推薦在鳳凰新聞的業務實踐

因為以前有許多同學在特徵工程這塊做過分享,所以這裡會說的簡單一些。先來說說特徵框架。自底向上,主要是三條pipeline的流向,左面的離線日誌,中間的實時日誌,已經做到了秒級的採集,以及最右邊的線上請求數據。中間層特徵框架是我們共同抽象出來的共有特徵組件,包括線上的請求、實時的處理以及離線的數據,保證了特徵的一致性,就是說離線的模型訓練與線上的模型預估用的是同樣的特徵數據,這是非常重要的,如果你在這個部分有偏差的話,就會出現一些特徵穿越現象,這也是在早期的推薦系統中非常容易被忽視的一個點。最後是數據的存儲,離線日誌會存到Hive中,而實時的數據則會存到Redis集群。當線上請求過來的時候,通過特徵框架的規範化,去請求模型,最後通過模型得到排序的結果,這就是整個特徵框架的一個大致流程。

信息流推薦在鳳凰新聞的業務實踐

如果說剛才是從系統的角度去講特徵,這裡則主要是從內容或者說從特徵分類的角度進行劃分:

  • 用戶畫像:主要是用戶的人口屬性、興趣屬性、層次以及用戶的行為偏好
  • 內容畫像:對於內容的一些分類,NLP的處理,統計類的一些指標,文本質量的分數,以及向量稠密表示
  • 請求上下文:客觀環境的描述,比如說時間、天氣、地域、手機型號、品牌等

這些特徵會進行一定的交叉,賦予這個特徵更多的含義。比如說使用用戶畫像和內容畫像做交叉,可以得到用戶的長短期的興趣匹配、Session興趣泛化匹配、用戶年齡對於某些內容類別的偏好、用戶性別對於某些內容類別的偏好等。

如果拿用戶畫像與請求的上下文進行特徵的交叉,則會得到用戶常駐地在什麼地方、用戶的興趣隨時間的變化,比如有的用戶會在早上看新聞,而在晚上看一些娛樂類的資訊;還有一些場景的刻畫,如用戶喜歡在地鐵上看視頻,而在辦公的時候喜歡看圖文。大概能夠得到當前時下最熱的一些topic是什麼,或者手機品牌對於用戶的影響,如華為手機的男性用戶比偏多,而小米手機年輕人用的比較多等。這些特徵的構建對於推薦系統的解釋性有很好的支撐,如果沒有很強的可解釋性,優化的天花板會很低,所以你不知道該往哪個方向進行優化,而這些特徵的組合就是為了增加模型的可解釋性。

信息流推薦在鳳凰新聞的業務實踐

因為之前大家對於用戶畫像的比較關心,所以這裡單獨增加了一個slide。簡單介紹下,用戶畫像的特徵工程其實是比較簡單的,主要是數據的處理環節,在畫像的設計上可能會有些考量。資訊類的用戶畫像主要分為三類:統計類、推斷類、固有類。右面的思維導圖是大概的用戶畫像的歸類,主要是:

  • 用戶的興趣分類:用戶對內容資訊不同層面的偏好度
  • 用戶行為畫像:主要是時間的偏好,體驗的偏好
  • 用戶的等級:根據用戶的使用頻次以及粘度進行劃分
  • 社交畫像:地理位置,以及附近的人等
  • 人口屬性:剛才說到的性別年齡等
  • 數據採集:顯性的包括點擊、曝光等;還有隱形的如評論、閱讀時長等
  • 地理位置信息:用戶當前的位置POI,常駐的地理位置等

用戶畫像的難點是如何平衡各類的偏差Bias。

在左下角的圖中,藍色的用戶A,如果出現點擊行為,我們內部一般稱為Signal信號,怎樣衡量信號的一個強弱,除了要跟這個用戶自身的歷史去比較,還要跟同期產生這個行為的用戶進行比較,然後來判定A用戶的信號的強弱,其實有點像對用戶的輸入信號做一個normalize的過程。

信息流推薦在鳳凰新聞的業務實踐

召回部分是一個挺大的話題,我們同樣使用了多路召回的方法,這裡只介紹利用FFM模型進行召回的方法,我們是使用FM做排序的,而排序是有中間產物的,圖中公式的紅框中是一些稠密的向量表示,把它們抽出來,就會組合成我們想要的一些稠密表示,比如用戶的稠密表示、內容的稠密表示,這也對應著用戶的Embedding和Item的Embedding,將User Embedding拆分成三個分量,Item也拆分為三個Feature、ID和Context的特徵向量,將他們一一對應並做內積,最後User向量利用Faiss計算對應的Item向量的NN結果作為召回集合,最後可能會做一些後處理,如過濾或者打散等。

FFM模型召回其實理解起來很簡單,它有很多優點:

  • 它是有優化目標的召回,可以很好的結合業務定製優化目標,來引導向量學習。
  • 可以在一定程度上解決Item冷啟動的問題,比如一個新的Item進來後,可以生成向量,進行向量的相似度計算。
  • 在保證召回結果足夠的個性化的同時,可以帶來足夠多的驚喜度,這也是非常重要的,因為FFM模型召回的覆蓋度是很好的,可以將一些新的內容進行召回,增大了驚喜度的可能。
  • 避免傳統協同過濾帶來的"馬太效應",傳統的協同過濾是基於currence的方式產生的,更容易推薦一些偏熱的內容,而FFM模型可以有效的抑制這種現象,更偏向於個性化。
信息流推薦在鳳凰新聞的業務實踐

下面來介紹一些延展性的問題,具體的問題以及對應的一些思路:

信息流推薦在鳳凰新聞的業務實踐

標題黨的內容是挺討厭的,隨著媒體生態的建設,內容創作者為了某些利益會寫一些與內容不符的標題,吸引用戶注意。標題黨會嚴重影響用戶的時長,降低內容的品質,還會使得跳出率升高,影響留存。怎麼鑑別標題黨呢,可以從三個角度出發:

  • 從內容特徵入手,主要是用NLP建立模型,最初始的訓練數據可能需要人為的去標記
  • 再有就是通過用戶舉報去積累數據
  • 從數據特徵入手,使用用戶的評論等數據可以進行甄別
信息流推薦在鳳凰新聞的業務實踐

其實主要還是使用內容的動態特徵,也就是內容的消費數據,我們將內容消費按照時長劃分了6個維度,轉化率劃分了5個百分維度,閱讀完成比劃分了5個百分維度,相互組合共有150維的特徵,文章的歸屬為其中的一類組合作為文章的動態特徵,比如"時長0-30s,閱讀比10-30%,轉化15%-20%"。

我們做了大量統計和對比發現"標題黨"類的內容會存在:高轉化率、低時長、低完成比的性質;而相反中等轉化率、高時長、高完成比,我們一般定義為優質深度類的內容。那我們這樣去構造特徵是否真的具有實際意義呢?來看一個線上用戶的真實例子:

信息流推薦在鳳凰新聞的業務實踐

tp開頭的編號,就是我們對應的動態特徵的區間,數據都脫敏了,可以看到第二列深度閱讀,用戶在時政、娛樂,或者說旅遊,在深度閱讀上是有非常明顯的傾向的,並且用戶在這些類型的內容下對標題黨有非常強的敏感度,也就是說用戶對這些標題黨內容有低完成比與高跳出率,根據我們實際對這個用戶的瞭解、根據瀏覽歷史去匹配發現,這樣的特徵構建是符合用戶的特徵。所以我們將這個特徵體系加入到精排模型以及重排模型,是有效的抑制用戶對分類下的標題黨的情況,從而優化用戶整個閱讀的體驗。在實際的ABTest上,我們加入這些特徵,對於用戶的留存和體驗是有一個比較明顯的提升的。

信息流推薦在鳳凰新聞的業務實踐

再來看下縮略圖的優化,在Feed流產品裡,標題和縮略圖其實是非常核心的信息傳達元素,因為除了標題和縮略圖,其它的視覺元素相對的都比較小,所以如何優化縮略圖,對信息流的提升效果也是重要的關鍵。針對縮略圖的優化我們也做了很多工作,比如有縮略圖的裁剪,傳統的裁剪是偏規則的裁剪,會出現一些比較詭異的結果,特別是針對於人臉的裁剪,經常會把頭或者臉的一半裁剪掉。我們添加了一個美學的圖像裁剪模型做監督並捕捉圖像焦點特別是人臉等易錯的焦點部分。在圖中下半部分,中間的部分就是我們新的模型上線後的效果,會比原來的方法好很多。

智能縮略圖的選擇也是很重要的,我們利用Fine-tune的一個美學判分模型RankingModel來進行縮略圖的選擇,變成一個排序的任務,將文章裡所有的圖進行排序,然後選出最好的那個圖作為封面圖。

最終,通過Topic Model進行標籤的配圖,根據文章語義Topic關聯預定的圖片,讓沒有圖片的文章也配上圖。這裡就不在贅述了。

信息流推薦在鳳凰新聞的業務實踐

信息流推薦在鳳凰新聞的業務實踐

Q:圖片、視頻文本內容自動打標籤那怎麼做?

A:文本這部分主要是NLP模型產生的結果,如關鍵詞、命名實體的抽取,包括否是一個標題黨、是否是一個軟文,以及知識圖譜,實體之間的關係的標籤。視頻則主要是對於幀的抽取,對幀的label,以及幀與幀之間的相似度的建模產生一些label,這些label最後會轉換成一些topic,最後作為視頻的標籤。現在我們的模型很多是基於Embedding的輸入,所以視頻我們會跳過標籤的環節,直接打上語義的Embedding,以及用戶行為的Embedding,將兩個做融合,行為的Embedding主要是item2vector得到的。

Q:實現信息流推薦技術的核心是什麼?

A:其實每個環節都非常重要。實際上推薦的難度是在於量級不同而帶來差別。當量級很大的時候,基於召回、排序的框架的效率就很高,所以部分的技術就是核心;而更偏重業務側指標的信息流推薦,他的線上規則,重排序以及更復雜的業務邏輯是核心。

Q:線上模型演進,目前用了哪些,效果怎樣?

A:以排序模型為例,最開始是基於人工特徵,使用LR+GBDT的方式去做,後來使用了FM,發現FM在一些稀疏特徵上非常好,它的特徵交叉也非常的有用,然後上了FFM,效果進一步的提升,目前線上已經使用Deep模型是單模型中效果最好的。

Q:新聞資訊有圖文和視頻,如何做特徵?

A:圖文的特徵我在內容特徵部分已經介紹過了,這裡就不贅述了。關於視頻部分的特徵,一部分是從關鍵幀抽取的離散特徵,並通過幀序列抽取的Topic類特徵,還有一些清晰度、碼流等固有特徵,還有利用比對能夠獲得的視頻源以及視頻內的一些實體、任務、場景、地點以及通過知識圖譜擴展的概念等,以及少部分標題特徵。還有一部分是利用視頻語義映射到稠密向量,一部分類似item2vec基於用戶行為學習的向量,一部分是基於關鍵幀語義模型構建的向量,兩者做求和平均。

Q:如果要轉行做推薦算法,有什麼建議,如何實踐推薦?

A:主要看你從哪個方向進行轉型,如果是從圖像或者AI的相關行業的話,難度不大,需要了解一些業務實際相關的經驗;如果之前沒有這方面的經驗,則需要數學的背景和一些機器學習的理論,還需要一些數據實踐的能力。如果是在校學生,你可以參加一些比賽,如Kaggle等,或者下載一些數據集練練模型;而從業者則可以在相應的應用場景拿一些數據,跑跑Demo的模型,實踐這種東西需要看你有沒有很好的機會去做。

Q:特徵處理方面有哪些經驗或者踩過的坑可以分享一下嗎?

A:坑有很多,特徵的添加和組合是通過業務不斷的嘗試出來的,特徵這個地方可能會有一些方法論,但都是一些框架性的東西,怎樣驗證一個特徵有效,也需要做很多的工作,甚至要實際上線做ABTest,因為這塊沒有太多現成的經驗和大家分享,需要在業務中做一個細緻的整理。

Q:怎樣解決推薦中的信息繭房問題?推薦系統常見的問題是回聲室效應,從用戶角度,有沒有一些其它的技術?

A:工業界其實很少會去提這個概念,學術界更偏向於去研究這個問題。工業界其實更傾向於多樣性、探索與利用的問題。也就是我們要去識別當前用戶的狀態是,用戶願意繼續消費他感興趣的信息流,做一些廣泛的探索,還是說他目前有一些疲勞。這個類似於有限狀態機,我們需要去建模用戶不同的狀態以及他調到下一個狀態的概率是多少,以及用戶疲勞後的試探,這裡其實還是一個模型建模與特徵匹配的問題,這是一個多層次狀態機 + 多層次試探的問題。所以工業界對於信息繭房這個問題不是特別關注,而更願意用一些簡化的模型去解決這個問題,當然我們不排除這個問題對用戶是有影響的,如果你一直給一個用戶看他以前看過的內容,或者他不關心的內容,他的興趣會越來越窄,所以我們會增加結果的多樣性,包括它的用戶畫像等,並不只是用戶的長尾興趣,還會有些試探的東西在裡面。以及基於他現在的一些推薦,使用知識圖譜推理出用戶應該去看的東西,相當於增加一些人工的因素在裡面,其實推薦出了長尾的推薦這一部分,還有人工運營的部分,會有一些額外的信息進來,修正純靠算法帶來的一些缺點,在一定程度上也能緩解信息繭房和回聲室效應這種問題。

Q:互聯網公司的新聞推薦和傳統傳媒行業的新聞推薦在業務上有何不同的側重點?

A:互聯網推薦可能更偏興趣推薦,會帶來了更多的曝光、信息流、營收、廣告收入等,傳統的媒體行業可能更多的是自家的品牌的提升。這兩個行業的資源也是不一樣的,互聯網的資源更多一些,包括自媒體的建設、激勵制度,數據用戶量資源更大;傳統媒體行業資源和用戶可能相對更加垂直一些,人群也不一樣,營銷自己的品牌價值,產生溢價,產生媒體影響力等。


分享到:


相關文章: