色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

分享微博在特征Embedding建模方向做的一些工作

深度學(xué)習(xí)自然語言處理 ? 來源:DataFunTalk ? 作者:張俊林 博士 ? 2022-10-20 10:03 ? 次閱讀

導(dǎo)讀:隨著深度學(xué)習(xí)推薦系統(tǒng)應(yīng)用的發(fā)展,特征 Embedding 建模的重要性已經(jīng)成為共識(shí),同時(shí)海量特征的稀疏性及參數(shù)量過大是必須面對(duì)的難題。今天會(huì)為大家分享微博在特征 Embedding 建模方向做的一些工作。

今天的介紹會(huì)圍繞下面五點(diǎn)展開:

特征建模的必要性

特征建模的三個(gè)技術(shù)方向

卡門檻:微博在特征重要性方向的工作

擠水分:變長特征 Embedding

補(bǔ)營養(yǎng):提升特征表達(dá)質(zhì)量

01 特征建模的必要性

1. 三大AI方向的領(lǐng)域特

cc4c02f2-4fbd-11ed-a3b6-dac502259ad0.png

在討論特征建模之前,我們先來對(duì)比一下不同 AI 應(yīng)用領(lǐng)域中數(shù)據(jù)分布的特點(diǎn),這里以最常見的自然語言處理、圖像處理和推薦系統(tǒng)為例來說明。

首先我們對(duì)比自然語言處理和圖像處理:NLP 最基本的數(shù)據(jù)元素是單詞,每個(gè)單詞有一定的含義,可能指代某個(gè)實(shí)體;圖像處理最基本元素是像素,因?yàn)榱6忍?xì),單個(gè)像素并沒有實(shí)際含義。所以在輸入信息基本單元粒度上,自然語言處理比圖像處理更抽象,更有具體含義和所指。

在數(shù)據(jù)的組織結(jié)構(gòu)上看,自然語言處理的語句是一維線性的,同時(shí)具備信息的局部相關(guān)性和遠(yuǎn)程相關(guān)性特點(diǎn):局部相關(guān)性指的臨近單詞之間語義相關(guān)度高,遠(yuǎn)程相關(guān)性舉個(gè)例子:“雖然“….”但是”是個(gè)表達(dá)語義轉(zhuǎn)折關(guān)系的結(jié)構(gòu),但是它們?cè)诰渲械木嚯x可能很遠(yuǎn),但是這是個(gè)重要特征。

而圖像是二維/三維立體結(jié)構(gòu),數(shù)據(jù)具有局部相關(guān)性和平移不變性等特點(diǎn):所謂“局部相關(guān)性”,就是剛才說的,單個(gè)像素?zé)o含義,但是相鄰一片區(qū)域的像素連在一起就能體現(xiàn)物體特征。平移不變性舉個(gè)例子,比如上圖里的鳥頭,不論這個(gè)鳥頭出現(xiàn)在圖片哪個(gè)位置,你都應(yīng)該看出來它是個(gè)鳥頭,這就是平移不變性的含義,除此外還有旋轉(zhuǎn)不變性、遮擋不變性等很多特性。

在這些數(shù)據(jù)的領(lǐng)域特點(diǎn)下,我們回顧這兩個(gè)領(lǐng)域模型的發(fā)展歷史,你會(huì)發(fā)現(xiàn) RNN 結(jié)構(gòu)天然匹配 NLP 數(shù)據(jù)的一維線形以及局部和遠(yuǎn)程相關(guān)性等特性,所以這是為何幾年前深度學(xué)習(xí)進(jìn)入 NLP 的時(shí)候,RNN 快速普及的根本原因。圖像處理里 CNN 則天然適合對(duì)局部相關(guān)性和各種不變性建模,這也是為何 CNN 快速占領(lǐng)圖像領(lǐng)域的根本原因。

從這里可以看出,我們?cè)谠O(shè)計(jì)模型的時(shí)候,應(yīng)該重點(diǎn)考慮領(lǐng)域數(shù)據(jù)的特性,那些匹配領(lǐng)域數(shù)據(jù)特性的模型,就容易取得優(yōu)勢。目前 Transformer 統(tǒng)一了 NLP 和圖像處理領(lǐng)域,那么很自然,我們就可以推論:Transformer 不僅匹配上述兩個(gè)領(lǐng)域的數(shù)據(jù)特點(diǎn),而且比 RNN 和 CNN 匹配度應(yīng)該更高。

我們的主題是推薦系統(tǒng),那么我們?cè)賮砜?strong>推薦領(lǐng)域數(shù)據(jù)分布有什么獨(dú)有的特點(diǎn)。首先,和NLP 及圖像處理不同,推薦領(lǐng)域數(shù)據(jù)是異質(zhì)的表格數(shù)據(jù),一個(gè)實(shí)例一般由離散的字段構(gòu)成,字段可以是數(shù)值型的,也可以是離散形態(tài)的,字段之間可能有關(guān)系,也可能完全無關(guān)。

其次,推薦數(shù)據(jù)輸入特征之間沒有局部相關(guān)性,對(duì)于平鋪特征類型的任務(wù),并不是兩個(gè)特征在輸入里挨得越近,就越有關(guān)聯(lián),它們之所以挨在一起,完全是隨機(jī)作用(當(dāng)然,行為序列具有局部相關(guān)性)。再者,可能也是推薦數(shù)據(jù)最大的特點(diǎn),是特征的海量高維稀疏,關(guān)于它的具體含義我們后面會(huì)說。

另外,特征組合對(duì)于推薦來說是至關(guān)重要的數(shù)據(jù)特點(diǎn),這個(gè)可以理解為遠(yuǎn)程相關(guān)性。這些都是推薦領(lǐng)域數(shù)據(jù)獨(dú)有的特點(diǎn)。那么,什么樣的模型才匹配推薦領(lǐng)域的數(shù)據(jù)特點(diǎn)呢?這也是我自己一直在思考的問題,我們做的一些工作可以看作對(duì)這個(gè)問題的部分回答。

2. 推薦系統(tǒng)數(shù)據(jù)的稀疏性

cc7b6268-4fbd-11ed-a3b6-dac502259ad0.png

推薦領(lǐng)域特征的海量稀疏性,主要體現(xiàn)用戶行為及特征數(shù)據(jù)分布極不均勻,極少量高頻特征在數(shù)據(jù)總體中占比很高,長尾現(xiàn)象異常嚴(yán)重,對(duì)于絕大多數(shù)行為特征或其它特征來說頻次極低,所以就沒什么信息量,或者包含大量噪音數(shù)據(jù),這就給上層模型建模帶來很大難度。

3. 特征建模的必要性

ccfbd47a-4fbd-11ed-a3b6-dac502259ad0.png

在介紹后續(xù)內(nèi)容前,我們先簡單介紹下 DNN 模型,因?yàn)楹竺婧芏鄡?nèi)容都要以它為基礎(chǔ)。上圖展示了典型的 DNN 模型結(jié)構(gòu):輸入實(shí)例由 n 個(gè)特征構(gòu)成,每個(gè)特征由 one-hot 形式轉(zhuǎn)換成特征 Embedding,這個(gè)映射過程需要學(xué)習(xí)獲得,然后特征 Embedding concat 到一起輸入到上層 DNN 結(jié)構(gòu),DNN 結(jié)構(gòu)一般由 2 到 3 層 MLP 構(gòu)成。

DNN 模型是最簡單的深度 CTR 模型,也是大多數(shù)其它深度 CTR 模型的關(guān)鍵組件,但是如果你愿意好好調(diào)試,會(huì)發(fā)現(xiàn)在推薦領(lǐng)域,它是性能很好的強(qiáng) baseline 模型,大量所謂新模型,效果未必能打過它。

cd24cf1a-4fbd-11ed-a3b6-dac502259ad0.png

我們從參數(shù)占比來說明為何特征建模是重要的,具體網(wǎng)絡(luò)結(jié)構(gòu)配置數(shù)據(jù)可參考上圖,在這個(gè)配置下,你把計(jì)算結(jié)果列出來一看就明白了:在 DNN 結(jié)構(gòu)中,包含 200 億參數(shù)量,特征 Embedding 占總體參數(shù)量的 93.3%,上層 MLP 結(jié)構(gòu)參數(shù)量只占 6.7%。

也就是說,深度 CTR 模型里,特征 Embedding 占據(jù)了參數(shù)總量的絕對(duì)多數(shù),理論上特征處理好壞對(duì)模型整體影響應(yīng)該比較大。在真實(shí)應(yīng)用場景中,深度 CTR 模型一般都是“過參數(shù)化”(over-parameter)的:模型參數(shù)的規(guī)模遠(yuǎn)遠(yuǎn)超過訓(xùn)練數(shù)據(jù)規(guī)模,比如上面 200 億的模型,大概率你沒那么多訓(xùn)練數(shù)據(jù)來訓(xùn)練它。

而深度模型這種天然的“過參數(shù)化”傾向?qū)е滤烊皇莻€(gè)容易引起“過擬合”問題的模型結(jié)構(gòu),而造成這種現(xiàn)象的,主要原因是占比大的特征 Embedding。當(dāng)然,你可以調(diào)整上層 MLP 大小,比如增加 MLP 的深度和寬度,但是這樣做盡管對(duì)模型效果有影響,但是影響很小。所有這些現(xiàn)象或特點(diǎn),主要原因在于深度模型中包含了海量的特征 Embedding 參數(shù)量。

cdd33a78-4fbd-11ed-a3b6-dac502259ad0.png

特征參數(shù)量雖然看著非常巨大,容易引起過擬合問題,但是,其中大量特征 Embedding其實(shí)是沒什么用的。你可以試著逐步拋掉低頻特征,在實(shí)驗(yàn)中可以發(fā)現(xiàn),開始把極低頻特征比如僅僅出現(xiàn) 1 次 2 次的特征拋掉,模型效果會(huì)逐漸上升,到了一定數(shù)量比如出現(xiàn) 10 次的特征也拋掉,模型效果就開始下降。

這說明對(duì)于大量低頻特征,引入它們的副作用要大于正向作用。如果我們能知道哪些特征沒用,把它們拋掉,無疑不僅能提升模型效果,還能大規(guī)模減少模型參數(shù),一舉兩得。但是問題的關(guān)鍵是:面對(duì)如此大量特征,我們并不知道哪些是有用或者無用的。

所以,特征建模的核心問題就是:我們能否通過技術(shù)手段,知道哪些特征是有用的?哪些是沒用的?對(duì)于模型認(rèn)為有用的特征我們可以做些什么事情?模型認(rèn)為沒用的特征,我們又可以做些什么事情?

02

特征建模的三個(gè)技術(shù)方向

ce33f3e0-4fbd-11ed-a3b6-dac502259ad0.png

這個(gè)部分,會(huì)簡單說明下特征建模三個(gè)方向的基本思路,我們首先來看“卡門檻”。

所謂“卡門檻”,意思是我們可以在特征 Embedding 層和上面的 DNN 層之間,加一個(gè)門控層,這個(gè)門控來決定哪些特征可以進(jìn)入上層的 DNN 部分,哪些特征不能進(jìn)入后續(xù)網(wǎng)絡(luò)結(jié)構(gòu),直接在門控層就被過濾掉。如果進(jìn)一步思考,其實(shí)對(duì)于允許通過的特征,這個(gè)門控機(jī)制還可以區(qū)分不同特征的重要性,對(duì)于重要特征給予大權(quán)重,不那么重要特征給予小的權(quán)重。

這就是“卡門檻”的基本思路,它的核心思想是過濾掉對(duì)優(yōu)化目標(biāo)起負(fù)面作用的大部分稀疏特征,同時(shí)通過大權(quán)重凸顯重要特征的作用。如果用“教育學(xué)生學(xué)習(xí)”來打個(gè)比方,類似我們現(xiàn)在的高考制度,劃出統(tǒng)一分?jǐn)?shù)線,只有過線的學(xué)生才能通過高考去上大學(xué)。

ce467984-4fbd-11ed-a3b6-dac502259ad0.png

第二個(gè)方向是“擠水分”。

它的含義是:通常我們會(huì)給所有特征分配相同長度的Embedding size,但是很明顯這么做是不合理的。因?yàn)閷?duì)于大量稀疏特征,因?yàn)闆]有什么知識(shí)可以學(xué)習(xí),如果你給它分配的 Embedding size 越大,它越容易出現(xiàn)過擬合的現(xiàn)象;而對(duì)于那些高頻特征,你應(yīng)該給它更長的 Embedding,因?yàn)樗泻芏嘀R(shí)需要編碼,如果分配的太短,則會(huì)出現(xiàn)欠擬合問題,就是 Embedding 容量不夠大,放不下那么多要學(xué)習(xí)的知識(shí)。

所以,合理的策略應(yīng)該是:對(duì)于特征采取變長 Embedding,對(duì)于中高頻特征,分配長的 Embedding,對(duì)于大量低頻特征,分配短的 Embedding。這就是在擠稀疏特征 Embedding 的水分,這是我把它稱為“擠水分”的原因。如果繼續(xù)拿上面的學(xué)生教育做比喻,那么“擠水分”就類似學(xué)校里面給不同學(xué)生設(shè)置快慢班,學(xué)的快的學(xué)生進(jìn)快班,獲得更好的教育資源,學(xué)的慢的學(xué)生進(jìn)慢班,因材施教。

cec88e60-4fbd-11ed-a3b6-dac502259ad0.png

第三個(gè)方向是“補(bǔ)營養(yǎng)”。

這是一種最正能量的技術(shù)方法,它的意思是:既然很多稀疏特征,它沒太多可學(xué)習(xí)的內(nèi)容,導(dǎo)致特征稀疏,表達(dá)能力不足,那么我就想點(diǎn)辦法,來提升它的特征表達(dá)能力。具體做法又可以細(xì)分為“修煉內(nèi)功”和“尋求外援”,這里暫不展開,后面會(huì)用具體例子解釋這兩種做法的思路。如果繼續(xù)拿學(xué)生教育做類比,那么“補(bǔ)營養(yǎng)”類似學(xué)校里面專門給差生進(jìn)行針對(duì)性的補(bǔ)課,來提高他們的學(xué)習(xí)成績,所以說這是最“正能量”的一種做法。

cedef3b2-4fbd-11ed-a3b6-dac502259ad0.png

上述內(nèi)容是特征建模的主要技術(shù)方向,接下來分享一些我個(gè)人的想法

我們最近 4 年來,在排序模型方面,重心放在特征建模方向,尤其是聚焦在“特征重要性”方面,可以說這是我們做 Rank 模型的核心主線。那么,為什么我們?cè)谶@里投入這么大精力呢?首先,前面介紹過,我們做模型,一定要結(jié)合具體領(lǐng)域的業(yè)務(wù)特性,以及領(lǐng)域內(nèi)數(shù)據(jù)的獨(dú)有特點(diǎn)。

具體到推薦系統(tǒng),我個(gè)人認(rèn)為海量高維的稀疏特征以及特征組合,這兩個(gè)是推薦領(lǐng)域最主要的領(lǐng)域特點(diǎn),所以我們把重心放在特征建模這個(gè)方向。其次,我認(rèn)為相比模型結(jié)構(gòu)來說,特征建模更重要。我一直相信的一點(diǎn)是:盡管最近一年來圖像和 NLP 領(lǐng)域已經(jīng)被 Transformer 統(tǒng)一,推薦系統(tǒng)暫時(shí)沒有類似這樣有統(tǒng)治力的模型,但是如果未來某天出現(xiàn)了這種突破性的模型,我覺得應(yīng)該是在特征建模方向,而不是模型結(jié)構(gòu)的改進(jìn)和革新。

那為什么我們又聚焦在特征重要性方向上呢?原因是在 2019 年之前,整個(gè)行業(yè)就沒人做“卡門檻“這個(gè)方向,F(xiàn)iBiNet 中的 SENet 模塊應(yīng)該是第一個(gè)做這個(gè)事情的 CTR 模型。有些介紹文章把 FiBiNet 里的 SENet 僅看作一種 Attention 具體做法,也有拿 AFM 模型放在一起來說的,我認(rèn)為這種理解是片面的,這并不能體現(xiàn)引入 SENet 的本質(zhì)思想,關(guān)鍵你要看它用在哪里,目的是什么,具體怎么做其實(shí)是次要的,上面介紹的“卡門檻”才是它的本質(zhì)思想。

03

卡門檻:微博在特征重要性方向的工作

cf6d7114-4fbd-11ed-a3b6-dac502259ad0.png

這里對(duì)最近幾年我們?cè)谔卣鹘7矫孀龅墓ぷ髯鰝€(gè)概述,節(jié)奏大約是一年提出 1 到 2個(gè)新模型。最近幾年微博在 Rank 模型方面做的主要工作如下:

FiBiNet 是第一個(gè)引入特征重要性子網(wǎng)絡(luò)結(jié)構(gòu)的深度 CTR 模型,也是目前效果最好的 CTR 模型之一。

FiBiNet++ 是對(duì) FiBiNet 模型的改進(jìn),主要目的在于減少 bi-linear 模塊設(shè)計(jì)不合理帶來的暴增的參數(shù)數(shù)量。

ContextNet 是對(duì) Transformer 模型進(jìn)行改造,將之應(yīng)用在推薦的改進(jìn)模型,在特征重要性模塊加入了更精細(xì)的特征門控方式,這是我個(gè)人比較喜歡的一個(gè)模型。

MaskNet 是 ContextNet 的副產(chǎn)品,將特征門控拓展應(yīng)用到 MLP 上。這是除了我們今年做的一個(gè)還未公開的新模型外,我們自己做的模型里效果最好的。

今天主要介紹上述幾個(gè)模型,至于 FAT-DeepFFM 和 GateNet,也是兩個(gè)特征門控相關(guān)工作,時(shí)間原因今天就不介紹了,感興趣的同學(xué)可以搜對(duì)應(yīng)論文看看。

d072cf8c-4fbd-11ed-a3b6-dac502259ad0.png

d0880a78-4fbd-11ed-a3b6-dac502259ad0.png

FiBiNet 是我們 2018 年設(shè)計(jì)、發(fā)表在 Recsys2019 的工作。相對(duì)其它模型,它的創(chuàng)新點(diǎn)在于引入兩個(gè)獨(dú)立可插拔的模塊:一個(gè)是用 SENet 作為特征重要性門控,二是引入雙線性模塊來改進(jìn)特征交互方式。這對(duì)應(yīng)下圖網(wǎng)絡(luò)模型結(jié)構(gòu)下方兩個(gè)分支中標(biāo)為橙色的三個(gè)模塊。

d120b73c-4fbd-11ed-a3b6-dac502259ad0.png

SENet 最早 2018 年在圖像處理中提出的,下面介紹一下它在推薦系統(tǒng)中的應(yīng)用。

d13f8f40-4fbd-11ed-a3b6-dac502259ad0.png

我們?cè)谕扑]中引入 SENet 的主要目的是希望引入一個(gè)特征門控系統(tǒng),它可以給輸入的每個(gè)特征動(dòng)態(tài)打權(quán)重,如果是沒什么用的稀疏特征,我們希望這個(gè)權(quán)重是 0,這等于消除掉了這個(gè)特征的負(fù)面影響,而如果是重要特征,則希望 SENet 打出一個(gè)大權(quán)重,強(qiáng)調(diào)下這個(gè)特征很重要。基本出發(fā)點(diǎn)就是之前講過的“卡門檻”的作用。

具體而言,其模型結(jié)構(gòu)參考上圖,對(duì)于當(dāng)前輸入的每個(gè)特征 Embedding,取出一個(gè)代表 bit 位,這里取 Embedding 中根據(jù)每一位求出的均值作為代表位,假設(shè)輸入有 f 個(gè) field 或 slot,則有 f 個(gè)代表 bit,作為后續(xù)雙層 MLP 網(wǎng)絡(luò)的輸入。第一層 MLP 是個(gè)窄網(wǎng)絡(luò),因?yàn)檩斎刖S度 f 一般比較小,實(shí)際場景中基本也就是 100 到 200 之間,所以這層 MLP 可以設(shè)計(jì)的比較窄,就不容易過擬合;第二層 MLP 的輸出結(jié)果就是每個(gè)特征的重要性得分。我們?cè)及姹镜?SENet中,非線性函數(shù)都是用的 Relu,你會(huì)發(fā)現(xiàn)很多特征打出來的權(quán)重都是 0 分,這樣就達(dá)到了前面說的“卡門檻”的目的。從網(wǎng)絡(luò)結(jié)構(gòu)可以看出,SENet 是個(gè)輕型網(wǎng)絡(luò),額外引入的參數(shù)很少,運(yùn)算速度也比較快,作為一個(gè)可插拔的門控模塊是比較輕巧的。

d19ac0a4-4fbd-11ed-a3b6-dac502259ad0.png

另外一個(gè)是雙線性特征交互模塊這是我們 2018 年在改造 FFM 模型時(shí)候想出來的改進(jìn)模型,是對(duì) FFM 模型的簡化或者是 FM 模型的復(fù)雜化,看你站在哪個(gè)角度來看了。雙線性交互的核心思想是:在 FM 模型基礎(chǔ)上,當(dāng)任意兩個(gè)特征交互的時(shí)候引入一個(gè)參數(shù)矩陣 W,通過這個(gè)參數(shù)矩陣來更精細(xì)地表征特征交互過程。

d1d7e06a-4fbd-11ed-a3b6-dac502259ad0.png

這個(gè)參數(shù)矩陣 W,有三種做法:一種是所有特征共享同一個(gè) W,這種方式的 W 引入的新參數(shù)量是極小的,幾乎可忽略不計(jì);第二種是每一個(gè)特征域(Field 或 Slot)內(nèi)的特征共享同一個(gè) W;第三種最細(xì)致,是每種特征域組合,共享一個(gè) W。

這三種不同做法,越來越精細(xì),表達(dá)能力越來越強(qiáng),對(duì)應(yīng)的參數(shù)量依次升高,跑起來也會(huì)越來越慢,具體用哪個(gè)要看具體場景。關(guān)于雙線性這里不展開介紹了,對(duì)此感興趣的同學(xué),推薦看看小紅書王樹森老師在 B 站的解說視頻(SENet 和 Bilinear 交叉:https://www.bilibili.com/video/BV1SY4y1M7bD/),介紹 FiBiNet 很到位。

d2036604-4fbd-11ed-a3b6-dac502259ad0.png

從 2019 年我們提出 FiBiNet,再結(jié)合我參考最近兩年的模型發(fā)展情況,我的結(jié)論是:FiBiNet 是目前效果最好的 CTR 模型之一,尤其是在 Avazu 數(shù)據(jù)集上,大概率 FiBiNet 到目前這個(gè)時(shí)間點(diǎn)就是 2022 年,盡管有一些新模型出現(xiàn),我判斷它在 Avazu 上很可能仍然是效果最好的 CTR 模型(有個(gè)公平對(duì)比的前提條件:Avazu 數(shù)據(jù)集上,特征 Embedding size 要放到 40 或者 50,這是絕大多數(shù) CTR 模型在 Avazu 上效果最好時(shí)候的 Embedding size,而不是像很多工作實(shí)驗(yàn)部分報(bào)道的,強(qiáng)制把 Avazu 數(shù)據(jù)集上的 Embedding size 設(shè)置成 10,這并非一個(gè)合理設(shè)置。Criteo 數(shù)據(jù)集最合理的 Embedding size 應(yīng)該在 10 到 20 之間)。

上面這張圖是得出判斷的依據(jù)之一,這是華為 FuxiCTR 的工作,它做了 4600 多組實(shí)驗(yàn)來公平對(duì)比從 2010 到 2020 年這 10 年間比較知名的 24 個(gè) CTR 模型的效果,結(jié)果顯示在 Avazu 上 FiBiNet 效果最好。當(dāng)然這只是我得出上述結(jié)論的依據(jù)之一,還有其它依據(jù),包括我們內(nèi)部也對(duì)新模型做過大量實(shí)驗(yàn)對(duì)比,我個(gè)人覺得上述結(jié)論基本成立。

不過話說回來,最近 2 年我的一個(gè)明顯感覺是:CTR 模型的效果和數(shù)據(jù)集關(guān)系比較大,目前應(yīng)該不存在一個(gè)模型,它在各種數(shù)據(jù)集都能占據(jù)統(tǒng)治地位,這和 NLP 以及圖像處理領(lǐng)域表現(xiàn)完全不同,這兩個(gè)領(lǐng)域基本都有統(tǒng)治性的模型,這也一定程度上說明了,推薦模型整體缺乏突破進(jìn)展,才會(huì)造成在不同數(shù)據(jù)集上最佳模型不同,類似軍閥割據(jù)的這種外在表現(xiàn)。而在某個(gè)數(shù)據(jù)集上表現(xiàn)最好的 CTR 模型,很可能是因?yàn)樗哪硞€(gè)網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì),正好匹配了這個(gè)數(shù)據(jù)集合的數(shù)據(jù)分布特性。

這里順便再說下數(shù)據(jù)集的問題,如果你要測試 CTR 模型且以論文的方式呈現(xiàn)出來,很明顯實(shí)驗(yàn)部分的測試數(shù)據(jù)應(yīng)該帶上 Criteo 和 Avazu,因?yàn)檫@兩個(gè)數(shù)據(jù)集規(guī)模比較大,都在 4500 萬左右。盡管這兩個(gè)數(shù)據(jù)集也有一些問題,但是貌似除此外我們也沒有更好的選擇,這也是沒辦法的辦法。

而如果一個(gè)論文里的 CTR 模型,實(shí)驗(yàn)部分都用的是小規(guī)模數(shù)據(jù),很明顯這個(gè)工作就沒太多實(shí)用價(jià)值,因?yàn)樾?shù)據(jù)上有效的技術(shù)改進(jìn),大概率換個(gè)規(guī)模大的數(shù)據(jù)就會(huì)失效。即使在 Criteo 和 Avazu 證明有效的模型,上線未必會(huì)有效,因?yàn)槟忝媾R比 4500 萬更大規(guī)模的數(shù)據(jù),技術(shù)失效也不意外,但是如果一個(gè)新模型在實(shí)驗(yàn)部分連這兩個(gè)數(shù)據(jù)都不帶,都是小規(guī)模數(shù)據(jù),那只能說明模型作者對(duì)自己的模型效果不夠自信。所以如果你的出發(fā)點(diǎn)是真正想提出有效的改進(jìn)模型而不僅僅是水一篇論文,那我建議一定要用大規(guī)模數(shù)據(jù)來驗(yàn)證。

d2cfa430-4fbd-11ed-a3b6-dac502259ad0.png

d30923ea-4fbd-11ed-a3b6-dac502259ad0.png

這里介紹下使用 FiBiNet 的一個(gè)經(jīng)驗(yàn):上面兩張圖片展示了不同模型在 Criteo 和Avazu 數(shù)據(jù)集上的效果對(duì)比,坐標(biāo)橫軸是不同大小的特征 Embedding size,縱軸是 Logloss 和 AUC 效果指標(biāo),圖中的黃色曲線代表了 FiBiNet 的效果表現(xiàn)。

從中可以看出,無論是 Criteo 還是 Avazu 數(shù)據(jù)集合,當(dāng)逐漸放大特征 Embedding size,尤其當(dāng)大小超過 30 的時(shí)候,F(xiàn)iBiNet 相對(duì)其它模型(DeepFM/xDeepFM/AutoInt+)的效果優(yōu)勢逐步擴(kuò)大,而其它模型的效果要么開始往下掉,要么開始波動(dòng),只有 FiBiNet 隨著 Embedding size 的繼續(xù)放大,性能穩(wěn)步提升。也就是說如果應(yīng)用中 Embedding size 設(shè)置的比較大的時(shí)候,明顯使用 FiBiNet 效果更好。

這是為什么呢?我覺得這個(gè)現(xiàn)象說明了一個(gè)問題:正是 FiBiNet 中的 SENet 模塊導(dǎo)致這個(gè)現(xiàn)象的發(fā)生。因?yàn)楫?dāng)特征 Embedding size 越大的時(shí)候,稀疏問題就會(huì)越嚴(yán)重,而此時(shí)使用特征門控就越重要,因?yàn)榇藭r(shí) SENet 有更大可能將無效特征過濾掉,避免了大量特征稀疏的負(fù)面影響。

d372e69a-4fbd-11ed-a3b6-dac502259ad0.png

d37f8af8-4fbd-11ed-a3b6-dac502259ad0.png

據(jù)我了解,目前 FiBiNet 里的 SENet 模塊或者它的改進(jìn)變體在很多一線二線互聯(lián)網(wǎng)公司的線上推薦系統(tǒng)或廣告系統(tǒng)都在應(yīng)用,也取得了不錯(cuò)的收益,但是在現(xiàn)實(shí)場景中雙線性模塊用的就比較少,這是為什么呢?我認(rèn)為主要原因是 FiBiNet 模型中,雙線性模塊本身以及它和上層 DNN 連接處設(shè)計(jì)思路有問題:

因?yàn)?FiBiNe 下層有兩路,每路各有一個(gè)雙線性模塊,而雙線性模塊里用了哈達(dá)瑪積,這就導(dǎo)致在雙線性模塊做完特征交叉之后,這層非常寬,它和 DNN 的第一層 MLP 這個(gè)連接處參數(shù)量會(huì)急劇增加。如果應(yīng)用中包含的特征域(Fields或Slot)比較多,模型跑起來非常慢,這就是它的主要問題所在。

d42577e2-4fbd-11ed-a3b6-dac502259ad0.png

為了解決 FiBiNet 雙線性模塊設(shè)計(jì)的問題,我們改造出了新版本的 FibiNet++(細(xì)節(jié)信息可以參考論文:FiBiNet++:Improving FiBiNet by Greatly Reducing Model Size for CTR Prediction,https://arxiv.org/pdf/2209.05016.pdf),主要目的是在盡量不降低模型效果,甚至進(jìn)一步提升模型效果的前提條件下,大幅減少模型參數(shù)量。

關(guān)于減少模型參數(shù)的改進(jìn)措施,包含幾個(gè)要點(diǎn):首先,更改模型結(jié)構(gòu),去掉 FiBiNet 下層右路 SENet 之上的 bi-linear 模塊,拿掉基本無影響;其次,雙線性模塊計(jì)算中的哈達(dá)瑪積變成內(nèi)積,這個(gè)改變很小,但能大幅減少模型參數(shù);再次,在左路 bilinear 特征交叉后,加入一個(gè)窄的 MLP 層,用于對(duì)特征交互結(jié)果進(jìn)行維度的進(jìn)一步壓縮。經(jīng)過上述改進(jìn),模型大小縮小了 10 幾倍(不考慮特征 Embedding 的情況)。

d44ae5c2-4fbd-11ed-a3b6-dac502259ad0.png

與此同時(shí),我們對(duì) SENet 模塊做了一些改進(jìn),來進(jìn)一步提升模型效果。

主要措施包括

首先,SENet 的輸入信息,從每個(gè)特征 Embedding 產(chǎn)生 1 bit代表位,改為將每個(gè)特征的 Embedding 劃分成 g 個(gè)分組 Embedding ,每個(gè)分組 Embedding 產(chǎn)生兩個(gè)代表位:一個(gè)均值 bit,一個(gè) max bit,這兩個(gè) bit 作為分組代表信息。

其次,增加 Skip connection,原始 Embedding 和加權(quán)的 embedding 進(jìn)行求和,等于保留了原始 Embedding 信息。

最后,輸出的特征權(quán)重,從 vector-wise 權(quán)重到 bit-wise 權(quán)重,就是說原先是每個(gè)特征學(xué)習(xí)一個(gè)權(quán)重,現(xiàn)在是每個(gè)特征的每個(gè) bit 都給予一個(gè)權(quán)重。

經(jīng)過這些改造,F(xiàn)iBiNet++ 的效果相比 FiBiNet 有進(jìn)一步的提升。

d4953186-4fbd-11ed-a3b6-dac502259ad0.png

如果我們把特征門控抽象一下,你會(huì)發(fā)現(xiàn)各種新型的變體結(jié)構(gòu)。

首先,門控的輸入層,根據(jù)輸入信息由粗到細(xì),可以有三種做法:每個(gè)特征 Embedding 出一個(gè) bit 代表位/每個(gè)特征分組,每組出 1 個(gè)或者 2 個(gè)代表位/每個(gè)特征 Embedding 的所有信息都作為門控的輸入。

其次,為了簡化問題,關(guān)于中間 MLP 隱層,我們假設(shè)結(jié)構(gòu)不動(dòng)(但是這層的寬度應(yīng)該根據(jù)輸入信息多少進(jìn)行相應(yīng)調(diào)整,總的原則是輸入信息越多,這層 MLP 應(yīng)該越寬,否則會(huì)存在表達(dá)不足問題)。

再者,在門控輸出層,我們跟輸入層一樣,也有由粗到細(xì)的三種做法。

這樣,三種輸入搭配三種輸出,一共有 3*3=9 種模型組合,這還不算中間隱層的變化。而原始版本的 SENet,取了其中輸入信息、輸出信息最少的一種組合搭配,它的特點(diǎn)是模型參數(shù)少,速度快,比較輕巧,但是有信息損失。

d52caf3e-4fbd-11ed-a3b6-dac502259ad0.png

在此基礎(chǔ)上,我們來介紹 ContextNet 模型,這是 2019 年在 FiBiNet 發(fā)表后的關(guān)于特征重要性的進(jìn)一步改進(jìn)工作,論文形成于 2020 年 2 月份左右,把論文扔出來是 2021 年年中的事情了。當(dāng)然,我們最初設(shè)計(jì) ContextNet 的初衷,并不是因?yàn)橥茢喑錾厦娴拈T控 9 組合,然后換一種組合來做這個(gè)事情。

起因是自從 Bert 出來后,從 2018 年年底開始,我覺得 Transformer 會(huì)統(tǒng)一 NLP 領(lǐng)域,所以從那時(shí)候就想改造一個(gè)推薦版本的 Transformer 結(jié)構(gòu),當(dāng)時(shí)我們用原始版本 Transformer 試過,跟 DNN 模型比,效果其實(shí)并不好,所以 ContextNet 其實(shí)是我們摸索覺得比較適合用于推薦領(lǐng)域的 Transformer 改造版本。

它的結(jié)構(gòu)和出發(fā)點(diǎn)參考上圖,說白了就是模仿 Bert,在 Bert 里,每個(gè)單詞維護(hù)自己的 Embedding 一直往上層結(jié)構(gòu)走,根據(jù)其它單詞 Embedding 來修正自己的 Embedding,達(dá)到根據(jù)上下文消除單詞多義詞的問題。ContextNet 思路類似,每個(gè)特征維護(hù)自己的 Embedding,不斷往上層結(jié)構(gòu)走,根據(jù)同一個(gè)輸入里的其它特征的原始 Embedding,經(jīng)過一個(gè)特征門控系統(tǒng),來不斷修正自己的 Embedding 內(nèi)容,這個(gè)門控起到的作用其實(shí)是尋找有效特征組合。在門控起作用后,上接一個(gè)局部 MLP 來非線性整合新的特征 Embedding 內(nèi)容,這點(diǎn)和 Transformer 沒有太大不同。你可以簡化理解為把 Transformer 的 Multi-head self attention 用特征門控系統(tǒng)給替換掉了,就是 ContextNet。

d53e4488-4fbd-11ed-a3b6-dac502259ad0.png

d5fc660c-4fbd-11ed-a3b6-dac502259ad0.png

于是,繞了一圈,我們又回到了特征門控這里來了,這個(gè)特征門控就是上面說的門控 9組合里輸入輸出最豐富的另外一個(gè)極端情況:特征 Embedding 所有信息作為門控輸入,輸出則是 Bit-wise 的,就是說給特征 Embedding 每個(gè) Bit 都打上一個(gè)權(quán)重。

這里有兩點(diǎn)需要注意:首先,不論特征 Embedding 走到哪一層,它對(duì)應(yīng)的門控的輸入都是所有最原始的特征 Embedding,實(shí)驗(yàn)結(jié)果證明這種原始特征的輸入效果最好;其次,門控中間的隱層要比較寬,2 倍于輸入信息是效果最好的,這是因?yàn)檩斎胄畔⒈容^多,中間層就需要較多神經(jīng)元來擬合信息。所以它和 SENet 特性正好相反,它比較重,參數(shù)多,速度慢,但是效果要更好。

另外,如果在最上層加上一個(gè) MLP 用于整合各個(gè)特征 Embedding 的信息,ContextNet 效果會(huì)進(jìn)一步提升,應(yīng)該和 MaskNet 效果接近,但是當(dāng)時(shí)我覺得這種“戴帽子”的混合結(jié)構(gòu)看上去太丑陋,就沒同意加這個(gè)帽子,于是 ContextNet 就是目前這種樣子。

我認(rèn)為如果 CTR 模型里需要 Transformer 模型,那它應(yīng)該就是長得類似 ContextNet 這樣的,因?yàn)檫@些年來我們嘗試改造過非常多不同的 Transformer 變體結(jié)構(gòu),目前看這種結(jié)構(gòu)效果是最好的,當(dāng)然,在用的時(shí)候,這里建議最上層可以帶上個(gè) MLP 的帽子,畢竟效果要好,長相難看就難看點(diǎn)吧,聰明更重要,為此我已放棄模型審美了。

d6211d4e-4fbd-11ed-a3b6-dac502259ad0.png

最后介紹下 MaskNet,這是我們目前探索的所有模型中效果最好的(Avazu 數(shù)據(jù)除外,Avazu 上仍然是 FiBiNet 或者 FiBiNet++ 效果更好)。MaskNet 是 ContextNet 的副產(chǎn)品,在做 ContextNet 有了效果的同時(shí),我問自己這么一個(gè)問題:特征門控肯定是有效的組件,但是除了用在特征 Embedding 上,如果我們把它用在 DNN 模型的 MLP 結(jié)構(gòu)上,會(huì)是什么效果呢?是否可以根據(jù)原始特征輸入,通過門控調(diào)整 MLP 的輸出,使得 MLP 更好地在原始特征輸入里捕捉特征組合呢?為了回答這個(gè)問題,就做實(shí)驗(yàn)試了一下,發(fā)現(xiàn)在幾個(gè)數(shù)據(jù)集合上效果都是最好的。

本來我覺得既然有了 ContextNet,這個(gè)改動(dòng)不值得形成一篇文獻(xiàn),但是考慮到效果確實(shí)比較好,就也寫了論文,成文時(shí)間與 ContextNet 基本同時(shí)期,大約在 2020 年 3 月份,2021 年年初我看外界有類似的思路出來,就把文章扔出去了。

d79cde38-4fbd-11ed-a3b6-dac502259ad0.png

下面簡單介紹一下 MaskNet 的具體做法。這里采用的門控和 ContextNet 是完全一樣的,沒有任何區(qū)別,作用在特征 Embedding 上的機(jī)制和 ContextNet 也一樣,不同的地方是上面加了一個(gè)全局的 MLP 結(jié)構(gòu)對(duì)信息進(jìn)行融合,這是 MaskBlock on Feature Embedding。

d8081df6-4fbd-11ed-a3b6-dac502259ad0.png

類似的,對(duì)于某個(gè) MaskBlock 的輸出結(jié)果,也就是上面說的 MLP,我們也可以產(chǎn)生對(duì)應(yīng)的一個(gè)特征門控,然后作用到 MLP 上,之后用一個(gè)新的全局 MLP 對(duì)信息進(jìn)行融合,這就是 MaskBlock on MaskBlock。

d81bd7c4-4fbd-11ed-a3b6-dac502259ad0.png

把針對(duì)特征的 MaskBlock 和針對(duì) MLP 的 MaskBlock 進(jìn)行疊加,有兩種方式,一種是串行方式,因?yàn)椴煌?Block 特征門控的輸入都是來自原始特征 Embedding,這個(gè)結(jié)構(gòu)看起來就類似 RNN 的結(jié)構(gòu)了;另外一種是多個(gè)針對(duì)特征的 MaskBlock 并行,上面接上標(biāo)準(zhǔn) MLP,這種類似 MMOE 多專家的結(jié)構(gòu)。

d8bd0180-4fbd-11ed-a3b6-dac502259ad0.png

上面是微博在特征建模的主要工作介紹,這里打個(gè)廣告:今年我們?cè)谔卣鹘7较蜃隽艘粋€(gè)新工作,我個(gè)人認(rèn)為是一種全新的范式和方向,目前在幾個(gè)大規(guī)模公開數(shù)據(jù)集上離線測試效果有大幅提升,過兩個(gè)月如果有機(jī)會(huì)的話,和大家分享下思路和具體做法。

04

擠水分:變長特征 Embedding

接下來用具體例子,簡單說明下“擠水分”可以怎么做。這里再強(qiáng)調(diào)下,一個(gè)理想的分配特征 Embedding Size 的原則是:中高頻特征的 Embedding 應(yīng)該較長,低頻特征的 Embedding 應(yīng)該較短。在這個(gè)原則指導(dǎo)下,目前常見的做法可以細(xì)分為兩種 。

d8d39440-4fbd-11ed-a3b6-dac502259ad0.png

第一種做法是用強(qiáng)化學(xué)習(xí)來自主學(xué)習(xí)應(yīng)該給每個(gè)特征分配多大的 Embedding size,代表模型是谷歌的 NIS 模型,它的核心思想是把可分配空間劃成 64bit 一個(gè) block,不斷迭代嘗試,看看每個(gè)特征分配多少個(gè) block 效果最好,強(qiáng)化學(xué)習(xí)的 reward 就是驗(yàn)證集合上的 AUC 指標(biāo)。這里不展開講了,具體思路大家可以看上圖列出的參考文獻(xiàn)。這是一類方法,在 NIS 之后有不少采取強(qiáng)化學(xué)習(xí)思路來做變長 Embedding 的工作。

d92410fa-4fbd-11ed-a3b6-dac502259ad0.png

第二種做法的代表模型是阿里媽媽提出的 AMTL,核心思想是:根據(jù)特征頻次,為每個(gè)特征學(xué)習(xí)一個(gè)獨(dú)有的內(nèi)容為 0 或者 1 的掩碼向量 ,通過學(xué)習(xí)到的掩碼向量中 1 的不同個(gè)數(shù),來控制 Embedding 實(shí)際分配的長度,1 越多則分配的 Embedding 越長。這是另外一類“擠水分”的典型做法。

05

補(bǔ)營養(yǎng):提升特征表達(dá)質(zhì)量

第三類特征建模方式是“補(bǔ)營養(yǎng)“,核心思路是想辦法提升稀疏特征的表達(dá)質(zhì)量。至于具體思路,又可以分為兩個(gè)子方向:“苦練內(nèi)功”提質(zhì)量和“引入外援”提質(zhì)量。

d9cf1c5c-4fbd-11ed-a3b6-dac502259ad0.png

上面列出的谷歌使用對(duì)比學(xué)習(xí)來改進(jìn)召回/粗排模型的工作,是典型的“苦練內(nèi)功”提質(zhì)量的思路。上圖展示的模型是用于召回或者粗排的經(jīng)典的雙塔 DNN 模型,在 Item 側(cè)的塔引入一個(gè)輔助的對(duì)比學(xué)習(xí) loss,對(duì)比學(xué)習(xí)的正例通過隨機(jī) drop 掉 Item 所有特征中的一部分特征來構(gòu)造,對(duì)比學(xué)習(xí) loss 采用 infoNCE,這使得正例在投影空間之間的距離更近,正例和負(fù)例的距離更遠(yuǎn)。這樣就可以提升低頻特征 Embedding 的質(zhì)量,緩解特征稀疏問題。

那為啥這樣可以緩解特征的稀疏性,以及為啥把這種做法叫做“苦練內(nèi)功”呢?其實(shí)你深入思考一下,就會(huì)發(fā)現(xiàn):設(shè)想構(gòu)造出的正例對(duì)為,進(jìn)一步假設(shè)有一個(gè)特征a是低頻稀疏的,包含在 A 中,另外一個(gè)特征 b 是高頻非稀疏的,包含在 B 中。InfoNCE鼓勵(lì)正例在投影空間靠近,這是在干嘛?

其實(shí)就是把高頻特征 b 的 Embedding 表達(dá)遷移給稀疏特征 a,因?yàn)橹挥羞@樣,A 和 B 才能在投影空間靠近。所以這種使用對(duì)比學(xué)習(xí)的本質(zhì)是:把同一個(gè)輸入實(shí)例中高頻特征 Embedding 遷移給低頻稀疏特征的 Embedding,它靠自己,不靠外力因素來豐富稀疏特征的表達(dá)質(zhì)量,所以我把它叫做“苦練內(nèi)功”提質(zhì)量。無疑“苦練內(nèi)功”這種方式是很辛苦的。

da6c7448-4fbd-11ed-a3b6-dac502259ad0.png

另一種提升稀疏特征表達(dá)能力的是“引入外援”。典型的例子就是多任務(wù)/多場景模型,這個(gè)目前大家都在做,模型也有很多,比如 MMOE/PLE 等。上圖展示的是 MMOE 模型的模型結(jié)構(gòu),這里我覺得最關(guān)鍵的是 Embedding 層,因?yàn)椴煌瑘鼍盎蛉蝿?wù),一般大家共享同一套特征 Embedding。你可以想想這么做有什么好處?很明顯,因?yàn)榇蠹夜蚕硗惶滋卣?embedding,對(duì)于在場景 A 下的某個(gè)稀疏特征 a 來說,盡管它在場景 A 下是稀疏的,因?yàn)榘卣?a 的訓(xùn)練數(shù)據(jù)很少,但是對(duì)于數(shù)據(jù)豐富的場景 B 來說,因?yàn)閿?shù)據(jù)量多,那么經(jīng)過 B 的訓(xùn)練數(shù)據(jù)訓(xùn)練出來的 a 的特征 Embedding,就不那么稀疏了,因?yàn)樗姷搅肆硗庖粋€(gè)場景更多的數(shù)據(jù),這樣就能提升場景 A 的模型效果。

對(duì)于場景 A 來說,引入了場景 B 的數(shù)據(jù)來豐富稀疏特征的表達(dá),所以這是為何我把它叫做“引入外援”提質(zhì)量的原因。很明顯,相對(duì)“苦練內(nèi)功”來說,“引入外援“更容易做,也更容易見成效。我個(gè)人認(rèn)為,多場景多任務(wù)模型,特征 Embedding 共享,很可能是帶來收益的主要原因,而上層模型結(jié)構(gòu),盡管不同模型收益不同,但是相對(duì)特征共享來說,總體而言影響相對(duì)小,當(dāng)然這純粹是個(gè)人猜測,并無實(shí)驗(yàn)支撐。

06

Q&A環(huán)節(jié)

Q1:推薦系統(tǒng)的特征數(shù)量為什么會(huì)有 10 億這么多?

A1:主要是由于 ID 特征導(dǎo)致的,比如 user id,item id等,還有其它各種 id,絕對(duì)數(shù)量比較多,當(dāng)然在實(shí)際實(shí)現(xiàn)時(shí),未必每個(gè) id 會(huì)給個(gè) embedding。

Q2:卡門檻類的方案中,特征是如何被卡掉的?

A2:以 SENet 為例,如果打權(quán)重那層網(wǎng)絡(luò)的激活函數(shù)使用 Relu,你會(huì)發(fā)現(xiàn)大量特征的重要性得分經(jīng)過激活函數(shù)后打分都是 0,把 0 乘到對(duì)應(yīng)特征的 embedding 里,那這樣等于把這個(gè)特征的作用抹掉了。當(dāng)然也可以用其它非線性函數(shù)或者干脆使用線形函數(shù)打分,這種情況一般被卡掉的特征表現(xiàn)為獲得的重要性得分都很小,等于削弱了這些特征的作用。

Q3:user/item 冷啟動(dòng)怎么做?

A3:這是一個(gè)專門的方向,從技術(shù)角度,總體思路可以理解為在“補(bǔ)營養(yǎng)”環(huán)節(jié)提到的基本思想,就是借助其它數(shù)據(jù)遷移,來緩解數(shù)據(jù)稀疏問題。或者采取一些運(yùn)營策略來做各種試投放等探索策略,讓好的內(nèi)容自己浮現(xiàn)出來。

Q4:特征重要性怎么來的?

A4:其實(shí)就是你設(shè)計(jì)一個(gè)重要性計(jì)算的專用子網(wǎng)絡(luò),在網(wǎng)絡(luò)訓(xùn)練過程中,通過 loss 的引導(dǎo),這個(gè)子網(wǎng)絡(luò)的參數(shù)和模型的其他參數(shù)一起學(xué)習(xí),最后學(xué)好的這個(gè)網(wǎng)絡(luò)輸出的結(jié)果就是特征重要性的得分。

Q5:FiBiNet 如果只用重要性加權(quán)之后的 embedding,去掉原始 embedding 效果如何?

A5:如果保留原始的特征 emdding 效果會(huì)稍微好一些,相差不大。

Q6:訓(xùn)練 epoch 一般用多少?

A6:CTR 模型大多數(shù)情況下模型在一個(gè) epoch 內(nèi)收斂。

Q7:SimCSE 的思路在推薦場景是否可用?

A7:原則上可以。SimCSE 這種對(duì)比學(xué)習(xí)的思路,原則上可以用在推薦的召回模型里,因?yàn)楸举|(zhì)上它也是在用對(duì)比學(xué)習(xí)來解決特征稀疏性問題。和谷歌那個(gè)對(duì)比學(xué)習(xí)召回模型的主要區(qū)別是:做正例的時(shí)候,一個(gè)在輸入特征角度制造差異做正例;一個(gè)用 dropout 在 MLP 隱層制造差異做正例。本質(zhì)是一樣的。不過,我們自己在召回模型里嘗試過 SimCSE 的思路,效果不太好,這里可能需要進(jìn)一步的探索。

Q8:加入新特征如何評(píng)估重要性?

A8:兩種思路。一是做 AB 試驗(yàn),二是把特征全部加入模型,用特征重要性模塊的打分來做評(píng)估和篩選。

Q9:SENet 如果特征量大會(huì)不會(huì)速度慢?

A9:SENet 網(wǎng)絡(luò)的輸入層,因?yàn)槊總€(gè)特征只出 1 個(gè) bit,而且隱層又會(huì)進(jìn)一步壓縮寬度,所以計(jì)算速度比較快,特征量大也沒問題。

Q10:特征過濾后,特征交叉有什么思路?

A10:目前典型的做法,是在上層加一個(gè)顯式的特征交叉模塊。例如 xDeepFm 中的CIN,autoint 中的 self-attention,以及 FiBiNet 中的雙線性交叉模塊。我個(gè)人理解這樣的模塊目前來看確實(shí)有用,從技術(shù)發(fā)展來講,將來沒有存在的必要。

Q11:SENet 直接 RELU 輸出會(huì)不會(huì)有輸出不穩(wěn)定的情況?例如初始化或其他問題導(dǎo)致 embedding 被 scale到很大。

A11:問題是存在的,所以我們?cè)诟倪M(jìn)版本的 FiBiNet++ 里會(huì)引入特征 Norm。比如在特征 embedding 的地方引入 layerNorm 或者 batchNorm,以及在特征打上權(quán)重之后加入 Norm。

Q12:你說的在做的新模型,離線測試的進(jìn)展具體指的什么?

A12:一般寫論文常用的規(guī)模比較大的兩個(gè)公開數(shù)據(jù)集是 avazu 和 criteo,進(jìn)展指的是新模型在這些數(shù)據(jù)集合上 AUC 有大幅度的提升。

Q13:對(duì)特征建模是否會(huì)引起模型膨脹?

A13:不僅不會(huì)膨脹,情形正好相反,比如“擠水分”這種,對(duì)特征建模實(shí)際是在大幅減少模型參數(shù),而其它兩類做法,模型總參數(shù)量是不變的。

Q14:參數(shù)初始化有什么經(jīng)驗(yàn)?

A14:不同場景效果好的初始化方法不同,建議多嘗試。

Q15:對(duì)比學(xué)習(xí)用在精排是否有意義?

A15:要具體看用在哪里。如果拿對(duì)比學(xué)習(xí)來對(duì)行為序列建模,方案非常簡單直接,也是比較適合的;如果是對(duì)平鋪特征而非行為序列建模,則比較難做,方案不容易想。單從原則上來講應(yīng)該是有用的,不過目前還沒有看到比較好的方案。

Q16:SENet 這種結(jié)構(gòu)是否會(huì)抑制 embedding 的學(xué)習(xí)?

A16:談不上抑制還是增強(qiáng),從根本上講,還是優(yōu)化目標(biāo)的 loss 來引導(dǎo)特征重要性和特征本身 embedding 的學(xué)習(xí)。如果對(duì)優(yōu)化目標(biāo)有用,它就會(huì)被引導(dǎo)到那個(gè)方向。

Q17:Norm 的思路和工作推薦?

A17:在排序模型的不同結(jié)構(gòu)上用不同的 norm,這是一個(gè)可以探索的方向。我們的結(jié)論是:數(shù)值特征用 batchNorm,類別特征用 layerNorm,MLP 用 layerNorm,這樣效果比較好。如果希望深入了解,可以搜索下 NormDNN 模型的論文,這是我們對(duì)排序模型如何應(yīng)用 Norm 的探索,里面有相關(guān)細(xì)節(jié)。

Q18:所有特征都直接輸入嗎?

A18:過于低頻的特征可以過濾掉,數(shù)值特征可以做離散化,這都是常規(guī)操作。

Q19:SENet 線上的收益效果如何?

A19:SENet 已經(jīng)經(jīng)過很多大中型互聯(lián)網(wǎng)公司實(shí)際數(shù)據(jù)驗(yàn)證是有效的,而且目前線上都采用了這個(gè)模塊,具體提升的數(shù)值/比例要看具體場景等情況。

Q20:如果我們場景特征數(shù)量比較小,從這幾個(gè)模型里如何選擇?

A20:建議采用 FiBiNet++,它綜合考慮了訓(xùn)練線上運(yùn)行的效率和效果。

Q21:特征建模有沒有可能和上層網(wǎng)絡(luò)模塊單獨(dú)建模?

A21:現(xiàn)在其實(shí)特征建模和網(wǎng)絡(luò)建模就是分離的,比如上面介紹的特征重要性子網(wǎng)絡(luò),都是獨(dú)立的一個(gè)網(wǎng)絡(luò)模塊,模型結(jié)構(gòu)關(guān)注特征的泛化性,特征模塊關(guān)注特征表達(dá)的充分性,這樣各司其職,效果才會(huì)好。

Q22:關(guān)于剛才說的不穩(wěn)定的問題,為什么用Norm而不是把激活函數(shù)換成sigmoid?

A22:雖然 sigmoid 從函數(shù)形態(tài)來看更符合門控的思想,但是當(dāng)時(shí)我們線上測試的效果是 Relu 最好,后來做改進(jìn)版本的時(shí)候,測試結(jié)果是不用非線性函數(shù)最好,所以我覺得還是以效果為準(zhǔn)。

Q23:為什么數(shù)值和類別特征用不同的 Norm 方法?

A23:數(shù)值特征有兩種常見做法。一種是離散化,和類別特征一樣 one-hot。另一種是給這一個(gè)特征域?qū)W習(xí)一個(gè) embedding,特征值乘上特征域的 embedding 作為特征表達(dá)。第二種做法需要考慮特征值的分布,避免很大的數(shù)值主導(dǎo)優(yōu)化過程,所以要做特殊的 Norm 處理。

Q24:低頻特征過濾多少合適?

A24:具體情況具體分析,要做對(duì)比實(shí)驗(yàn),一次卡掉一部分頻次的特征,看卡到多少時(shí)候影響開始負(fù)向,總體而言要通過實(shí)驗(yàn)來確定,因?yàn)椴煌瑪?shù)據(jù)集合這個(gè)數(shù)值可能不一樣,我覺得這個(gè)數(shù)值大概率與數(shù)據(jù)集合的稀疏程度相關(guān)。

Q25:對(duì)比學(xué)習(xí)的特征 drop out 怎么理解?和 MLP 上做 drop out 對(duì)比呢?

A25:本質(zhì)上區(qū)別不大,可以參考上面說的 SimCSE 的問題。

Q26:特征的 embedding size 如何設(shè)置?是否某個(gè)特征域下包含特征越多,那么特征 size 應(yīng)該越大?

A26:不能這么簡單的看。比如 id 類特征,類別下特征數(shù)量極多,但是其實(shí)它是最稀疏的,用很大的 embedding size 未必合適,對(duì)于某些高頻 id,放大應(yīng)該有好處,但是大量低頻 id,負(fù)面影響更大些,需要平衡考慮好處和負(fù)面影響,所以我覺得很難通過簡單規(guī)則來定義,參照“擠水分”做法讓系統(tǒng)自動(dòng)分配可能是更好的解決思路。




審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 圖像處理
    +關(guān)注

    關(guān)注

    27

    文章

    1299

    瀏覽量

    56837
  • CTR
    CTR
    +關(guān)注

    關(guān)注

    0

    文章

    37

    瀏覽量

    14138
  • nlp
    nlp
    +關(guān)注

    關(guān)注

    1

    文章

    489

    瀏覽量

    22066

原文標(biāo)題:張俊林:推薦系統(tǒng)排序環(huán)節(jié)特征 Embedding 建模

文章出處:【微信號(hào):zenRRan,微信公眾號(hào):深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    一些仿真

    一些仿真,剛學(xué)單片機(jī),漏洞百出
    發(fā)表于 08-20 15:31

    求介紹一些簡單的項(xiàng)目

    學(xué)51單片機(jī)已經(jīng)個(gè)多月,簡單的操作感覺還好。 想找一些簡單的項(xiàng)目下,項(xiàng)目中學(xué)習(xí),求介紹一些
    發(fā)表于 08-18 12:35

    【下載】《射頻微波功率場效應(yīng)管的建模特征

    `內(nèi)容簡介《射頻微波功率場效應(yīng)管的建模特征》首先回顧了般商用微波射頻晶體管的種類和基本構(gòu)造,介紹了高功率場效應(yīng)管的集約模型的構(gòu)成;描述了功率管般電氣參數(shù)的測量方法,著重討論對(duì)功率
    發(fā)表于 09-07 18:09

    【下載】《射頻微波功率場效應(yīng)管的建模特征

    `內(nèi)容簡介《射頻微波功率場效應(yīng)管的建模特征》首先回顧了般商用微波射頻晶體管的種類和基本構(gòu)造,介紹了高功率場效應(yīng)管的集約模型的構(gòu)成;描述了功率管般電氣參數(shù)的測量方法,著重討論對(duì)功率
    發(fā)表于 01-15 17:57

    一些tranceiver設(shè)計(jì)GND沒有工作的原因是什么?

    般來說,何時(shí)使用GND,浮動(dòng),AVTT和可編程終端。我正在做一些tranceiver設(shè)計(jì),并嘗試過GND和AVTT,而GND沒有工作,但AVTT確實(shí)有效。有人可以解釋或指向解釋每個(gè)人的文件,何時(shí)使用另
    發(fā)表于 07-21 12:24

    浩辰3D軟件新手入門攻略:特征建模

    許多零件的基本特征,您可以將其保存在模板中,這樣可以方便地再次使用它。浩辰3D軟件為特征的構(gòu)造提供了種基于特征建模
    發(fā)表于 09-18 17:00

    分享自己通信設(shè)計(jì)兼職的一些心得

    點(diǎn),大錢掙不了,掙點(diǎn)小錢也是OK的,畢竟蒼蠅再小也是肉嘛。因?yàn)槲腋绱髮W(xué)是學(xué)編程的,所以我上高中的時(shí)候就對(duì)編程語言比較感興趣,所以考大學(xué)的時(shí)候特意選了工科. 剛開始的時(shí)候我也不知道從哪能找到一些客戶兼職
    發(fā)表于 05-27 17:01

    什么是,是什么意思

    什么是,是什么意思 是微型博客的簡稱,是新興起的
    發(fā)表于 12-14 18:45 ?4713次閱讀
    什么是<b class='flag-5'>微</b><b class='flag-5'>博</b>,<b class='flag-5'>微</b><b class='flag-5'>博</b>是什么意思

    不同特征選擇算法的各自特點(diǎn)及其業(yè)務(wù)應(yīng)用中的演進(jìn)歷程

    特征選擇經(jīng)歷了從最原始的人工選擇,到半自動(dòng)特征選擇,到全自動(dòng)特征選擇的過程,本文將詳細(xì)介紹
    的頭像 發(fā)表于 12-23 09:55 ?3568次閱讀

    EV電池包設(shè)計(jì)方面一些方向及趨勢

    隨著各車企基于MEB平臺(tái)開發(fā)的車型逐漸增多, EV電池包設(shè)計(jì)也出現(xiàn)了一些新變化,總的來看設(shè)計(jì)依然是圍繞續(xù)航里程,充電速率,成本等在做文章,閑話少說,還是直接看看國外近期EV電池包設(shè)計(jì)方面
    的頭像 發(fā)表于 03-31 09:09 ?1.4w次閱讀

    融合標(biāo)簽語義的熱點(diǎn)話題挖掘方法

    由于文本的長度較短,直接使用隱狄利克雷分布(LDA)模型會(huì)導(dǎo)致特征向量高維稀疏。為此,提出種融合標(biāo)簽語義的熱點(diǎn)話題挖掘方法。利用公共塊算法計(jì)算
    發(fā)表于 05-25 14:53 ?3次下載

    面向搜索的短文本語義建模方法綜述

    面向搜索的短文本語義建模方法綜述
    發(fā)表于 06-24 14:30 ?3次下載

    為什么不同模態(tài)的embedding表征空間中形成不同的簇

    文中將一些經(jīng)典的多模態(tài)對(duì)比學(xué)習(xí)模型中兩個(gè)模態(tài)的embedding,通過降維等方法映射到二維坐標(biāo)系中。
    的頭像 發(fā)表于 12-05 14:06 ?1015次閱讀

    如何利用LLM一些多模態(tài)任務(wù)

    本文整理了近兩年來基于LLMvision-lanuage任務(wù)的一些工作,并將其劃分為4個(gè)類別:
    的頭像 發(fā)表于 05-17 15:02 ?897次閱讀
    如何利用LLM<b class='flag-5'>做</b><b class='flag-5'>一些</b>多模態(tài)任務(wù)

    介紹得物App資源優(yōu)化上一些實(shí)踐

    包體積優(yōu)化中,資源優(yōu)化般都是首要且容易有成效的優(yōu)化方向。資源優(yōu)化是通過優(yōu)化APK中的資源項(xiàng)來優(yōu)化包體積,本文我們會(huì)介紹得物App資源優(yōu)化上
    的頭像 發(fā)表于 07-24 09:00 ?830次閱讀
    介紹得物App<b class='flag-5'>在</b>資源優(yōu)化上<b class='flag-5'>做</b>的<b class='flag-5'>一些</b>實(shí)踐
    主站蜘蛛池模板: 亚洲第一伊人| 国产人妻人伦精品熟女麻豆| xxnxx动漫| 国产高清-国产av| 久久精品视频在线看| 欧美xxxx性喷潮| 西西人体大胆牲交PP6777| 一区三区三区不卡| yellow免费| 花蝴蝶高清影视视频在线播放| 美丽的姑娘BD在线观看| 色欲AV蜜臀AV在线观看麻豆| 野花日本完整版在线观看免费高清| 99re6久久热在线视频| 国产精品玖玖玖影院| 久久中文字幕无码A片不卡 | 国产精品久久久久久人妻香蕉 | 国产人妻人伦精品59HHH| 久久免费国产视频| 色噜噜狠狠一区二区三区| 伊人影院亚洲| 国产av免费观看日本| 麻豆人妻换人妻X99| 午夜伦伦电影理论片费看| 91精品婷婷国产综合久久8| 国产精品久久久久久日本| 蜜臀AV999无码精品国产| 亚洲AV无码乱码A片无码蜜桃| 99国产精品久久| 后入内射国产一区二区| 欧美牲交视频免费观看K8经典| 亚洲精品无码成人AAA片| www在线小视频免费| 精品亚洲一区二区三区在线播放| 日本漫画无彩翼漫画| 一色屋精品亚洲香蕉网站| 国产99久久久国产精品成人| 棉签和冰块怎么弄出牛奶视频| 亚洲AV成人片色在线观看网站| WWW国产亚洲精品久久久日本| 久久99r66热这里有精品|