MIND簡介
個性化新聞推薦技術是諸多在線新聞網(wǎng)站和應用的關鍵技術,可以提升用戶的新聞閱讀體驗并減輕信息過載。目前,許多有關新聞推薦的研究是在私有數(shù)據(jù)集上開展的,而已有的公開數(shù)據(jù)集往往規(guī)模較小。高質(zhì)量基準數(shù)據(jù)集的缺乏限制了新聞推薦領域的研究進展。因此,微軟亞洲研究院聯(lián)合微軟新聞產(chǎn)品團隊在 ACL 2020上發(fā)布了一個大規(guī)模的英文新聞推薦數(shù)據(jù)集 MIcrosoft News Dataset (MIND[1]),并于2020年7月-9月在condalab平臺舉辦了MIND新聞推薦比賽。比賽吸引了來自加拿大、法國、韓國等全球各地的技術團隊,最終來自搜狗搜索的隊伍以AUC0.7131獲得比賽冠軍。我們也在賽后開源了比賽過程中的代碼[2]。
非常值得贊許的是賽后微軟繼續(xù)開放了MIND比賽系統(tǒng)允許提交測試結(jié)果并實時更新排行榜[3]。我們在近期提交了新的結(jié)果,相對比賽結(jié)果有了進一步提升,在截止到2021-01-04的榜單以AUC0.7187的成績排在第一位。
希望有更多的同學能參與到MIND這個高質(zhì)量的新聞推薦數(shù)據(jù)集評測,目前的榜單成績?nèi)匀挥泻艽蟮奶嵘臻g。(個人覺得MIND真的是非常好的數(shù)據(jù)集,很奇怪并沒有引起特別大的業(yè)界關注,也許是因為比賽放到了codalab平臺而不是社區(qū)及分享更加完善的kaggle平臺)。
新聞推薦簡介
這里新聞推薦主要指基于用戶的點擊歷史,預測用戶對未來展現(xiàn)的新聞點擊概率從而用于指導對于展現(xiàn)給用戶的召回新聞排序。新聞推薦是一個經(jīng)典的推薦排序問題,主要面臨的困難包括新聞和用戶的有效建模,新聞及用戶冷啟動等等問題。
MIND數(shù)據(jù)分析及處理
MIND數(shù)據(jù)集是從六周內(nèi) Microsoft News 用戶的匿名化新聞點擊記錄中構(gòu)建的,它包含16萬多條新聞條目,1500余萬次展示記錄,以及來自100萬匿名用戶的2400余萬次點擊行為。在 MIND 數(shù)據(jù)集中,每個新聞條目都具有豐富的文本信息,例如標題、摘要、正文、類別和實體。
下面介紹MIND數(shù)據(jù)的特點及處理策略:
ID失效
MIND數(shù)據(jù)是來自于工業(yè)界真實的點擊數(shù)據(jù)但是和傳統(tǒng)的工業(yè)界實際的推薦系統(tǒng)使用的數(shù)據(jù)還是有較大的差異性,這種差異主要來自定位的不同,MIND更加強調(diào)推薦算法的泛化性,而實際工業(yè)界強調(diào)時效性實用性,因此工業(yè)界推薦系統(tǒng)最重要的特征往往是ID特征特別是docid特征,工業(yè)界的模型特別是ID對應的embedding基本也是實時快速更新的。
但對應MIND這個數(shù)據(jù)ID特征依然存在但不再是最重要的特征,甚至絕大部分的參賽隊伍沒有使用ID特征,這使得MIND數(shù)據(jù)更像是一個純NLP比賽數(shù)據(jù)。為什么?這主要來自于Dev和Test數(shù)據(jù)的差異。
Info | Dev | Test |
---|---|---|
新用戶 | 15.3% | 22.1% |
新文檔 | 32.3% | 87.5% |
MIND數(shù)據(jù)的訓練數(shù)據(jù)是5周的點擊日志,除去最后一天作為Dev數(shù)據(jù),而Test數(shù)據(jù)是要對第6周數(shù)據(jù)做預測。
由于新聞的時效性非常強,所以顯然未來一周中的新文檔的占比可以預見是非常多的(87.5%)。
由于這樣的數(shù)據(jù)特點,因此主要依賴的ID的模型顯然是失效的,傳統(tǒng)的gbdt模型也不太適用這個數(shù)據(jù)。 這個數(shù)據(jù)的重點是如何能更好的對新聞內(nèi)容建模。
這樣的Dev和Test的劃分,也帶來了本地Dev驗證和提交Test驗證的不一致性,為了消除這個不一致性,如果在訓練中使用了docid特征需要注意在驗證的時候Mask掉92%(保持新文檔比例和Test一致)或者干脆Mask掉全部的docid,當做UNK處理。
在比賽前期這個策略非常有效基本確保了驗證和測試的一致性,但是比賽后期模型分數(shù)相對較高的情況下還是發(fā)現(xiàn)Dev和Test有較大不一致性,比如引入刷次(impression)內(nèi)部的特征在Dev數(shù)據(jù)提升非常大但是在Test無效,加大正樣本權(quán)重從1.0到4.0也能大幅度提升Dev AUC但是同樣在Test無效。
因此更進一步的也許自行重新劃分Train/Dev為4周數(shù)據(jù)訓練第5周整周做Dev可以更好確保的Dev和Test的一致性,由于時間原因筆者沒有做這個實驗有興趣的同學可以測試一下。
樣本不均衡的處理
MIND數(shù)據(jù)的另外一個重要特點是類別不均衡,正樣本率很低只有4%。
處理類別不均衡的樣本有很多策略,比如
正樣本加權(quán)
正樣本過采樣
負樣本降采樣
等等,這里考慮到訓練樣本量非常大,模型計算較為耗時,綜合多種因素和實驗結(jié)果我們采用了無放回的負樣本隨機采樣,將原始訓練數(shù)據(jù)的負樣本劃分成5個部分,配合全部的正樣本構(gòu)造了5個不同訓練數(shù)據(jù)集,Dataset0-4,每個數(shù)據(jù)集的正樣本率約為16.5%。
這樣我們的單模型訓練只基于Dataset0實驗,這極大的降低了模型訓練時間(不使用bert只需要45-60分鐘完成單模型訓練并在不使用Dev數(shù)據(jù)的前提下達到Test AUC 0.7074,而使用bert-tiny的模型可以在大約7-8個小時完成訓練),同時提交結(jié)果顯示相對使用全量訓練數(shù)據(jù),降采樣數(shù)據(jù)訓練的單模型的效果并沒有明顯下降。
而當需要最佳榜單成績的時候我們采用了同樣策略針對Train+Dev數(shù)據(jù)整體構(gòu)造5個數(shù)據(jù)集,并且并行訓練5個基于不同Dataset的模型,將結(jié)果平均作為最終結(jié)果。實驗表明訓練數(shù)據(jù)多樣性帶來的模型集成收益非常明顯。
單模型與集成模型的定義
單模型:基于Dataset0(1/5負樣本+全部正樣本,不包含Dev數(shù)據(jù))訓練的單一模型。
集成模型:基于Dataset0-4(包含Dev數(shù)據(jù))5份數(shù)據(jù)訓練的5個模型結(jié)果的平均。
模型結(jié)構(gòu)
我們采用了經(jīng)典的推薦系統(tǒng)中的精排模型架構(gòu),而沒有采用官方基線模型提供的各種基于雙塔向量匹配的模型結(jié)構(gòu)(NRMS,NAML等等)。
我們認為雙塔結(jié)構(gòu)更加適合召回階段,因為新聞和用戶分別建模向量雖然快速靈活但是由于其分開獨立建模缺乏前期交互,整體效果一般是不如完整的所有特征統(tǒng)一交互建模的方式。
我們使用的結(jié)構(gòu)基本和Facebook提出的DLRM模型結(jié)構(gòu)一致,與DLRM只用到特征交叉不同,考慮到特征組不是特別多,這里同時采用特征交叉和特征合并兩種組合方式,保證MLP層的輸入有足夠的信息量(當然也可以考慮引入更多組合信息如max pooling,attention pooling,self attention pooling等等)。
在對應對具體文本建模的時候,我們采用了基于glove預訓練的詞向量,文本分詞采用了bert bpe切詞器。
我們針對ID表示的向量采用了簡單的自注意力(attention pooling)方式建模,而針對復雜文本如正文,標題,摘要采用了DIN attention pooling的方式,以便更好的動態(tài)建模當前新聞和用戶閱讀歷史新聞的相關性。
單特征重要性分析
通過驗證集合來看文本正文是最重要的信息,有點出乎意料是不是,最重要的特征是正文而不是標題。
整體特征重要性順序依次是:正文,標題,摘要,類別,實體,ID。
ID特征的重要性
在比賽中我們和其他隊伍的一個重要區(qū)別是,其他隊伍大都基本基于官方基線做的改進,并沒有使用ID特征,而我們在訓練中使用了ID特征。
在驗證中Mask掉了ID特征來保證驗證和Test的一致性,在Test的時候我們保留在訓練中出現(xiàn)的docid而mask掉了其他docid。
盡管Test的有效docid比例非常之少,但是我們得到一個很重要的結(jié)論,就是訓練數(shù)據(jù)中的docid可以幫助更好的進行整體建模,ID特征和文本特征的交互能夠幫助學習得到更好的文本表示。
Single Model | Test AUC |
---|---|
No ID | 0.6988 |
With ID | 0.7074 |
Bert Encoder
顯然單純的詞向量模型在NLP相關的競賽中已經(jīng)是屬于上古時代了,現(xiàn)在是屬于bert的時代,但是MIND這個數(shù)據(jù)由于需要對用戶歷史新聞的正文,標題,摘要建模,假設取top50的歷史這個計算量是非常巨大的,因此大的bert模型并不是非常實用。
在比賽過程中我沒有采用bert作為encoder。賽后我嘗試使用小的bert模型比如bert-tiny,在經(jīng)過MIND語料continue train 語言模型之后,作為文本encoder。
實驗結(jié)果似乎相對詞向量優(yōu)勢也并不是很明顯(后面的模型迭代部分會貼出實驗結(jié)果),當然這個原因可能是多方面包括參數(shù)的調(diào)整(特別的比如bert模型finetune對于學習率異常敏感)以及bert-tiny本身的表示能力不夠強大,再或者和推薦數(shù)據(jù)特點有關等等需要更進一步的分析。
我相信這部分顯然還可以做的更好,也許目前榜單第二第三的UNBERT和UniUM在這方面做的更好(猜測使用UniLM)期待后續(xù)有機會交流以找到更好的bert打開方式。
盡管沒有取得特別驚艷的單模型效果,bert模型依然帶來了很好的模型多樣性,這幫助我們?nèi)〉昧四壳癕IND dataset的STOA,當然這也說明MIND榜單的提升空間顯然還是很大的。
迭代過程
比賽中
Model | Dev AUC | Test AUC |
---|---|---|
uid,docid,history_docids | 0.514 | 0.5272 |
+cat,entity | 0.6829 | 0.6763 |
+title,abstract | 0.6987 | 0.6979 |
adjust parameters | 0.7004 | 0.7036 |
+body | 0.7042 | 0.707 |
+dev data | NA | 0.7104 |
ensemble(5 datasets) | NA | 0.7131 |
賽后
賽后的集成模型提升主要是來自于模型差異性的引入,從比賽過程中的單一算法模型變成了多算法模型(引入了bert)。
那么單模型提升在哪里呢?
單模型方面并沒有做大的調(diào)整,主要提升點是兩個細節(jié):
Multi-Sample Dropout降低過擬合提升模型泛化能力。
不只是MIND數(shù)據(jù),Multi-Sample Dropout是一種通用且時空代價極小的方法,在很多場景下用其取代最終的Linear層都能帶來效果提升,感興趣可以在kaggle搜索相關的分享。
Batch size 調(diào)整, 從2048調(diào)小到256。
batch size減小會使得訓練速度變慢一點,并且val loss會變高,但是Test指標會提升,可能原因是更多的梯度迭代次數(shù),特別是當前采用1輪訓練方式,另外小的batch size對應單一模型不同Dataset可能有更高的單模型差異性從而有利于模型集成。
以下只列出Test的指標,注意集成模型base復現(xiàn)的起點0.7124比比賽中最終的模型0.7131低一些,可能源自tf1,2的切換和一些隨機性因素,暫未查明。
單模型
Model | AUC | MRR | NDCG@5 | NDCG@10 |
---|---|---|---|---|
base復現(xiàn) | 0.7074 | 0.3554 | 0.3895 | 0.4460 |
+multi-sample dropout | 0.7086 | 0.3557 | 0.3900 | 0.4464 |
+smaller batch size | 0.7089 | 0.3574 | 0.3916 | 0.4478 |
bert-tiny | 0.707 | 0.3563 | 0.3902 | 0.4464 |
base add bert-tiny | 0.7085 | 0.3577 | 0.3920 | 0.4482 |
集成模型
Model | AUC | MRR | NDCG@5 | NDCG@10 |
---|---|---|---|---|
base復現(xiàn) | 0.7124 | 0.3598 | 0.3949 | 0.4512 |
+multi-sample dropout | 0.7139 | 0.3614 | 0.3967 | 0.4529 |
+smaller batch size | 0.7145 | 0.3625 | 0.3976 | 0.4537 |
bert-tiny | 0.7145 | 0.3622 | 0.3973 | 0.4533 |
base add bert-tiny | 0.7158 | 0.3630 | 0.3983 | 0.4544 |
avg of above 3 | 0.7187 | 0.3659 | 0.4018 | 0.4576 |
注:base add bert-tiny表示模型的文本表示在同一個模型同時保留glove詞向量和bert-tiny encode作為特征。其實采用單一模型結(jié)構(gòu)多數(shù)據(jù)集/多fold的模型平均某種意義上也是單模型,從上面的結(jié)果來看,base add bert-tiny應該是相對base表現(xiàn)更好的模型結(jié)構(gòu)。
TODO
更好的文本表示,如UniLM等,這也是MIND數(shù)據(jù)集合的根本意義所在,期待找到效果更好效率更高的文本表示方法。
更好的用戶歷史閱讀序列表示,當前沒有引入位置信息,沒有考慮用戶歷史順序,沒有做復雜的歷史建模。
更好的模型泛化,從實驗來看test集合的提升很大概率來自模型泛化效果的提升,更好的集成方法(當前只是簡單平均),包括單模型自身集成方法如SWA等等應該可以進一步提升效果。
更多輪次迭代?由于使用了ID特征容易過擬合,當前只采用了1輪訓練的方。
降采樣負樣本是否是最好的方案?顯然值得更多的嘗試,至少在單模型效果使用全量負樣本做一定正樣本過采樣但是同時注意避免過擬合應該理論上能得到更好的單一模型,畢竟當前的單模型都只用了部分訓練數(shù)據(jù)。
作者簡介
程惠閣,搜狗搜索專家研究員。
曾任百度貼吧和信息流反作弊,圖片搜索部圖文相關性技術負責人。
數(shù)據(jù)挖掘,深度學習愛好者,曾多次單人參賽并獲得AI競賽冠亞軍:
NAIC 2020 全國人工智能大賽 AI+遙感影像語義分割 第二名。
ACL 2020 MIND 新聞推薦 第一名。
AI Challenger 2018 美團細粒度情感分類 第一名。
AI Challenger 2017 Image Caption 第二名。
目前是Kaggle Expert,個人夢想是退休后成為Kaggle Grandmaster。
[1]
MIND: https://msnews.github.io/
[2]
代碼: https://github.com/chenghuige/mind
[3]
排行榜: https://competitions.codalab.org/competitions/24122#results
責任編輯:xj
原文標題:MIND新聞推薦冠軍分享細節(jié)揭秘
文章出處:【微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
-
AI
+關注
關注
87文章
30146瀏覽量
268411 -
數(shù)據(jù)集
+關注
關注
4文章
1205瀏覽量
24643 -
大數(shù)據(jù)
+關注
關注
64文章
8863瀏覽量
137295 -
深度學習
+關注
關注
73文章
5492瀏覽量
120977
原文標題:MIND新聞推薦冠軍分享細節(jié)揭秘
文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論