時序與因果模型在復雜倉儲控制策略的前沿探索
一、庫存管理的抽象理解
一般來講,供應鏈管理的基本目標是為客戶提供高價值服務,同時做好成本控制。
為了解決這樣的問題可以從客戶的大量歷史數據以及相關其它信息入手。在一個決策時刻,如下右圖T1,系統(tǒng)會根據對于當前庫存狀態(tài)的觀測判斷是否需要做出補貨的策略,以及補多少的決策。在這個過程中隱含了一個中間步驟,每天的初始庫存計算會被消費市場所消耗掉一部分。對這樣的需求做出準確的預判或預測,是高質量庫存的關鍵問題之一。除此之外還會有其它一些因素影響庫存管理,比如當前庫存管理狀態(tài)的觀測是否精準,搜集到數據是來自單一場景還是多個場景的混合,是單商品還是多商品的庫存管理,特別是在需求預測出現相關性的時候就不得不考慮做一個中心化策略。
根據我們的調研和觀察,很多企業(yè)在庫存管理數字化轉型方面仍有很大空間可做。比如剛才提到庫存管理預測僅僅是基于過去經驗的一種方式,難以適應日新月異的更新。更重要的,缺乏系統(tǒng)性的判斷,對于后期改進是非常困難的。針對策略這一側,在補貨策略里,常用方法是在固定時間補充固定貨物量。稍微復雜一點的,比如圖中提到的(s,S)Policy——最小最大的補貨方式。問題依舊是很難去捕捉一些真實情況,比如一些不確定性、倉庫遷移等情況。
因果分析是一種把握和挖掘數據背后原因和結果的技術,因為它有很好的模型可解釋性,所以對于可視化以及復雜商業(yè)過程會有很大的幫助。
這里舉個例子,比如收集到一個demo的數據集,是對于價格、瀏覽量和訂單的時間序列數據。數據會有很多的觀測角度,比如從5次order來看,可以認為是隨機變量的5次觀測,也可以看成是隨機變量的一次觀測。鑒于有不同視角看數據,在建立訂單關系的時候到底使用哪些feature,以及把哪些feature的時延信息作為額外特征。不同視角、不同方法會給我們帶來截然不同甚至對立的結果。我們對這一技術的期望是簡單的,即利用因果分析及一些其它技術的融合,系統(tǒng)性地幫助我們找到合理實驗的信息,并幫助我們確定影響某個目標變量的最小集合。如果能得到上圖中右下角的動態(tài)貝葉斯網絡,就可以通過讀圖的方式找到可干預預測的嘗試,以及影響某個變量重要節(jié)點的排序。
從技術角度來講,庫存管理歸根結底要在每個決策時刻對于每個狀態(tài)去計算最優(yōu)的一個策略,使得管理可以可持續(xù)化的盈利,并且讓之最大化。在這個過程中我們認為處理好對未來需求的預測,以及補貨策略隨著消費習慣的改變進行高效地調整,是解決庫存管理的關鍵問題。由此產生兩條主線,其一是如何對需求做預測,其二是如何做補貨策略。
圍繞這個問題開發(fā)了很多相關技術,在此簡要介紹其中幾個。
首先是關于預測的問題。當我們學到一個動態(tài)貝葉斯網絡之后,可以通過一些帶有時間的、或多變量的feature,對未來的多步進行預測。第二、三個功能主要得益于我們有一個很好的模型可解釋性的工具,幫助我們來做根因發(fā)現、關鍵原因的排序,以及把觀測變量分解為多渠道貢獻等。第三個功能是當有了可以導出可干預程式之后,當觀察到影響某個變量可以實時、快速調整對于未來的預期。最后,當我們從客戶歷史中學習到了某個需求并預測之后,如何搜索最優(yōu)策略,會根據顧客的實際問題比如倉儲規(guī)模、運輸成本等約束來進行控制。
二、相關技術概念回顧
在解決倉儲問題過程中,會遇到大量的序列數據,指的是數據集中的部分信息依賴于數據中其它信息這樣一種特性。時間序列是一種常見的例子,觀測是隨著時間的推移而進行的。每次觀測都依賴于前一次或前幾次時間滯后的觀察去確定后面的觀測。另一種是和環(huán)境的交互數據,比如在怎樣的庫存狀態(tài)下做了多少補貨的補貨量,真實滿足多少需求以及reward反饋。在這樣的交互信息里可以看到當前狀態(tài)信息是另一段交互的結果狀態(tài)信息。
關于時序數據,為了得到一些有意義的結果,通常情況下會有兩個假設,一個是弱平穩(wěn),另一個是自相關,因為時序分析要發(fā)現歷史中的一些規(guī)律,然后去預測未來。
在因果分析中有兩大類分析框架,我們主要集中在SCM框架下。這樣的模型可以近似描述出預產生過程,并提供一個外部可干預的形式化的數學語言。通過這樣的模型不僅可以識別因果關系的強弱方向性等等,也可以幫助我們去計算path的因果效應等等。上圖展示的圖片來自Jonas Peters的一本書,概括了如果獲取到SCM的情況下,可以支撐的一些的工具。
第一,可以通過序列方程式獲取因果圖,并且可視化。第二,如左上所示,在高維時刻可以通過馬爾可夫性,把聯合分布拆分成多個簡單的條件概率形式。第三是干預,在SCM中改變某個節(jié)點的分布,或者對于關系長度進行改變,改變之后會得到新的SCM。第四是反事實,在做干預之前首先都由當前觀測去更新序列方程式里的變量信息,再在更新過后的SCM上做干預的更新措施。正因為有了這樣一個理論上的工具,可以支持在個性化的場景下做策略推薦或策略增強。
在動態(tài)貝葉斯網絡表示中有三個圖形化的表示。第一,可以把節(jié)點按時間從過去到未來的展開。第二,用unit graph刻畫時序最小的一個完備的信息。最后,summary graph在unit graph中把時間信息累積掉就得到沒有時間信息的圖。
如何獲取這類圖,大致有四類方法。
- 第一,constraint-based基于條件概率的方式判定圖的邊,然后通過特殊結構去定向。
- 第二,score-based方法定義了模型BIC,在某個class中去search。
- 第三,局限在某個特定的model class時候會去模型里做一些擬合。
- 最后是granger casual的方法。
三、因果推斷協助需求預測
回到我們要解決的主要問題,也就是倉儲問題上面。第一個任務是如何用多元時序的方法做一些需求的預測,并通過模型的性質給我們提供很好的可解釋性。
因為在SCM模型中有一些理論工具,以下三個方法都是可以用來處理時序分析。
在Casual discovery中,雖然表示出節(jié)點沒有顯示包含信息,如果知道實驗信息可以對數據集做一些特征工程,比如把實驗信息merge到數據集里面。第二,以ARIMA為代表的單元時序工具,主要對關心的目標節(jié)點做自回歸和moving average的考慮。它的自然拓展是如何去考慮多元的時序分析。在多元時序分析里有兩個小的分類,一種是未來去看現在,即沒有瞬時,另一種是處理帶有瞬時的時序發(fā)現。
我們對于多元時序方法的基本需求是要有較好的預測性能、以及良好的可解釋性。所以在模型選擇或算法使用時候集中在以貝葉斯網絡為代表的幾個方法中。
但是經過測試發(fā)現,目前主流方法的性能都還有改進空間。比如VAR或者VAR-LiNGAM,在進行商業(yè)決策或判斷中,給到決策者100條甚至1000條對他來說都是沒有信息量的。PCMCI方法在性能上還需進一步改進。上圖是一幅簡單的before-after對比圖,我們在一個簡單的ground truth模型上進行了測試。
上面我們看到這樣的一種改進的方法會極大減少余邊的信息。下一個問題很自然的是雖然邊數少了回歸出來的邊的系數質量是不是能夠有保證。這個對比圖在這方面進行了測試。知道真實的系數值是多少,用WAPE衡量估計出來的系數誤差有多少。在做對比的時候稍微做了調整,先會對系數整體的重要性做一個排序,從1%,5%到100%所有邊準確性或者平均誤差是多少。簡單做了4個對比,通過這幾個例子給到我們比較正面的反饋,在很多時候能控制學出來邊的個數情況下,系數的精度得到了進一步的提高。正因為有這樣一個性能的保證,為后面的預測和干預提供了很重要的保障。
進一步在實際數據中做了測試,并添加了更多擅長做時序預測的方法,比如arima,varmax, rnn, lstm等等??傮w從結果上來講,對于宏觀經濟預測上來講總的表現還是不錯的。下方截圖可以看到,除了提供package以外,開發(fā)了相應的web API,便于具體組合到應用中去。大概流程是上傳時序數據,對時序數據做一系列可選的統(tǒng)計檢驗,在一些情況下做一些轉換之后會學到一個圖。目前只用輸入數據集本身以及l(fā)ag,沒有額外的顯著性水平等等,極大減少了客戶的負擔。學完圖信息之后就可以利用圖上的feature信息做一些未來的預測。預測背后可以進一步發(fā)現到底是哪一些預測變量信息更重要地影響了某個節(jié)點信息。之后可以使用一些歸因、仿真之類的工具。
當然我們的測試不僅如此,還有一些新能源、熱輻射與能源需求上的測試,價格promotion、訂單需求上的預測。這樣一些真實數據中都做一些對比。綜合來看在我們非常關心的預測、可解釋性和模擬三個主要功能需求上來講,我們目前提供的web API性能還是不錯的。
功能已集成在技術平臺上,在內部已經實現了商業(yè)應用,目前也在不斷擴大應用范圍到更多一線業(yè)務中去。
四、因果推斷協助策略實施
接下來介紹怎么去做策略。
如何做策略,不僅會影響當前庫存狀態(tài),而且會對未來產生影響?;緮祵W框架是通過一個馬爾可夫決策來刻畫長期的序列決策問題。當環(huán)境發(fā)生改變時,如何高效地做出策略。
已知ground truth模型基礎上做了一個驗證,在有混合遷移環(huán)境的基礎上,環(huán)境遷移會影響策略的質量。最后是新的方法,基于因果模型學習或者結構學習可以幫助我們一定程度上改善這樣的問題。在倒立擺的例子里會關注桿的長度,來影響決策朝左、朝右桿狀態(tài)的變化。
上面一個簡單例子,當我們環(huán)境不遷移,所有收集來的數據都是來自同一個桿的長度,不同強化學習方法達到的效果都差不多。但是有趣的事情是,收集到的數據是來自混合環(huán)境的,比如桿的長度是1m、2m、5m。通過對混合環(huán)境數據進行學習之后,如果把桿的長度遷移到10m,發(fā)現傳統(tǒng)的基于MLP的方法性能下降得非常厲害。我們的方法可以和model-free方法打個平手,但是對于樣本消耗上來講目前方法只用消耗1/10的model-free方法需要計算的成本。如果把該場景應用在一些商業(yè)場景上的話,會顯著節(jié)省樣本收集量。
取得這樣效果背后設計了一個生成對抗式的因果網絡,對于當前收集到的數據進行因果網絡或者反事實的增強,來高效地訓練策略的網絡。具體輸入到模型這塊來自于當前的狀態(tài)、策略和環(huán)境的信息,給到圖,以GAN生成對抗網絡方式訓練Generator。為了獲取或者推理出這樣一個滯后過程加了一個Encoder方式近似獲取到這樣信息,然后把信息給到Generator以后通過由Generator調整的方法類似調整的SCM模型去做一些數據增強。在第二次迭代還會收集到新的數據以及通過上一波數據進行反事實推理之后進行數據聯合,在第二次訓練時候可以幫助我們進一步擴大P1塊的數據來去訓練它。
在倉儲問題上來講,我們抽象出一個模型來做一個測試,其他都是一些比較基本的定義方式。因為這是一個序列決策問題總體來講要定義reward函數,實際滿足客戶的訂單的需求。右邊對比圖得到的結論和我們之前看到的場景遷移結果類似。
另一個解決處理環(huán)境變化的方法,快速做replanning的方式。主要是replanning的成本開銷,所花的時間是遠遠小于環(huán)境遷移時間,對于處理時間問題都是可以接受的。具體來講采用在線規(guī)劃器的算法去對當前狀態(tài)做一個局部狀態(tài)逼近。好處是針對目前會對整個狀態(tài)空間進行遍歷如果狀態(tài)是離散的話。目前online的plan只關心當前狀態(tài),因為目標有極大的減少會有更多的計算資源幫助我們對策略細化,以及策略樹的生長。
當環(huán)境或需求發(fā)生變化的時候,該方法在計算策略時都是會重新replan策略,所以可以很好的應對這樣的變化過程。同樣地,目前計算的對象從一個空間變成一個狀態(tài)是遠大于目前離線算法的性能。
最后是結果性能對比圖。第一、二張圖分別描述補貨策略觀測不確定性大小時和不同離線算法在不同規(guī)模和在線規(guī)劃時間下的計算結果值。第三張圖,倉儲管理追求收益,來自多大程度上可以滿足消費市場需求。為了使銷售額長期最大化,在個別時間會出現少量缺貨情況。反映了收益和成本上的平衡,是在考慮了長期的不確定性的基礎上得到的最優(yōu)解。增加庫存量雖然可以很大程度上滿足客戶的需求,但多出的管理費可能反而會傷害長期的收益情況。