策略梯度強化學習算法實現A/B優化?
譯者 | 朱先忠
(資料圖片)
審校 | 重樓
在本文中,我們將探討如何將策略梯度強化學習應用于A/B優化。本文將給出一個觀察策略梯度方法的簡單演示;其中,我們將深入了解有關潛在的機制,并逐步可視化學習過程。
簡介與監督、自監督和無監督學習一樣,強化學習是機器學習的一個基本概念。在強化學習中,主體試圖在環境中找到一組最佳的動作,以最大限度地獲得獎勵。強化學習作為一種可以在圍棋和國際象棋中擊敗最優秀棋手的方法,與神經網絡作為高度靈活的代理相結合,已經廣為人知。
其中,用作代理的神經網絡能夠通過使獲得的獎勵最大化來逐步學習優化策略。目前,人們已經開發了幾種策略來更新神經網絡的參數,例如策略梯度、q學習或ActorCritic(演員-評判家)學習。其中,策略梯度方法最接近反向傳播,它通常用于神經網絡的監督和自監督學習。然而,在強化學習中,我們并不像在監督學習中那樣直接評估每個動作,而是試圖最大化總回報,并讓神經網絡決定要采取的個人動作。這個動作是從概率分布中選擇的,這為進一步探索提供了高度的靈活性。在優化開始時,操作是隨機選擇的,代理探索不同的策略。隨著時間的推移,一些行動被證明比其他行動更有用,概率分布最終表現為明確的決策。與其他強化學習方法不同,用戶不必控制探索和開發之間的這種平衡,最佳平衡是由梯度策略方法本身找到的。
通常,使回報最大化的最佳策略是通過一系列行動來實現的,其中每個行動都會導致環境的新狀態。然而,梯度策略方法也可以用來尋找在統計上給予最高獎勵的最佳行動。在執行A/B優化時經常會發現這種情況,這是一種非常常見的從兩個選項中選擇其一的更好的技術。例如,在市場營銷中,A/B測試用于選擇能帶來更高銷售額的廣告方案。你更愿意點擊哪個廣告?選項A:“充分利用您的數據:我是一名專業的數據科學家,我可以幫助您分析您的數據”或選項B“與您的數據作斗爭?專業數據分析師可以免費幫助您自動化數據分析”?
兩個廣告創意選項。你更愿意點擊哪一個?(圖片由作者創作)
A/B優化的困難在于點擊率是可變的。例如,在網站上看到廣告后,每個用戶可能有不同的偏好,處于不同的情緒中,因此反應也不同。由于這種可變性,我們需要統計技術來選擇更好的廣告方案。比較選項A和B的常用方法是假設檢驗,如t檢驗。要進行t檢驗,廣告的兩個潛在版本必須顯示一段時間,以收集用戶的點擊率。為了對優選的廣告方案進行顯著的評估,需要相當長的探索時間,其缺點是潛在的收入損失,因為在探索過程中,更好和更差的廣告同樣頻繁地隨機顯示。通過盡快更頻繁地顯示更好的廣告來最大限度地提高點擊率是有利的。通過使用梯度策略方法執行A/B優化,代理將首先隨機探索變體A和變體B,那個將獲得更高的廣告獎勵,從而導致更高的點擊率,因此代理將很快學會更頻繁地向用戶展示更好的廣告,并最大化點擊率和收入。
實例展示在我們的例子中,我們有兩個廣告創意選項,其中我們假設選項A的點擊概率為30%,選項B的點擊概率是40%。我們開展了一場廣告活動,有1000個廣告印象。如果我們只進行探索,并且同樣頻繁地顯示這兩個選項,我們可以預期平均點擊率為35%,總共平均點擊350次。如果我們知道B會被更多地點擊,我們只會顯示B,平均點擊400次。然而,如果我們運氣不好,選擇只顯示A,我們平均只能獲得300次點擊。我們稍后將更詳細地探討策略梯度方法,我們可以實現平均391次點擊,這清楚地表明,快速應用學習到的策略會導致點擊次數幾乎與我們最初選擇更好的選項B一樣高。
運行機制解析我們使用TensorFlow庫在小型神經網絡上使用梯度策略方法運行A/B優化。首先,我們需要導入一些第三方庫。
import matplotlib.pyplot as pltimport numpy as npimport tensorflow as tf
神經網絡只包含一層,由一個神經元決定播放哪一則廣告。由于我們沒有關于用戶偏好、位置、時間或其他任何信息,因此決策是基于對神經網絡的零輸入,并且我們不需要使用大型神經網絡所實現的非線性。訓練是通過調整這個神經元的偏置來實現的。
model = tf.keras.models.Sequential()model.add(tf.keras.layers.Dense(1, activatinotallow="sigmoid", input_shape=(1,)))model.summary()
我們編寫了一個函數,它用于使用神經網絡選擇動作,顯示選項A或選項B。該函數使用tf.function()進行修飾,它創建了一個靜態計算圖,使其運行速度比在Eager模式(走一步看一步,能夠立即輸出結果)下快得多。通過使用TensorFlow的GradientTape函數,我們在廣告選擇過程中收集梯度。每次用戶進入網站時,神經網絡都會產生一個輸出,該輸出被視為選擇要呈現給用戶的廣告變體A或變體B的概率。
由于我們只有一個神經元具有S形激活,因此輸出是0到1之間的單個數字。如果輸出為0.5,則有50%的機會顯示廣告B,并且有50%的可能性顯示廣告A。如果輸出為0.8,則顯示廣告B的可能性為80%,顯示廣告A的可能性為20%。通過將神經網絡的輸出與0和1之間的均勻分布的隨機數進行比較來選擇動作。如果隨機數小于輸出,則動作為True(1),并且選擇廣告B;如果隨機數大于輸出,則操作為False(0),并選擇廣告A。損失值使用binary_crosentropy_loss測量神經網絡的輸出和所選動作之間的差。然后,我們創建相對于模型參數的損失梯度。
@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
我們進行了超過1000次廣告展示的訓練。在每個步驟中,廣告都會出現一次,新用戶有機會點擊廣告。為了評估學習過程,我們統計這段時間后的點擊總數。學習率定義為0.5。我們稍后將討論學習率對總點擊次數的影響。
STEPS = 1000LR = 0.5
現在,讓我們來做廣告宣傳。隨著時間的推移,神經網絡將改進其預測能力。通過強化學習,訓練和應用同時發生。在實踐中,選擇的廣告現在顯示在網站上,我們必須等待,看看用戶是點擊了廣告還是沒有點擊就離開了網站。在代碼中,我們只是模擬用戶是否點擊。如上所述,廣告A被點擊的概率為30%,而廣告B被點擊的概率為40%。點擊可以直接作為訓練神經網絡的獎勵來處理。獎勵用于修改梯度。如果用戶點擊了廣告,則該動作的梯度保持不變,但如果用戶沒有點擊廣告,則梯度反轉。最后,梯度下降通過給神經網絡分配新的權重和偏差值來更新神經網絡的參數。
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])
下圖總結了學習過程的演變。
使用策略梯度強化學習的A/B優化學習過程的演變。(圖片由作者創作)
總的來說,上圖中顯示的1000個廣告印象的活動總共導致了393次點擊,這相當接近400次——這個數字等于如果我們只選擇更好的廣告B時我們期望的點擊次數。
我們首先通過觀察初始步驟=1的所有圖表來回顧學習過程。我們觀察到,神經網絡輸出從0.5開始,導致廣告B和廣告A分別以50%的概率隨機選擇廣告。binary_crosentropy_loss測量模型輸出和所采取的行動之間的差異。由于動作要么是0要么是1,因此初始損失值是模型輸出0.5的負對數,約為0.7。由于我們的神經網絡中只有一個神經元,因此梯度包含該神經元的權重和偏差的兩個標量值。如果選擇廣告A,則偏置的梯度為正數,如果選擇廣告B,則偏置梯度為負數。權重參數的梯度總是零,因為神經網絡的輸入是零。獎勵是高度隨機的,因為廣告被點擊的幾率只有30%-40%。如果點擊廣告,我們會得到獎勵,梯度不變;否則,我們會反轉梯度。將調整后的梯度乘以學習率,并從神經網絡的初始參數中減去。我們可以看到,偏置值從零開始,當施加正調整梯度時變得更負,而當施加負調整梯度時則變得更正。
在廣告活動期間,神經網絡的輸出傾向于1,增加了廣告B被選中的機會。然而,即使模型輸出已經接近1,顯示廣告A的機會仍然很小。隨著模型輸出接近1,如果選擇動作B,則損失值很小,并且我們獲得了小的負梯度,但在選擇廣告A的罕見情況下,獲得了更大的損失值——表現為偶爾的峰值和大的正梯度。在收集獎勵之后,可以觀察到這些正峰值中的一些在調整后的梯度中被反轉,因為這些動作沒有導致點擊。由于廣告B具有更高的點擊概率,較小的負調整梯度比源于廣告A上的點擊的正梯度更頻繁地應用。因此,模型的偏差值以小的步長增加,并且在廣告A被選擇和點擊的罕見情況下,偏差值減小。模型的輸出由應用于模型偏置值的S形函數提供。
學習率的影響在這個演示中,我們觀察到,神經網絡可以學會從兩個選項中選擇更好的選項,并更頻繁地應用該選項以最大限度地提高回報。在這種設置下,平均將獲得391次點擊,其中廣告A的點擊概率為30%,廣告B的點擊幾率為40%。在實踐中,這些概率會低得多,它們之間的差異可能更小,這使得神經網絡更難探索更好的選擇。
政策梯度法具有自動調整勘探與開發之間平衡的優點。然而,這種平衡受到學習率的影響。更高的學習率將導致更短的探索階段和更快的學習策略應用,如下圖所示,其中學習率從0.01提高到10。在100個個體廣告中平均得到的模型輸出隨著學習率的增加而更快地增加,學習率高達1。然而,在較高的學習率下,存在適應錯誤動作的風險,只有在短暫的探索期內,錯誤動作才會表現得更好。在高學習率下,模型輸出調整過快,導致決策不穩定。
學習率對神經網絡輸出的影響。(圖片由作者創作)
因此,有一個最佳的學習率可供選擇,這在實踐中可能很難找到,因為事先對點擊概率一無所知。將學習率從0.01變化到10.0表明,對于0.1到2.0之間的學習率,獲得了點擊總次數的最大值。更高的學習率顯然會增加標準差,這表明學習過程的不穩定性,也會導致平均點擊量的減少。
學習率對廣告活動期間獲得的總點擊量的影響。(圖片由作者創作)
總結本文示例程序演示了如何將強化學習用于A/B優化。這僅僅是一個簡單的例子,用于說明策略梯度方法的基本過程。然后,我們已經了解了神經網絡如何根據所選廣告是否被點擊來基于調整后的梯度更新其參數??焖賾脤W習到的策略可最大限度地提高點擊率。然而,在實踐中,選擇最佳學習率可能很困難。
最后,您可以在huggingface.co網站上找到本文示例工程完整的代碼和流媒體演示:https://huggingface.co/spaces/Bernd-Ebenhoch/AB_optimization。
譯者介紹朱先忠,51CTO社區編輯,51CTO專家博客、講師,濰坊一所高校計算機教師,自由編程界老兵一枚。
原文標題:A/B Optimization with Policy Gradient Reinforcement Learning,作者:Dr. Bernd Ebenhoch
鏈接:
https://towardsdatascience.com/a-b-optimization-with-policy-gradient-reinforcement-learning-b4a3527f849
關鍵詞:
您可能也感興趣:
為您推薦
全球觀熱點:天津市寧河區舉辦津冀攜手防非處非活動
焦點速讀:考古學者談上博“實證中國”里的良渚新發現
動態焦點:新一代模塊化筆記本登場:像拼積木一樣拼出一臺筆記本
排行
最近更新
- 策略梯度強化學習算法實現A/B優化?
- 大連多部門聯合開展2023年世界海員日慶祝活動 全球頭條
- 環球滾動:包清白粽 做廉潔人——中建七局西南公司組織開展系...
- 天天熱文:為啥這幾天熱“炸”了?
- 《重回1993之縱橫人生》橫店殺青,眾多老戲骨加盟
- 觀熱點:如祺出行完成8.42億元B輪融資
- 紙質手工藝:學生送閨蜜的創意矩形棱柱制作指南,簡單實用又...
- 世界觀察:海南粽業,如何“強身”?
- 樂山沙灣:聚焦“選育管” 加強村級后備力量建設 熱推薦
- 天天快資訊丨亮馬河畔街頭表演點亮“夜朝陽”
- 《透明俠侶》北京首映,史策、王皓演繹科幻版“人鬼不了情”...
- 延伸人大民情茶話室+功能 加強茶品牌知識產權保護
- 看點:《消失的她》奪2023年端午檔冠軍
- 天天最新:中央氣象臺繼續發布高溫黃色預警:9省區市將現35以...
- 分付借了3000每個月要還多少?
- 【強信心 穩經濟 促發展】發揮資源優勢 打造產業集群——...
- 【快播報】佛山二手房掛牌量逼近12萬套,成交量連續兩月超過新房
- 感受傳統魅力 游客樂享其中 當前熱聞
- 熱消息:擇校不用愁!為您推薦這幾所北京海淀區最好的民辦學校!
- 高考公平!兒子考694分媽媽激動叫出海豚音:還有人高考超預期...
- 孩子是外地戶口,能讀北京中加學校初中部嗎?該怎么進?
- 天天觀察:京廣高鐵助力石家莊快速融入環首都一小時生活圈
- 尉氏縣張市鎮開展主題活動 濃情端午關愛老人
- 當前視點!湖北高考500分左右能上什么大學 可以報哪些公辦院...
- 湘南部分地區25日仍有暴雨 湘江干流或出現超警洪水
- 今熱點:中央氣象臺:京津冀出現區域性極端高溫天氣,6月底高...
- 世界微速訊:長沙、株洲方特端午特色民俗游受熱捧
- 石景山區市場監管局加強燃氣安全檢查
- 環球快消息!整備場上,“體檢科”大夫有點忙
- 黃浦江防汛檢查 世界熱推薦