雷鋒網( 公眾號:雷鋒網)按:本文為 AI 研習社編譯的技術博客, 原標題 Neural networks for landing page optimization,作者為 Oleksandr Savsunenko 。
我很樂意分享我用神經網絡對頁面登錄進行多參數優化的一些實驗。我想到這個點子已經有半年了,而且我發現從自動操作這個角度來看它十分有趣。A/B 測試需要從市場專家那里消耗大量的時間,同時它們需要有大量的流量才能表現良好。當一個小團隊來管理大量頁面時,這就很成問題了。對于一些項目來說,這也與登錄頁面的“老化”有關——它們會隨著促銷或優惠的結束而過時。
有許多方法可以解決這個問題。在谷歌優化方案中比較舊的方案 MVTs(多變量測試)將分割所有可能的登錄頁面版本間的流量。并且適用于 個變量的測試。但是想象一下,你要測試 個標題, 個子標題, 個按鈕顏色和 個標題圖片,再加上總體布局的幾個版本。這很容易達到 k+不同的組合。由于你估計了 k 的流量,目標是盡快找到最優或接近最優的版本。你犧牲了純粹的統計精度,并試圖盡快達到盡可能多的轉換。
我知道少量的潛在方法。首先,考慮不同的特性。因為它們是獨立的實體,想象一下你正在做一個獨立的數字A /B 測試,這樣你將很快得到一些結果,但是如果存在有交叉特征的相關性,你將會錯過它們,你的解決方案并不是最佳的。二是使用遺傳算法。有一些公司就這樣做了——比如Sentient Ascend。從他們的宣傳材料來看,他們似乎使用了某種遺傳算法。三是運用多臂老虎機理論。解決多臂老虎機問題的方法之一是利用強化學習和神經網絡。
遺傳算法是模擬自然選擇的過程。把不同的網頁變化看作是一種生物的不同特征——有些特征利于生存,有些不產生影響,有些則有負面影響。遺傳算法的基本工作流程如下:
所以,我決定構造神經網絡驅動的一些東西。我和一些市場營銷的人做了交易:我將建立一個系統,他們會給我流量來測試它。這是個雙贏的過程,CPA是這種系統的一個完美的應用案例。
我需要做的是使用神經網絡來解決所謂的“多臂老虎機”問題。在強化學習方面,我還學過一些其他的好方法,你可以在下面找到一些聯系。我把這個項目簡化為幾個階段,就像多臂老虎機問題的演變一樣。
我內心深處對解決每個步驟所需要的流量數量持非常樂觀的態度。我的 CPA 的小伙伴們贊成用 k-k 的流量去測試我的觀點。并且我覺得測試階段 和階段 已經足夠,但數學對我來說不利。階段 將需要更大數量級的流量,當系統調試并學習完畢后所需要的流量會減少。
在這里,我將描述系統在運行中的最新運行結果以及我收獲的一些見解。下面你會發現為精通技術的讀者準備的一些代碼和實現細節。
所以,我們進行了 / 的分割測試。% 是靜態登錄頁面,另外 % 是神經引擎驅動的動態登錄頁面。在最初的 - 天之后,我注意到我的神經系統解決方案已經達到了它確定的變化 (局部最小值),并且不會改變 (基于損失和權重)。這大約出現在 -k 的流量之后。
我開始好奇,想看看我是否能基于單純統計數據得出同樣的變化。我計算了每一種變化的平均 CTR 值,選擇了其中表現最好的,并與 ML 得到的變化進行了比較。讓我十分驚訝的是,它們中 % 都不相同。神經網絡表現出完全不同的結果。真有趣…
那么,我想神經網絡應該比簡單的線性代數和我都更聰明。為了進一步驗證我的發現,我停止了學習神經網絡,對 個版本進行了正面比較:
正如你看到的那樣,我一直等到隨機和非隨機選擇之間的差異變得具有統計學意義。所以以下是主要的結論:
經過一些挖掘,我認為我的問題符合典型的「人工智能」強化學習。這里有一個很好的我經常用到的速成課程,我將在文末提到它。我希望我的代碼在生產環境中運行,而 Tensorflow 是一個可以選擇的框架。在我的日常工作中,我更喜歡 MXNet,它已步入量產階段。
我使用了一個簡單的兩層全連通網絡,有一個靜態變量作為輸入,并將每個頁面的每個特性生成概率作為輸出。如果輸入不是靜態的,而是隨著用戶特性 (時間、地理位置、語言等) 的不同,那么對于第一階段的系統來說,修改它是非常容易的。
為了在產品中運行系統,我使用了Sanic后端、Postgres作為SQL存儲,而Tensorflow作為推理引擎。在服務器上執行了系統的學習。
對于每個網站訪問,我們要求后臺系統把推理結果和頁面的變量顯示給這個用戶,它大約有 毫秒的延遲。在轉換之后,它與用戶的頁面訪問之間有 分鐘延遲(其中五分鐘是經典窗口轉換)來決定訪問是否成功,然后使用這次訪問來進行神經網絡訓練。在測試期間,隨機頁面生成與神經網絡動態頁面比例在逐步減少。最初的登陸頁面是 % 隨機生成的,隨機頁面生成與神經網絡動態頁面比例在 天內衰減到 。
為了構建系統,我需要某種虛擬測試環境,所以我構建了一個簡單的腳本來模擬訪問網站和轉換。這個過程的基礎是為每個登錄頁面的變化生成一個「隱藏」的轉化率概率。最初,我假設每個特性的獨特組合都有自己的CTR,并且所有的特性都完全依賴于彼此。這是一種失敗的方法,網絡常常無法找到具有大量流量的最佳解決方案。正如我所理解的,這并不是一個真實的情況,標題文本和下面個卷軸的顏色之間并沒有太大的相關性。
然后我決定簡化環境,假設特性都是線性無關的。這是一個過于簡化的過程,但是對超參數進行優化并確保系統找到正確的解決方案就足夠了。
感謝你的 關注,歡迎提出問題并與我溝通交流,我的郵箱是: savsunenko.sasha@gmail.com