廣告行業(yè)中那些趣事系列9:一網(wǎng)打盡Youtube深度學(xué)習(xí)推薦系統(tǒng)

最新最全的文章請(qǐng)關(guān)注我的微信公眾號(hào):數(shù)據(jù)拾光者。

摘要:本篇主要分析Youtube深度學(xué)習(xí)推薦系統(tǒng),借鑒模型框架以及工程中優(yōu)秀的解決方案從而應(yīng)用于實(shí)際項(xiàng)目。首先講了下用戶、廣告主和抖音這一類視頻平臺(tái)三者之間的關(guān)系:就是平臺(tái)將視頻資源作為商品免費(fèi)賣給用戶,同時(shí)將用戶作為商品有償賣給廣告主,僅此而已。平臺(tái)想獲取更高的收益就必須提升廣告的轉(zhuǎn)化效率,而前提是吸引用戶增加觀看視頻的時(shí)長(zhǎng),這里就涉及到視頻推薦的問題。因?yàn)閅outube深度學(xué)習(xí)推薦系統(tǒng)是基于Embedding做的,所以第二部分講了下Embedding從出現(xiàn)到大火的經(jīng)過。最后一網(wǎng)打盡Youtube深度學(xué)習(xí)推薦系統(tǒng)。該系統(tǒng)主要分成兩段式,第一段是生成候選項(xiàng)模型,主要作用是將用戶可能感興趣的視頻資源從百萬級(jí)別初篩到百級(jí)別;第二段是精排模型,主要作用是將用戶可能感興趣的視頻從百級(jí)別精挑到幾十級(jí)別,然后按照興趣度得分進(jìn)行排序形成用戶觀看列表。希望對(duì)推薦系統(tǒng)感興趣的小伙伴有所幫助。

目錄

01 用戶、廣告主和抖音類平臺(tái)三者的關(guān)系

02 One-hot編碼、Word2vec到Item2vec

03 Youtube深度學(xué)習(xí)推薦系統(tǒng)

? ? 1. Youtube推薦系統(tǒng)背景和面臨挑戰(zhàn)

? ? 2. 算法整體架構(gòu)

? ? 3. 生成候選項(xiàng)模型

? ? 4. 精排模型


01 用戶、廣告主和抖音類平臺(tái)三者的關(guān)系

如果對(duì)推薦系統(tǒng)和Embedding已經(jīng)很熟的小伙伴可以直接跳到第三章看Youtube深度學(xué)習(xí)推薦系統(tǒng)。

通過下面一張圖說明雞賊廣告主、吃瓜用戶和抖音平臺(tái)三者之間的關(guān)系:

圖1 用戶、廣告主和抖音類平臺(tái)三者的關(guān)系

從商業(yè)角度來說,雞賊廣告主最終目的是把廣告投放給吃瓜用戶,讓用戶有廣告轉(zhuǎn)化,這里的廣告轉(zhuǎn)化可能是點(diǎn)擊、下載甚至付費(fèi)。但是通常情況下吃瓜用戶一般對(duì)廣告沒啥興趣,特別有創(chuàng)意的除外。這時(shí)候抖音短視頻來了,給雞賊廣告主說我這邊可以提供一個(gè)平臺(tái)吸引海量用戶,讓更多的用戶有廣告轉(zhuǎn)化。就這樣,廣告主直接給用戶投廣告的路不好走,只能通過曲線救國的方式,通過抖音平臺(tái)里有趣的短視頻來吸引用戶,然后趁你看的開心的時(shí)候冷不丁刷到一個(gè)廣告。因?yàn)橛脩艋ㄔ诙兑羯系臅r(shí)間越來越多,曝光廣告的機(jī)會(huì)也多了,總有部分人會(huì)點(diǎn)擊、下載或者付費(fèi)廣告,就這樣間接的達(dá)到了為廣告主投放廣告的目的。

抖音作為盈利性質(zhì)的公司,最終目的是想多賺廣告主的錢。要想多賺廣告主的錢,就得吸引更多的用戶來平臺(tái)看短視頻并且有廣告轉(zhuǎn)化行為。但是現(xiàn)在存在的問題是,用戶因?yàn)閭€(gè)體差異所以興趣是多種多樣的,有些人喜歡游戲,有些人喜歡做飯,還有些人喜歡雞湯,所以平臺(tái)需要給不同的用戶推薦不同類型的短視頻,不然用戶刷兩下覺得沒意思就走了。

這里不僅要給用戶推薦他們感興趣的視頻,而且還得推薦最合適的。這里涉及到曝光資源的稀缺性問題,這個(gè)怎么理解。因?yàn)橛脩羲⒍兑舻臅r(shí)間其實(shí)是有限的,在用戶有限的時(shí)間里牢牢吸引住他們的眼球,然后才有可能讓用戶有更高的廣告轉(zhuǎn)化效率。所以這里的關(guān)系是,短視頻作為商品被抖音提供給用戶,只不過這里的商品是免費(fèi)的。雖然對(duì)于用戶是免費(fèi)的,但是總得有人來為互聯(lián)網(wǎng)公司的發(fā)展和運(yùn)營(yíng)買單。這種“羊毛出在豬身上”的商業(yè)模式最早是雅虎建立的。之前寫過一篇文章《讀浪潮之巔》涉及到這部分內(nèi)容,感興趣的小伙伴可以去看看。

言歸正傳,這里需要來為互聯(lián)網(wǎng)公司的發(fā)展和運(yùn)營(yíng)買單的就是廣告主。和用戶一樣,廣告主因?yàn)樽陨懋a(chǎn)品的差異,所以廣告的受眾群體也是不同的。比如有個(gè)賣減肥藥的廣告主想把廣告推送給對(duì)減肥藥感興趣的人群,還有個(gè)傳奇游戲的廣告主想把廣告推送給對(duì)傳奇游戲感興趣的人群等等。所以這里的關(guān)系是,吃瓜用戶作為商品被抖音“賣”給廣告主,而這里的商品就不再是免費(fèi)的,是需要廣告主花錢來買的。

小結(jié)下,用戶、廣告主和抖音類平臺(tái)三者之間的關(guān)系就是平臺(tái)將視頻資源作為商品免費(fèi)賣給用戶,同時(shí)將用戶作為商品有償賣給廣告主,僅此而已。平臺(tái)想獲取更高的收益就必須提升廣告的轉(zhuǎn)化效率,而前提是吸引用戶增加觀看視頻的時(shí)長(zhǎng),這里就涉及到視頻推薦的問題。因?yàn)閅outube深度學(xué)習(xí)推薦系統(tǒng)是基于Embedding做的,所以下面引出Embedding。

02 One-hot編碼、Word2vec到Item2vec

1. One-hot編碼

通常機(jī)器學(xué)習(xí)中我們會(huì)使用One-hot編碼對(duì)離散特征進(jìn)行編碼。小伙伴們要問了,啥是One-hot編碼?

舉例來說,我們現(xiàn)在一共有四個(gè)詞:"i","love","legend","game"。計(jì)算機(jī)本身無法理解這四個(gè)詞的含義,但是我們現(xiàn)在用一種編碼表示。"i"編碼為1000,"love"編碼成0100,"legend"編碼為0010,"game"編碼為0001。

對(duì)One-hot通俗的理解就是有多少個(gè)詞,就有多少位。如果有8個(gè)詞,我們就需要長(zhǎng)度為8的“01”串來表示詞。每個(gè)詞都有自己的順序,那么對(duì)每個(gè)詞One-hot編碼的時(shí)候在該位置上置1其他都置為0。

現(xiàn)在我們把這四個(gè)詞對(duì)應(yīng)的編碼輸入到計(jì)算機(jī)里,計(jì)算機(jī)就能明白各個(gè)編碼代表的含義。這種形式就是One-hot編碼。通過One-hot編碼我們就能輕松的表示這些文本。

One-hot編碼存在一個(gè)問題,上面的例子中有四個(gè)詞,我們就需要長(zhǎng)度為4的01串來表示。如果有100W個(gè)詞,那么我們就需要長(zhǎng)度100W的01串來進(jìn)行編碼么?這顯然不方便。所以O(shè)ne-hot編碼最大的問題就是使得向量非常稀疏。尤其對(duì)于數(shù)量極其龐大的商品類的向量就會(huì)極端稀疏。

當(dāng)今正處于深度學(xué)習(xí)大火的人工智能時(shí)代,One-hot編碼造成的稀疏向量問題非常不利于深度學(xué)習(xí)以及工程實(shí)踐。主要原因是深度學(xué)習(xí)中使用梯度下降算法來訓(xùn)練模型,當(dāng)特征過于稀疏時(shí)每次只更新極少數(shù)的權(quán)重會(huì)導(dǎo)致整個(gè)網(wǎng)絡(luò)收斂過慢。在樣本有限的情況下可能導(dǎo)致模型根本不收斂。

2. Embedding出現(xiàn)

之后出現(xiàn)了Embedding技術(shù),尤其在深度學(xué)習(xí)中Embedding技術(shù)大肆風(fēng)靡,甚至有"萬物皆Embedding"之說。有些小伙伴可能要好奇了,到底什么是Embedding?

通俗的理解就是,Embedding是用一個(gè)低維的空間去表示一個(gè)物體,這個(gè)物體可以是一個(gè)詞、一個(gè)商品、一個(gè)視頻或者一個(gè)人等等。我們通過另一個(gè)空間去表達(dá)某個(gè)物體,最重要的是可以揭示物體之間的潛在關(guān)系,有點(diǎn)透過現(xiàn)象看本質(zhì)的意思。

以電影舉例來說,在人類世界中我們認(rèn)為《電鋸驚魂》和《咒怨》有潛在關(guān)系,因?yàn)樗鼈兌紝儆诳植榔5菍?duì)于機(jī)器來說本來不知道這兩個(gè)東西有啥關(guān)系,但是經(jīng)過Embedding操作之后,機(jī)器學(xué)會(huì)了它倆潛在的關(guān)系,可以說通過兩個(gè)電影的名字(表面)看到了它們都屬于恐怖片(本質(zhì))。這就是Embedding的神奇之處。

不僅如此,Embedding還具有數(shù)學(xué)運(yùn)算的關(guān)系,比如存在四川的Embedding-成都的Embedding=廣東的Embedding-廣州的Embedding這樣的關(guān)系。

3. Word2vec引爆Embedding潮流

自然語言處理領(lǐng)域中我們使用Embedding技術(shù)來進(jìn)行詞編碼,也叫Word Embedding。真正引爆Embedding技術(shù)的是2013年Google超火的Word2Vec技術(shù)。Word2Vec技術(shù)將詞映射到向量空間,通過一組向量來表示文本。Word2Vec技術(shù)很好的解決了One-hot編碼引起的高緯度和稀疏矩陣的問題。

下圖是我們通過Word2Vec將文本映射到三維立體空間中:

圖2 Word2Vec映射到三維空間展示圖

通過Word2Vec技術(shù)我們可以在低緯空間上表示文本。我們還可以通過計(jì)算詞向量空間中的距離來表示語義的相似度。通過上圖我們可以看出足球和世界杯的距離比較近,奧巴馬和美國大選比較近,馬云和阿里巴巴比較近等等。

Word2vec中有兩種模型結(jié)構(gòu):CBOW和Skip-gram。CBOW就是通過上下文的詞來預(yù)測(cè)當(dāng)前詞,非常好理解的一個(gè)方式就是我們小時(shí)候英語考試中的完形填空。給你一段話,中間摳去幾個(gè)詞,然后讓你按照上下文來預(yù)測(cè)摳掉的這幾個(gè)詞。而另外一種Skip-gram則剛好相反,是根據(jù)當(dāng)前的詞來預(yù)測(cè)上下文的詞,比較抽象,就不舉例子了。CBOW和Skip-gram結(jié)構(gòu)如下圖所示:

圖3 Word2Vec兩種結(jié)構(gòu)

4. 從Word2vec到Item2vec

自從Word2vec引爆Embedding之后,很快Embedding從自然語言領(lǐng)域向所有機(jī)器學(xué)習(xí)領(lǐng)域輻射,這其中就包括廣告、搜索、推薦等等領(lǐng)域。就拿推薦領(lǐng)域中抖音短視頻來說,我們根據(jù)用戶觀看的短視頻序列來給用戶推薦下一個(gè)視頻。因?yàn)橛脩簟⒁曨l等數(shù)據(jù)的稀疏性,我們?cè)跇?gòu)建DNN神經(jīng)網(wǎng)絡(luò)之前需要對(duì)用戶user和視頻video進(jìn)行Embedding操作,然后才喂給模型去訓(xùn)練。關(guān)于Item2vec有一篇論文推薦:Item2Vec:Neural Item Embedding for Collaborative Filtering。

從本質(zhì)上來說,Word2vec僅僅是Item2vec應(yīng)用到自然語言處理領(lǐng)域中的一種。區(qū)別在于Word2vec有順序關(guān)系,同樣的幾個(gè)詞因?yàn)轫樞虿煌赡鼙磉_(dá)的語義也是大相徑庭的。而Item2vec則舍去序列中item的空間關(guān)系,沒有了時(shí)間窗口的概念。就拿用戶觀看短視頻來說,一段時(shí)間內(nèi)用戶觀看ABCDEFG和EFGDCBA我們認(rèn)為是一樣的,更多的是考慮item之間的條件概率。下面是論文中Item2vec的目標(biāo)函數(shù):

圖4 Item2vec目標(biāo)函數(shù)

引入了Item2vec,下面我們正式進(jìn)入一網(wǎng)打盡Youtube深度學(xué)習(xí)推薦系統(tǒng),詳細(xì)說說我們?nèi)绾问褂肊mbedding技術(shù)來做用戶視頻推薦的。

03 Youtube深度學(xué)習(xí)推薦系統(tǒng)

1. Youtube推薦系統(tǒng)背景和面臨挑戰(zhàn)

國人對(duì)Youtube可能不是很熟悉,這里拿抖音短視頻來類比。咱們部分人可能每天會(huì)花部分時(shí)間看短視頻娛樂消遣。對(duì)于抖音來說,用戶觀看視頻的時(shí)間越長(zhǎng),可能產(chǎn)生的商業(yè)收益就會(huì)越高。這里用可能來說是有原因的。如果我們只是每天看抖音短視頻而沒有任何廣告轉(zhuǎn)化,其實(shí)對(duì)于抖音來說并不會(huì)真正產(chǎn)生商業(yè)收益,真正讓抖音產(chǎn)生收益的是看一會(huì)視頻突然冒出來的那一兩個(gè)廣告。只有這些廣告經(jīng)過用戶點(diǎn)擊、下載甚至付費(fèi)行為才會(huì)給抖音增加商業(yè)收益。所以小伙伴們,這里我真誠的建議大家在享受抖音帶來免費(fèi)的快樂的同時(shí),也盡一點(diǎn)自己的綿薄之力,點(diǎn)點(diǎn)廣告,下載啥的,這樣才能真的綠水長(zhǎng)流。這也只有真正做廣告這一行業(yè)才能明白其中的艱辛。

抖音短視頻需要根據(jù)不同的用戶興趣來推薦不同類型的短視頻,這樣才能吸引大家不斷的觀看。舉個(gè)反例,如果給一個(gè)喜歡做飯的用戶不停的推薦游戲,那這個(gè)用戶看兩個(gè)就失去興趣果斷不看了。

圖5 Youtube上的視頻推薦

推薦系統(tǒng)領(lǐng)域中,尤其是像抖音這樣海量用戶下面臨海量視頻的推薦,主要面臨以下幾個(gè)挑戰(zhàn):

超大量級(jí)的用戶和視頻規(guī)模,真正面臨大數(shù)據(jù)挑戰(zhàn);

視頻和用戶的行為更新速度非常快。視頻方面,每秒都會(huì)有大量的視頻上傳,不僅存在流行熱點(diǎn)的問題,而且需要平衡新視頻和庫存視頻間的平衡。用戶方面,用戶興趣的轉(zhuǎn)變也非常快,可能今天喜歡游戲,明天就喜歡其他的,所以需要實(shí)時(shí)追蹤用戶的興趣;

用戶反饋存在很多噪音。一方面用戶的歷史行為是稀疏并且不完整的,另一方面視頻數(shù)據(jù)本身是非結(jié)構(gòu)化的,所以對(duì)于模型的魯棒性要求很高。

2. 算法整體架構(gòu)

圖6 Youtube算法整體架構(gòu)

整體來看,Youtube深度學(xué)習(xí)推薦系統(tǒng)分成兩段式,第一段是Candidate Generation Model,表面上理解就是生成候選項(xiàng)模型。像Youtube這樣大體量的公司,擁有的視頻資源量也是海量的。對(duì)于用戶而言在視頻資源池中我們可能會(huì)有百萬數(shù)量級(jí)的候選視頻可供推薦。這一段模型主要作用是從百萬數(shù)量級(jí)的視頻中進(jìn)行初篩操作。經(jīng)過這一輪的初篩,我們從百萬級(jí)別的視頻中選出了用戶可能感興趣的百數(shù)量級(jí)的視頻;第二段是Ranking,可以理解為精排的操作。經(jīng)過這一輪精排操作,我們從這百數(shù)量級(jí)的視頻中選出了用戶最可能看的幾十?dāng)?shù)量級(jí)的視頻,并且會(huì)進(jìn)行排序,這個(gè)排序就會(huì)作為用戶接下來觀看的視頻列表。這就是Youtube深度學(xué)習(xí)推薦系統(tǒng)的整體框架。下面咱們?cè)敿?xì)說下這兩段模型。

3. 生成候選項(xiàng)模型Candidate Generation Model

圖7 生成候選項(xiàng)模型

生成候選項(xiàng)模型如上圖所示。咱們從下往上一層層抽絲剝縷。最下面一層是Embedded Video Watches和Embedded Search Tokens,作者通過Word2vec的方法對(duì)用戶觀看視頻的歷史和搜索詞做了Embedding操作。經(jīng)過這一波操作我們可以得到Wach Vector和Search Vector兩個(gè)向量,這兩個(gè)向量作為用戶觀看視頻和搜索的特征輸入。除此之外,我們還有地理位置的特征Geographic Embedding,性別相關(guān)的特征Gender等等。

這里有個(gè)比較特殊的特征叫Example Age。這個(gè)特征的作用是刻畫用戶對(duì)新視頻的偏好程度。具體的做法是比如用戶在20200410號(hào)下午20點(diǎn)18分點(diǎn)擊了某個(gè)視頻,那么產(chǎn)生了一條數(shù)據(jù)樣本。后面模型訓(xùn)練的時(shí)候這條樣本對(duì)應(yīng)的Example Age就等于模型訓(xùn)練時(shí)那個(gè)時(shí)刻減去20200410號(hào)下午20點(diǎn)18分這個(gè)時(shí)刻。

如果模型訓(xùn)練時(shí)間距離樣本產(chǎn)生的時(shí)間超過24小時(shí),則設(shè)置為24。而當(dāng)模型線上預(yù)測(cè)的時(shí)候則將這個(gè)特征置為0,這里設(shè)置為0的意思也很明顯,保證預(yù)測(cè)的時(shí)候是處于模型訓(xùn)練的最后一刻。一個(gè)實(shí)際的現(xiàn)象是某個(gè)好視頻剛出來那會(huì)是最容易被大家瘋轉(zhuǎn)點(diǎn)擊和轉(zhuǎn)發(fā)的,過了一段時(shí)間之后熱度就會(huì)慢慢降下來趨于穩(wěn)定,也就是視頻存在一定的“時(shí)效性”。論文中也印證了加入該特征對(duì)模型的影響:

圖8 Example Age特征的影響

通過上圖我們可以發(fā)現(xiàn)加入Example Age能使模型的預(yù)測(cè)更加接近經(jīng)驗(yàn)分布,也更切合實(shí)際。

這里延伸到我們現(xiàn)在的業(yè)務(wù)中會(huì)有這樣的思考:對(duì)于給用戶投放廣告來說,用戶對(duì)于廣告的新鮮度也是有一定偏好的。同樣的廣告來回給用戶曝光,廣告的轉(zhuǎn)化效果應(yīng)該不怎么樣。分別從用戶喜歡或者不喜歡某個(gè)廣告來看,如果喜歡之前應(yīng)該點(diǎn)過,那么后面應(yīng)該不會(huì)再點(diǎn)。這里一個(gè)生活中的經(jīng)驗(yàn)是就算周星馳的電影大家也不會(huì)在短時(shí)間內(nèi)來回看,更別說廣告了;如果不喜歡曝光多少次都是沒用的。這里對(duì)于業(yè)務(wù)實(shí)踐可能會(huì)有幫助。

言歸正傳,得到這些不同的特征之后我們會(huì)把這些特征拼接起來,這里就完成了特征準(zhǔn)備工作。下面就是把這些特征喂給我們的三層Relu神經(jīng)網(wǎng)絡(luò)了。

經(jīng)過三層Relu神經(jīng)網(wǎng)絡(luò)后我們得到了User Vector。User Vector一方面會(huì)用于模型線上服務(wù),另一方面會(huì)通過一個(gè)Softmax層,Softmax會(huì)輸出當(dāng)前用戶可能觀看候選的百萬級(jí)別的視頻的概率,這里其實(shí)變成了一個(gè)多分類問題

現(xiàn)在用戶可能會(huì)看這百萬級(jí)別的視頻,每個(gè)視頻會(huì)有一個(gè)概率,這些概率值相加為1。這里有個(gè)工程上的問題,因?yàn)楹蜻x的視頻有百萬級(jí)別,那么相當(dāng)于是個(gè)百萬數(shù)量級(jí)的多分類,這樣對(duì)模型的效果和速度都會(huì)有很大的影響。那么Youtube的工程師是怎么做的呢?論文中說進(jìn)行了負(fù)采樣(Negative Sampling),并且使用Importance Weighting的方法對(duì)采樣進(jìn)行了校準(zhǔn)操作。

這里通過一個(gè)例子來說明負(fù)采樣具體怎么做的。比如我們現(xiàn)在有100W個(gè)候選視頻,其實(shí)就有100W個(gè)類了。現(xiàn)在有個(gè)樣本的標(biāo)簽是class_3,因?yàn)槟P陀?xùn)練使用的是Softmax函數(shù),所以模型更新參數(shù)會(huì)盡量使class_3的Softmax值偏向1,其他99W9999的類的Softmax值輸出偏向0。當(dāng)我們采用負(fù)采樣的時(shí)候,如果設(shè)置負(fù)采樣的數(shù)目為9999,那么相當(dāng)于屏蔽了99W的類別,這樣模型每次更新會(huì)使當(dāng)前類別對(duì)應(yīng)的Softmax接近1,其他9999個(gè)類別的Softmax偏向0,將百萬分類“變”成了一萬分類。通過上面這些工程上的騷操作使得生成候選項(xiàng)模型即使面對(duì)百萬數(shù)量級(jí)的分類下依然能從容的應(yīng)對(duì)模型訓(xùn)練和模型效果。

經(jīng)過Softmax之后我們得到了視頻向量Video Vector。這里又有個(gè)工程上的問題,為啥要采用最近鄰搜索算法來選擇百級(jí)別的視頻?這里則是從工程和學(xué)術(shù)的角度做權(quán)衡之后的結(jié)果。如果直接使用訓(xùn)練時(shí)的模型去預(yù)測(cè)百萬級(jí)別的候選集,模型的時(shí)間開銷太大。一個(gè)不錯(cuò)的選擇是我們通過模型分別得到User Embedding和VideoEmbedding之后,通過最近鄰搜索的方法可以大幅度提升效率。工業(yè)中一般是將User Embedding和Video Embedding存儲(chǔ)到Redis這一類內(nèi)存數(shù)據(jù)庫中。

這里有的小伙伴好奇這個(gè)User Embedding和Video Embedding具體怎么來的,咱們?cè)偌?xì)致的講講。這里通過一個(gè)詳細(xì)的例子來說明:

關(guān)于UserEmbedding,當(dāng)我們的模型訓(xùn)練完成之后,假如我們用100維度來表示User Embdding,那么我們隱藏層的最后一層輸出的維度就是100X1維,隱藏層的輸出作為Softmax層的輸入,也就是說Softmax層的輸入就是100X1維,而這個(gè)100X1維就是User Embedding。因?yàn)橛脩舻男袨槭遣粩喔碌模杂脩舻腢ser Embedding也是不斷更新的,需要實(shí)時(shí)計(jì)算。實(shí)際項(xiàng)目中在機(jī)器等資源充足的情況下最好能做到User Embedding和Video Embedding高頻度的更新,這樣就能把用戶最新的觀看和搜索行為都能進(jìn)入輸入層從而得到反應(yīng)用戶最新的User Embedding。DNN輸入是用戶當(dāng)時(shí)觀看和搜索的視頻(相對(duì)變化較大的)和用戶畫像(相對(duì)穩(wěn)定的)特征組合,分別進(jìn)入三層Relu得到一個(gè)100X1維向量,這就是實(shí)時(shí)的User Embedding;

關(guān)于Video

Embdding,如果我們候選的視頻有200W的話,那么我們Softmax的輸出層就是200WX1,因?yàn)镾oftmax是輸出每個(gè)視頻被用戶下一次觀看的概率值。所以Softmax層的權(quán)重矩陣就是W(100X200W),經(jīng)過轉(zhuǎn)置就成了W(200WX100)。因?yàn)橛?00W個(gè)視頻,所以是200W行,每個(gè)視頻是100X1維,也就得到每個(gè)視頻對(duì)應(yīng)的Video Embedding。

這里得到User Embedding和Video Embedding之后,當(dāng)我們要計(jì)算user_i觀看video_j的概率時(shí),就可以通過兩個(gè)100維向量做內(nèi)積得到。

這里還涉及到幾個(gè)工程方面牛逼的操作:

每個(gè)用戶生成固定數(shù)量的訓(xùn)練樣本。在實(shí)際場(chǎng)景中,總會(huì)出現(xiàn)一些比較活躍的用戶,而這些高度活躍的用戶會(huì)對(duì)loss產(chǎn)生過度的影響。為了消除這部分影響,我們對(duì)每個(gè)用戶使用固定的樣本,平等的對(duì)待每個(gè)用戶;

Youtube完全摒棄了用戶觀看視頻的時(shí)序信息,把用戶最近一段時(shí)間看的視頻同等對(duì)待。這里其實(shí)是容易理解的。當(dāng)我們推薦的結(jié)果過多的受最近觀看或者搜索的某個(gè)視頻,會(huì)影響用戶多樣性的體驗(yàn)。舉個(gè)例子來說,就算一個(gè)用戶再喜歡王者榮耀的視頻,你不斷的推薦這種類型的視頻,用戶肯定也會(huì)審美疲勞的。因?yàn)橥ǔ碚f用戶會(huì)有多個(gè)興趣,所以我們需要做到在用戶的多個(gè)興趣間循環(huán),讓用戶感興趣但又不會(huì)覺得膩;

對(duì)視頻進(jìn)行Embedding操作時(shí)把大量長(zhǎng)尾的視頻直接用0向量來代替。這樣做也是基于經(jīng)典工程和算法的一次權(quán)衡,把大量長(zhǎng)尾的視頻截?cái)啵饕康氖枪?jié)約線上服務(wù)寶貴的內(nèi)存資源;

Youtube工程師選擇用戶最近一次觀看的視頻作為測(cè)試集,主要原因是防止引入未來信息,從而產(chǎn)生和實(shí)際情況不符的數(shù)據(jù)穿越現(xiàn)象;

數(shù)據(jù)源的多樣性。模型不僅用了視頻觀看歷史,而且還用了用戶搜索。豐富的數(shù)據(jù)源可以多維度的刻畫用戶的興趣,這也是我們實(shí)際工作中給用戶打標(biāo)簽非常重要的;

關(guān)于候選項(xiàng)模型DNN網(wǎng)絡(luò)結(jié)構(gòu)的設(shè)計(jì),性價(jià)比最高的方案是1024Relu->512Relu->256Relu

關(guān)于業(yè)務(wù)方面還需要說明的是模型優(yōu)化目標(biāo)的確定。Youtube推薦系統(tǒng)將用戶觀看時(shí)間作為模型優(yōu)化的目標(biāo),這是同時(shí)從模型和商業(yè)的角度分析得到的結(jié)果。模型方面需要反映用戶真實(shí)的興趣,選擇觀看時(shí)間比點(diǎn)擊率或者播放率可能更有效。有時(shí)候用戶雖然點(diǎn)了視頻,但是可能看了兩秒覺得沒啥意思,這時(shí)如果把點(diǎn)擊率當(dāng)做評(píng)價(jià)指標(biāo),這條樣本就是正例,但實(shí)際情況是用戶可能對(duì)這條視頻沒啥興趣。但是如果選擇觀看時(shí)間則能進(jìn)一步反應(yīng)用戶興趣,能在沒興趣的前提下堅(jiān)持把視頻看完是少之又少的。所以這里給咱們機(jī)器學(xué)習(xí)工程師的參考意義是開發(fā)模型的時(shí)候要深入到業(yè)務(wù)中,畢竟模型最終是服務(wù)于業(yè)務(wù)的。明確模型要優(yōu)化的目標(biāo)是成功的一半。

到這里,咱們完成了生成候選項(xiàng)模型的講解,下面進(jìn)入第二段精排模型。

4. 精排模型Ranking

圖9 精排模型

精排階段的模型如上圖所示,可以發(fā)現(xiàn)精排模型和生成候選項(xiàng)模型非常類似。區(qū)別在于特征工程和最上層部分。論文中其實(shí)也有說明,精排階段的DNN模型目的是加入更多的視頻描述特征、用戶特征以及用戶和視頻之間關(guān)系的特征,從而真正達(dá)到對(duì)候選視頻精排的目的。我們同樣是從下往上層層剖析。首先就是最下層的特征工程,從左到右依次說明:

Video Embedding:這里主要包括Impression Video ID和Watched Video IDS。其中Impression Video ID是當(dāng)前要計(jì)算的視頻的Embedding,Watched Video IDS是用戶最后觀看的N個(gè)視頻Embedding的Average;

Language Embedding:這里主要包括User Language和Video Language。其中User Language是用戶語言的Embedding,Video Language是視頻語言的Embedding;

Time Since Last Watch:這是用戶最近一次看同類型Channel視頻的時(shí)間間隔;

#Previous Impressions:這是記錄當(dāng)前視頻給當(dāng)前用戶的曝光次數(shù)。

其中Time Since Last Watch和#Previous Impression這兩個(gè)特征很好的關(guān)注了用戶和視頻之間關(guān)系。Time Since Last Watch主要用來關(guān)注用戶觀看同類型視頻時(shí)間的間隔。這個(gè)是從用戶興趣的角度來進(jìn)行的一種Attention行為。假如用戶才看過“王者榮耀”類型的視頻,那么該用戶對(duì)這一類視頻是有興趣的,所以在后面的觀看列表中添加這一類視頻用戶應(yīng)該也會(huì)喜歡看。這里涉及到推薦系統(tǒng)需要給用戶打標(biāo)簽的部分。這個(gè)特征最終的目的就是用戶觀看了某類視頻,對(duì)這類視頻就有興趣。之前分享過一篇通過用戶操作手機(jī)行為給用戶打標(biāo)簽的文章廣告系列第一篇統(tǒng)一興趣建模流程,有興趣的小伙伴可以翻來看看。

#Previous Impression特征則是讓模型注意避免將一個(gè)視頻重復(fù)曝光給用戶,從而造成無效曝光。感覺這個(gè)特征和上面的Time? Since Last? Watch是相互作用的關(guān)系。上面的特征是讓給用戶打標(biāo),了解用戶對(duì)某一類視頻感興趣。這個(gè)特征則告訴模型要適度。不能發(fā)現(xiàn)用戶對(duì)某個(gè)視頻感興趣就瘋狂的推薦。這兩個(gè)特征和前面講的我們要讓用戶看視頻時(shí)既有興趣,又不會(huì)覺得膩。還是比較難的。

值得注意的是上面兩個(gè)特征都進(jìn)行了歸一化操作。不僅如此,還將歸一化后的特征進(jìn)行開方和平方處理后當(dāng)做了不同的特征喂給模型。這是簡(jiǎn)單有效的工程經(jīng)驗(yàn),通過開方和平方的操作引入了特征的非線性。從論文反饋的效果來看,這一操作提升了模型離線的評(píng)估指標(biāo)。

下面還是同樣的操作,將這些特征進(jìn)行拼接之后喂給模型。后面跟了三層Relu神經(jīng)網(wǎng)絡(luò)。然后使用了帶權(quán)重的邏輯回歸函數(shù)Weighted Logistic Regression作為輸出層。這里使用帶權(quán)重的邏輯函數(shù)主要原因是模型使用了視頻預(yù)期觀看時(shí)間作為優(yōu)化目標(biāo),可以把觀看時(shí)間作為正樣本的權(quán)重,在提供線上服務(wù)的時(shí)候通過e(Wx+b)做預(yù)測(cè)得到期望觀看時(shí)間的近似。

到這里,咱們完成了精排模型的講解。

總結(jié)

本篇主要分析Youtube深度學(xué)習(xí)推薦系統(tǒng),借鑒模型框架以及工程中優(yōu)秀的解決方案從而應(yīng)用于實(shí)際項(xiàng)目。首先講了下用戶、廣告主和抖音這一類視頻平臺(tái)三者之間的關(guān)系:就是平臺(tái)將視頻資源作為商品免費(fèi)賣給用戶,同時(shí)將用戶作為商品有償賣給廣告主,僅此而已。平臺(tái)想獲取更高的收益就必須提升廣告的轉(zhuǎn)化效率,而前提是吸引用戶增加觀看視頻的時(shí)長(zhǎng),這里就涉及到視頻推薦的問題。因?yàn)閅outube深度學(xué)習(xí)推薦系統(tǒng)是基于Embedding做的,所以第二部分講了下Embedding從出現(xiàn)到大火的經(jīng)過。最后一網(wǎng)打盡Youtube深度學(xué)習(xí)推薦系統(tǒng)。該系統(tǒng)主要分成兩段式,第一段是生成候選項(xiàng)模型,主要作用是將用戶可能感興趣的視頻資源從百萬級(jí)別初篩到百級(jí)別;第二段是精排模型,主要作用是將用戶可能感興趣的視頻從百級(jí)別精挑到幾十級(jí)別,然后按照興趣度得分進(jìn)行排序形成用戶觀看列表。第三部分也是本篇的重點(diǎn)內(nèi)容。

參考資料

1. 《Item2Vec: Neural Item Embedding forCollaborative Filtering》

2. 《Deep Neural Networks for YouTubeRecommendations》

注意:本篇黑色加粗的部分是對(duì)實(shí)際項(xiàng)目中有借鑒意義的實(shí)操經(jīng)驗(yàn),小伙伴們可以重點(diǎn)關(guān)注下。

最新最全的文章請(qǐng)關(guān)注我的微信公眾號(hào):數(shù)據(jù)拾光者。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,837評(píng)論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,196評(píng)論 3 414
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,688評(píng)論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,654評(píng)論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,456評(píng)論 6 406
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 54,955評(píng)論 1 321
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,044評(píng)論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,195評(píng)論 0 287
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,725評(píng)論 1 333
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,608評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,802評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,318評(píng)論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,048評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,422評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,673評(píng)論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,424評(píng)論 3 390
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,762評(píng)論 2 372

推薦閱讀更多精彩內(nèi)容