曾小紅
(江西省化學(xué)工業(yè)設(shè)計院,江西 南昌 330003)
?
人工神經(jīng)網(wǎng)絡(luò)法在相平衡計算中的應(yīng)用
曾小紅
(江西省化學(xué)工業(yè)設(shè)計院,江西 南昌 330003)
選用101.3kPa下的甲基二氯硅烷(1)+甲苯(2)二元體系為研究對象,用人工神經(jīng)網(wǎng)絡(luò)法來進(jìn)行泡點計算。將人工神經(jīng)網(wǎng)絡(luò)法計算的泡點與實驗測得的泡點作了比較,得出的平均絕對偏差與文獻(xiàn)值比較,擬合精度更好,關(guān)聯(lián)結(jié)果令人滿意。
甲基二氯硅烷 甲苯 汽液平衡(VLE) 人工神經(jīng)網(wǎng)絡(luò)(ANN)
近年來,國內(nèi)外一些研究人員開始嘗試使用ANN來研究VLE。曾綺微等[1]建立了二元體系汽液平衡數(shù)據(jù)的人工神經(jīng)網(wǎng)絡(luò)預(yù)測模型,并以預(yù)測結(jié)果同實驗結(jié)果比較,精度較高。屈強等[2]用BP神經(jīng)網(wǎng)絡(luò)預(yù)測汽液平衡常數(shù)預(yù)測。郭寧等[3]應(yīng)用BP神經(jīng)網(wǎng)絡(luò)成功的關(guān)聯(lián)和預(yù)測了乙醇一環(huán)己烷一水體系汽液平衡,而且其預(yù)測精度優(yōu)于NRTL方程。陳維苗等[4]運用人工神經(jīng)網(wǎng)絡(luò),對32個醇水鹽體系的汽液平衡數(shù)據(jù)進(jìn)行了關(guān)聯(lián),計算值與實驗值符合良好,泡點溫度和汽相組成的平均偏差分別是0.93K和0.015。對未列入該模型的體系的汽液平衡進(jìn)行了預(yù)測,也取得了較好的結(jié)果。
本文選用101.325kPa下的甲基二氯硅烷(1)+甲苯(2)[5]二元體系為研究對象,用人工神經(jīng)網(wǎng)絡(luò)法來進(jìn)行泡點計算。
人工神經(jīng)網(wǎng)絡(luò)[6](Artificial Neural Network,簡稱ANN)是人腦的一種仿生模型,是由大量的簡單處理單元(或稱神經(jīng)元)廣泛連接而形成的復(fù)雜網(wǎng)絡(luò)系統(tǒng),按照某種拓?fù)浣Y(jié)構(gòu)相連接的神經(jīng)模型構(gòu)成。作為一種新型的黑箱方法,是近年來迅速發(fā)展起來的研究熱點。ANN處理問題時不需要了解輸入輸出之間的相互關(guān)系,其自學(xué)習(xí)功能能夠“記憶”樣本所含的信息,網(wǎng)絡(luò)根據(jù)訓(xùn)練樣本的數(shù)據(jù)來自動尋找相互關(guān)系,給所研究的系統(tǒng)以具體的數(shù)學(xué)表達(dá),從而使系統(tǒng)的定量、預(yù)測及優(yōu)化成為可能。
自1988年由Hoskins和Himmelblau將ANN應(yīng)用于化學(xué)工程中的故障診斷以來,有關(guān)ANN在化學(xué)工程中應(yīng)用的發(fā)展很快。目前,ANN在化學(xué)工程中的應(yīng)用領(lǐng)域主要有化工過程控制[7]、故障檢測[8]、過程模擬[9,10]和過程優(yōu)化[11,12]等。目前,在實際應(yīng)用中使用最多的是BP神經(jīng)網(wǎng)絡(luò)。
2.BP神經(jīng)網(wǎng)絡(luò)
BP(Back Propagation)網(wǎng)絡(luò)是1986年由Rumelhart和McCelland為首的科學(xué)家小組提出,是一種按誤差逆?zhèn)鞑ニ惴ㄓ?xùn)練的多層前饋網(wǎng)絡(luò),是目前應(yīng)用最廣泛的神經(jīng)網(wǎng)絡(luò)模型之一。BP網(wǎng)絡(luò)能學(xué)習(xí)和存貯大量的輸入-輸出模式映射關(guān)系,而無需事前揭示描述這種映射關(guān)系的數(shù)學(xué)方程。它的學(xué)習(xí)規(guī)則是使用最速下降法,通過反向傳播來不斷調(diào)整網(wǎng)絡(luò)的權(quán)值和閾值,使網(wǎng)絡(luò)的誤差平方和最小。BP神經(jīng)網(wǎng)絡(luò)模型拓?fù)浣Y(jié)構(gòu)包括輸入層(input layer)、隱層(hide layer)和輸出層(output layer)(如圖1.1所示)。
圖1.1 BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)示意圖
傳遞函數(shù)一般為(0,1)S型變換函數(shù):
(1.1)
輸出層的神經(jīng)元采用純線形變換函數(shù),誤差函數(shù)用式1.2表示(對第P個樣本):
(1.2)
式中:tpi,Opi分別為期望輸出和網(wǎng)絡(luò)的計算輸出。
BP網(wǎng)絡(luò)的學(xué)習(xí),由四個過程組成:輸入模式由輸入層經(jīng)隱層向輸出層的“模式順傳播”過程,網(wǎng)絡(luò)的希望輸出與網(wǎng)絡(luò)實際輸出之差的誤差信號由輸出層經(jīng)隱層向輸入層逐層修正連接權(quán)的“誤差逆?zhèn)鞑ァ边^程:由“模式順傳播”與“誤差逆?zhèn)鞑ァ钡姆磸?fù)交替進(jìn)行的網(wǎng)絡(luò)“記憶訓(xùn)練”過程。從BP網(wǎng)絡(luò)的學(xué)習(xí)過程可知,該算法為有教師學(xué)習(xí)算法,其學(xué)習(xí)過程可分為正向傳播和反向傳播兩部分。在正向傳播過程中,輸入信息從輸入層經(jīng)隱層計算每一層的神經(jīng)元輸出并傳向輸出層,每一層神經(jīng)元狀態(tài)只影響下一層神經(jīng)元的狀態(tài)。如果輸出值與目標(biāo)的誤差不符合要求,則計算出輸出層的誤差變化值,然后反向傳播。通過網(wǎng)絡(luò)將誤差信號沿原來的傳播途徑反傳回去,并修改各層神經(jīng)元的權(quán)值和閾值,如此循環(huán),直到達(dá)到期望輸出值。BP網(wǎng)絡(luò)的算法步驟可描述如下[13]:
第一步:采用隨機函數(shù)對權(quán)值進(jìn)行初始化;
第二步:輸入訓(xùn)練集數(shù)據(jù);
第三步:以初始的權(quán)值代入,計算實際輸出;
第四步:從輸出層開始,將誤差信號沿連接通路反向傳播,通過修正各個權(quán)值,使誤差最小。
當(dāng)所有樣本輸出值與目標(biāo)期望值之間的均方差滿足要求時,停止迭代,網(wǎng)絡(luò)訓(xùn)練完畢,各節(jié)點的連接權(quán)值就固定下來,同時也就得到了所研究對象的輸入輸出之間的拓?fù)潢P(guān)系,即建立了輸入向量與輸出向量之間的數(shù)學(xué)定量關(guān)系。
具體步驟如圖:
圖 BP網(wǎng)絡(luò)的算法步驟
MATLAB的NNbox提供了建立神經(jīng)網(wǎng)絡(luò)的專用函數(shù)newff()。用newff函數(shù)來確定網(wǎng)絡(luò)層數(shù)、每層中的神經(jīng)元數(shù)和傳遞函數(shù),其語法為:
net=newff(PR,[S1,S2,…,SN],{TF1,TF2,…,TFN},BTF,BLF,PF)
(1.3)
式中:PR表示由每個輸入向量的最大最小值構(gòu)成的Rx2矩陣;
Si表示第i層網(wǎng)絡(luò)的神經(jīng)元個數(shù);
TFi表示第i層網(wǎng)絡(luò)的傳遞函數(shù),缺省為tansig,可選用的傳遞函數(shù)有tansig,logsig或purelin;
BT表示字符串變量,為網(wǎng)絡(luò)的訓(xùn)練函數(shù)名,可在如下函數(shù)中選擇:traingd、traingdm、traingdx、trainbfg、trainlm等,缺省為trainlm;
BLF表示字符串變量,為網(wǎng)絡(luò)的學(xué)習(xí)函數(shù)名,缺省為learngdm;
BF表示字符串變量,為網(wǎng)絡(luò)的性能函數(shù),缺省為均方差‘mse’。
newff在確定網(wǎng)絡(luò)結(jié)構(gòu)后會自動調(diào)用init函數(shù)用缺省參數(shù)來初始化網(wǎng)絡(luò)中各個權(quán)重和閾值,產(chǎn)生一個可訓(xùn)練的前饋網(wǎng)絡(luò),即該函數(shù)的返回值為net。
下面針對以上各參數(shù)的確定作簡要介紹。
(1)網(wǎng)絡(luò)隱含層數(shù)的選取
理論上早已證明:具有偏差和至少一個S型隱含層加上一個線性輸出層的網(wǎng)絡(luò),能夠逼近任何有理函數(shù)。增加層數(shù)主要可以進(jìn)一步降低誤差,提高精度,但同時也使網(wǎng)絡(luò)復(fù)雜化,從而增加了網(wǎng)絡(luò)權(quán)值的訓(xùn)練時間。而誤差精度的提高實際上也可以通過增加隱含層中的神經(jīng)元數(shù)目來獲得,其訓(xùn)練效果也比增加層數(shù)更容易觀察和調(diào)整,所以一般情況下,應(yīng)優(yōu)先考慮增加隱含層中的神經(jīng)元數(shù)。因此我們從含有一個隱層的網(wǎng)絡(luò)開始進(jìn)行訓(xùn)練。
(2)輸入層和輸出層的設(shè)計
一般地,BP網(wǎng)絡(luò)的輸入變量即為待分析系統(tǒng)的內(nèi)生變量(影響因子或自變量)數(shù),一般根據(jù)專業(yè)知識確定。若輸入變量較多,一般可通過主成份分析方法壓減輸入變量,也可根據(jù)剔除某一變量引起的系統(tǒng)誤差與原系統(tǒng)誤差的比值的大小來壓減輸入變量。輸出變量即為系統(tǒng)待分析的外生變量(系統(tǒng)性能指標(biāo)或因變量),可以是一個,也可以是多個。一般將一個具有多個輸出的網(wǎng)絡(luò)模型轉(zhuǎn)化為多個具有一個輸出的網(wǎng)絡(luò)模型效果會更好,訓(xùn)練也更方便。
由于BP神經(jīng)網(wǎng)絡(luò)的隱層一般采用Sigmoid轉(zhuǎn)換函數(shù),為提高訓(xùn)練速度和靈敏性以及有效避開Sigmoid函數(shù)的飽和區(qū),一般要求輸入數(shù)據(jù)的值在0~1之間。因此,要對輸入數(shù)據(jù)進(jìn)行預(yù)處理。一般要求對不同變量分別進(jìn)行預(yù)處理,也可以對類似性質(zhì)的變量進(jìn)行統(tǒng)一的預(yù)處理。如果輸出層節(jié)點也采用Sigmoid轉(zhuǎn)換函數(shù),輸出變量也必須作相應(yīng)的預(yù)處理,否則,輸出變量也可以不做預(yù)處理。
預(yù)處理的方法有多種多樣,各文獻(xiàn)采用的公式也不盡相同。但必須注意的是,預(yù)處理的數(shù)據(jù)訓(xùn)練完成后,網(wǎng)絡(luò)輸出的結(jié)果要進(jìn)行反變換才能得到實際值。再者,為保證建立的模型具有一定的外推能力,最好使數(shù)據(jù)預(yù)處理后的值在0.2~0.8之間。
(3)網(wǎng)絡(luò)隱含層的節(jié)點選擇
網(wǎng)絡(luò)訓(xùn)練精度的提高,可以通過采用一個隱含層,而增加其神經(jīng)元個數(shù)的方法來獲得,這在結(jié)構(gòu)實現(xiàn)上,要比增加更多的隱含層簡單得多。那么究竟選取多少個隱含節(jié)點才合適?這在理論上并沒有一個明確的規(guī)定。神經(jīng)元的個數(shù)增多,其訓(xùn)練的過程越復(fù)雜,訓(xùn)練結(jié)果越接近期望值。但是神經(jīng)元個數(shù)的選取并不是越大越好,如果神經(jīng)元數(shù)目過大,將會導(dǎo)致訓(xùn)練網(wǎng)絡(luò)過于復(fù)雜,訓(xùn)練時間也將增加。而且較大的神經(jīng)元數(shù)目并不能保證訓(xùn)練結(jié)果達(dá)到期望值,因此合理選擇隱層節(jié)點數(shù)非常重要。關(guān)于隱層數(shù)及其節(jié)點數(shù)的選擇比較復(fù)雜,一般原則是:在能正確反映輸入輸出關(guān)系的基礎(chǔ)上,應(yīng)選用較少的隱層節(jié)點數(shù),以使網(wǎng)絡(luò)結(jié)構(gòu)盡量簡單。
隱層節(jié)點數(shù)的初始值可先由以下兩個公式中的其中之一來確定[14,15]。
(1.4)
(1.5)
式中:m、n分別為輸入結(jié)點數(shù)目與輸出結(jié)點數(shù)目,a為1~10之間的常數(shù)。
隱層結(jié)點數(shù)可根據(jù)式(1.4)或(1.5)得出一個初始值,然后利用逐步增長(先從一個較簡單的網(wǎng)絡(luò)開始,若不符合要求則逐步增加隱層單元數(shù)到合適為止)或逐步修剪(從一個較復(fù)雜的網(wǎng)絡(luò)開始逐步刪除隱層單元)法。在具體設(shè)計時,比較實際的做法是通過對不同神經(jīng)元數(shù)進(jìn)行訓(xùn)練比較對比,然后適當(dāng)?shù)丶由弦稽c余量。
(4)網(wǎng)絡(luò)初始權(quán)值和閾值的選取
在訓(xùn)練前饋神經(jīng)網(wǎng)絡(luò)之前,我們必須設(shè)置權(quán)值和閾值的初始值。當(dāng)我們使用函數(shù)newff創(chuàng)建前饋神經(jīng)網(wǎng)絡(luò)后,網(wǎng)絡(luò)會自動的初始化權(quán)值和閾值,缺省值是0。如果要設(shè)置這些初始值,可以使用函數(shù)init(),命令格式為:
net=init(net)
(1.6)
函數(shù)init()會自動根據(jù)網(wǎng)絡(luò)的初始化函數(shù)以及它的參數(shù)值來設(shè)置網(wǎng)絡(luò)權(quán)值和閾值的初始值,他們分別由參數(shù)net.initFcn和net.initParam表示。對BP神經(jīng)網(wǎng)絡(luò)來說,參數(shù)nit.initFcn的值是initwb,它使網(wǎng)絡(luò)的初始化采用了Nguyen-Widrow算法。
(5)網(wǎng)絡(luò)傳遞函數(shù)的選擇
BP網(wǎng)絡(luò)的傳遞函數(shù)有多種。Log-sigmoid型函數(shù)的輸入值可取任意值,輸出值在0和1之間;tan-sigmod型傳遞函數(shù)tansig的輸入值可取任意值,輸出值在-1到+1之間;線性傳遞函數(shù)purelin的輸入與輸出值可取任意值。BP網(wǎng)絡(luò)通常有一個或多個隱層,該層中的神經(jīng)元均采用sigmoid型傳遞函數(shù),輸出層的神經(jīng)元則采用線性傳遞函數(shù),整個網(wǎng)絡(luò)的輸出可以取任意值。只改變傳遞函數(shù)而其余參數(shù)均固定,訓(xùn)練BP網(wǎng)絡(luò)時發(fā)現(xiàn),傳遞函數(shù)使用tansig函數(shù)時要比logsig函數(shù)的誤差小。于是在以后的訓(xùn)練中隱層傳遞函數(shù)改用tansig函數(shù),輸出層傳遞函數(shù)仍選用purelin函數(shù)。
(6)網(wǎng)絡(luò)期望誤差的選取
在設(shè)計網(wǎng)絡(luò)的訓(xùn)練過程中,期望誤差值也應(yīng)當(dāng)通過對比訓(xùn)練后確定一個合適的值,這個所謂的“合適”,是相對于所需要的隱含層的節(jié)點數(shù)來確定,因為較小的期望誤差值是要靠增加隱含層的節(jié)點,以及訓(xùn)練時間來獲得的。一般情況下,作為對比,可以同時對兩個不同期望誤差值的網(wǎng)絡(luò)進(jìn)行訓(xùn)練,最后通過綜合因素的考慮來確定采用其中一個網(wǎng)絡(luò)。結(jié)合前人研究經(jīng)驗,本文設(shè)期望誤差為2000。
5.1 純物質(zhì)的Antoine常數(shù)及臨界性質(zhì)
從文獻(xiàn)中查得的Antoine參數(shù)及臨界參數(shù)示于表5-1。
表5-1 試劑Antoine方程參數(shù)及臨界參數(shù):lg(P/KPa)=A-B/[(T/K)+C]
5.3 模型誤差比較
表5-2 各種模型計算二元體系VLE的誤差
注:dT=∑|Texp-Tmod|/N,dy=∑|yexp-ymod|/N,N=number of data points. *文獻(xiàn)未提供最大絕對偏差值。
5.4 二元體系的VLE數(shù)據(jù)
BP網(wǎng)絡(luò)模型計算二元系的汽液平衡數(shù)據(jù)關(guān)聯(lián)的結(jié)果示于附表5-1,從表5-2中可看出,BP網(wǎng)絡(luò)模型的平均絕對偏差小于文獻(xiàn)計算的結(jié)果。
[1]曾綺微,曾穎.用人工神經(jīng)網(wǎng)絡(luò)預(yù)測二元氣液平衡數(shù)據(jù)[J].福建化工,2001,4:30-31.
[2]屈強,羅金生,于廣鎖.人工神經(jīng)網(wǎng)絡(luò)在汽液相平衡常數(shù)預(yù)測中的應(yīng)用[J].計算機與應(yīng)用化學(xué)[J].18(4):383-387.
[3]郭寧,崔志芹,云志,等.BP神經(jīng)網(wǎng)絡(luò)計算乙醇一環(huán)己烷一水體系汽一液平衡[J].南京工業(yè)大學(xué)學(xué)報,2002,24(4):91-93.
[4]陳維苗,張雅明.神經(jīng)網(wǎng)絡(luò)技術(shù)用于醉水鹽體系汽液平衡關(guān)聯(lián)和預(yù)測[J].南京化工大學(xué)學(xué)報,2001,23(6):67-70.
[5]Yu SX,Yu ZB,Qiu ZM,et al.Isobaric Vapor—liquid Equilibrium for Methyldichlorosilane-methylVinyldichlorosilane-toluene and Constituent Binary Systems[J].Chinese Journal of Chemical and Engineering,2003,11(2):213-216.
[6]李孝安,張曉績.神經(jīng)網(wǎng)絡(luò)與神經(jīng)計算導(dǎo)論[M].西安:西北工業(yè)大學(xué)出版社,1994:34-362.
[7]Cooper D J,Hinde R F,Megan L A.Performance feed-back neural network for pattern-based adaptive process control[J].AIChE Annual Meeting,Chicagoll,1990.
[8]王志奎.人工神經(jīng)網(wǎng)絡(luò)在化學(xué)工程中的應(yīng)用[J].現(xiàn)代化工,1996,9(1):17-21.
[9]銀建中,修志龍,畢明樹,等.人工神經(jīng)網(wǎng)絡(luò)方法用于超臨界流體萃取模擬[J].高?;瘜W(xué)工程學(xué)報,2002,16(6):691-695.
[10]潘海天,陳焰華,李伯耿,等.苯乙烯一馬來酸配本體共聚合過程的神經(jīng)網(wǎng)絡(luò)建模[J].高?;瘜W(xué)工程學(xué)報,2003,17(2):195-200.
[11]張勤鑫,江涓,吳肖群,等.人工神經(jīng)網(wǎng)絡(luò)輔助丙烷氨氧化工藝條件優(yōu)化設(shè)計[J].化學(xué)反應(yīng)工程與工藝,1999,15(3):282-287.
[12]周申范,黃俊.BP神經(jīng)網(wǎng)絡(luò)及其在化工優(yōu)化中的應(yīng)用[J].江蘇化工,2000,28(4):27-28.
[13]陳磊.人工神經(jīng)網(wǎng)絡(luò)在模式識別中的應(yīng)用基礎(chǔ)[D],東北大學(xué)碩士學(xué)位論文,2002,8-10.
[14]徐廬生.微機神經(jīng)網(wǎng)絡(luò)[M].北京:中國醫(yī)藥科技出版社,1995.
[15]高大啟.有教師的線性基本函數(shù)前向三層神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)研究[J].計算機學(xué)報,1998,21(1):80-85.
[16]謝心亮.多元鹵代硅烷體系的汽液相平衡研究[D].南昌大學(xué),2005.
Application ofartificial neural network in Calculating Equilibrium
ZENG Xiao-hong
(JiangxiChemicalIndustryDesignInstitute,JiangxiNanchang330003)
Choosing binary system:at 101.325kPa,Dichloromethylsilane + methylbenzene,as the study object,artificial neural network(ANN)was used to calculate bubble-point temperature and vapor composition.The mean absolute error(MAE)of artificial neural network(ANN)are less than the literature.
Dichloromethylsilane methylbenzene;vapor-liquid equilibrium(VLE);artificial neural network(ANN)