當前位置:
首頁 > 最新 > 回顧·AI在OPPO個性化推薦中的應用

回顧·AI在OPPO個性化推薦中的應用

DataFun社區

大數據、演算法的交流學習平台 圈內人都在關注

本文根據OPPO高洪濤老師在OPPO&DataFun Talk演算法架構系列活動「AI在OPPO業務場景下的應用實踐」中所分享的《AI在OPPO個性化推薦中的應用》編輯整理而成,在未改變原意的基礎上稍做修改。

本次分享將從上面四個方面介紹,首先介紹一下最近AI進展概述,然後簡單介紹OPPO在個性化推薦業務和框架性的背景知識,第三部分將介紹一下在推薦中比較重要的一個技術「語義理解」及我們的做法,最後介紹遊戲推薦中強化學習的一個實踐情況。

首先介紹下我自己對AI發展的理解,AI它不是一個技術辭彙,更像一個廣告辭彙,它在不同階段是有不同含義的。結合行業專家經驗將AI發展總結為下面四個發展階段:前期階段計算機各方面做一些定理證明等應用;第二個階段知識處理階段,比如大量的知識工程、專家系統;第三個階段就是90年代到10年代,這是真正意義的演算法和機器學習所做的工作。這個階段做演算法的主要在做特徵工程,而機器學習演算法相對比較成熟;從12年是以深度學習在圖像識別上的一個重大突破,一個標誌性的事件就是AlexNet在圖像識別上的重大突破為標誌,AI引起了工業界或者是媒體一個巨大關注。我將其總結為數據時代,這是以大數據為基礎的進展,這一階段深度學習是其代表性技術。Google的AlphaGo將強化學習帶進人們的視野。還有強化學習不僅在下棋方面、工業控制等應用很大,在互聯網方面不管是搜索還是推薦都有很多嘗試。第三個經常被提起的技術就是語義理解,但是它並沒有因為第四個時代而取得本質性的突破。後面我會以案例的形式講一講我們在這三個方面所做的工作。

第二個階段簡單介紹下OPPO個性化推薦方面的工作。我們的個性化推薦平台是一個通用推薦平台,支持OPPO很多業務,包括應用商店、遊戲運營、定向廣告、信息流推薦、個性化push等。這些業務首先具備一個平台性,不同業務對推薦的目標也是不同的,因此也是一個多目標的問題,有的是以點擊率(CTR)為目標,有些是以用戶留存為目標,比如遊戲,他下載遊戲會不會玩,他在遊戲中的付費情況。信息流需要實時化,因此在中間有一個實時推薦引擎,另一塊對實時性不高的就進行個性化Push,但是個性化Push對可解釋性要求比較高。運營人員可能會選一些標籤,我的內容就要推給這些標籤的人,比如定向廣告商要求就要推薦給李易峰的粉絲,他們都需要這樣明確的要求,對實時性要求不是很高。

我們做推薦,離不開數據,OPPO數據量也非常大,後續講AI也是針對這些數據做一些理解。簡單介紹一下我們的數據,有結構化的數據,用戶在API使用的一些行為統計、手機信息,最能體現AI的是在文本數據這一塊,作為一個手機廠商,OPPO擁有全網的各種類型的文本數據,包括外部訪問搜索的query,以及在社區等各種信息流的發帖及評論。還有一些圖片和語音數據,今天分享沒涉及到相關技術,就不再贅述。

接下來簡單列一下做推薦需要做的一些工作,做推薦首先要對用戶數據提取特徵。在文本這一塊是相對複雜的,需要做文本類別的識別,可能有一級二級等不同層次更加細粒度的識別還有關鍵詞、實體詞的提取。有了特徵以後要做召回,尤其在信息流有千萬級item要做召回,找一個比較小的集合。這裡有很多策略,今天重點結合AI講解相關性召回、語義召回方面的工作。召回後做排序,比如CTR預估。然而有很多是多目標的,有些目標是長期非實時反饋的,因此也做了一些探索,後續將以遊戲方面基於強化學習方面的探索。

首先主要講的是推薦在語義理解方面的工作,語義理解就我理解也不是一個技術辭彙,與AI一樣也像一個廣告詞。基於其技術理解我認為語義理解有這幾類問題:分類問題、匹配、信息提取(比如語句、文檔中提取實體詞;還有短息信息提取實體與目的,比如「訂一張去北京的機票」,要提取「北京」是目的地,事件是訂機票)以及生成、推理這五類問題。語義理解相對於AI在圖像識別、語音識別由於深度學習的出現有巨大的提升而言並沒有很大的提升,它比較難,主要難在尤其在文本方面,每一個問題都涉及很大的演算法量,每一步都可能有不同演算法出現。像圖像識別你輸入一個圖片用多層網路做各種特徵提取,最終打一個標籤,對於文本,雖然深度學習也在嘗試這麼做但並沒有比較好的效果,下圖列舉了幾個關鍵技術和步驟。深度學習出現後確實會有有一些提升,主要是在向量化表示這一塊,以前詞就是一個詞,頂多一個詞綴模型,後來深度學習可以將其壓縮用embedding表示,這是一個比較重要的技術,當然還有自動翻譯寫文章這些特殊應用,在推薦里應用不多。下面會以文本分類和相關性圖譜為例來講一下我們的工作。

文本標籤這一塊,OPPO由於全網在文本這類數據很多,訪問的各種數據都可能有,類型多、隱喻多、標題黨等問題,很多意思不是字面表示的。如何捕捉這些本質意思是很有挑戰的,甚至是不可完成的,但是我們針對文本類型要做文本標籤有這幾類方法,並不是單一演算法能實現,它是一個系統工程。有基於分類模型做特徵分類;有的是基於關鍵詞和規則,直接提取關鍵詞,如包含劉德華,劉德華屬於娛樂明星,就將這個文本打成娛樂明星的標籤;還有基於文本相似度,有些文本已經打上標籤,新來文本直接用相似度來找相同的標籤;有的是基於文本聚類,先做一個聚類,然後基於人工對聚類結果篩選和打上標籤;有些事結合URL,比如有些小說、漫畫,只要是來自這個網站(起點中文網),它基本都是關於小說的。因此先根據url判斷它是屬於小說,然後再細分它屬於什麼小說。下面主要基於深度學習方面對分類模型的探索。

文本分類傳統的方法如下圖所示,就是做特徵工程,對文本進行分詞、詞性標註,然後提取實體詞、關鍵詞,有時甚至要做聚類分析,提取分類決策樹,然後用svm或邏輯回歸做分類,這種方法的問題是把詞當一個字元,並不能解釋語義,深度學習出現後在語義表達上有很大突破,可以將一個詞用一個向量表示,每一個向量在某一個維度可表示一個詞在上下文關係的值,結合整個維度就可以表示詞的語義。相似的詞就會在空間距離上很近,Word2vec發明後對分類演算法有很大改進,Facebook提出的fastText就是直接對一個文本提取出每一個詞向量做一個平均,然後直接用softmax做分類,大多數情況不錯,缺點是沒有考慮詞序,而文本詞的先後順序可能是包含巨大信息量的。後面比如CNN、RNN都發明了各種演算法,像CNN一個改進就是它可以用不同窗口滑動,形成一個ngram特徵,捕捉局部相關性捕,缺陷是窗口固定,而RNN可以捕捉變長文本上下文信息。後面會簡單介紹一下我們用到的CNN和RNN模型。

CNN主要用的是TextCNN演算法,如下圖所示,左邊把一個文本中、句子中的詞轉化為一個embedding,得到一個矩陣,矩陣高度是詞的個數,寬度是每個詞embedding的維度。用三種不同窗口的大小,兩個filter去卷積這個矩陣,然後用pooling機制提取最顯著特徵,將這些特徵輸入softmax函數,最後得到分類結果。不足是filter_size是固定的,設計時可以用不同filter_size,可以每四個詞或三個詞,這樣不同的filter_size相當於利用不同的ngram特徵。

RNN就可以用不同的窗口,目前它也有很多演算法。利用TextRNN,還有一個Attention機制,有一篇論文論述所有的IRP問題都是Attention,可以體現Attention對模型的應用。下面這個例子是對長文做分類的,分為兩層,首先對長文每個句子針對詞級做特徵向量,捕捉不同句子中詞的Attention權重。第一層結束會得到每一個詞的embedding表示,第二層中一篇文章可能包含很多句子,每個句子又有一個embedding權重,最後得到整篇文章的分類效果。而我們針對短文本,只用到詞級Attention機制。

下圖有一個實際的分類效果,我們對互聯網文本有一個兩級分類機制,圖中只截取一部分。圖中可以看到用這類模型確實比傳統模型(磁帶模型+softmax)有明顯的提升。我用三個小例子展示不同的方法能捕捉到的不同特徵,第一個例子就是「你在生孩時你老公在幹嘛,看完第一條就淚目」這其實是隱喻出軌,標題是內容可能不是,如果出軌是一個社會標籤。但是LR包括CNN在分類時將生孩子當做關鍵詞,當做孕產類別,而RNN包含很多模型,包括生孩子還有類目等信息,會捕捉更長的上下文信息,分類比較正確。第二個例子「兩個女兒一個剃光頭,一個翹課去美甲,天后家教遭網友質疑」,這個天后肯定是娛樂方面的,但是有的判斷成美容,有的判斷成社會的,或者娛樂的。「美甲」肯定是美容的。第三個是「多年前小女孩救了一個即將餓死的狼,幾年後風雲突變」,這個屬於一個奇聞異事,但是全部判斷成社會的。這種需要要大量的知識去判斷,因為不可能小女孩救狼,這種需要大量人類背景知識,而這種知識很難去量化成計算機可以識別的信息。目前最後的模型也很難做到,因此對於語義理解難就難在人類的背景知識有很多很難去量化,結構化成計算機可以理解的知識。這個難題有一個解決的方法就是建知識圖譜。

下一步工作就是相關性圖譜,沒有建知識圖譜是因為還沒有像知識圖譜這樣完善,下面講一下我們在相關性圖譜方面的應用背景和方法。其應用也比較廣泛,比如信息流推薦中的召回中的相關性召回,用戶如果看了一篇劉德華的文章,那麼劉德華演過的電影或者他妻子的信息可能也會感興趣,所以相關性召回你需要找出與劉德華相關的實體信息有哪些。還有個性化push,一個廣告主要發給李易峰的粉絲,那你得知道李易峰粉絲都喜歡那些東西,當然這種會有很多其他演算法。通過搜索李易峰演過什麼電影、電視劇,參加什麼綜藝做關鍵詞匹配,這種強相關性可解釋性也很強。找相關性詞也有不同演算法,像LDA主題模型我們也嘗試過,下圖右邊左邊是LDA結果,他確實可以把同一主題的詞聚類到一起,但是缺點是雜訊很大,粒度難控制,主題到底要聚類到何種粒度很難控制。Word2Vec也能提取相關詞,但是偏重於語法結構,所以與劉德華相關的都是和他同時代的影星,沒有他演過的電影。基於這我們在相關性圖譜做了很多嘗試。

下圖是我們建知識圖譜的工作。目前很多網站的數據都是結構化的,直接爬取做些簡單處理就能滿足實際中大部分需求,因此我們也爬取了很多垂直網站、百科網站的信息,這個工作可以很快完成。但是緊接著就會發現還有很多關係需要從非結構化的文本做關係提取,提取的實體還要做實體連接(與劉德華和華仔是一個是實體)映射起來,關係對齊有些關係其實也不一樣。今天主要講一下在關係提取方面的工作,關係提取方法很多,有有監督、無監督,關係提取的難點就是一個句子有兩個實體,需要判斷下這兩個實體到底有什麼關係,這其實是一個分類問題。現在有一個流行的方法叫遠程監督,其實也是有監督,只是在訓練樣本的構造上會有一些啟發式的方法來構造。我們也主要在遠程監督方面做了一些探索。

遠程監督一個基本思想就是:我們通過結構化信息已經提取出一大批,兩個實體加關係就構成一個三元組,遠程監督思想就是我用E1和E2去語句中匹配,如果匹配到就默認關係是R。當然假設太強,很多並不符合,比如「鄧超英語太火,孫儷都忍不住發文調侃」,雖然他們確實是夫妻關係,但是並不是描述夫妻,如果你將這個例子當做一個夫妻的正樣本,其實是一個錯誤樣本。

基於上面這個問題我們也做了很多探索,首先還是遠程監督,篩選出很多候選的正樣本,負樣本用互斥關係。比如你要訓練一個識別夫妻關係的模型,把明確不是夫妻關係的當做負例。前面有些很多正例是錯誤的,我們用啟發式規則,人工觀察一些數據去設置一些規則,比如一對實體在句子中的距離太遠就作為負例,或者一對實體還包含其他實體也歸為負例等,這些規則也不是完全基於規則,也會基於演算法自動擴展這些規則。另外一種方法就是關鍵詞過濾,針對同一類關係的樣本,統計實體對左、中、右的名詞token,人工篩選構造與夫妻關係強相關性的詞庫,用詞庫對第一步遠程監督結果的實體對去做過濾。

下面是列舉的樣例數據,如林心如、霍建華的例子「林心如與老公霍建華合作的第一部作品」這肯定是一個正例,還有「聶力其丈夫為上將丁衡高」這也是正例。負例如「通過梅艷芳和張學友合唱歌曲」這肯定不是夫妻關係,還有謝賢和謝霆鋒也不是夫妻關係。第三個表是錯誤樣本,就是以上面的規則得出的結果也是錯的,比如周冬齊和林永健是夫妻關係,但是上面的句子並不能體現夫妻關係,其實應該標為負例也被標成正例,下面的例子也是一樣。這類是需要不停增加規則優化迭代。

前面講如何獲取正負樣本,有了樣本就依據正負樣本做關係分類。這些分類的演算法就是常規演算法,首先對所有樣本抽取實體對,然後提取特徵,也是用的常規方法,比如提取類別詞、上下文等一些特徵,模型也是用的LR、svm等。下面是一個例子,對一個輸入要提取特徵,首先提取候選對,比如「馬伊琍與首次當導演的老公文章合演電影《小爸爸》」,這裡面兩個實體,判斷馬伊琍和文章是不是實體關係,然後提取特徵,提取特徵之前需要分詞、實體標註(標註那些是實體名),接下來是模型的訓練和推理,然後做預測,最後得出馬伊琍和文章夫妻關係的一個概率。人工去選擇這些規則是不合實際的,有很多方法可以輔助自動擴展,例如句中出現「E_1和E_2結婚」,則(E_1,E_2)得到正標註。根據對「和」和「結婚」等token的擴展,我們可以得到「E_1與E_2結婚」、「E_1和E_2婚後」、「E_1和E_2的婚禮」等類似應該標註為正的樣本。

接下來講一下在強化學習方面的探索,強化學習的一個基本思想:上面是一個Agent,類似一個推薦引擎,對這種狀態通過一定策略轉換函數得到一個action,然後再environment里執行,反饋給用戶。他點了沒點,點了之後下載遊戲玩了沒有,根據這些行為設置一些Reward獎勵函數,反饋給agent用於優化策略函數,對於遊戲Reward函數對設計效果影響很大,對於遊戲Reward涉及到點擊一下一分,次日點擊2分,還有7日留存等等或者依據付費額度進行reward,如果Reward設計不好整個過程都不會收斂。學習演算法是policy gradients,針對Reward是連續值,action是一個參數性表達方式。

下面是深度學習探索的一些效果,目標不光要點擊率好還要後續用戶留存,反饋方面,留存和付費:次日反饋,周統計反饋,月統計反饋,每次預測是需要試錯:Trail-and-error search。因此我們選擇強化學習,最開始我們用的是邏輯回歸,更加傾向推薦單機遊戲,但不符合業務目標。後來採用LR +用戶興趣+留存和付費特徵,這樣更加推薦付費遊戲、網遊,單機遊戲很難推薦,容易造成用戶流失。後來結合強化學習能更準確捕捉用戶需求各類用戶體驗都有提升,在CTR和付費方面都有提升。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 DataFunTalk 的精彩文章:

TAG:DataFunTalk |