策略梯度強(qiáng)化學(xué)習(xí)算法實現(xiàn)A/B優(yōu)化?
譯者 | 朱先忠
(資料圖片)
審校 | 重樓
在本文中,我們將探討如何將策略梯度強(qiáng)化學(xué)習(xí)應(yīng)用于A/B優(yōu)化。本文將給出一個觀察策略梯度方法的簡單演示;其中,我們將深入了解有關(guān)潛在的機(jī)制,并逐步可視化學(xué)習(xí)過程。
簡介與監(jiān)督、自監(jiān)督和無監(jiān)督學(xué)習(xí)一樣,強(qiáng)化學(xué)習(xí)是機(jī)器學(xué)習(xí)的一個基本概念。在強(qiáng)化學(xué)習(xí)中,主體試圖在環(huán)境中找到一組最佳的動作,以最大限度地獲得獎勵。強(qiáng)化學(xué)習(xí)作為一種可以在圍棋和國際象棋中擊敗最優(yōu)秀棋手的方法,與神經(jīng)網(wǎng)絡(luò)作為高度靈活的代理相結(jié)合,已經(jīng)廣為人知。
其中,用作代理的神經(jīng)網(wǎng)絡(luò)能夠通過使獲得的獎勵最大化來逐步學(xué)習(xí)優(yōu)化策略。目前,人們已經(jīng)開發(fā)了幾種策略來更新神經(jīng)網(wǎng)絡(luò)的參數(shù),例如策略梯度、q學(xué)習(xí)或ActorCritic(演員-評判家)學(xué)習(xí)。其中,策略梯度方法最接近反向傳播,它通常用于神經(jīng)網(wǎng)絡(luò)的監(jiān)督和自監(jiān)督學(xué)習(xí)。然而,在強(qiáng)化學(xué)習(xí)中,我們并不像在監(jiān)督學(xué)習(xí)中那樣直接評估每個動作,而是試圖最大化總回報,并讓神經(jīng)網(wǎng)絡(luò)決定要采取的個人動作。這個動作是從概率分布中選擇的,這為進(jìn)一步探索提供了高度的靈活性。在優(yōu)化開始時,操作是隨機(jī)選擇的,代理探索不同的策略。隨著時間的推移,一些行動被證明比其他行動更有用,概率分布最終表現(xiàn)為明確的決策。與其他強(qiáng)化學(xué)習(xí)方法不同,用戶不必控制探索和開發(fā)之間的這種平衡,最佳平衡是由梯度策略方法本身找到的。
通常,使回報最大化的最佳策略是通過一系列行動來實現(xiàn)的,其中每個行動都會導(dǎo)致環(huán)境的新狀態(tài)。然而,梯度策略方法也可以用來尋找在統(tǒng)計上給予最高獎勵的最佳行動。在執(zhí)行A/B優(yōu)化時經(jīng)常會發(fā)現(xiàn)這種情況,這是一種非常常見的從兩個選項中選擇其一的更好的技術(shù)。例如,在市場營銷中,A/B測試用于選擇能帶來更高銷售額的廣告方案。你更愿意點擊哪個廣告?選項A:“充分利用您的數(shù)據(jù):我是一名專業(yè)的數(shù)據(jù)科學(xué)家,我可以幫助您分析您的數(shù)據(jù)”或選項B“與您的數(shù)據(jù)作斗爭?專業(yè)數(shù)據(jù)分析師可以免費幫助您自動化數(shù)據(jù)分析”?
兩個廣告創(chuàng)意選項。你更愿意點擊哪一個?(圖片由作者創(chuàng)作)
A/B優(yōu)化的困難在于點擊率是可變的。例如,在網(wǎng)站上看到廣告后,每個用戶可能有不同的偏好,處于不同的情緒中,因此反應(yīng)也不同。由于這種可變性,我們需要統(tǒng)計技術(shù)來選擇更好的廣告方案。比較選項A和B的常用方法是假設(shè)檢驗,如t檢驗。要進(jìn)行t檢驗,廣告的兩個潛在版本必須顯示一段時間,以收集用戶的點擊率。為了對優(yōu)選的廣告方案進(jìn)行顯著的評估,需要相當(dāng)長的探索時間,其缺點是潛在的收入損失,因為在探索過程中,更好和更差的廣告同樣頻繁地隨機(jī)顯示。通過盡快更頻繁地顯示更好的廣告來最大限度地提高點擊率是有利的。通過使用梯度策略方法執(zhí)行A/B優(yōu)化,代理將首先隨機(jī)探索變體A和變體B,那個將獲得更高的廣告獎勵,從而導(dǎo)致更高的點擊率,因此代理將很快學(xué)會更頻繁地向用戶展示更好的廣告,并最大化點擊率和收入。
實例展示在我們的例子中,我們有兩個廣告創(chuàng)意選項,其中我們假設(shè)選項A的點擊概率為30%,選項B的點擊概率是40%。我們開展了一場廣告活動,有1000個廣告印象。如果我們只進(jìn)行探索,并且同樣頻繁地顯示這兩個選項,我們可以預(yù)期平均點擊率為35%,總共平均點擊350次。如果我們知道B會被更多地點擊,我們只會顯示B,平均點擊400次。然而,如果我們運氣不好,選擇只顯示A,我們平均只能獲得300次點擊。我們稍后將更詳細(xì)地探討策略梯度方法,我們可以實現(xiàn)平均391次點擊,這清楚地表明,快速應(yīng)用學(xué)習(xí)到的策略會導(dǎo)致點擊次數(shù)幾乎與我們最初選擇更好的選項B一樣高。
運行機(jī)制解析我們使用TensorFlow庫在小型神經(jīng)網(wǎng)絡(luò)上使用梯度策略方法運行A/B優(yōu)化。首先,我們需要導(dǎo)入一些第三方庫。
import matplotlib.pyplot as pltimport numpy as npimport tensorflow as tf
神經(jīng)網(wǎng)絡(luò)只包含一層,由一個神經(jīng)元決定播放哪一則廣告。由于我們沒有關(guān)于用戶偏好、位置、時間或其他任何信息,因此決策是基于對神經(jīng)網(wǎng)絡(luò)的零輸入,并且我們不需要使用大型神經(jīng)網(wǎng)絡(luò)所實現(xiàn)的非線性。訓(xùn)練是通過調(diào)整這個神經(jīng)元的偏置來實現(xiàn)的。
model = tf.keras.models.Sequential()model.add(tf.keras.layers.Dense(1, activatinotallow="sigmoid", input_shape=(1,)))model.summary()
我們編寫了一個函數(shù),它用于使用神經(jīng)網(wǎng)絡(luò)選擇動作,顯示選項A或選項B。該函數(shù)使用tf.function()進(jìn)行修飾,它創(chuàng)建了一個靜態(tài)計算圖,使其運行速度比在Eager模式(走一步看一步,能夠立即輸出結(jié)果)下快得多。通過使用TensorFlow的GradientTape函數(shù),我們在廣告選擇過程中收集梯度。每次用戶進(jìn)入網(wǎng)站時,神經(jīng)網(wǎng)絡(luò)都會產(chǎn)生一個輸出,該輸出被視為選擇要呈現(xiàn)給用戶的廣告變體A或變體B的概率。
由于我們只有一個神經(jīng)元具有S形激活,因此輸出是0到1之間的單個數(shù)字。如果輸出為0.5,則有50%的機(jī)會顯示廣告B,并且有50%的可能性顯示廣告A。如果輸出為0.8,則顯示廣告B的可能性為80%,顯示廣告A的可能性為20%。通過將神經(jīng)網(wǎng)絡(luò)的輸出與0和1之間的均勻分布的隨機(jī)數(shù)進(jìn)行比較來選擇動作。如果隨機(jī)數(shù)小于輸出,則動作為True(1),并且選擇廣告B;如果隨機(jī)數(shù)大于輸出,則操作為False(0),并選擇廣告A。損失值使用binary_crosentropy_loss測量神經(jīng)網(wǎng)絡(luò)的輸出和所選動作之間的差。然后,我們創(chuàng)建相對于模型參數(shù)的損失梯度。
@tf.function()def action_selection(model): with tf.GradientTape() as tape: output = model(np.array([[0.0]])) # [0 ... 1] action = (tf.random.uniform((1, 1)) < output) # [0 or 1] loss = tf.reduce_mean(tf.keras.losses.binary_crossentropy(action, output)) grads = tape.gradient(loss, model.trainable_variables) return output, action, loss, grads
我們進(jìn)行了超過1000次廣告展示的訓(xùn)練。在每個步驟中,廣告都會出現(xiàn)一次,新用戶有機(jī)會點擊廣告。為了評估學(xué)習(xí)過程,我們統(tǒng)計這段時間后的點擊總數(shù)。學(xué)習(xí)率定義為0.5。我們稍后將討論學(xué)習(xí)率對總點擊次數(shù)的影響。
STEPS = 1000LR = 0.5
現(xiàn)在,讓我們來做廣告宣傳。隨著時間的推移,神經(jīng)網(wǎng)絡(luò)將改進(jìn)其預(yù)測能力。通過強(qiáng)化學(xué)習(xí),訓(xùn)練和應(yīng)用同時發(fā)生。在實踐中,選擇的廣告現(xiàn)在顯示在網(wǎng)站上,我們必須等待,看看用戶是點擊了廣告還是沒有點擊就離開了網(wǎng)站。在代碼中,我們只是模擬用戶是否點擊。如上所述,廣告A被點擊的概率為30%,而廣告B被點擊的概率為40%。點擊可以直接作為訓(xùn)練神經(jīng)網(wǎng)絡(luò)的獎勵來處理。獎勵用于修改梯度。如果用戶點擊了廣告,則該動作的梯度保持不變,但如果用戶沒有點擊廣告,則梯度反轉(zhuǎn)。最后,梯度下降通過給神經(jīng)網(wǎng)絡(luò)分配新的權(quán)重和偏差值來更新神經(jīng)網(wǎng)絡(luò)的參數(shù)。
for step in range(STEPS): output, action, loss, grads = action_selection(model) if action == False: # Action A reward = float(np.random.random() < 0.4) if action == True: # Action B reward = float(np.random.random() < 0.5) grads_adjusted = [] for var_index in range(len(model.trainable_variables)): grads_adjusted.append((reward-0.5)*2 * grads[var_index]) model.trainable_variables[0].assign(model.trainable_variables[0]-LR*grads_adjusted[0]) model.trainable_variables[1].assign(model.trainable_variables[1]-LR*grads_adjusted[1])
下圖總結(jié)了學(xué)習(xí)過程的演變。
使用策略梯度強(qiáng)化學(xué)習(xí)的A/B優(yōu)化學(xué)習(xí)過程的演變。(圖片由作者創(chuàng)作)
總的來說,上圖中顯示的1000個廣告印象的活動總共導(dǎo)致了393次點擊,這相當(dāng)接近400次——這個數(shù)字等于如果我們只選擇更好的廣告B時我們期望的點擊次數(shù)。
我們首先通過觀察初始步驟=1的所有圖表來回顧學(xué)習(xí)過程。我們觀察到,神經(jīng)網(wǎng)絡(luò)輸出從0.5開始,導(dǎo)致廣告B和廣告A分別以50%的概率隨機(jī)選擇廣告。binary_crosentropy_loss測量模型輸出和所采取的行動之間的差異。由于動作要么是0要么是1,因此初始損失值是模型輸出0.5的負(fù)對數(shù),約為0.7。由于我們的神經(jīng)網(wǎng)絡(luò)中只有一個神經(jīng)元,因此梯度包含該神經(jīng)元的權(quán)重和偏差的兩個標(biāo)量值。如果選擇廣告A,則偏置的梯度為正數(shù),如果選擇廣告B,則偏置梯度為負(fù)數(shù)。權(quán)重參數(shù)的梯度總是零,因為神經(jīng)網(wǎng)絡(luò)的輸入是零。獎勵是高度隨機(jī)的,因為廣告被點擊的幾率只有30%-40%。如果點擊廣告,我們會得到獎勵,梯度不變;否則,我們會反轉(zhuǎn)梯度。將調(diào)整后的梯度乘以學(xué)習(xí)率,并從神經(jīng)網(wǎng)絡(luò)的初始參數(shù)中減去。我們可以看到,偏置值從零開始,當(dāng)施加正調(diào)整梯度時變得更負(fù),而當(dāng)施加負(fù)調(diào)整梯度時則變得更正。
在廣告活動期間,神經(jīng)網(wǎng)絡(luò)的輸出傾向于1,增加了廣告B被選中的機(jī)會。然而,即使模型輸出已經(jīng)接近1,顯示廣告A的機(jī)會仍然很小。隨著模型輸出接近1,如果選擇動作B,則損失值很小,并且我們獲得了小的負(fù)梯度,但在選擇廣告A的罕見情況下,獲得了更大的損失值——表現(xiàn)為偶爾的峰值和大的正梯度。在收集獎勵之后,可以觀察到這些正峰值中的一些在調(diào)整后的梯度中被反轉(zhuǎn),因為這些動作沒有導(dǎo)致點擊。由于廣告B具有更高的點擊概率,較小的負(fù)調(diào)整梯度比源于廣告A上的點擊的正梯度更頻繁地應(yīng)用。因此,模型的偏差值以小的步長增加,并且在廣告A被選擇和點擊的罕見情況下,偏差值減小。模型的輸出由應(yīng)用于模型偏置值的S形函數(shù)提供。
學(xué)習(xí)率的影響在這個演示中,我們觀察到,神經(jīng)網(wǎng)絡(luò)可以學(xué)會從兩個選項中選擇更好的選項,并更頻繁地應(yīng)用該選項以最大限度地提高回報。在這種設(shè)置下,平均將獲得391次點擊,其中廣告A的點擊概率為30%,廣告B的點擊幾率為40%。在實踐中,這些概率會低得多,它們之間的差異可能更小,這使得神經(jīng)網(wǎng)絡(luò)更難探索更好的選擇。
政策梯度法具有自動調(diào)整勘探與開發(fā)之間平衡的優(yōu)點。然而,這種平衡受到學(xué)習(xí)率的影響。更高的學(xué)習(xí)率將導(dǎo)致更短的探索階段和更快的學(xué)習(xí)策略應(yīng)用,如下圖所示,其中學(xué)習(xí)率從0.01提高到10。在100個個體廣告中平均得到的模型輸出隨著學(xué)習(xí)率的增加而更快地增加,學(xué)習(xí)率高達(dá)1。然而,在較高的學(xué)習(xí)率下,存在適應(yīng)錯誤動作的風(fēng)險,只有在短暫的探索期內(nèi),錯誤動作才會表現(xiàn)得更好。在高學(xué)習(xí)率下,模型輸出調(diào)整過快,導(dǎo)致決策不穩(wěn)定。
學(xué)習(xí)率對神經(jīng)網(wǎng)絡(luò)輸出的影響。(圖片由作者創(chuàng)作)
因此,有一個最佳的學(xué)習(xí)率可供選擇,這在實踐中可能很難找到,因為事先對點擊概率一無所知。將學(xué)習(xí)率從0.01變化到10.0表明,對于0.1到2.0之間的學(xué)習(xí)率,獲得了點擊總次數(shù)的最大值。更高的學(xué)習(xí)率顯然會增加標(biāo)準(zhǔn)差,這表明學(xué)習(xí)過程的不穩(wěn)定性,也會導(dǎo)致平均點擊量的減少。
學(xué)習(xí)率對廣告活動期間獲得的總點擊量的影響。(圖片由作者創(chuàng)作)
總結(jié)本文示例程序演示了如何將強(qiáng)化學(xué)習(xí)用于A/B優(yōu)化。這僅僅是一個簡單的例子,用于說明策略梯度方法的基本過程。然后,我們已經(jīng)了解了神經(jīng)網(wǎng)絡(luò)如何根據(jù)所選廣告是否被點擊來基于調(diào)整后的梯度更新其參數(shù)??焖賾?yīng)用學(xué)習(xí)到的策略可最大限度地提高點擊率。然而,在實踐中,選擇最佳學(xué)習(xí)率可能很困難。
最后,您可以在huggingface.co網(wǎng)站上找到本文示例工程完整的代碼和流媒體演示:https://huggingface.co/spaces/Bernd-Ebenhoch/AB_optimization。
譯者介紹朱先忠,51CTO社區(qū)編輯,51CTO專家博客、講師,濰坊一所高校計算機(jī)教師,自由編程界老兵一枚。
原文標(biāo)題:A/B Optimization with Policy Gradient Reinforcement Learning,作者:Dr. Bernd Ebenhoch
鏈接:
https://towardsdatascience.com/a-b-optimization-with-policy-gradient-reinforcement-learning-b4a3527f849
關(guān)鍵詞:
您可能也感興趣:
今日熱點
為您推薦
全球觀熱點:天津市寧河區(qū)舉辦津冀攜手防非處非活動
焦點速讀:考古學(xué)者談上博“實證中國”里的良渚新發(fā)現(xiàn)
動態(tài)焦點:新一代模塊化筆記本登場:像拼積木一樣拼出一臺筆記本
排行
- 【見·聞】中國食品企業(yè)積極尋求日本市場發(fā)展機(jī)會
- 成都市行政區(qū)域內(nèi)租房提取住房公積金將執(zhí)行新政
- 創(chuàng)新政策支持不斷 大量租賃房源逐步入市
- 住房公積金各項業(yè)務(wù)運行總體平穩(wěn) 資金總體安全
- 【環(huán)球播資訊】領(lǐng)智金融(08163.HK)完成發(fā)行9100萬港元的可換股債券
- 中國石化兩天市值蒸發(fā)681億 子公司交易損失云遮霧罩
- 因事故隱患突出,河南100家道路運輸企業(yè)被約談
- 鄢陵縣精城建材有限公司不執(zhí)行重污染天氣管控措施違規(guī)生產(chǎn)
- 工商銀行:通過“環(huán)球撮合薈”助力海南自貿(mào)港貿(mào)易投資對接
- 第十九批河南省示范幼兒園名單公布 新批20所16所被摘牌
最近更新
- 策略梯度強(qiáng)化學(xué)習(xí)算法實現(xiàn)A/B優(yōu)化?
- 大連多部門聯(lián)合開展2023年世界海員日慶祝活動 全球頭條
- 環(huán)球滾動:包清白粽 做廉潔人——中建七局西南公司組織開展系...
- 天天熱文:為啥這幾天熱“炸”了?
- 《重回1993之縱橫人生》橫店殺青,眾多老戲骨加盟
- 觀熱點:如祺出行完成8.42億元B輪融資
- 紙質(zhì)手工藝:學(xué)生送閨蜜的創(chuàng)意矩形棱柱制作指南,簡單實用又...
- 世界觀察:海南粽業(yè),如何“強(qiáng)身”?
- 樂山沙灣:聚焦“選育管” 加強(qiáng)村級后備力量建設(shè) 熱推薦
- 天天快資訊丨亮馬河畔街頭表演點亮“夜朝陽”
- 《透明俠侶》北京首映,史策、王皓演繹科幻版“人鬼不了情”...
- 延伸人大民情茶話室+功能 加強(qiáng)茶品牌知識產(chǎn)權(quán)保護(hù)
- 看點:《消失的她》奪2023年端午檔冠軍
- 天天最新:中央氣象臺繼續(xù)發(fā)布高溫黃色預(yù)警:9省區(qū)市將現(xiàn)35以...
- 分付借了3000每個月要還多少?
- 【強(qiáng)信心 穩(wěn)經(jīng)濟(jì) 促發(fā)展】發(fā)揮資源優(yōu)勢 打造產(chǎn)業(yè)集群——...
- 【快播報】佛山二手房掛牌量逼近12萬套,成交量連續(xù)兩月超過新房
- 感受傳統(tǒng)魅力 游客樂享其中 當(dāng)前熱聞
- 熱消息:擇校不用愁!為您推薦這幾所北京海淀區(qū)最好的民辦學(xué)校!
- 高考公平!兒子考694分媽媽激動叫出海豚音:還有人高考超預(yù)期...
- 孩子是外地戶口,能讀北京中加學(xué)校初中部嗎?該怎么進(jìn)?
- 天天觀察:京廣高鐵助力石家莊快速融入環(huán)首都一小時生活圈
- 尉氏縣張市鎮(zhèn)開展主題活動 濃情端午關(guān)愛老人
- 當(dāng)前視點!湖北高考500分左右能上什么大學(xué) 可以報哪些公辦院...
- 湘南部分地區(qū)25日仍有暴雨 湘江干流或出現(xiàn)超警洪水
- 今熱點:中央氣象臺:京津冀出現(xiàn)區(qū)域性極端高溫天氣,6月底高...
- 世界微速訊:長沙、株洲方特端午特色民俗游受熱捧
- 石景山區(qū)市場監(jiān)管局加強(qiáng)燃?xì)獍踩珯z查
- 環(huán)球快消息!整備場上,“體檢科”大夫有點忙
- 黃浦江防汛檢查 世界熱推薦
今日要聞
- 2023年就業(yè)環(huán)境到底要多差?應(yīng)屆生,留學(xué)生如何破局?如何進(jìn)入名企。
- 策略梯度強(qiáng)化學(xué)習(xí)算法實現(xiàn)A/B優(yōu)化?
- 大排查!呼和浩特市住建系統(tǒng)整治液化氣領(lǐng)域安全隱患
- 長三角鐵路端午假期日均發(fā)送超300萬人次,較2019年同期增逾兩成
- 全能型免疫調(diào)節(jié)樞紐——DS BIO LABO生命黃金
- 林允兒新劇開播,33歲依然像剛成團(tuán)一樣甜美可人,一點不顯老
- 看點:快船將簽下法甲聯(lián)賽第三得分手,他的得分能力不遜于狀元郎?
- 簡一成品交付價值體驗節(jié)·濟(jì)南站圓滿舉辦!
- 印度一乳品廠發(fā)生氨氣泄漏事故 造成1人死亡|焦點快看
- 協(xié)鑫集成董秘馬君?。何磥硇履茉串a(chǎn)業(yè)仍會保持高速增長 速讀