在廣告系統(tǒng)中,CTR, CvR等模型想必大家都非常熟悉了。將一個(gè)包含一系列特征值的樣本輸入CTR, CvR模型,模型輸出一個(gè)點(diǎn)擊率或者轉(zhuǎn)化率的預(yù)估值。有時(shí)候我們也會(huì)遇到一些情況,除了需要預(yù)估值之外,還需要知道預(yù)估值的不確定度(Uncertainty)(或者預(yù)估值的分布,有了分布,通常不確定度也能算出來(lái))。
我們從三個(gè)問(wèn)題引出今天的討論。
問(wèn)題一: 什么是不確定度?
有些朋友可能對(duì)不確定度沒(méi)有什么概念。舉個(gè)例子:
廣告A: 3個(gè)展現(xiàn)1個(gè)點(diǎn)擊,因此點(diǎn)擊率為1/3
廣告B: 300個(gè)展現(xiàn)100個(gè)點(diǎn)擊,因此點(diǎn)擊率為1/3
這個(gè)時(shí)候我們對(duì)廣告A與B的點(diǎn)擊率預(yù)估值可能都是1/3,但是因?yàn)閺V告A的樣本數(shù)很少,如果因?yàn)橐恍╇S機(jī)因素少來(lái)一個(gè)點(diǎn)擊或者多來(lái)一個(gè)點(diǎn)擊,點(diǎn)擊率都會(huì)發(fā)生巨大變化,因此廣告A點(diǎn)擊率為1/3的不確定度要大于廣告B。從通俗的語(yǔ)言來(lái)理解,“不確定度”就是“預(yù)估準(zhǔn)不準(zhǔn)”的意思。如果點(diǎn)擊率模型會(huì)說(shuō)話,它會(huì)說(shuō):“主人,我會(huì)把這兩個(gè)廣告的點(diǎn)擊率都預(yù)估為1/3,但是我對(duì)廣告A的預(yù)估沒(méi)什么把握,可能會(huì)不準(zhǔn),你要小心使用”。
問(wèn)題二:為什么要關(guān)注不確定度建模?
在廣告系統(tǒng)中,對(duì)于不確定度的建模,雖然沒(méi)有CXR建模來(lái)說(shuō)那么關(guān)鍵,但是隨著兩個(gè)趨勢(shì)的發(fā)展,也越來(lái)越重要了。第一個(gè)趨勢(shì)是廣告主要優(yōu)化的鏈路深度越來(lái)越深(以前優(yōu)化到激活就可以,現(xiàn)在要優(yōu)化到付費(fèi),付費(fèi)金額),而后鏈路數(shù)據(jù)越往后越稀疏。廣告主的深度鏈路優(yōu)化需求,就像-11034米的馬里亞納海溝,我們對(duì)它的觀測(cè)數(shù)據(jù)非常稀少,那里有什么東西的不確定度非常大。第二個(gè)趨勢(shì)是廣告素材逐漸從圖文載體向衰減速度更快的短視頻載體遷移。廣告主必須不斷上新素材,新素材占比越來(lái)越高。更深的后鏈路事件,會(huì)讓CvR的樣本更加稀疏;而新素材也就意味著素材的行為數(shù)據(jù)更加稀少,相關(guān)的CXR樣本更加稀疏 。這個(gè)時(shí)候,怎么能通過(guò)不確定度來(lái)區(qū)分對(duì)待置信和不置信的預(yù)估值,就變得更加重要了。

問(wèn)題三:不確定度可以怎么用?
不確定度在廣告系統(tǒng)中的應(yīng)用可以大概分為兩類(lèi):一是在探索與利用(E&E)中,用來(lái)更有效率地降低不確定度;二是基于不確定度進(jìn)行策略決策。
我們先來(lái)看第一類(lèi)應(yīng)用,在此之前先介紹下不確定度建模的一個(gè)最簡(jiǎn)單的方法:
其中n為包含目標(biāo)對(duì)象(item)的樣本數(shù)。在實(shí)際工作里,很多時(shí)候用這個(gè)簡(jiǎn)單的方法來(lái)估計(jì)不確定度就夠了。在很多經(jīng)典算法里,實(shí)時(shí)上也是近似地用了這個(gè)公式,例如E&E里UCB算法。假設(shè)我們要估計(jì)剛才那兩個(gè)廣告點(diǎn)擊率的不確定度,n就等于每個(gè)廣告的曝光次數(shù),那么廣告A的不確定度為??,而廣告B的不確定度只有
,是廣告A的十分之一。廣告B比廣告A曝光增加了100倍,不確定度只變成原來(lái)1/10,而不是1/100。所以我們可以發(fā)現(xiàn),隨著曝光的增加,不確定的下降速度是慢慢降低的。而最開(kāi)始的幾次曝光,讓不確定度下降得最明顯。如果我們的目標(biāo)是讓所有廣告總的不確定度下降最多的話,那么選已曝光次數(shù)少的(也就是不確定度高的,帶來(lái)信息量大的),是效率比較高的方式。所以很多E&E策略,在探索的時(shí)候會(huì)根據(jù)item不確定度值的高低,來(lái)決定item被探索的概率。當(dāng)然,不確定度只是決定探索概率的一個(gè)重要因素,還有很多其他因素也需要考慮,但不是本文重點(diǎn),不再贅述。
可是這種最簡(jiǎn)單的不確定建模方式的問(wèn)題是,完全忽略了item之間的關(guān)系。例如廣告A和廣告B很相似,我們推一下極端,假設(shè)它兩完全一樣:都用了素材A,都推廣產(chǎn)品B,定向出價(jià)都是一樣的。那么如果廣告A已經(jīng)被展現(xiàn)了300次,有100次點(diǎn)擊,點(diǎn)擊率是1/3。理想情況下,即使廣告B完全沒(méi)有展現(xiàn),它的點(diǎn)擊率預(yù)估值的不確定度也應(yīng)該是和廣告A一樣的(廣告B借用了廣告A的展現(xiàn)數(shù)據(jù)來(lái)降低了自己預(yù)估值的不確定度)。但是用上面簡(jiǎn)單的方法,不確定度還是(其中n=0),也就是無(wú)窮大。如果廣告B只是和廣告A用一樣的素材,但定向出價(jià)是不一樣的。那么廣告B預(yù)估值的不確定度應(yīng)該是大于廣告A的不確定度,但是小于無(wú)窮大。所以為了得到更加精細(xì)的不確定度,就得考慮有泛化能力的不確定度建模方法,可以把其他相似廣告的不確定度泛化到目標(biāo)廣告。這些更復(fù)雜的建模方法和
的差異大不大呢?基本上可以認(rèn)為跟用點(diǎn)擊率預(yù)估模型來(lái)預(yù)估一個(gè)廣告的點(diǎn)擊率和用這個(gè)廣告自己的后驗(yàn)數(shù)據(jù)(點(diǎn)擊數(shù)/展現(xiàn)數(shù))來(lái)預(yù)估這個(gè)廣告點(diǎn)擊率的差異差不多。值不值得做,就看具體業(yè)務(wù)場(chǎng)景的需求了。
如果使用了有泛化能力的不確定建模方法,除了得到一個(gè)更準(zhǔn)確的不確定度預(yù)估值之外,還有一個(gè)好處是,我們?cè)谶x擇探索的item的時(shí)候,可以主動(dòng)選擇那些可以將不確定度泛化給更多其他item的item來(lái)進(jìn)行探索(例如與很多其他item都相似的item),探索完一個(gè)item,可以降低一批item的不確定度,從而提高每次探索能降低的總不確定度。就像農(nóng)藥里蔡文姬的二技能“彈彈彈”,攻擊一個(gè)敵人,傷害一群敵人。

在廣告系統(tǒng)中,除了廣告冷啟動(dòng),還有很多需要做E&E的地方,都可能會(huì)用到不確定度,例如其他緯度冷啟動(dòng)(如素材冷啟動(dòng),用戶(hù)冷啟動(dòng)),投放系統(tǒng)E&E,模型訓(xùn)練/投放系統(tǒng)的超參數(shù)搜索,智能擴(kuò)量等等。另外,不確定度建模在強(qiáng)化學(xué)習(xí)里,也有成熟的應(yīng)用。例如強(qiáng)化學(xué)習(xí)里agent在一個(gè)environment學(xué)習(xí),為了提高學(xué)習(xí)效率,需要盡量走到不確定性高的地方(類(lèi)似E&E場(chǎng)景),這樣能收集到的樣本帶來(lái)的信息量最大。
接下來(lái),我們看看不確定度的第二類(lèi)應(yīng)用場(chǎng)景,基于不確定度進(jìn)行策略決策。
為什么在決策中只考慮預(yù)估值不夠,也需要考慮不確定度呢?舉個(gè)例子來(lái)說(shuō),坐公交車(chē)到公司平均需要30分鐘,但是可能因?yàn)槎萝?chē)需要40分鐘,也可能因?yàn)橐宦肪G燈,只需要20分鐘。坐地鐵也平均需要30分鐘,但是幾乎不受其他因素影響,非常準(zhǔn)時(shí)。顯而易見(jiàn),坐公交車(chē)上班為30分鐘的不確定度要大于坐地鐵上班為30分鐘的不確定度。如果要上班不遲到,坐公交車(chē)就得提早40分鐘出門(mén),而坐地鐵只需要提早30分鐘。這就是決策不能只考慮期望值,也得考慮不確定度的一個(gè)例子。

對(duì)于廣告來(lái)說(shuō),以剛才的例子來(lái)說(shuō),廣告B的點(diǎn)擊率為1/3已經(jīng)很確定了,如果成本是達(dá)標(biāo)的,那么投放系統(tǒng)就可以大膽放量了。對(duì)于廣告A的點(diǎn)擊率為1/3,是還不太確定的,可能更高,可能更低。為了不要超成本,廣告系統(tǒng)的一個(gè)可能更優(yōu)的選擇是通過(guò)出比廣告B稍微低一些的價(jià)格保守投放廣告A,等到積累的展現(xiàn)點(diǎn)擊數(shù)更多了,再大膽投放。在廣告系統(tǒng)中,智能出價(jià),智能定向等等產(chǎn)品中都可能會(huì)用到不確定度進(jìn)行策略決策。
本文最終要介紹的貝葉斯神經(jīng)網(wǎng)絡(luò)(BNN)是一種用神經(jīng)網(wǎng)絡(luò)(當(dāng)然也可以不用神經(jīng)網(wǎng)絡(luò),只是那樣文章估計(jì)沒(méi)人要看)來(lái)建模不確定度的模型,這個(gè)模型的輸入和普通模型一樣,但是輸出的是一個(gè)預(yù)估值的分布而不是單獨(dú)的一個(gè)預(yù)估值。有了這個(gè)預(yù)估值的分布,我們也可以再算出分布的期望值作為最終預(yù)估值,也可以得到這個(gè)分布的方差來(lái)表征的不確定度。預(yù)估出來(lái)的是分布,網(wǎng)絡(luò)中的權(quán)重也是分布(在具體實(shí)現(xiàn)的時(shí)候,權(quán)重和預(yù)估值的分布,大多數(shù)是通過(guò)從分布中采樣的樣本集來(lái)近似表示)。

(圖片來(lái)源鏈接:https://www.researchgate.net/publication/329843608_How_machine_learning_can_assist_the_interpretation_of_ab_initio_molecular_dynamics_simulations_and_conceptual_understanding_of_chemistry)
貝葉斯神經(jīng)網(wǎng)絡(luò)涉及到的概念樹(shù)大概長(zhǎng)下面這個(gè)樣子。里面有很多概念其實(shí)每一個(gè)單獨(dú)自身也是非常有意思的話題。我自己覺(jué)得這篇文章可能一方面是希望把貝葉斯神經(jīng)網(wǎng)絡(luò)講明白,而逐漸把涉及的概念講清楚;從另外一個(gè)角度來(lái)說(shuō),也是想把這些有意思的概念通過(guò)一個(gè)結(jié)構(gòu)給串起來(lái)(喬布斯的connecting the dots)。因?yàn)橹挥谐山Y(jié)構(gòu)的知識(shí)體系,才比較容易被理解和記憶。為了保證大家理解的順暢度,本文盡量保證全文用統(tǒng)一的一套數(shù)學(xué)標(biāo)記和符號(hào),因此公式全部重新手打,難免有錯(cuò)誤的地方,歡迎大家指出。

廢話不多說(shuō),我們的旅程從經(jīng)典的貝葉斯公式開(kāi)始:
(對(duì)于沒(méi)有見(jiàn)過(guò)這個(gè)公式的朋友,可能本系列的文章讀起來(lái)會(huì)有些吃力了。)

這個(gè)公式里,D是觀察數(shù)據(jù)或者是訓(xùn)練的樣本,??是模型的參數(shù)。?
?叫似然率(Likelihood),?
?叫先驗(yàn)(Prior),?
?叫后驗(yàn)(Posterior),?
?叫證據(jù)(Evidence)。
很多的資料上有所謂頻率學(xué)派與貝葉斯學(xué)派之分,但其實(shí)現(xiàn)在很少有人會(huì)區(qū)分這兩者。通常來(lái)說(shuō),頻率學(xué)派從最大似然率的角度來(lái)訓(xùn)練模型(MLE),而貝葉斯學(xué)派通常用兩種方法,一種是最大后驗(yàn)概率(MAP),另外一種是貝葉斯推斷(Bayesian Inference)。
一. 最大似然估計(jì)(MLE)
大家平時(shí)經(jīng)常使用的幾種Loss,例如交叉熵,LogLoss,MSE(Mean Square Error)其實(shí)都是某種分布假設(shè)下的MLE。也就是說(shuō),大多數(shù)時(shí)候,大家通常是站在頻率學(xué)派的角度。接下來(lái)我們通過(guò)公式推導(dǎo)來(lái)展現(xiàn)他們之間的關(guān)系。對(duì)推公式不感興趣的讀者,也可以跳過(guò)證明的部分,記得黑體字的結(jié)論就可以了。
1. 最小化交叉熵=最小化KL散度=最大似然估計(jì)(MLE)
其中??(簡(jiǎn)寫(xiě)為P)就是真實(shí)值的分布,?
?(簡(jiǎn)寫(xiě)為Q)是預(yù)估模型預(yù)估值的分布,?
?就是P分布和Q分布的交叉熵。如下面的公式,根據(jù)交叉熵的定義,可以把H(P,Q)展開(kāi)為P的熵H(P)和P到Q的KL散度?
?之和。因?yàn)镠(P)即真實(shí)分布的熵與?
?無(wú)關(guān)(?
?是個(gè)常數(shù)),因此最小化他們的交叉熵,就等于最小化P到Q的KL散度。
我們把P和Q的簡(jiǎn)寫(xiě)展開(kāi),再把KL的定義帶入,則有
這里需要回顧一下微積分公式??,當(dāng)x的分布是p(x)時(shí),這個(gè)積分求出來(lái)的就是f(x)的均值。所以有
我們的訓(xùn)練樣本??就是從真實(shí)樣本中采樣得到的,因此有
同樣的,??與?
?無(wú)關(guān),所以可以從argmin里去掉,則有
上式就是最大似然估計(jì),得證!

2. Log Loss是在二分類(lèi)情況下的交叉熵(Cross Entropy)
對(duì)于比如點(diǎn)擊率預(yù)估來(lái)說(shuō),P和Q都服從伯努利分布。也就是說(shuō)
?,
則
上式也叫做Log Loss,即Log Loss是在二分類(lèi)情況下的交叉熵(Cross Entropy)。因此最小化Log Loss本質(zhì)上也是最大似然估計(jì)(MLE)
3. 如果我們用正態(tài)分布來(lái)建模預(yù)估值,
?,其中?
那么似然率就是:
最大化上式(即MLE),等于最小化??,即MSE。
通過(guò)上面三個(gè)證明,把大家平時(shí)用得最多的交叉熵,logloss, MSE作為loss的方法,都?xì)w到了MLE的范圍內(nèi)。MLE最大的特點(diǎn)就是不考慮先驗(yàn)分布。接下來(lái)我們看看把先驗(yàn)分布納入會(huì)發(fā)生什么變化。
二. 最大后驗(yàn)概率(MAP)
接下來(lái)我們來(lái)討論最大后驗(yàn)概率MAP(Maximize a Posterior), 所謂后驗(yàn)(Posterior) 即下面這個(gè)式子
因?yàn)??是與參數(shù)?
?無(wú)關(guān)的量,因此求argmax的時(shí)候可以把P(D)去掉,即:
我們可以看到MAP和MLE的區(qū)別,就在于后面乘了一個(gè)先驗(yàn)??。這個(gè)先驗(yàn)的作用是在訓(xùn)練數(shù)據(jù)不充分的時(shí)候,讓參數(shù)有一個(gè)更加符合先驗(yàn)假設(shè)的值,防止參數(shù)過(guò)擬合。說(shuō)到防止過(guò)擬合,大家可能都會(huì)想到最經(jīng)典的L1-norm和L2-norm。事實(shí)上,我們可以證明,如果先驗(yàn)選擇協(xié)方差矩陣為單位矩陣常數(shù)倍的高斯分布,則MAP=MLE+L2-norm,而如果先驗(yàn)選擇協(xié)方差矩陣為單位矩陣常數(shù)倍的拉普拉斯分布,則MAP=MLE+L1-norm。
證明如下:
因?yàn)?img data-ratio="0.6060606060606061" src="https://cdn.dlz123.cn/uploads/images/2021-07-14/mmbiz_svg/LHdtlaBo22dZZjKKo6ia6GrfibHKGjbl5wVyJIf0RK8koe9Z2bZFOCWKgxyAy02QBqnDLWWibemXfdsTQ3ITZ5cd6C0KHuvzTGF.svg" data-type="svg" data-w="33" style="vertical-align: middle;margin-right: 3px;margin-left: 3px;display: inline-block;">?為協(xié)方差矩陣為單位矩陣常數(shù)倍的高斯分布,即
展開(kāi)高斯分布則有
其中?替代了那一堆常數(shù),?
?也就是L2-norm正則項(xiàng)前面的系數(shù)。得證!
同理,如果先驗(yàn)??選擇拉普拉斯分布,則有
同樣地,展開(kāi)拉普拉斯分布
其中?替代了那一堆常數(shù),?
?也就是L1-norm正則項(xiàng)前面的系數(shù)。得證!
MAP相比MLE,用先驗(yàn)起到了類(lèi)似正則項(xiàng)的作用,控制模型不過(guò)擬合。MAP的全稱(chēng)是maximium a posteriori, 這里的A表示這只是最大化了其中一個(gè)點(diǎn),有時(shí)候這會(huì)引發(fā)一些問(wèn)題。舉個(gè)例子,假設(shè)后驗(yàn)分布隨著參數(shù)??的變化的分布如下圖:

那么如果用MAP選出來(lái)的?就會(huì)是1,而我們通過(guò)觀察上圖,會(huì)發(fā)現(xiàn)0其實(shí)才是更好的選擇。大部分的概率密度是分布在0附近,1其實(shí)更像是個(gè)異常點(diǎn)。這就是點(diǎn)估計(jì)帶來(lái)的局限性,沒(méi)有考慮整個(gè)分布的形狀,只用了1個(gè)數(shù)來(lái)取代了整個(gè)分布。如果要考慮整個(gè)分布,那么不能只學(xué)習(xí)一個(gè)?
?, 而是要把?
?的整個(gè)分布學(xué)習(xí)下來(lái),再用整個(gè)
的分布去做預(yù)估。所以更加理論完美的方式是用貝葉斯推斷。
三、貝葉斯推斷
貝葉斯推斷通常遵循以下的四步:
第一步:假設(shè)先驗(yàn)??,對(duì)似然率建模?
第二步:計(jì)算后驗(yàn)?
展開(kāi)后有?
第三步:計(jì)算預(yù)測(cè)值的分布?
第四步:計(jì)算y的期望值??;
如果需要,計(jì)算y的方差??作為預(yù)估值的不確定度
為了對(duì)比,我們把MAP的也列一下:
第一步:假設(shè)先驗(yàn)??,對(duì)似然率建模?
第二步:計(jì)算讓后驗(yàn)?最大的?
記為?
第三步:將帶入
中。對(duì)于很多
的建模中,都會(huì)將均值表示為?
?的表達(dá)式。例如用伯努利分布建模的點(diǎn)擊率,?
?就是均值;再例如用均值和方差參數(shù)的高斯分布來(lái)建模,均值也是?
?或者?
?的表達(dá)式,帶入就可以得到y(tǒng)的均值(期望值)。
對(duì)比后可以發(fā)現(xiàn),點(diǎn)估計(jì)(MLE或者M(jìn)AP)相比貝葉斯推斷,最主要的區(qū)別在于只用了一個(gè)點(diǎn)??來(lái)代替整個(gè)?
?的分布,這個(gè)分布是否分散(不確定度是否高)的信息就被丟掉了。而在貝葉斯推斷里,我們可以認(rèn)為是按照這個(gè)分布采樣了無(wú)數(shù)個(gè)?
?,對(duì)每個(gè)
都計(jì)算出對(duì)應(yīng)的
,然后再把所有的
平均起來(lái),得到最終的
,也會(huì)比點(diǎn)估計(jì)得到的
更加的準(zhǔn)確。(當(dāng)然,代價(jià)就是計(jì)算復(fù)雜度要高很多)
如果每個(gè)是一個(gè)創(chuàng)造營(yíng)的觀眾的話,
的分布就是觀眾的分布。點(diǎn)估計(jì)就好比在所有觀眾里,找一個(gè)最有代表性的觀眾,用他對(duì)練習(xí)生的投票的分布,作為最終練習(xí)生的排名。而貝葉斯推斷里可以認(rèn)為每個(gè)觀眾
的投票分布是
,我們把所有觀眾的投票匯總,得到最終的總排名分布
,要比最有代表性觀眾的投票更能反映練習(xí)生的受歡迎程度。

四、貝葉斯平滑
接下來(lái),我們舉個(gè)完整的例子,來(lái)對(duì)比下MLE,MAP和貝葉斯推斷。在廣告或者推薦里,我們經(jīng)常需要根據(jù)歷史展現(xiàn)數(shù)n,點(diǎn)擊數(shù)k,來(lái)估計(jì)一個(gè)廣告或者item的點(diǎn)擊率(比如作為統(tǒng)計(jì)特征加到模型里)。我們把這個(gè)要估計(jì)的點(diǎn)擊率,作為點(diǎn)擊率預(yù)估模型的唯一參數(shù),接下來(lái)我們分別用MLE,MAP,貝葉斯推斷來(lái)估計(jì)這個(gè)參數(shù)和使用這個(gè)參數(shù)來(lái)對(duì)點(diǎn)擊率進(jìn)行預(yù)估。也會(huì)引出工作中經(jīng)常用到的貝葉斯平滑方法(很多人可能不知道,它其實(shí)是完整應(yīng)用了貝葉斯推斷推導(dǎo)出來(lái)的)
(1)MLE
首先,我們需要對(duì)似然率建模?建模,很自然的選擇是Bernoulli分布(Bernoulli分布是Binomial在n=1時(shí)候的特例),Bernoulli分布就是專(zhuān)門(mén)用來(lái)刻畫(huà)這類(lèi)問(wèn)題,它唯一的參數(shù)就是點(diǎn)擊率?
。
下面我們用MLE來(lái)做參數(shù)估計(jì)(訓(xùn)練得到??的值),當(dāng)n>1時(shí),Bernoulli分布就變成了Binomial分布,我們把它展開(kāi)就是:
其中?是常數(shù),對(duì)于計(jì)算argmax來(lái)說(shuō)可以直接忽略。再用一下算法從業(yè)人員的老朋友: 取log操作。因?yàn)閘og是單調(diào)函數(shù),取log不影響計(jì)算?
對(duì)上面這個(gè)式子取導(dǎo)數(shù),令導(dǎo)數(shù)為0,就可以知道當(dāng)
的時(shí)候,上面的式子可以取到最大值。
這個(gè)式子的意思就是,對(duì)于點(diǎn)擊率預(yù)估,如果用MLE的方法,就用點(diǎn)擊數(shù)除以展現(xiàn)數(shù)就好了。所以我們平時(shí)從直覺(jué)出發(fā)得到的結(jié)論,其實(shí)是有理論支撐的。不過(guò)如果點(diǎn)擊數(shù)是1,展現(xiàn)數(shù)是2,我們用MLE估計(jì)出來(lái)的點(diǎn)擊率就是0.5。一方面這個(gè)值很可能是偏高的(這個(gè)偏高是因?yàn)閼{借我們對(duì)業(yè)務(wù)的理解,大概知道這個(gè)點(diǎn)擊率比如說(shuō)是在0.1左右),另外一方面是這個(gè)0.5的預(yù)估的不確定度是比較高的(比較不準(zhǔn)的)。解決第1個(gè)預(yù)估偏高的問(wèn)題,我們可以通過(guò)MAP把先驗(yàn)信息引入來(lái)解決。
(2)MAP
MAP和MLE的區(qū)別在于,最大化的不是似然率,而是似然率乘以先驗(yàn)。在這里,我們先驗(yàn)選擇的是Beta分布。似然率分布還是和MLE的一樣。
?,?
只所以做這樣的選擇,是因?yàn)锽eta分布是Binomial分布的共軛先驗(yàn)(Conjugate Prior)。什么叫共軛先驗(yàn)?zāi)???qǐng)看下面的公式(其中??函數(shù)叫Gamma函數(shù),后面我們?cè)俳榻B這個(gè)函數(shù)有什么性質(zhì))
我們把Binomial分布和Beta分布都展開(kāi),就會(huì)發(fā)現(xiàn)一開(kāi)始Binomial分布是??的形態(tài)(a,b,c都與?
?無(wú)關(guān)),與Beta分布相乘之后,還是
的形態(tài)(只是c, a, b的值不一樣了。只要滿(mǎn)足這個(gè)性質(zhì),我們就可以說(shuō)Beta分布是Binomial分布的共軛先驗(yàn)。共軛先驗(yàn)的最大的好處就是:好計(jì)算。當(dāng)我們把計(jì)算出來(lái)的后驗(yàn)當(dāng)成下一次迭代的先驗(yàn)的時(shí)候,再乘以下一次迭代里的似然率,得到的還是
的形態(tài),可以一直迭代下去,計(jì)算非常的方便。所以很多時(shí)候,某些分布(或者模型結(jié)構(gòu))的選擇,不一定都是因?yàn)檫@個(gè)分布或結(jié)構(gòu)貼合當(dāng)前的問(wèn)題,有的時(shí)候純粹就是為了好計(jì)算。其他常見(jiàn)共軛分布可以見(jiàn)(wiki鏈接:https://en.wikipedia.org/wiki/Conjugate_prior)。
類(lèi)似MLE里的計(jì)算,我們依次對(duì)argmin的式子進(jìn)行忽略前面的常數(shù),取log,再求導(dǎo)數(shù),令導(dǎo)數(shù)為0。就可以求解出
這里的??和?
?是先驗(yàn)分布的參數(shù),從直覺(jué)上,我們也可以理解為?
?是虛擬的正樣本數(shù),?
?虛擬的負(fù)樣本數(shù)。例如如果
?和?
分別選擇為11和91,那么如果在一個(gè)展現(xiàn)和點(diǎn)擊也沒(méi)有的時(shí)候,上式等于?
?,也就是說(shuō)先驗(yàn)知識(shí)告訴我們,如何沒(méi)有任何數(shù)據(jù),那么點(diǎn)擊率的先驗(yàn)在0.1左右。當(dāng)n和k的數(shù)字逐漸增大,?
?和?
?的值影響就會(huì)越來(lái)越小,逐漸收斂到?
?。
(3)貝葉斯推斷(Bayesian Inference)
最后是貝葉斯推斷。先驗(yàn)分布,似然率分布還是和上面MAP的保持一致。
?,?
和MAP不一樣的是,我們不是求讓后驗(yàn)最大的??值,而是直接計(jì)算后驗(yàn)分布?;仡櫼幌潞篁?yàn)的公式是這樣的。
MAP階段之所以不用擔(dān)心??的計(jì)算是因?yàn)槲覀兪乔?
?,
?和?
?無(wú)關(guān)所以可以不用管。但是現(xiàn)在要求完整的后驗(yàn)分布,就不能不管了。我們把似然率和先驗(yàn)分別展開(kāi),然后把和?
?無(wú)關(guān)的因素都提出來(lái)到前面,就有了下面的式子。
也不知道是巧合還是Beta分布設(shè)計(jì)的時(shí)候故意的,居然這個(gè)積分有下面的性質(zhì)
第一類(lèi)歐拉積分?
于是我們的??就可以簡(jiǎn)化成下式
接下來(lái),我們就可以計(jì)算后驗(yàn)??,并把上面的式子代入,并約掉幾個(gè)分子和分母都出現(xiàn)的子項(xiàng),就有
到這里后驗(yàn)分布?就算出來(lái)了,可以看到后驗(yàn)還是形如
?。這就是共軛先驗(yàn)帶來(lái)的好處。
第三步是計(jì)算預(yù)測(cè)值的分布,因?yàn)槲覀冇^測(cè)到D后的預(yù)測(cè)值分布??是參數(shù)為?
的Bernoulli 分布,因此預(yù)測(cè)值y的分布就是?
?的分布。好吧,嚴(yán)謹(jǐn)點(diǎn)證明如下:因?yàn)閥只有0和1兩個(gè)取值,因此根據(jù)離散分布的期望值計(jì)算公式
到這里其實(shí)已經(jīng)得到了想要的預(yù)測(cè)值的分布。
第四步就可以計(jì)算預(yù)測(cè)值的均值(或者方差了,方差就可以表示不確定度,但做貝葉斯平滑通常我們只使用均值)

翻開(kāi)大一微積分課本,找到均值計(jì)算公式如下
又碰到了剛遇見(jiàn)的朋友:第一類(lèi)歐拉積分,代入后有
這個(gè)時(shí)候還需要介紹??函數(shù)的一個(gè)性質(zhì),?
?,則有
經(jīng)過(guò)這么一堆復(fù)雜的積分計(jì)算,結(jié)果居然如此優(yōu)雅,這就是數(shù)學(xué)的魅力吧(需要設(shè)計(jì)一個(gè)如此精巧的beta函數(shù))。就像不管內(nèi)心多么復(fù)雜的女神奧黛麗赫本,永遠(yuǎn)都是那么優(yōu)雅從容。

和MAP類(lèi)似,我們也可以理解為??是虛擬的正樣本數(shù),?
?是虛擬的負(fù)樣本數(shù)。上面這個(gè)式子,也叫貝葉斯平滑,大家很可能已經(jīng)在工作里用過(guò),但是可能不知道它其實(shí)是完整應(yīng)用了貝葉斯推斷推導(dǎo)出來(lái)的。
假設(shè)?和?
分別選擇為10和90,那么如果在一個(gè)展現(xiàn)和點(diǎn)擊也沒(méi)有的時(shí)候,上式等于?
?。也就是說(shuō)先驗(yàn)知識(shí)告訴我們,如何沒(méi)有任何數(shù)據(jù),那么點(diǎn)擊率的先驗(yàn)在0.1左右。如果有20個(gè)點(diǎn)擊(k=20),100個(gè)展現(xiàn)(n=100),則點(diǎn)擊率為?
?。我們可以看到經(jīng)過(guò)貝葉斯平滑后的點(diǎn)擊率是介于先驗(yàn)點(diǎn)擊率0.1和似然點(diǎn)擊率0.2(20/100)之間。當(dāng)n和k的數(shù)字逐漸增大,?
?和?
?的值影響就會(huì)越來(lái)越小,逐漸收斂到?
?。
我們可以發(fā)現(xiàn),這里的??控制平滑結(jié)果是更相信先驗(yàn)還是更相信似然點(diǎn)擊率:?
?越大,表示越相信先驗(yàn),也表示需要更多的觀察數(shù)據(jù)(展現(xiàn)和點(diǎn)擊數(shù))才能讓結(jié)果偏離先驗(yàn);而?
?則控制了先驗(yàn)的率是多少。
總結(jié)一下,用這三種方法去做??的參數(shù)估計(jì)(也等于率的預(yù)估值),結(jié)果為

在推薦和廣告系統(tǒng)里,貝葉斯平滑可能是對(duì)各種CXR的統(tǒng)計(jì)類(lèi)特征進(jìn)行平滑最實(shí)用的方式。如果你還沒(méi)有用過(guò),那么趕緊加入到你的工程師隨身攜帶工具箱吧。

對(duì)于?,
?這兩個(gè)分布參數(shù)的選擇,不是本文的重點(diǎn),因此本文只介紹一個(gè)最簡(jiǎn)單其實(shí)也足夠?qū)嵱玫姆椒ǎ壕毓烙?jì)。查詢(xún)下beta分布的wiki頁(yè)面(鏈接:https://en.wikipedia.org/wiki/Beta_distribution),會(huì)找到它的均值和方差分別是:
均值:
方差:?
然后我們直接對(duì)我們擁有的樣本,統(tǒng)計(jì)樣本均值(計(jì)為Mean)和樣本方差(計(jì)為Var),然后令
?,?
?,
然后解這個(gè)關(guān)于??的方程組,就可以算出?
?的值了:
有朋友可能會(huì)問(wèn),用來(lái)估計(jì)樣本均值和方差的樣本哪里來(lái)?我們不是要用貝葉斯平滑來(lái)平滑點(diǎn)擊率,就說(shuō)明我們沒(méi)有足夠多的展現(xiàn)和點(diǎn)擊啊。答案是用其他場(chǎng)景的統(tǒng)計(jì)樣本來(lái)估計(jì),例如要平滑某個(gè)新廣告單元下的點(diǎn)擊率,可以用這個(gè)賬戶(hù)歷史所有廣告單元的樣本來(lái)估計(jì)參數(shù);又例如要平滑某個(gè)用戶(hù)的點(diǎn)擊率,可以用所有用戶(hù)的樣本來(lái)估計(jì)
參數(shù)。
講到這里,我們終于把貝葉斯推斷講完了。不過(guò)通常貝葉斯推斷不能像貝葉斯平滑這樣優(yōu)雅地直接推導(dǎo)出后驗(yàn)分布,因?yàn)槿绻覀儾皇沁x擇了比較簡(jiǎn)單的Bernoulli分布來(lái)建模和選擇Beta共軛先驗(yàn),剛好利用了這兩個(gè)分布的特性(第一類(lèi)歐拉積分),那么在第三和第四步的兩個(gè)積分計(jì)算會(huì)很難求。因此我們需要借助一些近似算法來(lái)解決更加通用的情況,例如(中)(下)篇要討論的蒙特卡洛采樣法和變分推斷的方法。(下)篇中也會(huì)對(duì)實(shí)際應(yīng)用中的一些問(wèn)題進(jìn)行討論。
(最后,友情提示:不要像文章封面圖片中的女孩那樣坐在懸崖邊的欄桿上,增加了太多的不確定度)
還是廣告
又到了招聘旺季,我們正在大力尋找志同道合的朋友一起在某手商業(yè)化做最有趣最前沿的廣告算法,初中高級(jí)廣告算法職位均有HC(迅速上車(chē),還能趕上上市)
作者個(gè)人微信(添加注明申探社讀者及簡(jiǎn)單介紹):
歡迎掃描下面二維碼關(guān)注本公眾號(hào),也歡迎關(guān)注知乎“申探社”專(zhuān)欄
文章為作者獨(dú)立觀點(diǎn),不代表DLZ123立場(chǎng)。如有侵權(quán),請(qǐng)聯(lián)系我們。( 版權(quán)為作者所有,如需轉(zhuǎn)載,請(qǐng)聯(lián)系作者 )

網(wǎng)站運(yùn)營(yíng)至今,離不開(kāi)小伙伴們的支持。 為了給小伙伴們提供一個(gè)互相交流的平臺(tái)和資源的對(duì)接,特地開(kāi)通了獨(dú)立站交流群。
群里有不少運(yùn)營(yíng)大神,不時(shí)會(huì)分享一些運(yùn)營(yíng)技巧,更有一些資源收藏愛(ài)好者不時(shí)分享一些優(yōu)質(zhì)的學(xué)習(xí)資料。
現(xiàn)在可以掃碼進(jìn)群,備注【加群】。 ( 群完全免費(fèi),不廣告不賣(mài)課!)