「乾貨」在拉斯維加斯,程式設計師如何靠bandits算法幹掉老虎機

2021-01-10 友盟全域數據

AB測試:從埋點到棄療

AB測試棄療第一步:

不管是使用頻率學派還是貝葉斯學派的方法,我們需要決策還是要走AB測試的一整個流程,但是很多時候使用AB測試來做所有決策的機會成本太高,人力成本太高(數據科學家太貴),較差的版本帶來的損失等等原因讓使用AB測試做數據驅動淪為了一句口號。

AB測試棄療第二步:

即使一個開發者下定決心走上了利用AB測試做數據驅動的道路,想要搭建一個自有的AB測試平臺成本太高,而使用第三方的AB測試服務又缺少靈活的數據分析能力。

如果某個事件沒有埋點的話,想要做AB測試就只能SDK重新發版了,在SDK還沒有達到一定覆蓋率時還是沒有辦法做AB測試,於是使用AB測試做產品迭代向後延期直到被忘記。AB測試棄療。

AB測試棄療第三步:

即使一個開發者用上了友盟+的統計SDK,科學的做了自定義埋點,科學的做了用戶的分流,預估了樣本數,正確的收集到了數據,正確的做了AB測試,然後發現兩個版本並沒有區別。或者有時甚至發現新的版本還更差(cue一下被用爛的Facebook的例子)。

作為一個運營你怎麼給老闆匯報你的負面結果,你作為一個技術團隊的大佬怎麼抉擇改版的問題。AB測試棄療。我曾經也去問過一個大佬,為什麼AB測試這麼成熟而有用的方法在中國還不那麼普及呢?大佬的說:每一次改版/運營活動後大家都等著去邀功了,誰還想著看數據分析結果呢?

在很多次做AB測試的過程中,還有大佬問有沒有迭代更快的AB測試算法呢?有沒有不那麼嚴格的AB測試呢?在運營場景的時候被問的最多的問題就是:這個活動就搞3天,你們做AB測試需要多久?你們能不能在運營活動前做AB測試?這類直擊靈魂的問題。經過深入的溝通,對於這類問題的AB測試需求其實是希望能夠在減少風險的情況下更快的,自動的優化方案。

AB測試療法

對於這些問題我們有沒有什麼好的方法去解決呢?當然是有解法的。對於第一和第二步AB測試棄療的原因的解法只能是進行科學化的埋點首先滿足主要的統計需求,因為AB測試是建立在統計模塊基礎上的。對於AB測試棄療第三步的解法就是多臂賭博機(Multi-armed bandits)。

多臂賭博機 Multi-armed bandits

那麼這種可以自動優化找到最佳方案的算法到底是怎麼回事呢?這種算法是如何實現更快的,自動的優化方案的選擇呢?

張三在拉斯維加斯

下面我們講一個張三去拉斯維加斯賭博的故事(畢竟統計學就是起源於賭博)。話說有一天賭徒張三帶著自己的積蓄來到拉斯維加斯,想要憑藉著自己黑科技眼鏡和最近研究的bandits算法贏光拉斯維加斯的賭場成為賭聖。

根據他的多年賭博經驗,賭場的每個老虎機的贏率是不同的,但是每個老虎機的贏率是不會變化的,根據江湖傳聞這家賭場存在一個老虎機贏率大於50%,他的策略就是找到那個贏率最大的老虎機。

那麼張三該如何找到那個贏面最大的老虎機呢?一個最簡單的策略就是將賭場裡每個老虎機都嘗試一遍,然後把每個老虎機的贏率都算一遍,然後選取那個贏率最大的老虎機。這個方法類似於AB測試都是將流量平均的分給了很多個方案。

這個方法的一個明顯缺點就是試錯成本很高,而且最後才能發現贏率最大的老虎機。如果我們能夠在嘗試的過程中發現一些方案可能不是最佳,那麼我們就不在那些次佳的方案上面浪費時間和精力,那麼我們是不是就可以更快的,花更少的錢找到最佳方案呢?那麼問題來了,我們應該如何定義哪個算法在尋找最佳方案的時候更優呢?

這裡計算的就是如果知道最佳方案的贏錢數減去bandits算法在探索最佳方案的贏錢數的差。

張三的bandits算法

張三作為一個賭徒自然是知道一些bandits的算法的,那麼他打算使用怎麼樣的策略呢?他從師傅那裡學到的是Epsilon-greedy和Upper bound confidence(UCB)的方法。

Epsilon-greedy的算法就是Epsilon比例的次數選擇非最佳的方案,1-Epsilon比例的次數選擇當前最佳的方案。Epsilon就是需要人工選擇的比例,比如10%的時候都是選擇非當前最佳的方案,而90%的時候選擇當前最佳的方案。

但是這個方法有一個明顯的問題,師傅臨行前告訴他使用這個bandits的方法可能會陷入局部的最優解很久都沒有辦法找到全局最優解,就是不一定能夠找到那個贏率最高的老虎機。師傅千叮嚀萬囑咐讓他小心使用這個bandits 的方法。

於是張三就決定使用UCB這個算法來賭,UCB的算法是怎麼實現的呢?

這個是每個老虎機的得分,前面一項就是這個老虎機的平均贏率,第二項是和嘗試次數有關的bonus項,其中t是目前實驗的次數,而T_{ij}則是這個老虎機被嘗試的次數。第二項bonus前還可以有一個係數來調節bonus項的影響大小。

每次實驗完成後重新計算每個老虎機的得分然後選擇得分最高的那個老虎機進行下一個實驗。UCB的bandits算法在足夠長的時間是一定可以找到最佳方案的。一般來說UCB的算法在regret的定義下是優於Epsilon-greedy的。

李四的bandits算法

話說那邊張三還有一個師兄喚做李四,早年曾經在貝老爺子(貝葉斯)門下修習過貝葉斯大法。貝葉斯大法有一個巨大的優勢就是它和吸星大法一般可以利用別人修習的成果,這就是貝葉斯裡面的先驗分布(priors)。

李四在暗中觀察著張三在老虎機上的實驗並且記錄下來每個老虎機的贏率。但是李四也不能等待過久,等到張三發現贏率最大的老虎機的時候他就沒法靠那個老虎機贏錢了。於是李四在覺得自己積累夠一定數據後下場了,他使用的是基於貝葉斯的Thompson sampling的方法。

在張三嘗試的基礎上,李四給了每個老虎機了一個基於Beta分布的先驗概率,然後自己也開始尋找贏率最大的老虎機,他的每次實驗都是基於Beta分布取到一個隨機數,然後選擇隨機數最大的老虎機進行實驗。當老虎機積累了更多的數據,Beta分布的方差也越小,每次選取的隨機數也更接近於均值,而當老虎機積累了較少的數據時,Beta分布的方差也越大,每次選取的隨機數也會忽大忽小。

張三師傅王五的bandit算法

張三的師傅其實也早早來到了拉斯維加斯。他通過內部情報知道其實每個老虎機的贏率是會隨著很多因素變化的,比如是否是周末,這個人是男是女等等。

而張三和李四的算法都是沒有考慮一些其他的外部因素的,這類考慮其他外部因素的bandits算法叫做contextual bandits。張三師傅使用的是基於UCB算法+ridge regression的LinUCB算法。

欲知張三,李四,王五到底誰最快找到了那個傳說中的老虎機,還請繼續往下看。

bandits和AB測試應該什麼時候使用呢?

圖來自於VWO的網站

bandits算法主要解決的問題是如何更快的和以更小損失的找到最佳方案。上圖就是bandits在尋找最佳方案中的流量分配的優化。bandits能夠實現以最小的損失尋找最佳方案。

為什麼還要做AB測試呢?

首先,AB測試主要用於指導重要的商業決策/產品的版本迭代,而這個決策可能是有很多個指標共同影響的,bandits現在只能是基於單一指標的優化。當然也可以把多個指標疊加成為一個複合指標,但是bandits的優化目標就是單一的一個指標。

其次,AB測試主要適用於獲得各個版本的優劣的統計置信(statistical significance)。這麼說比較抽象,就是你花了時間開發出來了一個新的版本,你需要確信的知道這個版本到底有沒有之前的版本好,到底好在哪裡?到底是留存提升了還是用戶的使用時長提升了。

這些提升和降低的知識獲得是可以使用在產品之後的迭代中的,而bandits是無法幫你分析得到這些知識的。

那麼什麼時候應該用bandits算法呢?

當你關心的問題和張三一樣只是轉化率,留存率等等的單一指標時並且你不在乎數據結果的解釋和分析的時候。當你的運營活動只有短短的幾天或者一天時,你沒有時間等到AB測試達到統計置信(statistical significance)的時候,這就是一些大佬們和App開發者提到的更加快的AB測試吧。還有就是如果你有一些長期需要優化的指標,而這些指標經常發生變化,那麼這個也是bandits的一個重要的應用場景。

圖來自於vwo的blog

總而言之,AB測試適合測試一些變化周期較長的變化,獲得的知識應該具有泛化能力。而bandits算法適合一些變化快周期短的優化場景,獲得的知識不一定具有泛化能力。

友盟+的bandits使用

在友盟+的U-Push產品裡覆蓋了大量的外部用戶,而大量的開發者的Push策略都是非常簡單的定時廣播,而個性的定製化的發送策略幾乎沒有(除了頭條系)。即使開發者想要基於已有的工具對發送時間和發送內容進行優化,現有的標籤和用戶行為數據積累也不會很充分。

國內的友商們都還沒有這個功能也是因為他們的數據量遠遠沒有友盟+的數據覆蓋度大。而美國的很多針對開發者服務的平臺如Recombee,airship,Leanplum等等不僅僅實現了發送時間上的優化,並且實現了基於用戶生命周期和其他標籤的全鏈路閉環的用戶促活和防流失的產品。

我們未來的工作是為了實現這個非常user-friendly的產品,而我們的起點是對發送時間的優化即LeanPlum的功能。如果我們能夠在用戶使用App的時候或者是接受Push消息意願比較強的時候去發送這個消息,那麼消息觸達用戶以後用戶也更加願意打開。這樣實現了提高了用戶的使用體驗和更高的Push點擊率的雙贏局面。

友盟+的時間優化方案就是基於Thompson sampling的方法,使用Beta分布來給用戶+App+時段粒度的打分。

我們發現使用Collaborative filtering能夠提高那些數據裡沒有點擊的用戶的點擊,而Thompson sampling則能夠更好的確定那些有點擊用戶的最佳發送時間。

那麼怎麼樣能夠把Collaborative filtering和Thompson sampling結合在一起提高用戶的Push體驗和點擊率將是未來探索的方向。

故事的結局

故事的最後張三,李四,王五都把積蓄都輸完了,然後離開了拉斯維加斯,因為他們不知道gambler『s ruin這個統計原理,這個故事告訴我們還是要遠離賭博,小賭不怡情,大賭更傷身。

更多乾貨

相關焦點

  • AI「幹掉」程式設計師後,又對藝術家下手了
    因為人們發現有了這些神經網絡,就能通過自然語言操縱視覺概念,比如,你輸入「一把牛油果造型的扶手椅」,它們就能通過圖像合成,「憑空捏造」出一系列的目標圖像。什麼是人工智慧的未來?《麻省理工科技評論》認為就是「那把牛油果造型的扶手椅」,因為 AI 又往「構建多模態 AI 系統」這個長期目標又邁近了一大步。
  • 誰是靠算法挑戰華爾街的賭神?
    賭場的「21點」遊戲可以說在愛德華 · 索普的人生中佔據了十分重要的地位。之所以說他是個另類天才,是因為索普年輕時發表的論文《21點的常勝策略》(A Winning Strategy for BlackJack)的論文,從數學角度分析了 「21點」遊戲,證明了玩家可以憑藉自己的力量打敗莊家,收到了全美賭徒的追捧。
  • 「雨量感應器」到底是如何工作的?3條硬核知識
    如何選購雨刮?有骨雨刮真的那麼不堪嗎?乾貨長文帶你看懂目錄硬核乾貨:「雨刮器」到底怎麼分類?又有什麼不同呢?硬核乾貨:「雨量感應器」到底是如何工作的?硬核乾貨:為什麼兩廂車型有「後擋玻璃雨刮」,三廂車型沒有?硬核乾貨:「雨刮器」到底怎麼分類?
  • ...的「統一場」:從與 WL 算法、組合優化算法的聯繫看 GNN 的表達...
    這種結果並不盡如人意,因為如果兩個正則圖(例如,「Decaprismane C_20H_20」和「Dodecahedrane C_20H_20」)有不同的類標籤,無論模型參數如何,消息傳遞 GNN 往往無法區分它們。除了正則圖意外,還有許多非正則、非同構的圖是 GNN 無法區分的。圖 5 列舉出了一些 GNN 無法區分的非正則、非同構的圖的示例。
  • JavaScript正則表達式「程式設計師培養之路第十二天」
    圖六第六節 支持正則的 String方法JavaScript字符串「程式設計師培養之路第十一天」JavaScript數組「程式設計師培養之路第十天」JavaScript分支循環「程式設計師培養之路第九天」
  • 構建GNN 的「統一場」:從與 WL 算法、組合優化算法的聯繫看 GNN...
    這種結果並不盡如人意,因為如果兩個正則圖(例如,「Decaprismane C_20H_20」和「Dodecahedrane C_20H_20」)有不同的類標籤,無論模型參數如何,消息傳遞 GNN 往往無法區分它們。除了正則圖意外,還有許多非正則、非同構的圖是 GNN 無法區分的。圖 5 列舉出了一些 GNN 無法區分的非正則、非同構的圖的示例。
  • 「機器學習」機器學習算法優缺點對比(匯總篇)
    「優點」:實現簡單,計算簡單;「缺點」:不能擬合非線性數據.最近鄰算法——KNNKNN即最近鄰算法,其主要過程為:1.根據這k個樣本的標籤進行投票,得到最後的分類類別;如何選擇一個最佳的K值,這取決於數據。一般情況下,在分類時較大的K值能夠減小噪聲的影響,但會使類別之間的界限變得模糊。一個較好的K值可通過各種啟發式技術來獲取,比如,交叉驗證。另外噪聲和非相關性特徵向量的存在會使K近鄰算法的準確性減小。
  • 消除NLP中的刻板印象:程式設計師之於男性=家政人員之於女性?
    有時機器學習算法會放大已有的社會的偏見,值得警惕。近期科研人員在推進算法公正/消除偏見方面做了頗多努力,相比幾年前進展頗多;然而對於偏見如何產生的背後原理尚無定論,所以這個方向的科研還將繼續。用這兩個性質,我們提供了一種可以消除性別刻板印象的方法,例如「接待員」與「女性」的關聯,而保留我們所希望的關聯,例如「王后」和「女性」。我們定義了一種詞嵌入中量化直接與非直接偏見的標準,並且開發了一個可以消除這類偏見的算法。在眾包評估和標準數據集中,我們經驗性地展示了我們的算法可以在顯著降低性別偏見的同時保留很多它其他本來具有的性質,比如對相關概念的聚類和解決類比任務。
  • 暴漲的比特幣、特斯拉與被程式設計師統治的世界
    每個時代的最優秀的人,他們應該都在做能在自己的時代裡最能夠獲得權利的事情,他們努力的方向應該都是如何擁有這個時代最大的紅利,或者是最大的自由度,或者最大的欲望滿足度的行業。在歷史上,自古以來這個群體,是讀書人的群體。 比如在各種傳奇小說中,最常見的關目,就是美好的女性和考狀元的人終成眷屬。
  • 「唯物」怎麼追蹤飲水量?這款水杯靠的是傾斜角度算法
    趙坤:核心的功能算是「喝水水量檢測」,什麼意思呢,就是說你每次喝了多少水,杯子都會檢測出來然後顯示在App上,很多人每天只是渴了喝水,但根本不知道自己喝了多少,有沒有喝夠。這個功能可以告知用戶有沒有喝夠推薦的飲水量。雷鋒網:檢測水量的功能怎麼實現的,是自己的專利技術嗎?
  • 為什麼成為一名程式設計師這麼困難? —— 從程序新手到準工程師的必經...
    在學習程序開發的過程中,常常看到網絡上的「甘苦談」,也聽過身邊前途一片光明的程式設計師朋友們分享過學習歷程,總覺得不同的人、同樣的故事卻不斷的重複,像是狼叫聲般,從遠處傳來一聲又一聲的迴響。突然間我們的問題不再是「困難度」,而是「比天高的期望」跟「比地大的夢想」。最重要的是,以上提到的這些工具跟平臺實在太有用,帶領毫無程序開發經驗的初學者們一步步認識變數、條件語句、程序語法。當你一路過關斬將把程序語言基本邏輯跟語法學會的同時,你就會超有成就感、自信心大增,開始有「原來我也行嘛」、「寫程序也不過就這樣」的感覺,基本上覺得自己已經跟「程式設計師」相差不遠了。
  • 「阿爾法狗」再進化!通用算法AlphaZero再攻克幾種棋又有何難!
    雷鋒網 AI 科技評論報導: DeepMind 悄悄放出了一篇新論文,介紹了一個「AlphaZero」。一開始我們差點以為 DeepMind 也學會炒冷飯了,畢竟「從零開始學習」的 AlphaGo Zero 論文 10 月就發出來、大家已經討論了許多遍了。
  • 「闢謠」實木家具沒甲醛?哪種家具VOC會超標?植物除醛靠譜嗎?
    如果,寫好標題比好內容能獲得更多激勵如果,玩娛樂八卦和碎片能獲得更多分成如果,平臺用算法挖掘底層人性暴力收割如果,寫深度長篇不但沒人看還總有人罵那結果,就是我們現在看到的樣子。除了娛樂,什麼都沒有,荒漠化……所以,最近我開始「有意識的關注一些人」。
  • 被算法量產的「沉迷」
    紐約大學行為心理學家娜塔莎·舒爾在《設計上癮:拉斯維加斯的老虎機》中考察了各類賭博機器的設計和製造。最核心的驅動原理之一,是在未知的情況下提供忽然的獎賞。你永遠不知道下一回贏錢是什麼時候,而在贏錢的期望突然被超額滿足的那一瞬間,配合金幣落袋的合成音,多巴胺的分泌會猛然提升,讓你的愉悅程度爆表。 這種機制叫「變率強化」(variable ratio reinforcement)。
  • 「100倍變焦」的背後:「潛望式長焦鏡頭」如何煉成?
    」,甚至有網友聲稱「不僅拍月亮,還拍到了空間站」100倍變焦的背後,是潛望式長焦鏡頭的運用,得以解決鏡頭模組和輕薄機身的衝突。長焦鏡頭的原理在了解「潛望式長焦鏡頭」之前,我們先要明白「長焦鏡頭」,回憶一下小孔成像模型:近距離物體,短焦距的鏡頭成像;遠距離物體,長焦距的鏡頭成像。
  • 「別人家孩子」又在搞事情,18歲華裔少年推翻權威量子算法研究
    一位18歲的華裔天才少年給向來高高在上的量子計算「潑了一盆冷水」。在7月上旬發表於網絡的一篇論文中,來自德克薩斯州的尤因·唐(Ewin Tang)證明,傳統計算機能夠以接近量子計算機的速度解決一個重要的計算問題。這個問題最常見的形式為「推薦問題」,它涉及亞馬遜和Netflix這樣的服務如何確定用戶可能想要嘗試的產品。
  • 200 年來,科技圈那些「硬核女神」
    當你看到「程式設計師」這個詞時,腦海是不是浮現出一個男性形象?的確,很多網際網路公司的技術部門裡男性員工佔了 80% 以上,這讓我們幾乎把「程式設計師」和「男性程式設計師」之間畫上了等號。但是,你知道嗎?世界上的第一位程式設計師其實是一名女性。在並不久遠的七十年前,計算機編程還被認為是非常女性化的職業,在隨後的三四十年裡女性一直是這個領域的領軍人物。
  • 專科VS本科:別給專科程式設計師套上學歷的枷鎖!
    對於程式設計師而言,有的學歷乍一看像「皇冠」,把你襯託得熠熠生輝,但更多時候,它像是一個「魔咒」,要麼給你添加了許多不能承受的「重」,要麼讓你畫地為牢,難以掙脫它們的束縛。
  • 意念加AI算法「復原」每個手指,智能義肢登上Nature子刊封面
    機器之心報導參與:張倩、杜偉、李澤南使用「意念」控制機械,讓肢體缺失的殘疾人過上正常人的生活,這聽起來像是出現在電影中的場景。用 AI 算法解碼「意念」在此前,科學家們對於機械臂控制研究很多,但充其量也只能控制單個手指,而且其研究成果也僅限於在四肢健全的人群中實現離線的「義肢控制」。EPFL 提出的新系統,在神經學上的關鍵理念是對來自現有運動神經的信號進行解碼,這些運動神經旨在為手指發出活動的信號。
  • 《Python程式設計師面試算法寶典》PDF超清版開源了文末附下載方式
    、分類歸納,提煉出算法面試的各種應對技巧,是一本Python程式設計師算法面試的圖書寶典。全面介紹Python程式設計師面試筆試技巧和方法,教你如何以「不變應萬變」。√ 兩萬多行代碼,100多個知識點,全面覆蓋Python程式設計師各類面試題型。√ 15年開發經驗、實戰技巧總結,站在「巨人」的肩膀上,讓學習走捷徑。