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

本文由 「AI前線」原創,原文連接: 騰訊系閱讀APP的深度學習方法論
做者 | 孫子荀
編輯 | Vincent

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

本文爲做者在 2016 年 QCon 大會上海站的演講,由做者本人受權,AI 前線整理併發布。網絡



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

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

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

閱讀類 APP:把合適的內容,推送給合適的用戶機器學習


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

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


如何選擇合適的推送時間?這須要跟特定的用戶關聯起來。還有 feeds,如何給用戶推薦圖像,就是圖像的推薦是比較難作的,由於圖像自己若是沒有文字描述,你怎麼去推薦?裏面有不少的 feature 須要抽取。還有內容,內容怎麼建模,怎麼去評價一篇文章或者一個媒體內容,如何評估一個媒體內容是優質的仍是劣質的。若是刷新 APP 的時候看到一些劣質內容、一些廣告和一些營銷性的內容、排版錯亂的文章,那麼用戶體驗就不好了。在作一些閱讀 APP 的時候,要有方法對它評級。函數

如何選封面圖片?封面圖片頗有意思,就是你會選擇閱讀 APP 推送的哪些內容?你有沒有想過,你刷 feeds 的時候,推送的東西你爲何會點?你看了兩樣,一個是標題,一個是圖片,經過標題和圖片就能決定會不會點進去看這篇文章,因此標題是一方面,圖片是更加劇要的一方面。若是在圖片上面作優化,至少可以提升 25% 以上的閱讀量。工具

如何推送


推送使用的技術和深度學習相關,可是咱們發現傳統的統計技術在這裏比深度學習技術更好用。咱們有兩個同窗同時作,一個是用深度學習,一個用傳統的統計學技術,發現傳統的統計學技術要比深度學習好不少。右邊是我列了一下我朋友收到的 push 的數量,你們能夠看到這種個性化 APP 推送的很是多,像國內不少的產品,經過 push 的打開率有 43%,新用戶主動進去的場景下,43% 是經過 push 進去的,因此 push 是很是重要的。咱們知道像廣告,有兩種廣告,一種在線廣告,就是頁面上會出現上下文式的廣告,還有彈窗式的廣告,好比說看一些視頻站點的時候,會彈框、彈廣告。展現類的廣告跟合約式的廣告實際上是兩種不一樣的技術,在合約廣告裏面有一個「庫存預估」,根據庫存來賣合同,那麼怎麼預估庫存有多少?我必定是預估用戶在這個時間打開個人視頻網站,我預估出來在某個時間點,有多少用戶看《甄嬛傳》第三集,知道了這個數據,才能知道賣多少合同出去,因此這是很是重要的。咱們媒體類 APP,其實跟這個有點像,合約廣告,它會 push 一個內容,只是它是廣告,咱們是新聞。Push 這個內容給用戶,一個是說 push 的內容必定是個性化的,由於廣告內容個性化,還有一個就是 push 的時間是否是個性化的,不是運營的 push,運營的一個重大實時事件,那是運營類。個性話的 push 是指你如今應該看一些內容,而後給你 push 個性化的內容,這個時間要去分析一下。

這是艾媒傳媒公開的數據,用戶何時使用 APP,乘坐交通工具、睡覺前、午休、上洗手間的時候,這裏問題就是每一個人的時間都不同,你怎麼作到將每一個人 push 的時間都千人千面呢?

咱們看一下,這是微信的公開數據,上面是公衆號用戶閱讀時間分佈,每一個時間點用戶閱讀文章數量,下面是咱們騰訊的公衆號每日 push 的時間。微信公衆號天天 push 時間集中在 10 點 12 點,下午在 17 點到 18 點,這是公衆號全部人本身上班時間嗎,不是,這是摸索出來微信用戶的習慣是這樣。微信用戶在這兩個時間點比較活躍,因此他選擇兩個比較保守的時間進行 push。若是選一個時間,你大概選 17-18 點,兩個時間,確定選早上。若是三個時間呢?這張圖表你選三個時間,你怎麼選,選不了。四個五個呢?一個 APP 給用戶 push 的內容不是越多越好,若是用戶反感,你就不要 push 了。如今就有這麼多的 environment,你在合適的時候 push 一個,並不反感。咱們怎麼獲得這個數據呢,一個用戶 push 多少次、什麼時間 push,這都是咱們須要解決的問題。

這裏須要引入一個模型,就是咱們以前在學習的時候不知道 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 就能夠了。

最終取得的效果,左上角是上海在校的一個男生,右上角是在校的女生,左下角是騰訊的項目經理,若是都推兩次,怎麼分?咱們經過一些技術,取 1-5 天,6-7 天分別作,將 23 點和凌晨 4 點的數據連起來,經過過採樣的技術和一些其餘的方式獲得了這張曲線,圖上,越高說明這個時間點使用行爲越密集,這麼基本上獲得這麼幾個結果。在一樣的參數狀況下,男同窗天天刷手機很是之多,他在晚上有一個高峯,右上角的女生,刷的比較平均,騰訊的同事只是早上跟晚上,中午基本上不多刷,這樣就能夠選出給用戶 push 的時間,你做爲一個媒體的 APP 你能夠選擇 push 的時間,而不是全部的用戶統一的時間。

如何選擇和展現封面圖片

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

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

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

內容評級

媒體的內容,咱們但願看到的是更多比較高質量的內容。咱們看這兩個內容,左邊是技術類,右邊是金融方面的文章,從排版和格式來看,你們更願意閱讀哪個?更願意閱讀第二個。左邊雖然是技術方面的,右邊的給你閱讀感覺更好,因此它的質量是更高的,這裏須要給內容進行評級。這裏艾媒傳媒的一個數據,2016 年中國手機新聞客戶段用戶對產品的改進建議,其中內容質量佔比很高,有接近一半的用戶他以爲 app 的內容質量很是低,常常給他推送一些質量低的內容。

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

怎麼學習出一個文章的閱讀完成率呢?首先採樣的時候,由於咱們跟用戶無關,但願這個咱們選的內容跟用戶沒有任何關係,由於咱們要拋去個性化推薦的問題。咱們這裏只關注內容的建模,PV 大於 500,這樣能夠幫你洗去不少異常因素,圖像、標題作變換,把圖像和標題做爲佔位符,而後對 word 作一個 word embeding。

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

圖片推薦

圖片的推薦是一個比較寬泛的推薦系統結構,圖中黃色部分就是在線服務的實驗檢索系統,最下面是它的內容和一些流水日誌,而後中間是內容建模、用戶建模,咱們這裏最關注的是綠色的部分,就是一個推薦引擎想給用戶作推薦,確定不是一個推薦,好比說有協同固定推薦、興趣推薦、點擊率預估推薦,這些確定不是一個推薦引擎就夠的,由於一個推薦引擎無法作到多樣性,因此須要多個推薦引擎並行工做。業內今日頭條有 300 多個推薦引擎同時工做,經過流量系統去分流量。若是是圖片的話,更多的是關注怎麼將圖片從底層的 content 檢索出來,由於圖片沒有太多的文字信息,那怎麼經過圖片檢索出相關的文章,相關的內容呢?

這裏咱們看一下在文本怎麼作的。文本特徵能夠作 query,能夠用字、句作搜索引擎。圖像的話,傳統的圖像有一些算子好比 SIFT,也能夠用 query,還有一些能夠經過聚類的方式,PLSA 把文章進行聚類,它須要一些特徵,還能夠經過圖片,也是相似經過前面說的一些特徵作一些分類技術,這樣能夠作到一個召回,我這張圖的 index,這其實都是能夠召回的。

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

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

畫風,就是相似右上的梵高的畫,識別畫面風格的 CNN 是不同的,由於在訓練 CNN 的時候,神經元權重不同,這是兩件事情。好比說給用戶檢索出一個風景的時候,它必定是風景,同時它的畫風相似,拍攝手法相似。咱們分了兩個 CNN 來作,咱們把這兩個 CNN 網絡 LR 以後,造成一個 story,這就是更高層次的抽象,好比心情,相似激動。給用戶推送閱讀,應該避免推薦驚悚的,咱們經過兩個模型作一個 LR 融合,造成一個 story,咱們會把全部驚悚的 story 幫用戶過濾掉。

這是檢索的時候,除了剛纔說的 object 的檢索、style 的檢索,還有兩個融合起來 story 的檢索以外,由於有的內容有簡單的描述,咱們把文本和圖象作了一個融合,就是用 tensorflow 中的 wide&deep 網絡,把傳統的一些特徵,好比說像文本的或者說用戶的一些閱讀興趣的特徵,還有無關的網絡合在一塊兒進行一些檢索,或者進行一些圈定。這裏其實就作了四個 index(object/style/story/text、image),最後實現了一個圖片的推薦。咱們能夠跟用戶推薦它更感興趣的圖片。

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

做者介紹

孫子荀,09 年畢業後從事內核和分佈式系統的開發工做,11 年在百度從事太高性能計算方面的工做。12 年加入騰訊,從事 QQ 羣廣告系統的開發,隨後負責騰訊雲加速的帶寬調度系統的設計研發,得到公司多個業務獎項。14 年開始手 Q 公衆號項目,負責構建公衆號平臺和內容平臺。如今從事個性化閱讀內容方面的處理和挖掘工做。

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

相關文章
相關標籤/搜索