OPPO智能增長算法核心架構與應用
一、行業背景
智能手機行業作為典型的硬件制造業,與大眾生活息息相關。
國家統計局統計顯示手機上網人數10.65億人,還未手機上網的一般是未成年、老年人,手機行業幾乎沒有增量。在存量用戶需求端,用戶的換機周期越來越長。去年和前年的對比,1-2年的持機用戶占比從15%下降到13%,2~3年的用戶占比從28%下降到22%,3~4年的用戶占比從24%增加到28%,4年及以上的用戶占比從28%增加到31%。
從供給端看,20年、21年經歷了供給內卷,所有廠商都在瘋狂出新品,競爭剩余的增量。去年新品數量恢復到19年水平,但是上市2年以上的機型逐年下降,主要原因可能是老機型產品沒有競爭力,被迫退出市場。進入23年,國內安卓陣營競爭更加劇烈,在微博、B站等社區都能看出戰場痕跡。
隨著智能手機風口過去,手機公司可能面臨許多挑戰。一般來說,它們可以從以下四個方向來應對這些挑戰:
第一個方向是拓展高價值市場,例如海外發達國家或國內高端市場。
第二個方向是增加手機的附加值,例如提升手機互聯網服務的平均用戶收入(ARPU)。
第三個方向是增加新的運營主線,例如拓展智能穿戴設備或汽車行業。
第四個方向是提升渠道效率和營銷模式,例如增加效果營銷,或通過線下和線上渠道的互補來促進用戶的粘性。
OPPO在過去兩年的智能增長探索中,主要積累了第三和第四個方向上的經驗。接下來將分享相關的增長策略。
二、算法架構
近年來,在深度學習的推動下,各行業的智能算法架構基本上都采用TensorFlow或PyTorch作為底座,以此為基礎進行構建,降低了技術門檻,同時享受到了技術紅利,做出有行業特色的創新和優勢。就手機行業而言,它既擁有互聯網巨頭的數據優勢,又面臨著制造業智能改造的挑戰。
以下是OPPO團隊的整體算法架構。手機增長的算法架構主要包括基礎數據、數據建設、特征畫像、模型建設和應用場景這五個部分。
基礎數據方面,手機增長算法所需的主要數據包括:
- 手機狀態:一般是操作系統層面的各類字符串或數值類型的狀態數據,主要用于建模用戶生命周期。
- 商品屬性:指待售商品的一些基本屬性,如內存、大小、賣點、權益等。
- 訂單數據:指用戶購買手機時的關鍵數據。
- 營銷投放:指在智能增長過程中干預用戶的數據,通常包括RTA、RTB以及廣告投放的數據,或其他消息日志。
- 實時行為:主要描述用戶在手機上的部分實時反饋。
- 素材:為提升干預效果而準備的一些內容。
為了提升數據復用效率和擴展性,要在基礎數據的基礎上,做一系列標準化、規范化處理,再基于手機的流轉關系抽取用戶的流轉關系圖。這里的自然人是描述手機和自然人的映射關系。完成數據建設后,特征畫像的建設和業界大多數做法比較相似,包括實時統計類、實時序列類、內容理解、用戶長期畫像,不過也有一部分是行業特有的,手機流轉畫像和營銷節點畫像,主要刻畫手機市場的競爭關系和因應手段。
在模型建設方面,我們采用了以下方法:
- 因果模型(Uplift):用于刻畫營銷的邊際收益,并減少負向干預,用于換機預測。
- PU-learning方法:用于準確找到干預的精準人群,減少對用戶信息的干擾。
- 多模態理解:主要用于文本和圖像的預訓練。
- PID方法:主要是一種自動控制能力,用于滿足大部分場景的自動約束需求。
- AIGC方法:通過Stable Diffusion模型的能力,輸出圖片素材。
- CTR和CVR:主要用于鏈路上點擊率和轉化率的預估。
這些模型和算法的應用場景包括以下幾個方面:
- RTA和RTB:涉及廣告投放場景,包括域內和域外的廣告投放。
- 社區和商城:指OPPO的自有平臺,是用戶運營和手機自營的營銷核心渠道。
- 權益和Push:綜合干預渠道。
以上就是OPPO算法層面的整體架構。
從工程層面,我們看下怎么解決智能改造的技術方案。最最側的智選模塊,完成算法場景的自動接入。手機增長涉及的鏈路很長,比如從新機賣點洞察、人群營銷洞察、新機預熱、首銷、促銷,并且每個鏈路的場景很多,智選主要滿足了場景快速接入的需求,并且解耦運營、工程、算法,支撐算法專注在效果優化上。營銷云主要用于素材生成、廣告投放管理、分析監控。中間引擎模塊是推薦引擎,通過召回、粗排、精排、重排、策略算子的自由組合,滿足定制化需求。為了進一步提升引擎的靈活性,我們對多樣性、多目標、重排、策略模塊做了DSL改造,支撐團隊的算法探索。另外由于機器成本的約束,上面的很多步驟在使用時都可以0成本的插拔,以降低延遲、提升吞吐。
上述算法架構主要是基于OPPO的Andes智能云完成的。得益于智能云的基礎設施的靈活性和易用性,我們在協作方面,特別是跨團隊、跨部門和跨系統的協作上擁有較好的解決方案。
三、應用場景
接下來將分享4 個具體的應用場景案例,第一個案例是基于 AIGC 的內容供給;第二個案例是在商城中,基于多場景、多目標、多模態的推薦;第三個案例是基于因果推斷的精準人群定位;第四個案例是在手機行業里的廣告精準營銷。
1、第一個應用場景:基于AIGC的內容供給
首先,我們意識到在非算法領域或傳統制造行業中,業務團隊可能需要一些科普才能理解內容供給的重要性。因此,我們與業務伙伴合作時采用了講道理和數據展示的方式,在一些小的場景中通過實驗驗證了擴大內容供給量的益處。我們觀察到,通過增加內容供給量,可以顯著提高點擊率,獲得15%的點擊率提升,從而達成了共識。
另一個挑戰是供給效率和人力成本。最初,內容供給的流程依賴于人工,即設計師輸出一些素材,經過安全審核后投放到線上。這個過程相對低效。為此,我們團隊進行了第一次改造,采用工程模板制圖的方式。這樣,內容供給的流程發生了改變:設計師集中精力在模板創作上,然后通過模板生成大量候選素材,經過初審和安全審核后進行投放。通過這次改造,每天初審的內容數量顯著增加。然而,也出現了新的問題:模板的重復率較高,生成的候選素材信息量不足,容易讓用戶感到千篇一律。
目前,隨著AIGC技術的不斷成熟,我們調研了AIGC的相關方案,并發現該技術實際上可以增加模板的創作難度同時增加信息量。因此,我們與相關的團隊合作,引入AIGC技術來增加素材創作的信息量,以提升用戶體驗。
目前,我們使用的AIGC模型主要是CLIP模型,它的主要思路是通過大量的圖像數據和文本數據進行模型預訓練,使模型能夠理解圖像和自然語言之間的對應關系,從而實現跨模態的語義推理。為了實現這個目標,我們生成模型的框架涉及兩個組件。第一個是圖像編碼器,基于Transformer架構,將圖像特征轉化為Embedding向量。第二個是文本編碼器,基于VILT架構,將自然語言轉化為特征向量?;谶@兩種向量,我們結合交叉熵學習和對比學習的方法,進行模型的訓練。在預訓練階段,我們參考了一些開源數據和OPPO私有的圖像和文本數據,并在Andes智能云的GPU集群上進行訓練。
在生成部分,我們經過了多次嘗試,以使AIGC輸出的內容符合廣告投放的需求。目前發現,通過添加關鍵詞、賣點、營銷話術、圖文風格、負面反饋以及圖像細節的提示,可以有助于生成素材。最右側的示例展示了結合素材和模板生成的最終結果,其中背景圖就是一個例子。
2、第二個應用場景:多場景、多目標的多模態推薦
如上圖所示,我們目前的業務場景主要是在商城界面進行推薦。例如,在首頁的橫幅廣告部分、格子位、瀑布流推送以及積分、社區、優惠券發放等場景中進行推薦。
在算法接口方面,我們已經接入了近幾百個業務場景,需要關注點擊率、轉化率、GMV等業務指標。同時,手機行業內存在人力約束,這對算法提出了不同的需求。
我們一開始就采用了跨場景多目標的模型方案來進行推薦,隨著場景的增加,我們不斷對模型進行迭代優化。后來,我們還增加了一些非產品內容的推薦,例如社區、視頻等。此外,對于內容素材的需求,我們也需要在多模態模型中引入一些新的能力。
經過不斷迭代,我們的模型如上圖所示。左側部分是多模態的理解,模型主要基于ViLT的結構。通過對比發現,經過業務數據微調的ViLT模型比公開的ViIT模型效果更好。我們進行了大量的分析,發現實際業務場景的數據與公開數據集存在較大差異,特別是在營銷話術等垂直領域方面。右側部分是推薦模型,該模型結構融合了最新論文的進展。底層模型主要基于歷史行為、上下文和候選物料三個部分。對于候選物料,我們目前采用對應的多模態預訓練特征。實時統計的行為會使用Encoding 的方法進行向量化表示,而上下文內容我們會額外區分場景和domain特征進行向量化。
在多模態多感場景感知模塊中,我們主要使用Transformer和場景專屬的方法。在最上層,我們為目標設置了專門的tower,最終得到目標的比例結果。經過測試對比,我們發現引入AITM的多目標校準方法可以獲得一定的收益。在多目標層面,與傳統電商相比,我們會加入更多的目標,這與行業特點有關。例如,在手機行業中,每個用戶可能需要兩三年才會更換手機,這導致轉化率很低。同時,換機用戶中復購的比例也較低。因此,為了準確捕捉用戶當前的換機意圖,我們需要增加其他目標來輔助發現用戶的意圖,例如評論查看、時長相關和商險相關的目標。得到這些目標后,我們使用近似排序公式計算得分,該得分是各個目標的連乘結果。同時,每個目標受到三個超參數α、β、γ的約束,目前這些超參數通過離散超參模型學習得到。
經過多次迭代,包括增加更多目標、引入多模態、優化超參數等措施,相較于原有模型,我們在轉化率(CVR)上取得了累計20%以上的收益。
3、第三個應用場景:基于因果推斷的精準人群
手機行業中的“精準人群”概念與電商平臺的劃分有所不同,這是因為用戶購買手機的行為具有不一樣的特點。舉個例子,假設用戶A,他可能會選擇繼續購買當前品牌的手機,也可能會換到其他品牌。對于已購買當前品牌的用戶,他們可能有兩種行為,一種是自己使用手機(留存),另一種是贈送給他人。然而,由于線上和線下數據的隱私安全等問題,手機公司只能獲取到部分購買和換機的數據。手機行業的增長目標是通過現有數據識別出購機和留存用戶,并通過營銷活動增加商品的粘性。這就是精準人群的背景場景。
因此,在算法團隊進行人群建模時,主要關注兩個指標:準確率和召回率。通常情況下,我們很難獲取到完整準確的營銷數據,因此在實踐中,我們會花費更多時間進行特征畫像和用戶分析,通過多種方法挖掘真實的購機用戶,并疊加相應的模型方案,從而得到最終的精準人群。
我們采用了多種方法,例如Look-Alike、PU-learning和Graph-learning等方法,來獲取相對精準的人群。
在營銷中,只有精準人群是不足夠的,因為對于營銷四象限圖中的B、C、D三個象限的人群進行營銷可能效果甚微,不符合預期。我們的核心目標仍然是針對A人群,因此這個問題實際上轉化為一種因果推斷的問題。
在算法層面上,在滿足一定條件的情況下,因果推斷可以等價于計算Uplift,這種模型通常有三種建模思路:
- Two-Model:分別建模基準組、控制組的模型,兩者相減就是結果。缺點是兩個模型有誤差累積。
- Single-Model:參考推薦領域的多目標模型,解決了模型誤差。
- Direct-Model:直接建模ITE。
在典型的推廣搜算法領域,假設訓練數據和預測數據獨立同分布,能不斷產出很好的結果。在因果推斷上,由于一個人要么有干預、要么沒有干預,沒辦法在同一環境下同時觀察到基準組、控制組的結果。因此需要使用因果模型來解決uplift建模問題。Uplift建模時有兩個挑戰:
- 由于業務需求,導致兩組數據的分布不同。
- 一般業務只會保留很小一部分用戶作為基準組,樣本數量不均,也會給模型建模帶來困難。
我們嘗試了DESCN的論文思路,使用了干預組和控制組的全樣本,這樣的結構相當于使用了Single-Model的思路實現。這篇論文主要創新點在于使用了meta-learning的思想,引入一個網絡來學習中間變量treatment。
在深入迭代時我們還會遇到具體的業務問題,比如在t1時間段,業務需要干預左邊和右邊的人群,過了一段時間后在t2時刻,業務需要干預中間的人群,在t3時刻干預的人群又變了。這種業務人群變化劇烈的問題給因果推斷提出了更高的挑戰。
我們是這么來看待這個問題,這個問題本質上屬于曝光選擇偏差的問題,需要對曝光bias給消除掉才能準確建模。我們參考了EUEN(Explicit Uplift Effect Network 顯式提升效應網絡)的論文方法,μt(X,最終的uplift) = μc(x, 控制組的轉化率) + ω(X, 曝光概率) · τe(X, 曝光組的uplift)?;跇颖臼欠衿毓獾男拚?,降低業務曝光選擇偏差導致的模型有偏。
由于因果推斷的反事實特性,上線驗證成本很高,所有的優化都會優先在離線驗證全部細節,離線保證了正確性,再開展線上實驗。在當前的增量實驗里能看到和最初的監督模型,在增量ROI上提升了11.3%。
4、第四個應用場景:廣告精準營銷
對于手機廠商來說,數據隱私是至關重要的,所有數據都必須保持在公司內部,不允許泄露。因此,在進行營銷活動時,我們首先考慮的是數據安全性,在域外投放或者在其他廣告平臺基于人群包投放的這類方法是行不通的。我們采用了一些更安全的方法來獲取流量,如實時API(RTA)和實時競價(RTB)的模式。基于RTA和RTB,我們還建立了內部的營銷云平臺,用于整合不同渠道的流量,以提高迭代效率。
簡單介紹一下RTA和RTB。RTA代表實時API(Real Time API),它決定了我們是否選擇某個流量。RTB代表實時競價(Real Time Bidding),它決定了我們是否參與競價以及以何種價格參與競爭某個流量。
接下來介紹一些與廣告精準營銷相關的獨特技術。
在RTB渠道的競價過程中,模型主要考慮三個目標:競價成功率、點擊率和轉化率。競價成功率指的是在基礎出價下成功獲得流量的概率,該目標用于后續的價格調整策略;轉化率指的是用戶點擊后進行轉化的概率,該目標也會影響出價策略的調整,并且在很大程度上決定了整體投放的投資回報率(ROI)。
模型的整體結構與多任務多路輸出(MMOE)的結構相似,我們額外增加了每個目標單獨的輸出層。特征部分主要包括長期特征、實時特征和多模態特征。通過觀察發現,渠道的實時特征對ROI影響非常大,而多模態特征對于冷啟動問題非常有幫助。
我們發現,在RTB中,點擊率(CTR)預估的準確性對于流量競價的投資回報率(ROI)有很大的影響。例如,如果CTR的預估值高于實際統計值,會導致競得的流量價值高于實際值,從而降低投放的ROI;而如果CTR的預估值低于實際統計值,則會導致競得率下降,無法獲得足夠的流量,無法充分利用預算。
我們的目標是希望模型的預估值和后驗統計值能夠在相應的水平線上,以準確預估真實情況。通常情況下,原始模型和后驗模型之間存在一定的差距,需要進行調整。我們當前的校準策略是采用了特征敏感的樹模型的分箱策略,參考了一篇22年的公開論文。相對于原有的模型,經過CTR分桶校準后的模型,PCOC值會下降約44%。PCOC反映了預估值和真實值之間的偏差。PCOC值下降意味著模型更加準確,相應的ROI也會有較大提升。
下面介紹我們在投放時的出價策略。我們在RTB上采用了與業界常規不同的公式,考慮了更多因素。首先是素材的基礎出價,然后是素材的CTR打分。我們還會預估素材的流量價值,主要包括轉化率、用戶換機概率以及在換機時成為增量用戶的概率。此外,我們還會考慮預算和ROI的限制。同時,我們還會增加競得率因子。所有這些因素通過連乘計算。在實際應用中,我們可能會對計算結果進行排序或進行截斷操作。
經過多次迭代和實驗,我們發現,針對ROI的這些多因素考慮可以使其提升約25%。
四、總結和展望
在手機行業做增長的過程中,有一些方法論是必要的,其中最重要的是要確定一個北極星指標,即定義出識別增長的核心指標。我們大致梳理了一下,包括新機激活、老用戶留存、復購率、用戶流失以及干預的投資回報率(ROI)等宏觀指標。這些宏觀指標對于制造行業尤其重要,能夠顯著幫助我們凝聚數據業務邏輯的共識。除了北極星指標外,我們在具體的鏈路上也制定了可量化的指標。總結來說,主要包括以下幾塊內容:
首先是新機洞察,這是增長的源泉,通過深入了解其中的邏輯,能夠顯著提升業務。這部分主要包括行業特點的分析,如競品的賣點分析、同期市場的社會分析,以及可應用于營銷的策略和首銷期用戶的反饋。
第二個是營銷敏感人群,我們關注的是一些算法指標,包括準確率、召回率、AUCC(Average Uplift in Conversion Rate)和AUUC(Average Uplift in User Conversion)。后兩個指標與因果推斷相關。
接下來是從花錢的角度來看增長,大致可以分為免費增長和付費增長兩類。在免費增長方面,我們注重通過提升現有流量的效率來實現增長,關注的指標有很多,例如點擊率、競得率、轉化率、品類流轉和增量ROI等。這些指標可能會隨著迭代的進行而增加或剔除,以符合當前的業務需求。
在付費增長方面,我們主要關注預算分配等指標。預算分配不僅限于廣告領域,還包括不同渠道和資源方之間的動態調度,比如京東和自營之間的動態分配,或者首周不同時間段的預算調度。我們總結發現,在不同時間段或跨渠道之間進行資源分配對于投放ROI具有非常大的影響。
五、問答環節
Q1:在多目標多估計部分,提到了超參數,對于超參數設定不同公司有不同的做法,就比如有的會采用CNN,或者有的會采用的實驗的方法去確定,您這里是怎么區學習得到超參數的?
A1:我們也試驗過多種方法,比如說最開始的時候是基于經驗參數,但是后來隨著場景增多發現行不通,手工設定效率低且不科學,目前主是主要采用PSO 的方法,當然我們也在探索用強化學習的思路,但我們也發現強化學習對于收斂的要求很高,同時對數據量需求很大,在智能增長領域,我們的數據量是一大短板,我們不能像互聯網行業的APP那樣有豐富的日志數據,這也導致我們目前只能用 PSO 這種模型來去輸出離線指標。
Q2:還是多目標預估部分,增加一個模型目標之后,那么線上應該進行怎么樣的適配?有沒有什么經驗技巧?因為很多時候在排序時可能會有很多目標,每增加一個目標都可能會遇到各種各樣的一些問題。
A2:這是好問題。當然不同的業務場景它需要調整細節是不一樣的。比如在我們這個行業里面,它因為它的候選集比較少,所以我們很少區做一些召回相關的東西。但是如果你們有很大的候選集的話,需要調整的東西有很多,比如從召回粗排可能一路都要調整。但對于我們這個行業來講,主要是調整的是比如說增加一個目標以后,首先要做一些離線體驗證,看看原有的目標有沒有受到影響,比如說他預估的偏差會不會隨著人群有分布的影響?如果去排查完離線沒問題以后,在線上部分我們主要是調整的首先是增加了目標以后的融合公式,其次是在重排上的調整。當然也要考慮應用場景,如果是這個多目標是在廣告投放場景的話,我們可能會更關心其他的指標,比如以 RTB 為例,它可能是需要還要觀察我們競得率相關的實驗,我們也需要做這種適配。
Q3:在營銷增益的例子中,如果發現特征在整個周期內分布差異較大的怎么辦?
A3:我們剛才也看到,在我們營銷的時間節點上,特征分布確實是很大,比如說機型的偏好,因為對于我們手機行業,今年有的時候打高端機,有的是打低端機,有的時候主打女性市場。所以我們對于曝光偏差也是參考很多業界內的先進經驗,比如在曝光選擇上,還有我們也會基于PSM 進行一些樣本的過濾,盡量讓同一個模型接受到的模樣本盡可能地來自同樣的一個分布。即使做這些調整以后,還是會面臨一些特征分布差異的問題,因為我們只能解決一些核心特征分布差異的問題,但是總會有一些細枝末節的特征是解決不了的。
因為在我們的場景里還會面臨一個大問題,就是手機的銷量分攤到可以用的樣本每天大約只有幾千個,樣本量是很大的調整,受制于此很多方法我們去使用。
Q4:關于因果推斷,提到了control model和treatment model,還有一個uplift model,對于這部分建模的數據是A/B test的數據還是直接觀測的數據?
A4:模型所用的樣本是全樣本包含干預組和控制組,然后我們會用模型學習用戶被干預的概率,計算uplift。
Q5:所以說實際上是有干預實驗存在的嗎?是否是通過干預實驗去收集了數據訓練的模型?
A5:是的,在這個實驗里面,控制組是永遠都存在的,剩下對不同人群進行干預得到數據。
Q6:關于曝光偏差,一篇文章講到了就是曝光偏差可能會有有害的和有利的部分,如果一味的去糾正偏差,效果會不會不一定是最好的,是否有考慮過這個問題?
A5:是個好問題,確實如果考慮特別多話,尤其在選擇樣本的時候進行消偏,涉及到樣本過濾的時候,確實會我們會有很大的挑戰,所以我們也是比較謹慎。首先,我們原則是盡可能的能夠把樣本用起來。然后在這基礎上,然后會去看一些具體的指標進行評估,比如說我們會做大量實驗分析人群,在離線情況下,看AUUC 指標,同事,我們會繼續去拆機型,拆人群、拆解維度,再分別去看指標,然后才確定某種技術是否真的要采用。