信息流是目前大衆點評除搜索以外的第二大用戶獲取信息的入口,以優質內容來輔助用戶消費決策並引導發現品質生活。整個大衆點評信息流(下文簡稱點評信息流)圍繞個性化推薦去鏈接用戶和信息,把更好的內容推薦給須要的用戶。信息流推薦系統涉及內容挖掘、召回、精排、重排、創意等多層機制和排序。本文主要圍繞創意部分的工做展開,並選取其中重要的文本創意優化作介紹,分爲三個部分:第一部分闡述幾個重點問題,包括創意優化是什麼,爲何作,以及挑戰在哪裏;第二部分講述領域內的應用及技術進展;第三部分介紹咱們創意優化的實踐,最後作個總結。算法
創意是一個寬泛的概念,它做爲一種信息載體對受衆展示,能夠是文本、圖像、視頻等任何單一或多類間的組合,如新聞的標題就是經典的創意載體。而創意優化,做爲一種方法,指在原有基礎上進一步挖掘和激活資源組合方式進而提高資源的價值。在互聯網領域產品中,每每表現爲經過優化創意載體來提高技術指標、業務目標的過程,在信息流中落地重點包括三個方向:網絡
核心目標與推薦問題類似,提高包括點擊率、轉化率在內的通用指標,同時須要兼顧考量產品的閱讀體驗包括內容的導向性等。關於「閱讀體驗」的部分,這裏不做展開。框架
首先文本創意自己爲重要的業務發展賦能。在互聯網下半場,大衆點評平臺(下稱點評平臺)經過內容化去提高用戶停留時長,各種分發內容類型在不停地增長,經過優化創意來提高內容的受衆價值是必由之路。其次,目前不少內容類型還主要依賴運營維護,運營內容自然存在覆蓋少、成本高的問題,沒法徹底承接須要內容化改造的場景。最後,近幾年深度學習在NLP(Natural Language Processing,天然語言處理)的不一樣子領域均取得了重大突破。更重要的是,點評平臺歷經多年,積澱了大量可用的內容數據。從技術層面來講,咱們也有能力提供系統化的文本創意生成的解決方案。dom
對此,咱們從文本創意麪向對象的角度定義了兩類應用形態,分別是面向內容的摘要標題,以及面向商戶的推薦文案與內容化聚合頁。前者主要應用信息流各主要內容場景,後者則主要應用在信息流廣告等內容化場景。這裏提早作下產品的簡單介紹,幫助你們創建一個立體化的感知。ide
最後須要明確的是,咱們作文本創意優化最大的初心,是但願經過創意這個載體顯式地鏈接用戶、商戶和內容。咱們可以知道用戶關注什麼,知道哪些內容說什麼,如何引導用戶看,知道哪些商戶好、好在哪裏,將信息的推薦更進一步。而非爲了生成而生成。函數
文本創意優化,在業務和技術上分別面臨着不一樣的挑戰。首先業務側,啓動創意優化須要兩個基礎前提:性能
其次,在技術層面,業界不一樣的應用都面臨不同的挑戰,而且嘗試和實踐對應的解決方案。對文本創意生成來講,咱們面臨的最大的挑戰包括如下三點:學習
咱們總體的技術方案演進,能夠視做近兩年NLP領域在深度學習推進下發展的一個縮影。因此在展開以前,先談一談整個領域的應用及技術進展。優化
在學界相關領域,文本生成被稱爲NLG,其相關任務目標是根據輸入數據生成天然語言的文本。而咱們在NLP領域使用更多的通常是NLU(Nature Language Understanding 天然語言理解)類任務,如文本分類、命名實體識別等,NLU的目標則是將天然語言文本轉化成結構化數據。NLU和NLG二者表向上是一對相反的過程,但實際上是緊密相連的,甚至目前不少NLU的任務都受到了生成式模型中表示方法的啓發,它們更多隻在最終任務上有所區別。編碼
文本生成也是一個較寬泛的概念,以下圖所示,廣義上只要輸出是天然語言文本的各種任務都屬於這個範疇。但從不一樣的輸入端能夠劃分出多種領域應用,從應用相對成熟的鏈接人和語言的NMT(神經機器翻譯),到2019年初,能續寫短篇故事的GPT2都屬於Text2Text任務。給定結構化數據好比某些信息事件,來生成文本好比賽事新聞的屬於Data2Text類任務,咱們的商戶文案也屬此類。另外還有Image2Text等,這塊也逐漸在出現一些具備必定可用性又讓人眼前一亮的應用,好比各類形式的看圖說話。
文本生成包含文本表示和文本生成兩個關鍵的部分,它們既能夠獨立建模,也能夠經過框架完成端到端的訓練。
文本生成要解決的一個關鍵問題,是根據給定的信息如何生成一段文本句子。這是一個簡單輸入複雜輸出的任務,問題的複雜度太大,至今在準確和泛化上都沒有兼顧的很是好的方法。2014年提出的Seq2Seq Model,是解決這類問題一個很是通用的思路,本質是將輸入句子或其中的詞Token作Embedding後,輸入循環神經網絡中做爲源句的表示,這一部分稱爲Encoder;另外一部分生成端在每個位置一樣經過循環神經網絡,循環輸出對應的Token,這一部分稱爲Decoder。經過兩個循環神經網絡鏈接Encoder和Decoder,能夠將兩個平行表示鏈接起來。
另一個很是重要的,就是Attention機制,其本質思想是獲取兩端的某種權重關係,即在Decoder端生成的詞和Encoder端的某些信息更相關。它也一樣能夠處理多模態的問題,好比Image2Text任務,經過CNN等將圖片作一個關鍵特徵的向量表示,將這個表示輸出到相似的Decoder中去解碼輸出文本,視頻語音等也使用一樣的方式(以下圖所示)。
可見Encoder-Decoder是一個很是通用的框架,它一樣深刻應用到了文本生成的三種主流方法,分別是規劃式、抽取式和生成式,下面看下這幾類方法各自的優劣勢:
目前的主流的評估方法主要基於數據和人工評測。基於數據能夠從不一樣角度衡量和訓練目標文本的相近程度,如基於N-Gram匹配的BLUE和ROUGE等,基於字符編輯距離(Edit Distance)等,以及基於內容Coverage率的Jarcard距離等。基於數據的評測,在機器翻譯等有明確標註的場景下具備很大的意義,這也是機器翻譯領域最早有所突破的重要緣由。但對於咱們創意優化的場景來講,意義並不大,咱們更重要的是優化業務目標,多以線上的實際效果爲導向,並輔以人工評測。
另外,值得一提的是,近兩年也逐漸涌現了不少利用GAN(Generative Adversarial Networks,生成對抗網絡)的相關方法,來解決文本生成泛化性多樣性的問題。有很多思路很是有趣,也值得嘗試,只是GAN對於NLP的文本生成這類離散輸出任務在效果評測指標層面,與傳統的Seq2Seq模型還存在必定的差距,可視爲一類具備潛力的技術方向。
前文提到,在Encoder端包括有些模型在Decoder端都須要對句子進行建模,那如何設計一個比較好的模型作表示,既可讓終端任務完成分類、序列生成,也能夠作語義推理、類似度匹配等等,就是很是重要的一個部分。那在表示方面,整個2018年有兩方面很是重要的工做進展:
該部分介紹從2017年末至今,咱們基於文本生成來進行文本創意優化的一些探索和實踐。
啓動文本生成,首先要了解內容自己,數據的數量和質量對咱們的任務重要性無須贅述,這是一切模型的基礎。目前咱們使用到的數據和大體方法包括:
但這些內容的不一樣特色,也帶來了不一樣的挑戰:
因此,文本創意優化要在業務側落地產生效果,還需應用到NLP領域諸多方向的技術。下圖是抽象的整個文本生成應用的基礎能力模塊,包括用於源和端質量控制的文本質量層,構建Context表示的文本表示層,以及面向業務優化的端到端模型層,其中不少技術應用了公司其餘兄弟團隊包括內容挖掘組、NLP中心、離線計算組的出色成果。如針對負面內容過濾的情感分析,多項針對性的文本分類,針對商戶表示的標籤挖掘等,在這裏特別向他們表示感謝。
雙平臺的內容須要在信息流分發,在創意上最早優化的就是標題,這是用戶僅能看到兩個要素之一(另外一個爲首圖),而咱們超過95%的內容並無原生標題,同時原生標題也存在諸如多樣性差非場景導向等問題,還有二次優化的空間。
可是,有兩點比較大的挑戰,在不一樣任務上具象可能不同。它們的本質並無改變,部分也是業界難點:
對此,咱們經過抽取式和生成式的相結合互補的方式,並在流程和模型結構上着手進行解決。
抽取式方法在用戶內容上有比較明顯的優點:首先控制力極強,對源內容相關性好,改變用戶行文較少,也不容易形成體驗問題,能夠直接在句子級別作端到端優化。對此,咱們把整個標題建模轉變爲一箇中短文本分類的問題,但也沒法規避上文提到兩個大挑戰,具體表如今:
整個抽取式的流程,能夠抽象爲四個環節+一個在線機制:
咱們初版Bi-LSTM+Attention整個結構並不複雜。咱們的輸入層是PreTrain的Word Embedding,通過雙向LSTM給到Attention層,Dropout後全鏈接,套一個交叉熵的Sigmod,輸出判別,但它的意義很是明顯,既能夠對整句序列作雙向語義的建模,同時能夠經過注意力矩陣來對詞級進行加權。這個在線上來看,不管是對體感仍是點擊轉化率都較召回打分的原始版本,有了巨大提高。然後,咱們還在這個Base模型基礎上,嘗試添加過ELMo的Loss,在模型的第一層雙向LSTM進行基於ELMo Loss的Pre Train做爲初始化結果,在線上指標也有小幅的提高。
可是上述這個結構,將中短文本脫離原文獨立建模,顯然沒法更好地兼顧原文受限這個條件。一個表現,就是容易出現「標題黨」、原文不相關等對體驗形成影響的問題。對此,咱們在原文與候選標題結合的表示建模方面,作了很多探索,其中以CNN+Bi-LSTM+Attention的基模型爲表明,但其在相關性建模受原文自己長度的影響較大,並且訓練效率也不理想。
通過一段時間的探索分析,在原文受限問題上,最終既經過深度模型來表徵深層的語義,也輔以更多的特徵工程,如屬性、Topic等挖掘特徵咱們統稱爲Context,來表徵用戶能感知到的淺層信息,「兩條腿走路」才能被更好的學習,這個在文案生成和標題生成的探索中反過來爲抽取式提供了借鑑。
在效率上,咱們總體替換了RNN-LSTM的循環結構,採用了谷歌那時新提出的自注意力的機制,來解決原文表徵訓練效率和長依賴問題。採用這個結構在效果和效率上又有了較大的提高。主要問題是,咱們的Context信息如何更好地建模到Self-Attention的結構中。它與生成式模型結構很是相似,在下文生成式部分有所介紹。
另外,須要說明的一點是,除非有兩個點以上的巨大提高,通常咱們並不會以離線評測指標來評價模型好壞。由於前面提到,咱們的標註數據存在不一樣程度的擾動,並且只是線上預測很小的一個子集,沒法避免的與線上存在必定的Gap,因此咱們更關注的是模型影響的基礎體驗(人工檢測經過率即非Bad Case率),效率表現(訓練預測的時效)最重要的仍是線上實際的業務效果。在咱們這幾個版本的迭代中,這三個方面都分別得到了不一樣程度的優化,尤爲是包括點擊率、總點擊量等在內的業務指標,都累計得到了10%以上的提高。
抽取式標題在包括業務指標和基礎體驗上都獲取了不錯的效果,但仍有明顯的瓶頸。第一,沒有徹底脫離原文,尤爲在大量質量欠優內容下沒法實現創意的二次優化;第二,更好的經過創意這個載體顯式的鏈接用戶、商戶和內容,這個是生成式標題能夠有能力實現的,也是必由之路。
生成式標題,能夠抽象描述爲:在給定上文並在必定受限條件下,預估下個詞的機率的問題。在信息流標題場景,抽取式會面臨的問題生成式所有會繼承,且在受限優化上面臨更大的挑戰:
在表示上,前面已經提到,咱們經歷過目標單獨建模和結合原文建模的過程,主要緣由仍是在於僅針對Target的理解去構建Context銜接,很是容易出現原文相關性問題。因此咱們在描述的泛化性方向也作了很多的嘗試,好比儘量地描述廣而泛主題。諸如「魔都是輕易俘獲人心的聚餐勝地」,由於只面向上海的商戶,內容符合聚餐主題,泛化能力很強,但仍然不能做爲一個普適的方案解決問題。
下圖爲咱們一個有初步成效的RNN-Base的Seq2Seq模型的總體結構。Encoder端使用的是,包括前面提到的主題(包括商戶信息)表示以及原文的雙向語義表示,兩部分的拼接構成的Context,輸出給注意力層。Decoder端生成文本時,經過注意力機制學習主題和原文表示的權重關係,這個結構也完整應用到了文案生成,其中控制結構會在文案中展開介紹。
在序列建模上,咱們經歷了一個從RNN到自注意力的過程。簡單介紹下,序列建模一個核心要點是如何建模序列間的長依賴關係。影響它的重要因素是,信號在網絡正向和反向計算中傳遞的長度(也就是計算次數),較長的依賴關係消失越嚴重。而在自注意力結構中,每一層都直接與前一層的全部位置直接鏈接,所以依賴長度均爲O(1),最大程度保留了序列間的依賴關係。
能夠看到,Encoder包括兩部分,一部分是Source原文,一部分是基於原文和商戶理解的主題Context,二者共同組成。爲此,咱們借鑑了NMT的一部分研究思想,調整了Transformer的結構,在原結構上額外引入了Context Encoder,而且在Encoder和Decoder端加入了Context的Attention層,來強化模型捕捉Context信息的能力。
咱們在生成式方向探索過程當中,對低質內容的標題生成,在線上得到了接近10%的效果提高,但仍有不少值得進一步的嘗試和深挖的空間。
在咱們的場景中,有兩種Combine的思路,一個是以業務效果爲導向的偏工程化方法,另一個是咱們正在探索的一種Copy方法。
工程化的思想很是簡潔,在推薦問題上擴充候選,是提高效果的一個可行途徑,那生成內容即做爲新增的候選集之一,參與總體的預估排序。這個方法能保證最終線上效果不會是負向的,實際上也取得了必定的提高。
另外一種方法也是學業界研究的子方向之一,即Copy機制,咱們也在作重點探索,這裏僅做思路的介紹,再也不進行展開。
使用Copy機制的原始目的,是爲了解決生成式的OOV(超出詞表範圍)問題。但對於咱們的場景來講,大部分的「內容-標題」對數據是來自於抽取式,即咱們不少標題數據,其實參考了原文。那如何繼承這個參考機制,針對業務目標學習什麼時候Copy以及Copy什麼,來更優雅地發揮生成式的優點,就是咱們探索Copy方法的初衷。咱們的方向是對Copy和Generate機率作獨立建模,其中重點解決在受限狀況下的「Where To Point」問題。
咱們知道生成式模型其本質是一個Language Model,它的訓練目標是最小化Word級別的交叉熵Loss,而最終咱們的須要評價的實際上是業務相關的句子級別點擊率,這就致使了訓練目標和業務指標不一致。
解決這個問題,在咱們的場景中有三個可行的方向,第一是在Context中顯式地標註抽取式模型的Label,讓模型學習到二者的差別;第二是在預測Decoder的Beam Search計算機率的同時,添加一個打分控制函數;第三則是在訓練的Decoder中,創建一個全局損失函數參與訓練,相似於NMT中增長的Coverage Loss。
考慮到穩定性和實現成本,咱們最終嘗試了第一和第二種方式,其中第二種方式仍是從商戶文案遷移過來的,也會在下文進行介紹。在線上,這個嘗試並無在Combine的基礎上取得更好的效果,但一樣值得更加深刻的探索。
最後,介紹一下前面提到過的標題E&E(Explore and Exploit,探索與利用)機制,用來持續獲取標註數據,並提高在線自動糾錯的能力。咱們採用了一種貪心的Epsilon Greedy策略,並作了一點修改,相似經典的Epsilon算法,區別是引入創意狀態,根據狀態將Epsilon分紅多級。目的是將比較好的創意能夠分配給較大機率的流量,而不是均分,差的就淘汰,以此來提高效率。在初期優化階段,這種方式發揮了很大的做用。
具體咱們根據標題和圖片的歷史表現和默認相比,將狀態分紅7檔,從上到下效果表現依次遞減,流量分配比例也依次下降,這樣能夠保證整個系統在樣本有噪音的狀況下實現線上糾偏。
文案做爲一個常見的創意形式,在O2O以商戶爲主要載體的場景下有三點須要:第一,賦予商戶之內容調性,豐富創意;第二,經過內容化擴展投放的場景;最後,賦能平臺的內容化升級,主要業務目標包括點擊率、頁面穿透率等等。
文案生成和標題生成可以通用總體的生成模型框架,能夠歸爲Data2Text類任務,最大區別是由文案的載體"商戶"所決定。不一樣於內容,準確性的要求低不少,複雜度也大大下降,但同時爲泛化能力提出了更高的要求,也帶來了與內容生成不一樣的問題。首先在表示上,對商戶的結構化理解變得尤爲關鍵;其次在控制上,有D2T任務特有且很是重要的控制要求。前文也提到了生成一段文本歷來不是難點,重要的是如何按照不一樣要求控制Seq生成的同時,保證很好的泛化性。下文也會分別介紹賣點控制、風格控制、多樣性控制控制等幾個控制方法。實現這樣的控制,也有不少不一樣的思路。
商戶的表示抽象爲Context,以下圖中所示,主要分兩部分。
第一部分來源於商戶的自身理解,一部分則來源於目標文本,兩部分有必定交集。其中商戶理解的數據爲賣點或者Topic,在初期,爲了挖掘商戶賣點和Topic,咱們主要使用成本較低、無需標註的LDA。可是它的準確性相對不可控,同時對產出的賣點主題仍須要進行人工的選擇,以便做爲新的標註,輔助後續擴展有監督的任務。咱們經過Key和Value兩個Field,來對賣點和主題進行共同表達(也存在不少只有Value的狀況),好比下圖這個商戶「菜品」是個Key,「雪蟹」是Value,「約會」則僅是Value。隨着時間的推移,後續咱們逐漸利用平臺商戶標籤和圖譜信息,來擴展商戶賣點的覆蓋,以此豐富咱們的輸入信息。該部分在內容挖掘和NLP知識圖譜的相關介紹中都有涉及,這裏再也不進行展開。
第二部分目標文原本源,特地添加這部分進入Context,主要有三方面緣由:
控制,在解碼端表現爲兩類,一類咱們稱之爲Hard Constrained(強控制),即在數據端給定(或沒有給定)的信息,必定要在解碼端進行(或不進行)相應描述,這個適用於地域類目等不能出錯的信息。好比這家商戶在上海,生成時不能出現除上海之外的地域信息,不然容易形成歧義。另外一類稱之爲Soft Constrained(弱控制),不一樣於NMT問題,在文案生成上即使是徹底相同的輸入,不一樣的輸出都是容許的,好比同一商戶,最終的文案能夠選擇不一樣的賣點去描述不一樣的內容。
這類同屬受限優化的問題,前文提到過有兩個思路方向:第一,經過構建機制來讓模型本身學習到目標;第二,在Decoder的Beam Search階段動態地加入所需的控制目標。咱們使用二者相結合的方法,來完成最終的不一樣控制的實現。
咱們在預測Beam Search階段,除了計算模型機率外,額外增長下圖中綠色部分的Fuction。輸入爲以前已生成的序列,具體計算邏輯取決於控制目標,能夠自由實現。
下面簡單介紹兩個重要的控制實現:
多樣性,在文案生成上是一個比較重要和廣泛的問題,尤爲對於同一個店鋪、同一個賣點或主題同時生成N條內容的聚合頁來講,更爲突出。本質緣由是,在解碼預測Beam Search時永遠選擇機率最大的序列,並不考慮多樣性。可是若是預測時採用Decoder機率Random Search的方法,則在通順度上會存在比較大的問題。
對此,咱們直接對全局結果進行優化,在預測時把一個聚合頁Context放到同一個batch中,batch_size即爲文案條數,對已經生成序列上進行實體重複檢測和n-gram重複檢測,將檢測判重的加一個懲罰性打分,這個簡單的思想已經能很是好的解決多樣性問題。
目前,不少搜索推薦等排序優化場景,都會將創意信息做爲特徵工程一部分添加進精排或召回模型。那若是把創意優化近似爲一個內容級創意排序問題,也能夠無縫銜接經常使用的Wide&Deep、DNN、FNN等CTR預估模型。可是這以前,須要明確一點很是重要的問題,即它與推薦精排模型的差別,它們之間甚至可能會相互影響,對此,提供下咱們的思考。
最後,咱們回到用戶視角,當用戶在瀏覽信息流時,其實看到的只有創意自己(標題、圖片、做者等信息),但用戶卻能從中感知到背後的諸多隱含信息,也就是CTR預估中的重要內容/商戶類特徵,諸如類目、場景、商戶屬性等。這個現象背後的本質在於,創意能夠表徵不少高階的結構化信息。
基於這一點,在創意優化的特徵工程上,方向就很明確了:強化User/Context,弱化Item/POI,經過創意表徵,來間接學習到弱化的信息從而實現創意層面的最優排序。該部分工做不只僅涉及到文本,在本文中再也不展開。
動態創意爲文本生成提供了全新的空間,也提出了更高的要求。動態創意提高受衆價值,不只僅只能經過排序來實現,在正篇介紹的最後部分,咱們拋出一個可能性的問題,供各位同行和同窗一塊兒思考。也但願能看到更多業界的方案和實踐,共同進步。
整個2018年,大衆點評信息流在覈心指標上取得了顯著的突破。創意優化做爲其中的一部分,在一些方面進行了不少探索,也在效果指標上取得了較爲顯著的收益。不過,將來的突破,更加任重而道遠。
2018年至2019年初,NLP的各個子領域涌現了很是多使人驚喜的成果,而且這些成果已經落地到業界實踐上。這是一個很是好的趨勢,也預示着在應用層面會有愈來愈多的突破。好比2019年初,可以續寫短篇小說的GPT2問世,雖然它真實的泛化能力還未可知,但讓咱們真切看到了在內容受限下高質量內容生成的可能性。
最後,回到初心,咱們但願經過創意的載體顯式地鏈接用戶、商戶和內容。咱們能瞭解用戶關注什麼,知道某些內容表達什麼,獲知哪些商戶好,好在哪裏,將信息的推薦更進一步。