騰訊系閱讀APP的深度學習方法論

AI前線發表於2018-01-17
本文由 「AI前線」原創,原文連結:騰訊系閱讀APP的深度學習方法論
作者 | 孫子荀
編輯 | Vincent

AI 前線導語:”018年1月15日,微信創始人張小龍在微信公開課的演講中提到了有關微信公眾號的一些改變,包括公眾號將會擁有自己的獨立App。自微信公眾號推出以來,就立刻成為了媒體人的寵兒,尤其在技術領域,對於技術人來說,一個靠譜的技術類公眾號不僅是閱讀的平臺,更是學習和進步的階梯。在AI迎來巨大發展的今天,本文將為你揭祕新媒體平臺如何利用深度學習提供更加豐富的個性化閱讀體驗?”

本文為作者在 2016 年 QCon 大會上海站的演講,由作者本人授權,AI 前線整理併發布。


騰訊系閱讀APP的深度學習方法論


大家好,我是來自騰訊的孫子荀。今天我主要以落地實踐為主,分享一下新媒體中的深度學習。

新媒體大家都知道,從網易到騰訊、今日頭條、一點資訊,基本上大家大把的時間都花在這些閱讀 APP 上。閱讀 APP 為什麼會火起來?可能更多的是因為以前的傳統媒體往新媒體方向發展,變成有圖文、視訊、直播,還有自媒體的表現形式,還有個性化的推薦技術,使它做到了千人千面。我們這裡主要介紹一下我們騰訊手 Q 上的一款新媒體產品在這方面的一些經驗,主要把跟深度學習相關的方面抽取出來,可能不太涉及工程或其他方面。

隨著深度學習技術的發展,個性化閱讀領域的媒體內容有了更加豐富的處理手段。在過去主要是基於機器學習技術來進行內容分類、主題建模等。現在有了更加豐富的技術手段對於視訊圖片等富媒體內容進行建模處理。 本次演講主要介紹如何應用深度學習技術幫助媒體提高內容的質量、點選率以及如何為新媒體內容運營提供幫助,包括如下內容: 媒體標題與內容關聯分析、評論的情感分析、自動評論等; 影象分類與檢索、語義提取; 幫助媒體選圖的個性化熱點區域識別技術; 圖片的畫風和場景識別技術應用。

閱讀類 APP:把合適的內容,推送給合適的使用者

騰訊系閱讀APP的深度學習方法論


首先這種閱讀類的 APP 都做了什麼?比如說你自己創業要搞一個 APP,首先一定要有內容,內容可能是文字的,影象或者視訊的,然後你要對它建模,文字建模、分類、清洗,影象建模、分類、抽取,視訊也是一樣。然後是使用者,作為一個新媒體,閱讀 APP 需要做的事情就是把合適的內容,推送給合適的使用者,如果做過廣告的就會比較熟悉。涉及到使用者的話,有一些對使用者進行基本建模的東西,比如說人口屬性,就是我們講的年齡、地域、性別、學歷等,還有使用者的實時的行為,瀏覽的行為、瀏覽的記錄、在你平臺上所打的標籤,這都是對人的建模,是做 APP 必須要做的東西。

其次閱讀類 APP 關聯在哪些場景?比如說大家知道像 facebook 大部分推送內容是通過 feeds,這個涉及到推薦技術,就可以把內容跟使用者關聯起來,使用者主動刷 feeds 的時候,實際上就會不斷的給你推薦新的東西。第二個是 push,跟它相關的是 ComputerAds Tech,計算機廣告學。計算機廣告學最近比較火,在前兩年的時候有成體系的書籍,我在百度做過這方面的工作,這一塊也涉及到非常大的一個體系,包括線上的廣告跟合約廣告。Push 就是我挑一個內容主動給使用者,這是一個主動的模式。Search,使用者主動搜尋內容,它跟普通的搜尋引擎有區別,這裡面有個性化的推薦,以閱讀內容為主。後面的 QA,有一些公司做的 chatbot,我們也在做這一塊,今天不太會涉及這個,因為我們也在摸索中,主要涉及到一些 QA 或者 KB 的一些技術。


騰訊系閱讀APP的深度學習方法論

如何選擇合適的推送時間?這需要跟特定的使用者關聯起來。還有 feeds,如何給使用者推薦影象,就是影象的推薦是比較難做的,因為影象本身如果沒有文字描述,你怎麼去推薦?裡面有很多的 feature 需要抽取。還有內容,內容怎麼建模,怎麼去評價一篇文章或者一個媒體內容,如何評估一個媒體內容是優質的還是劣質的。如果重新整理 APP 的時候看到一些劣質內容、一些廣告和一些營銷性的內容、排版錯亂的文章,那麼使用者體驗就很差了。在做一些閱讀 APP 的時候,要有方法對它評級。

如何選封面圖片?封面圖片很有意思,就是你會選擇閱讀 APP 推送的哪些內容?你有沒有想過,你刷 feeds 的時候,推送的東西你為什麼會點?你看了兩樣,一個是標題,一個是圖片,通過標題和圖片就能決定會不會點進去看這篇文章,所以標題是一方面,圖片是更加重要的一方面。如果在圖片上面做優化,至少能夠提高 25% 以上的閱讀量。

如何推送

騰訊系閱讀APP的深度學習方法論


推送使用的技術和深度學習相關,但是我們發現傳統的統計技術在這裡比深度學習技術更好用。我們有兩個同學同時做,一個是用深度學習,一個用傳統的統計學技術,發現傳統的統計學技術要比深度學習好很多。右邊是我列了一下我朋友收到的 push 的數量,大家可以看到這種個性化 APP 推送的非常多,像國內很多的產品,通過 push 的開啟率有 43%,新使用者主動進去的場景下,43% 是通過 push 進去的,所以 push 是非常重要的。我們知道像廣告,有兩種廣告,一種線上廣告,就是頁面上會出現上下文式的廣告,還有彈窗式的廣告,比如說看一些視訊站點的時候,會彈框、彈廣告。展示類的廣告跟合約式的廣告其實是兩種不同的技術,在合約廣告裡面有一個“庫存預估”,根據庫存來賣合同,那麼怎麼預估庫存有多少?我一定是預估使用者在這個時間開啟我的視訊網站,我預估出來在某個時間點,有多少使用者看《甄嬛傳》第三集,知道了這個資料,才能知道賣多少合同出去,所以這是非常重要的。我們媒體類 APP,其實跟這個有點像,合約廣告,它會 push 一個內容,只是它是廣告,我們是新聞。Push 這個內容給使用者,一個是說 push 的內容一定是個性化的,因為廣告內容個性化,還有一個就是 push 的時間是不是個性化的,不是運營的 push,運營的一個重大實時事件,那是運營類。個性話的 push 是指你現在應該看一些內容,然後給你 push 個性化的內容,這個時間要去分析一下。

這是艾媒傳媒公開的資料,使用者什麼時候使用 APP,乘坐交通工具、睡覺前、午休、上洗手間的時候,這裡問題就是每個人的時間都不一樣,你怎麼做到將每個人 push 的時間都千人千面呢?

騰訊系閱讀APP的深度學習方法論

我們看一下,這是微信的公開資料,上面是公眾號使用者閱讀時間分佈,每個時間點使用者閱讀文章數量,下面是我們騰訊的公眾號每日 push 的時間。微信公眾號每天 push 時間集中在 10 點 12 點,下午在 17 點到 18 點,這是公眾號所有人自己上班時間嗎,不是,這是摸索出來微信使用者的習慣是這樣。微信使用者在這兩個時間點比較活躍,所以他選擇兩個比較保守的時間進行 push。如果選一個時間,你大概選 17-18 點,兩個時間,肯定選早上。如果三個時間呢?這張圖表你選三個時間,你怎麼選,選不了。四個五個呢?一個 APP 給使用者 push 的內容不是越多越好,如果使用者反感,你就不要 push 了。現在就有這麼多的 environment,你在合適的時候 push 一個,並不反感。我們怎麼得到這個資料呢,一個使用者 push 多少次、什麼時間 push,這都是我們需要解決的問題。

騰訊系閱讀APP的深度學習方法論

這裡需要引入一個模型,就是我們之前在學習的時候不知道 push 幾次,什麼時間 push,這個可能 deep learning 並不能很好的告訴我們。我們假設一個場景,一個學生,這個學生每天使用手機的一個集中時間段是哪裡?可能是早上起來,如果他覺得課無聊的會刷一下,中午刷一下,下午他大把的時間他會刷,他社交娛樂的時候就不刷了,這是學生。上班族肯定是早上刷、中午刷,下午忙工作,晚上一直在刷,這是上班族。這幾類人都是不同的畫像,怎麼獲取每個人會有幾個頻繁刷的中心點,他們有大半的時間刷這個東西,只要刷手機的中心點 push 就可以了,因為他們不會反感,不要在學生上課,上班族開會的時候給他 push。你怎麼通過使用者的歷史行為得到它這幾個時間點?剛才我舉了兩個 case,有的人可能是說我一天刷三次,有人刷六次,有人刷七次,如果你要通過傳統的聚類技術來做的話,普通的聚類技術必須實現設定好 K 是多少,要聚多少類,一定要設定好,不同使用者其實 K 是不一樣的。我們一開始把所有的資料送到 deep learning,讓它給我們選 K,但是我們發現基本上都會過擬合。很多同學可能用過 LDA,LDA 比較好的地方是其中用到了共軛,它二項式分佈跟狄利克雷的分佈過程是共軛的。

狄利克雷過程是不需要你指定 K 是多少,這個過程是說你只要指定一個引數,通過這個引數就可以告訴你,在這個引數的情況下,它是趨近於產生多個類別,或者趨近產生少的類別。如果是一個引數,看我們最上面的圖。如果你α是 0.01 就是一個類,如果設定成 100 或者更多的話,就會把你的類分的越多。如果一個 APP 推兩次,設小一點,推四次,設大一點,就可以幫你自動產生類別。我們看右邊的圖。這是騰訊收集的使用者開啟 APP 的資料,把 QQ 和微信的時間合併起來,19 號 -27 號開啟騰訊 APP 的資料,怎麼從中學出它的類別,就是直接用 Dirichlet Process 就可以了。

騰訊系閱讀APP的深度學習方法論

最終取得的效果,左上角是上海在校的一個男生,右上角是在校的女生,左下角是騰訊的專案經理,如果都推兩次,怎麼分?我們通過一些技術,取 1-5 天,6-7 天分別做,將 23 點和凌晨 4 點的資料連起來,通過過取樣的技術和一些其他的方式得到了這張曲線,圖上,越高說明這個時間點使用行為越密集,這麼基本上得到這麼幾個結果。在同樣的引數情況下,男同學每天刷手機非常之多,他在晚上有一個高峰,右上角的女生,刷的比較平均,騰訊的同事只是早上跟晚上,中午基本上很少刷,這樣就可以選出給使用者 push 的時間,你作為一個媒體的 APP 你可以選擇 push 的時間,而不是所有的使用者統一的時間。

如何選擇和展示封面圖片

騰訊系閱讀APP的深度學習方法論

圖片會影響文章的點選率。左上角是一個明星,這是我們競品的效果,把明星的頭截掉了,在 APP 展示的時候沒有顯示出頭像,這種圖大部分使用者都不願意去點,因為眼睛都沒有,不知道是誰。這種可以通過什麼方式解決呢?通過人臉識別可以解決,人臉庫識別出來,就可以解決了,形成了左下的圖。如果是多個人呢?每個角落都是人,大合影,人臉識別就選不出來了。第二個如果不是人呢?你看右邊這個狗,這是它實際截的兩個圖,你可以看到狗都沒有截出來,左下是一個動物也沒有截出來,右邊的秋田犬也只露出一個頭,眼睛沒有,這種文章你基本不會點。

騰訊系閱讀APP的深度學習方法論

那麼怎麼通過一個合理的方式把圖片選出來呢?我們主要從以下兩點考慮這個問題,第一個首先我們類別一定要全,包括人、各種重要的物體、食物、動物、風景等要全,第二個識別重點的區別,畫面上比較重點的區域,這個在傳統的技術上,像影象分割做的比較好,像 Snake Model、Mean shift、Ncuts、Graph cut 等一些圖象分割的技術把這個鳥分割出來,這是傳統的一些方式。

進入了深度學習之後有一個語義切割,深度學習讓語義分割變得更加的精確,整個指標都有很大的提升。右下有很多的鴨子,你截圖會對著鴨子截,而不是對著湖面截。這裡涉及到一個 deep learning 的技術,能把影象分割出來,然後把物體識別出來,這樣就可以進行截圖。這裡首先識別出物體,caffe 肯定是可以幫你識別出物體。第二個要識別出輪廓,這兩個結合起來,就幫你做一些事情。我們就是這樣做的,用傳統的技術識別輪廓,再用機器學習技術識別輪廓對應的物體,然後通過 end-to-end 端到端的訓練得到了所關注的物體,這樣的話對剛才的一些圖片基本上都能得到很好的解決。國外很多技術都是通過這個方式解決的,可複用性很高。

內容評級

騰訊系閱讀APP的深度學習方法論

媒體的內容,我們希望看到的是更多比較高質量的內容。我們看這兩個內容,左邊是技術類,右邊是金融方面的文章,從排版和格式來看,大家更願意閱讀哪一個?更願意閱讀第二個。左邊雖然是技術方面的,右邊的給你閱讀感受更好,所以它的質量是更高的,這裡需要給內容進行評級。這裡艾媒傳媒的一個資料,2016 年中國手機新聞客戶段使用者對產品的改進建議,其中內容質量佔比很高,有接近一半的使用者他覺得 app 的內容質量非常低,經常給他推送一些質量低的內容。

騰訊系閱讀APP的深度學習方法論

騰訊怎麼解決的,就是將內容進行分級,把內容分為五檔,或者六檔、七檔,這就是分類的問題,分類的問題通過深度網路解決。這裡需要傳入的一些特徵,包括佈局、字數、圖片的質量、話題的火熱程度。那麼右邊的評價指標到底是選點選率,還是閱讀完成率?評價一篇文章的質量,一定是使用者花在上面的時間比較多,使用者越願意完成這篇閱讀,它的質量越高,也就是深度閱讀、沉浸式閱讀。如果一個文章點進去就跳出去了,點選率高有什麼用呢?說明標題和圖片很好,但是裡面的內容沒有閱讀的慾望,這就不能說內容的質量很高。評價內容的質量,你最終擬合到的目標函式一定是閱讀完成率。

怎麼學習出一個文章的閱讀完成率呢?首先取樣的時候,因為我們跟使用者無關,希望這個我們選的內容跟使用者沒有任何關係,因為我們要拋去個性化推薦的問題。我們這裡只關注內容的建模,PV 大於 500,這樣可以幫你洗去很多異常因素,影象、標題做變換,把影象和標題作為佔位符,然後對 word 做一個 word embeding。

騰訊系閱讀APP的深度學習方法論

這裡又有兩個技術,左邊是頁面的佈局、字數、話題熱度的資訊,還有一些是文字本來的一些描述資訊,就是文字的內容的一些資訊。這兩個資訊放到一個網路中很難學出來,因為一個神經網路去學文字特徵的時候,比如對所有的 word embeding 都可以,但是像排版佈局並不是文字,沒有辦法同時的做 training,這時候有兩個選擇,附屬的資訊用一個模型圈定出來,再把文字的資訊用 deep learning、LSTM 圈定出來,圈定出來之後,把這兩個輸出做一個 regression,就把這兩個模型放在一起,這是一個方式。一開始我們這麼做的,最後發現我們的準確率只有 67%,說明效果不太好。後面就是把原來的固有資訊和文字資訊做一個融合,做一個同樣的網路,這樣整個網路就是 end-to-end,深度學習有一個前向反饋和後向反饋,可以同時同步調整兩個網路引數,最後實現的準確率是 74%,這個效果非常好。直接用 kores 深度學習網路框架就可以把傳統的一些特徵跟文字的特徵放在一起進行圈定。

圖片推薦

騰訊系閱讀APP的深度學習方法論

圖片的推薦是一個比較寬泛的推薦系統結構,圖中黃色部分就是線上服務的實驗檢索系統,最下面是它的內容和一些流水日誌,然後中間是內容建模、使用者建模,我們這裡最關注的是綠色的部分,就是一個推薦引擎想給使用者做推薦,肯定不是一個推薦,比如說有協同固定推薦、興趣推薦、點選率預估推薦,這些肯定不是一個推薦引擎就夠的,因為一個推薦引擎沒法做到多樣性,所以需要多個推薦引擎並行工作。業內今日頭條有 300 多個推薦引擎同時工作,通過流量系統去分流量。如果是圖片的話,更多的是關注怎麼將圖片從底層的 content 檢索出來,因為圖片沒有太多的文字資訊,那怎麼通過圖片檢索出相關的文章,相關的內容呢?

騰訊系閱讀APP的深度學習方法論

這裡我們看一下在文字怎麼做的。文字特徵可以做 query,可以用字、句做搜尋引擎。影象的話,傳統的影象有一些運算元比如 SIFT,也可以用 query,還有一些可以通過聚類的方式,PLSA 把文章進行聚類,它需要一些特徵,還可以通過圖片,也是類似通過前面說的一些特徵做一些分類技術,這樣可以做到一個召回,我這張圖的 index,這其實都是可以召回的。

騰訊系閱讀APP的深度學習方法論

深度學習的時候,有了圖象描述的 feature 可能還不夠。左下角是這篇 paper 的題目,他們在原來的經典的 AlexNet 網路的基礎上多加了一層,把這一層專門用於圖片的召回檢索,如果不加一層直接進行檢索問題也不大。我們發現這裡加了一層更適合搜尋引擎,比如說搜范冰冰就會出來范冰冰,搜一個鳥,就會推薦一個同型別的鳥。當然這不是推薦引擎,這有點類似於搜尋引擎的以圖搜圖,都是一些細節的東西。

我們在檢索的時候,採用兩種模型,一種就是我們對 object 搭建了一個 CNN 網路,對 style 也搭建了一個 CNN 網路,不同 CNN 網路做不同的事情,一個識別物體,一個識別畫風。

騰訊系閱讀APP的深度學習方法論

畫風,就是類似右上的梵高的畫,識別畫面風格的 CNN 是不一樣的,因為在訓練 CNN 的時候,神經元權重不一樣,這是兩件事情。比如說給使用者檢索出一個風景的時候,它一定是風景,同時它的畫風類似,拍攝手法類似。我們分了兩個 CNN 來做,我們把這兩個 CNN 網路 LR 之後,形成一個 story,這就是更高層次的抽象,比如心情,類似激動。給使用者推送閱讀,應該避免推薦驚悚的,我們通過兩個模型做一個 LR 融合,形成一個 story,我們會把所有驚悚的 story 幫使用者過濾掉。

這是檢索的時候,除了剛才說的 object 的檢索、style 的檢索,還有兩個融合起來 story 的檢索之外,因為有的內容有簡單的描述,我們把文字和圖象做了一個融合,就是用 tensorflow 中的 wide&deep 網路,把傳統的一些特徵,比如說像文字的或者說使用者的一些閱讀興趣的特徵,還有無關的網路合在一起進行一些檢索,或者進行一些圈定。這裡其實就做了四個 index(object/style/story/text、image),最後實現了一個圖片的推薦。我們可以跟使用者推薦它更感興趣的圖片。

騰訊系閱讀APP的深度學習方法論

這是我們的效果,左邊是一些風景,基本上都是同一類風景,同樣的山水藍天。中間喜歡吃辣的使用者,push 的都是這些辣的。後面的是老照片,點進去都是上海老照片,這種的圖片跟使用者的關聯性更大。單從文字來說,作為短的文字很難分類,因為裡面是沒有什麼內容,全是圖片,圖集,第二個短文字分類會有很大的問題。

作者介紹

孫子荀,09 年畢業後從事核心和分散式系統的開發工作,11 年在百度從事過高效能運算方面的工作。12 年加入騰訊,從事 QQ 群廣告系統的開發,隨後負責騰訊雲加速的頻寬排程系統的設計研發,獲得公司多個業務獎項。14 年開始手 Q 公眾號專案,負責構建公眾號平臺和內容平臺。現在從事個性化閱讀內容方面的處理和挖掘工作。

更多幹貨內容,可關注AI前線,ID:ai-front,後臺回覆「AI」、「TF」、「大資料」可獲得《AI前線》系列PDF迷你書和技能圖譜。


相關文章