盧忠?guī)r,張偉,金軍輝
(上海威士頓信息技術股份有限公司,上海 200092)
卷煙廠制絲車間的烘絲工序需要使用烘絲筒將煙絲的水分烘干到設定的水分。烘絲筒具有PID自動控制系統(tǒng),可以自動調節(jié)烘絲參數使出口水分穩(wěn)定到設定值,此系統(tǒng)在連續(xù)穩(wěn)定烘絲時效果良好。但每個班次剛剛開始進行烘絲時(即干頭階段),由于入料煙絲水分不穩(wěn)定、設備受外界環(huán)境影響大、烘絲筒內環(huán)境變化劇烈,此時若使用烘絲筒的自動控制回路控制烘絲,則需要較長時間才能使出口煙絲水分穩(wěn)定到目標值,從而影響產品質量和生產效率。目前卷煙廠的烘絲干頭階段先由工人手動控制烘絲筒的筒壁溫度等烘絲參數,待出口水分穩(wěn)定到設定值后再交由烘絲筒自動控制系統(tǒng)進行控制。
由于目前的模式依賴于人工經驗,缺少可量化的操作指南,新擋車工學習干頭操作的難度較高,干頭部分的生產無法標準化、自動化,不利于制絲的質量控制。卷煙廠希望通過機器學習的方法建立預測烘絲參數和烘絲筒出口水分的模型,為操作工調節(jié)烘絲參數提供參考,并為實現烘絲干頭階段的自動化控制打下基礎。烘絲筒是一個大型的滾筒式烘干機,烘絲時煙絲需要大約5分鐘的時間才能通過烘絲筒,這段時間內的烘絲參數都會影響煙絲到達出口時的水分。烘絲筒具有較大的熱慣性和濕度慣性,烘絲參數還會通過改變烘絲筒的環(huán)境影響之后才進入烘絲筒的煙絲的出口水分。所以對煙絲出口水分進行建模時,不止要考慮當時的烘絲參數,而是要考慮過去一段時間內烘絲參數的所有變化。
卷煙廠制絲車間有大約35000個數采點,根據數采點的含義人工初步篩選出了可能影響制絲一號線A路烘絲筒出口水分的350個數采點。但卷煙廠的時序數據庫中只保留了其中76個數采點歷史數據。
這76個烘絲參數中不止包括烘絲機上的數采數據,還包括烘絲前流量稱、增溫增濕筒上的部分數采數據,煙絲通過這部分數采設備后還需要經過一段的固定時間后才能進入烘絲筒,為了提高訓練數據效率,數據處理時將這部分數據按照數采點處的煙絲進入烘絲筒時的時間進行行對齊。
從時序數據庫查詢出每個烘絲干頭烘絲開始前10分鐘到烘絲開始后30分鐘、以6秒鐘為間隔的數據。刪除斷料、設備故障等異常干頭的數據后,最終得到了1729個有效的干頭數據。
去除記錄設備運行狀態(tài)的數采數據, 然后計算烘絲參數彼此之間的相關系數,對于相關系數絕對值大于0.95的兩個烘絲參數舍棄其中一個(部分控制參數的設置值和實際值)。最終得到包含31個維度的數據。
卷煙廠時序數據庫記錄的是操作工進行人工調節(jié)的情況下烘絲過程的數據,使用這些數據進行建模訓練得到的就是預測存在人工調節(jié)筒壁溫度的情況下未來烘絲筒出口水分的模型。
如圖1所示,按照時間烘絲干頭可以大致分為3個階段:“烘絲筒從完全空閑到被煙絲完全充滿”“煙絲充滿烘絲筒但烘絲筒內環(huán)境還未穩(wěn)定”“烘絲筒內環(huán)境基本穩(wěn)定”3個階段。

圖1 2017年1月1日~2020年7月31日的所有干頭出口水分變化
前兩個階段隨著時間的變化烘絲參數和出口水分的關系的變化很大,如果使用一個模型為完整的烘絲干頭建模,需要的模型比較復雜而且訓練時間將非常長。如果將干頭按時間切分,對每部分分別建模,則可以大大降低模型的復雜度和訓練時間。本文將整個烘絲干頭分為“3~6分鐘”、“6~7分鐘”、“7~8分鐘”、“8~12分鐘”、“12~15分鐘”5個時間區(qū)間,并嘗試使用不同的算法、輸入數據建立預測出口水分的模型。
烘絲筒當前時刻的出口水分不但受當前時刻的烘絲參數的影響,還受過去一段時間的烘絲參數的影響,但根據用戶經驗這段時間不會超過10分鐘。
(1)將清洗后的數據除出口水分之外的每個維度的過去10分鐘每隔6秒鐘的數據都作為一個維度構造出一份新的數據。
(2)使用pca對上面的數據進行降維,將3000維的數據降維到600維,得到模型的輸入數據。
(3)分別以未來5分鐘內每隔6秒的出口水分作為模型的輸出數據。
(4)使用sklearn.ensemble.GradientBoostingRegressor類庫實現模型。
(5)以卷煙廠2017年1月-2020年7月的數據,以干頭為粒度拆分為5份,進行KFold交叉驗證。
(6)在54個核心主頻2GHz的服務器上訓練所有時間段模型平均需要2小時50分鐘。
(7) 經 試 驗 使 用n_estimators=50,max_depth=4,learning_rate=0.1的參數可以得到較好的預測準確率。
(8)使用模型預測2020年8月的的烘絲起始階段的出口水分,各時間區(qū)間的平均均方誤差分別為0.048597164、0.028678239、0.017766282、0.009237、0.0037468。
理論上如果數據充分那么使用其他參數作為輸入建模預測出口水分應該可以比較準確的預測出口水分,但實際上使用出口水分之外30個維度的數據作為輸入出口水分的預測效果較差,這可能是現有數據中缺失廠房的溫濕度、烘絲筒各易損零件的狀態(tài)等數據。但這部分因素帶來的影響應該已經反映在了過去的出口水分之中。通過加入出口水分的過去值作為模型輸入數據,引入出口水分的自相關性,也許可以改善出口水分的預測結果的準確性。
本文接下來將口水分過去10分鐘每隔6秒鐘的數據也作為一個維度加入到模型的訓練數據中,保持其他的做法不變,使用得到模型預測2020年8月的的烘絲起始階段的出口水分,各時間區(qū)間的平均均方誤差分別為0.038856522、0.014021483、0.009612475、0.003166596、0.001343053。和沒有將出口水分作為模型輸入相比,各個階段的誤差分別減少20%、51%、46%、66%、64%,預測準確率明顯提升。但3-6分鐘階段提升相對較少,這可能是由于這個階段烘絲筒出絲不穩(wěn)定,出口水分儀讀數受隨機因素影響大,無法完全反應設備的狀態(tài)。
干頭的“烘絲筒從完全空閑到被煙絲完全充滿”階段和“煙絲充滿烘絲筒但烘絲筒內環(huán)境還未穩(wěn)定”階段,烘絲參數和出口水分的關系隨著時間的變化而變化,線性模型并不適合。但在“烘絲筒內環(huán)境基本穩(wěn)定”的階段(既“8-15分鐘”的時間段),烘絲參數和出口水分的關系基本固定,而且烘絲參數變化幅度很小,線性模型應該也能比較好的預測未來的出口水分。
(1)將清洗后數據每個維度的過去10分鐘每隔6秒的數據均作為一個維度構造出一份新的數據。
(2)分別以未來5分鐘內每隔6秒的出口水分作為模型的輸出數據。
(3)為得到烘絲工藝參數對各時間點的出口水分影響系數,不對輸入數據進行降維。為防止過擬合,使用lasso回歸而非線性回歸。
(4)使用sklearn.linear_model.Lass類庫實現模型。
(5)以起始階段為粒度,將2017年1月~2020年7月的數據拆分為5份,作KFold交叉驗證。
(6)經試驗使用alpha=0.0001的參數進行訓練可以得到較好的效果。
(7)使用模型預測2020年8月的烘絲起始階段的出口水分,各時間區(qū)間的平均均方誤差分別為0.001910523、0.0009311。
在“烘絲筒內環(huán)境基本穩(wěn)定”的階段,lasso回歸可以得到甚至比gbdt稍好的預測準確度。根據訓練好的線性模型可以計算出烘絲參數對未來各個時刻的出口水分的影響系數。調節(jié)筒壁溫度是操作工最常調節(jié)的烘絲參數,計算出烘絲參數對出口水分的影響系數,可為操作工調節(jié)烘絲參數提供參考。但以下因素可能導致模型的筒壁溫度對未來出口水分的影響系數不準確:
(1)由于每個干頭用戶調節(jié)筒壁溫度的次數只有一到兩次,模型對筒壁溫度對未來出口水分的影響的學習可能并不充分。
(2)預測t+n時刻的筒壁溫度的模型沒有使用t+1~t+n-1時刻的筒壁溫度作為輸入數據,但t+n時刻的筒壁溫度顯然會受它們的影響,由于干頭階段的筒壁溫度變化次數很少,所以t+1~t+n-1時刻的筒壁溫度很大概率上和t時刻的筒壁溫度相同,所以模型會把t+1~t+n-1時刻筒壁溫度的影響系數疊加到t時刻的影響系數上導致其系數明顯偏小,而且n越大偏小的程度越大。
(3)烘絲筒筒壁溫度和之后的煙絲出口水分實際上是負相關關系,在干頭階段一個操作工根據自己的經驗預測到一分鐘后出口水分會偏高時,他會將筒壁溫度調高以降低未來的出口水分,那么從數據上看此時的筒壁溫度和一分鐘后的出料水分會具有正相關關系(筒壁溫度偏高出料水分也偏高)。如果此操作工一直進行這樣的操作,那么直接使用歷史數據訓練模型將無法得到筒壁溫度和未來出口水分的正確關系。
為了消除因素2的影響,本文舍棄了每個模型中最后一個時間點上的筒壁溫度的未來出口水分的影響系數。為了減少因素1、3的影響,本文通過不同模型中筒壁溫度對相同時間間隔后的出口水分的影響系數的平均值來減少誤差。最終得到如下圖所示的筒壁溫度對未來各個時刻的出口水分影響系數(如圖2)。

圖2 筒壁溫度對未來各個時刻的出口水分影響系數
筒壁溫度的影響系數先逐漸變大而后逐漸變小,對8分鐘后基本減少為0,且筒壁溫度調高1℃并持續(xù)保持不變最終出口水分將會下降0.2%,這和用戶的經驗基本符合。但由于上面所述的因素1和因素3的影響無法完全消除,上述結論需要在以后的實際生產中做進一步的修正。
建立如下的長短期記憶神經網絡:
(1)輸入的形狀為batch_size *time_step* embedding_size。為提高訓練速度,本文在GPU顯存允許的情況盡量增大訓練批次數量,取batch_size=1000。對于預測m至n分鐘時間段起始出口水分的模型,需要將m分鐘之前10分鐘的數據也輸入模型,而處理后的數據中每行數據的時間間隔為6秒,所以網絡的time_step=(n-m+10)×10。模型使用包括出口水分在內的所有工藝參數作為輸入,所以模型輸入層的embedding_size=31。
(2)模型需預測未來5分鐘內每隔6秒的出口水分,所以其輸出形狀為batch_size*time_step*50。
(3)模型隱藏層包括:節(jié)點數為[128,128]的2個加入了dropout的LSTM層、1個形狀為128×50的全連接層、一個形狀為time_step*50的截距層。
(4)為了和GBDT算法做對比,預測m~n分鐘時間段起始出口水分的模型以m~n分鐘時間段預測值和實際值的均方誤差為損失函數。
(5)使用tensorflow實現模型,并進行訓練。
(6)經試驗使用RMSPropOptimizer優(yōu)化器,取learning_rate=0.001,經40000輪訓練可以得到較理想的訓練結果。
(7)在p100顯卡上訓練所有時間段模型平均大約需要196小時。
(8)使用模型預測2020年8月的的烘絲起始階段的出口水分,各時間區(qū)間的平均均方誤差分別為0.04288、0.012926、0.009202、0.002683、0.001145。
GBDT和lasso回歸的預測精度已經可以滿足現階段卷煙廠的需求,而LSTM的精度雖然更高但訓練所需的時間太長而且對訓練參數敏感,當烘絲筒設備狀態(tài)或生產環(huán)境發(fā)生改變需要重新訓練模型時,使用GBDT和lasso算法可以更快速的進行應對。
本文使用機器學習的方法,建立了可以準確的預測烘絲干頭出口水分的模型,并計算出了烘絲參數對出口水分的影響系數,可為操作工調節(jié)烘絲參數提供參考,提高烘絲的質量和生產效率,并為實現烘絲干頭階段的自動化控制打下基礎。