摘 要:針對(duì)符號(hào)回歸中遺傳編程方法在表達(dá)式空間中隨機(jī)搜索缺乏方向性,以及種群進(jìn)化過程中未利用數(shù)據(jù)特征導(dǎo)致效率低下的問題,提出了一種稱作神經(jīng)網(wǎng)絡(luò)算子的新穎變異算子。該算子通過遞歸神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)給定數(shù)據(jù)集特征,優(yōu)化種群中的表達(dá)式,使種群向誤差更低的方向進(jìn)化,提升種群的進(jìn)化效率。實(shí)驗(yàn)結(jié)果表明,結(jié)合神經(jīng)網(wǎng)絡(luò)算子的遺傳編程方法在公式恢復(fù)率和種群進(jìn)化速度上均優(yōu)于原始方法,并在宏觀經(jīng)濟(jì)數(shù)據(jù)集上取得了較高的決定系數(shù)。結(jié)論證明,神經(jīng)網(wǎng)絡(luò)算子能夠有效引導(dǎo)遺傳編程種群進(jìn)行特征導(dǎo)向搜索,顯著提升進(jìn)化效率,具有實(shí)際應(yīng)用潛力。
關(guān)鍵詞:符號(hào)回歸;遺傳編程;變異算子;種群進(jìn)化
中圖分類號(hào):TP399"" 文獻(xiàn)標(biāo)志碼:A
文章編號(hào):1001-3695(2025)04-026-1158-09
doi: 10.19734/j.issn.1001-3695.2024.09.0337
Neural network operator—novel genetic programming approach for symbolic regression
Chen Boa, Dang Longzhenga, Chen Guohongb
(a.College of Computer amp; Data Science, b. School of Economics amp; Management, Fuzhou University, Fuzhou 350108, China)
Abstract:Genetic programming methods in symbolic regression suffer from a lack of direction in random search within expression space and inefficiency due to not utilizing data features during population evolution. This paper proposed a novel mutation operator called the neural network operator to address these problems. This operator used recurrent neural networks to learn features of a given dataset, optimized expressions in the population, guided the population to evolve towards lower error, and improved evolutionary efficiency. Experimental results show that the genetic programming method combined with the neural network operator outperforms the original method in both formula recovery rate and population evolution speed, and achieves a high coefficient of determination on macroeconomic datasets. The conclusion demonstrates that the neural network operator can effectively guide the genetic programming population to perform feature-oriented search, significantly improve evolutionary efficiency, and have potential for practical applications.
Key words:symbolic regression;genetic programming;mutation operator;population evolution
0 引言
隨著當(dāng)今科學(xué)研究中大量數(shù)據(jù)的產(chǎn)生,數(shù)據(jù)科學(xué)逐漸興起。作為數(shù)據(jù)科學(xué)的重要組成部分,數(shù)據(jù)驅(qū)動(dòng)建?;谟^測(cè)數(shù)據(jù),通過統(tǒng)計(jì)學(xué)和機(jī)器學(xué)習(xí)技術(shù)構(gòu)建描述各個(gè)數(shù)據(jù)變量之間關(guān)系的數(shù)學(xué)模型[1]。由于數(shù)據(jù)驅(qū)動(dòng)建模不依賴于對(duì)系統(tǒng)內(nèi)部機(jī)理的詳細(xì)了解,所以特別適用于處理復(fù)雜的非線性系統(tǒng)。
數(shù)據(jù)驅(qū)動(dòng)建模的常見方法包括傳統(tǒng)回歸分析、支持向量機(jī)和符號(hào)回歸等[2,3]。在這些方法中,符號(hào)回歸因其能夠自動(dòng)發(fā)現(xiàn)最佳數(shù)學(xué)表達(dá)式,受到廣泛關(guān)注。符號(hào)回歸輸入通常是一個(gè)數(shù)據(jù)集〈X,y〉,其中X是一個(gè)n×m的矩陣,表示n個(gè)數(shù)據(jù)點(diǎn),每個(gè)數(shù)據(jù)點(diǎn)由m個(gè)變量組成。對(duì)應(yīng)的y是一個(gè)長(zhǎng)度為n的輸出向量,每個(gè)值與X中的一個(gè)數(shù)據(jù)點(diǎn)相對(duì)應(yīng)。符號(hào)回歸的輸出是一個(gè)數(shù)學(xué)表達(dá)式ΦX,該表達(dá)式包括數(shù)學(xué)運(yùn)算符(如+、-、*、/、sin、exp等)、變量或常量(如x、z、3.14等)。符號(hào)回歸的目標(biāo)是最小化誤差函數(shù)E(Φ(X),y),使數(shù)學(xué)表達(dá)式Φ(X)盡可能準(zhǔn)確擬合數(shù)據(jù)集〈X,y〉[4]。不同的算法可能使用不同形式的誤差函數(shù)來(lái)衡量擬合的精度。
不同于傳統(tǒng)的回歸方法預(yù)先確定函數(shù)的自變量組合,再調(diào)整自變量系數(shù)實(shí)現(xiàn)數(shù)據(jù)擬合,符號(hào)回歸方法在構(gòu)建表達(dá)式時(shí)同時(shí)搜索系數(shù)和自變量組合,自動(dòng)發(fā)現(xiàn)擬合數(shù)據(jù)的最佳數(shù)學(xué)表達(dá)式[5]。符號(hào)回歸不依賴于特定的模型假設(shè),能夠探索并揭示出傳統(tǒng)回歸方法可能忽略的新數(shù)據(jù)關(guān)系和模式,這使得符號(hào)回歸在發(fā)現(xiàn)數(shù)學(xué)規(guī)律或解釋復(fù)雜數(shù)據(jù)現(xiàn)象方面具有顯著優(yōu)勢(shì)。此外,符號(hào)回歸的另一個(gè)重要特點(diǎn)在于其生成數(shù)學(xué)表達(dá)式的可解釋性[6]。與此相反,基于神經(jīng)網(wǎng)絡(luò)的建模方法,盡管在數(shù)據(jù)預(yù)測(cè)精度上表現(xiàn)優(yōu)異,但由于其內(nèi)部結(jié)構(gòu)復(fù)雜,通常被認(rèn)為是“黑箱”模型,難以解釋和理解。相反,符號(hào)回歸生成的是顯式的數(shù)學(xué)表達(dá)式,特別適用于需要數(shù)學(xué)公式解釋性的領(lǐng)域,如物理[7]、金融[8]、化學(xué)和材料[9]建模等。
符號(hào)回歸的主流實(shí)現(xiàn)途徑包括遺傳編程(genetic programming,GP)和深度學(xué)習(xí)兩類。在遺傳編程方面,1992年,Koza[10]提出了遺傳編程算法,該方法可以直接在語(yǔ)法樹上進(jìn)行遺傳操作,具有算法精度高、不需要具備先驗(yàn)知識(shí)和模型可解釋性的特點(diǎn)。2009年,康奈爾大學(xué)人工智能實(shí)驗(yàn)室基于進(jìn)化算法發(fā)明了符號(hào)回歸軟件Eureqa[11]。2011年McConaghy[12]采用非進(jìn)化算法,通過枚舉生成大量基函數(shù),并使用路徑正則化學(xué)習(xí)為基函數(shù)找到系數(shù)值,該方法速度快,但生成的方程有時(shí)難以解釋。在深度學(xué)習(xí)方面,2016年Martius等人[4]開創(chuàng)性地在符號(hào)回歸中采用了淺層全連接神經(jīng)網(wǎng)絡(luò),并將傳統(tǒng)的激活函數(shù)替換為乘法、正弦和余弦函數(shù),這種網(wǎng)絡(luò)能夠在訓(xùn)練后表示和捕捉給定數(shù)據(jù)集中的符號(hào)方程。2020年Udrescu等人[13]提出了AI Feynman,利用物理函數(shù)常表現(xiàn)出的對(duì)稱性、可分離性和組合性等特點(diǎn),遞歸地將復(fù)雜函數(shù)分解為更簡(jiǎn)單、變量更少的形式,并運(yùn)用神經(jīng)網(wǎng)絡(luò)提高函數(shù)識(shí)別的準(zhǔn)確性。他們的研究成功解析了費(fèi)曼物理講座中的一百個(gè)物理方程。2023年Tenachi等人[7]通過引入物理單位約束,限制了物理公式的搜索空間,提升了神經(jīng)網(wǎng)絡(luò)構(gòu)建符號(hào)表達(dá)式的效率。
雖然深度學(xué)習(xí)方法能夠利用數(shù)據(jù)特征指導(dǎo)參數(shù)搜索和優(yōu)化,快速恢復(fù)一些正確的數(shù)學(xué)表達(dá)式,但其結(jié)果通常受到預(yù)定義模型和訓(xùn)練數(shù)據(jù)集的影響,限制了在未知領(lǐng)域或復(fù)雜數(shù)據(jù)集中的適用性。相較之下,遺傳編程在數(shù)學(xué)表達(dá)式空間中隨機(jī)搜索尋找適合數(shù)據(jù)集的表達(dá)式,其憑借廣泛的適用性和在數(shù)學(xué)表達(dá)式空間中搜索的靈活性,仍然是解決符號(hào)回歸問題更優(yōu)的選擇。然而,傳統(tǒng)的遺傳編程方法在表達(dá)式空間中進(jìn)行隨機(jī)搜索,缺乏對(duì)數(shù)據(jù)特征的有效利用,導(dǎo)致搜索效率低下,容易陷入局部最優(yōu)解。
為了解決上述問題,研究者們嘗試將遺傳編程與深度學(xué)習(xí)相結(jié)合。2020年Cranmer等人[14]在監(jiān)督學(xué)習(xí)下訓(xùn)練一個(gè)圖神經(jīng)網(wǎng)絡(luò)表示給定數(shù)據(jù)集的稀疏潛在特征,并利用遺傳編程借用特征訓(xùn)練生成符號(hào)表達(dá)式,使用圖神經(jīng)網(wǎng)絡(luò)提取稀疏特征,但其方法主要影響初始種群。隨后在2021年,Mundhenk等人[15]提出了一種神經(jīng)引導(dǎo)組件,可以初始化隨機(jī)重啟遺傳編程組件的起始種群,通過逐步優(yōu)化初始種群,取得了良好的效果。同年,Xing等人[16]利用計(jì)算機(jī)視覺領(lǐng)域知識(shí),設(shè)計(jì)了一種基于超分辨率ResNet的編碼器-解碼器神經(jīng)網(wǎng)絡(luò)來(lái)預(yù)測(cè)給定數(shù)據(jù)中每個(gè)數(shù)學(xué)算子的相對(duì)重要性,依靠重要性指導(dǎo)遺傳編程的搜索方向。盡管這些方法在一定程度上提升了遺傳編程的搜索效率,但仍然面臨數(shù)據(jù)特征利用不充分的問題。
為此,本文創(chuàng)新性地提出了一種基于遞歸神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN)的變異算子,直接嵌入遺傳編程的進(jìn)化過程。不同于以往僅在初始種群或搜索方向上引入神經(jīng)網(wǎng)絡(luò)的方法,該變異算子在種群進(jìn)化的每一代中,根據(jù)數(shù)據(jù)特征動(dòng)態(tài)地重構(gòu)個(gè)體表達(dá)式,持續(xù)引導(dǎo)種群向誤差更低的方向進(jìn)化,能夠有效利用數(shù)據(jù)特征,提高搜索效率,避免過早收斂到局部最優(yōu)解。該變異算子被命名為神經(jīng)網(wǎng)絡(luò)算子,可以與多種基于遺傳編程的符號(hào)回歸方法相結(jié)合,提升算法的性能。
1 遺傳編程方法
1.1 Gplearn方法
在符號(hào)回歸問題中,遺傳編程算法通過選擇算子、交叉算子和變異算子模擬自然進(jìn)化過程,迭代優(yōu)化數(shù)學(xué)表達(dá)式以擬合數(shù)據(jù)集〈X,y〉。選擇算子通過錦標(biāo)賽和輪盤賭等方法選擇誤差小的個(gè)體用于生成下一代;交叉算子交換兩個(gè)父代個(gè)體的部分子樹,生成新的子代個(gè)體;變異算子隨機(jī)改變個(gè)體的部分子樹或節(jié)點(diǎn),生成新的個(gè)體[17]。
以Gplearn方法為例,介紹遺傳編程算法解決符號(hào)回歸問題的一般流程。Gplearn 是一種經(jīng)典且廣泛使用的基于遺傳編程的符號(hào)回歸方法。
算法開始時(shí),創(chuàng)建一個(gè)初始種群,包含若干符號(hào)表達(dá)式樹。算法流程如圖1所示。符號(hào)表達(dá)式樹是一種二叉樹,其內(nèi)部節(jié)點(diǎn)是數(shù)學(xué)運(yùn)算符,終端節(jié)點(diǎn)是變量或者常量。例如,圖2所示的符號(hào)表達(dá)式樹表示的數(shù)學(xué)表達(dá)式為x×x+sin(z)。符號(hào)表達(dá)式樹與數(shù)學(xué)表達(dá)式具有一一對(duì)應(yīng)關(guān)系。在遺傳編程方法中,種群是一組數(shù)學(xué)表達(dá)式形成的集合。初始種群中的表達(dá)式樹可通過以下三種策略生成:
a)grow策略:在每個(gè)節(jié)點(diǎn)隨機(jī)選取數(shù)學(xué)運(yùn)算符、變量或者常量。變量和常量成為葉節(jié)點(diǎn),運(yùn)算符則繼續(xù)生長(zhǎng)。這通常會(huì)生成不對(duì)稱且深度較淺的表達(dá)式樹。
b)full策略:在給定最大深度下,所有非葉節(jié)點(diǎn)均為隨機(jī)選擇的數(shù)學(xué)運(yùn)算符,而葉節(jié)點(diǎn)則是隨機(jī)選擇的變量或常量。
c)half and half策略:結(jié)合grow策略和full策略,兩種策略各生成一半表達(dá)式樹。
初始種群創(chuàng)建后,將進(jìn)入“評(píng)估-演化”循環(huán)。評(píng)估過程中通常以誤差作為衡量種群中每個(gè)表達(dá)式質(zhì)量的指標(biāo)。對(duì)于數(shù)據(jù)集〈X,y〉和待評(píng)估的表達(dá)式Φ(X),Gplearn中三種常見的誤差函數(shù)的計(jì)算公式如下:
a)平均絕對(duì)誤差(mean absolute error, MAE):
E(Φ(X),y)MAE=1n∑ni=1yi-Φ(Xi)
(1)
b)均方誤差(mean squared error, MSE):
E(Φ(X),y)MSE=1n∑ni=1(yi-Φ(Xi))2
(2)
c)均方根誤差(root mean squared error, RMSE):
E(Φ(X),y)RMSE=1n∑ni=1(yi-Φ(Xi))2
(3)
顯然,誤差值越低,表達(dá)式對(duì)數(shù)據(jù)的擬合程度越高,表達(dá)式質(zhì)量越好。
種群評(píng)估之后,如果種群中表達(dá)式誤差小于預(yù)設(shè)閾值或者種群代數(shù)到達(dá)上限,則算法終止并輸出最佳表達(dá)式。如果算法未終止,則進(jìn)入演化步驟。
演化包括選擇、交叉、變異與復(fù)制四步。選擇步驟采用錦標(biāo)賽法,從種群中隨機(jī)選取多個(gè)表達(dá)式,這些表達(dá)式中誤差最小的表達(dá)式稱為優(yōu)勝者。優(yōu)勝者按照一定概率進(jìn)入交叉、變異或復(fù)制步驟。復(fù)制是優(yōu)勝者不作任何修改進(jìn)入下一代,而交叉和變異步驟則會(huì)對(duì)優(yōu)勝者的表達(dá)式樹結(jié)構(gòu)進(jìn)行一定的修改。
在交叉步驟中,首先從優(yōu)勝者中選擇一個(gè)隨機(jī)子樹,并用其余表達(dá)式中誤差最低的表達(dá)式樹的隨機(jī)子樹替換。
變異步驟分為點(diǎn)變異、提升(hoist)變異和子樹變異三種。
在點(diǎn)變異步驟中,將優(yōu)勝者的一個(gè)隨機(jī)節(jié)點(diǎn)替換為另一個(gè)運(yùn)算符、變量或常量。
在提升變異步驟中,首先在優(yōu)勝者中隨機(jī)選擇一個(gè)子樹A,再?gòu)淖訕渲须S機(jī)選擇一個(gè)子樹B,用子樹 B代替優(yōu)勝者中A的位置。
在子樹變異步驟中,將優(yōu)勝者的一個(gè)隨機(jī)子樹完全替換為一棵全新的隨機(jī)子樹。
在種群經(jīng)歷多次上述演化步驟后,會(huì)形成新一代種群。這個(gè)“評(píng)估-演化”循環(huán)不斷重復(fù),種群誤差不斷降低,直到達(dá)到算法的終止條件,輸出最佳表達(dá)式。
1.2 Pysr算法
Pysr方法是近年來(lái)符號(hào)回歸處理合成數(shù)據(jù)集最優(yōu)的遺傳編程方法[18]。相較于Gplearn方法,Pysr方法進(jìn)行了諸多改進(jìn)。與Gplearn方法采用的單一種群策略不同的是,Pysr方法初始化多個(gè)種群,每個(gè)種群由一定數(shù)量的隨機(jī)生成表達(dá)式構(gòu)成。這些種群在不同的進(jìn)程或線程上獨(dú)立進(jìn)行進(jìn)化,實(shí)現(xiàn)了大規(guī)模并行化。在Pysr方法中,種群的并行化是異步的,不同種群可以以不同速度完成進(jìn)化而不會(huì)相互影響。
在每一代中,每個(gè)種群首先會(huì)獨(dú)立地執(zhí)行“演化-優(yōu)化”循環(huán)。在演化階段,每個(gè)種群通過錦標(biāo)賽方式選擇表達(dá)式進(jìn)行變異和交叉操作,選擇過程基于誤差大小進(jìn)行。算法引入了基于復(fù)雜度的頻率度量(frecency)來(lái)改進(jìn)Gplearn等遺傳編程方法常用的誤差計(jì)算公式,對(duì)于數(shù)據(jù)集〈X,y〉和待評(píng)估的表達(dá)式Φ(X),Pysr算法的誤差計(jì)算公式為
E(Φ(X),y)Pysr=E(Φ(X))×exp(frecency[C[Φ(X)]])
(4)
其中:E(Φ(X))是表達(dá)式誤差,可以用式(1)~(3)計(jì)算;C[Φ(X)]是表達(dá)式Φ(X)的復(fù)雜度,表達(dá)式的復(fù)雜度是其所有運(yùn)算符、變量和常量復(fù)雜度的總和,在默認(rèn)情況下,每個(gè)運(yùn)算符、常量和變量的復(fù)雜度均為1;frecency為時(shí)間窗口內(nèi)特定復(fù)雜度出現(xiàn)的次數(shù)。改進(jìn)后的誤差計(jì)算公式鼓勵(lì)算法均衡地探索從簡(jiǎn)單到復(fù)雜的表達(dá)式。
在進(jìn)行變異的過程中,優(yōu)勝表達(dá)式根據(jù)概率采用多種變異方式,例如插入節(jié)點(diǎn)、刪除節(jié)點(diǎn)、變異節(jié)點(diǎn)等。算法結(jié)合模擬退火算法以及表達(dá)式的誤差和復(fù)雜度考慮是否接受變異,接受變異的概率計(jì)算公式為
P=exp(-E(Φ(X))-E(Φ(X))βT)×frecency[C]frecency[C]
(5)
其中:E(Φ(X))為突變后表達(dá)式誤差;E(Φ(X))為原始表達(dá)式誤差;β是一個(gè)超參數(shù);溫度T∈[0,1];C為突變后表達(dá)式復(fù)雜度;C為原始表達(dá)式復(fù)雜度。算法在突變接受概率的計(jì)算上融入了模擬退火算法,在不同階段調(diào)整探索與利用的比重。變異或交叉后產(chǎn)生的表達(dá)式替換種群中存在時(shí)間最久的表達(dá)式,而不是誤差最大的表達(dá)式,這種策略被稱為“年齡正則化”進(jìn)化。
在完成演化階段后,種群將進(jìn)入優(yōu)化階段。在這一階段,種群中的表達(dá)式被替換為其代數(shù)等價(jià)形式,以減小搜索空間的規(guī)模,如表達(dá)式xx-xx+z被簡(jiǎn)化為z。完成簡(jiǎn)化的表達(dá)式后通過數(shù)值優(yōu)化算法對(duì)其中的常數(shù)進(jìn)行優(yōu)化。具體而言,首先對(duì)表達(dá)式中的常數(shù)進(jìn)行初始化,然后使用數(shù)值優(yōu)化算法(如Broyden-Fletcher-Goldfarb-Shanno算法,簡(jiǎn)稱BFGS)來(lái)迭代調(diào)整這些常數(shù)。優(yōu)化過程旨在通過最小化表達(dá)式預(yù)測(cè)值與目標(biāo)數(shù)據(jù)之間的誤差來(lái)提高表達(dá)式的擬合精度。BFGS算法在每次迭代中計(jì)算誤差函數(shù)的梯度,并基于這些梯度信息更新常數(shù)值,直至收斂到一個(gè)局部最優(yōu)解,達(dá)到誤差最小化的目的。
在完成“演化-優(yōu)化”循環(huán)后,各個(gè)種群會(huì)進(jìn)入異步遷移階段。在這一階段,各個(gè)種群根據(jù)循環(huán)完成的先后順序依次執(zhí)行異步遷移策略。這包括更新記錄中當(dāng)前種群中每個(gè)復(fù)雜度級(jí)別的最佳表達(dá)式,同時(shí)使用一個(gè)名為“名人堂”的集合來(lái)記錄所有種群中每個(gè)復(fù)雜度級(jí)別的最佳表達(dá)式。然后,對(duì)于當(dāng)前種群中的每個(gè)表達(dá)式,都會(huì)有一定概率被記錄中的其他種群的最佳表達(dá)式或“名人堂”中的最佳表達(dá)式隨機(jī)“遷移”替換。種群之間采用異步遷移策略,使得各個(gè)種群能夠根據(jù)自身的進(jìn)化狀態(tài),在不同時(shí)間點(diǎn)交換個(gè)體,避免了算法過早陷入局部最優(yōu)解。
完成異步遷移策略后,種群將進(jìn)入新一輪的“演化-優(yōu)化”循環(huán)。通過不斷重復(fù)“演化-優(yōu)化”循環(huán)以及異步遷移過程,“名人堂”中的表達(dá)式誤差持續(xù)降低,直至滿足終止條件。最后,根據(jù)“名人堂”中的記錄,選擇誤差最小的表達(dá)式作為最終結(jié)果。
2 神經(jīng)網(wǎng)絡(luò)算子的設(shè)計(jì)與實(shí)現(xiàn)
2.1 基于神經(jīng)網(wǎng)絡(luò)算子的變異算子
在遺傳編程中,常見的變異算子包括點(diǎn)變異、插入節(jié)點(diǎn)等,通常以隨機(jī)方式進(jìn)行變異。變異算子的輸入通常是一個(gè)或者多個(gè)符號(hào)表達(dá)式樹,可能的約束條件以及變異參數(shù),如變異概率、變異類型(節(jié)點(diǎn)替換、子樹替換等)。輸出是通過變異操作生成的新符號(hào)表達(dá)式樹。由于變異的隨機(jī)性,變異算子可能破壞原本優(yōu)良的個(gè)體結(jié)構(gòu),無(wú)法穩(wěn)定降低種群的誤差。
因此,本文引入了一種新的變異算子,稱為神經(jīng)網(wǎng)絡(luò)算子。該算子基于一個(gè)經(jīng)過訓(xùn)練的神經(jīng)網(wǎng)絡(luò),能夠根據(jù)學(xué)習(xí)到的數(shù)據(jù)特征生成具有較低誤差的數(shù)學(xué)表達(dá)式,從而有效引導(dǎo)種群的進(jìn)化過程。神經(jīng)網(wǎng)絡(luò)算子的輸入是一個(gè)符號(hào)表達(dá)式樹,輸出是經(jīng)過神經(jīng)網(wǎng)絡(luò)重構(gòu)后具有更低誤差的新符號(hào)表達(dá)式樹。該變化過程視為一種變異算子。
本文采用了一種帶有長(zhǎng)短期記憶(LSTM)結(jié)構(gòu)的遞歸神經(jīng)網(wǎng)絡(luò),如圖3所示。該神經(jīng)網(wǎng)絡(luò)包括輸入層、隱藏層和輸出層,具體結(jié)構(gòu)如下:
a)輸入層:輸入由當(dāng)前符號(hào)的父節(jié)點(diǎn)與兄弟節(jié)點(diǎn)的獨(dú)熱編碼(one-hot)連接組成,輸入維度為2×length(L),其中l(wèi)ength(L)是當(dāng)前的可選符號(hào)庫(kù)L的數(shù)量。通過引入父節(jié)點(diǎn)和兄弟節(jié)點(diǎn)的信息,網(wǎng)絡(luò)能夠利用表達(dá)式樹的上下文結(jié)構(gòu)。
b)隱藏層:網(wǎng)絡(luò)包含一層LSTM層,隱藏單元數(shù)量為256個(gè)。LSTM 結(jié)構(gòu)能夠有效地捕捉符號(hào)序列中的短期和長(zhǎng)期依賴關(guān)系,適合處理符號(hào)序列生成任務(wù)。
c)輸出層:通過全連接層將隱藏層的輸出映射到符號(hào)庫(kù)的概率分布,輸出維度為length(L)。使用softmax激活函數(shù),將網(wǎng)絡(luò)輸出轉(zhuǎn)換為概率分布,用于符號(hào)的采樣。
遞歸神經(jīng)網(wǎng)絡(luò)通過學(xué)習(xí)表達(dá)式的結(jié)構(gòu)和符號(hào)之間的依賴關(guān)系,能夠生成更符合數(shù)學(xué)語(yǔ)義的符號(hào)序列。輸入層結(jié)合父節(jié)點(diǎn)和兄弟節(jié)點(diǎn)的信息,使網(wǎng)絡(luò)在生成下一個(gè)符號(hào)時(shí)考慮了上下文結(jié)構(gòu),提高了表達(dá)式生成的合理性。采用LSTM結(jié)構(gòu),有效地捕捉了符號(hào)序列中的長(zhǎng)短期依賴,避免了傳統(tǒng)RNN容易出現(xiàn)的梯度消失或爆炸問題。因此,該神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)能夠有效提升符號(hào)序列的生成質(zhì)量。
為充分利用神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)特征學(xué)習(xí)能力,神經(jīng)網(wǎng)絡(luò)算子對(duì)輸入的優(yōu)勝表達(dá)式進(jìn)行處理,主要包括前綴序列組生成、前綴序列補(bǔ)全和表達(dá)式評(píng)估三個(gè)步驟。算子處理流程如圖4所示。
2.1.1 前綴序列組生成
在前綴序列組生成步驟中,首先將種群中的優(yōu)勝表達(dá)式Φ轉(zhuǎn)換為前序序列。前序序列由前序遍歷產(chǎn)生,前序遍歷是一種深度優(yōu)先遍歷方法,按照“根節(jié)點(diǎn)→左子樹→右子樹”的順序訪問樹中的節(jié)點(diǎn)。對(duì)于表達(dá)式樹,前序遍歷可以生成一個(gè)唯一的符號(hào)序列,這個(gè)序列可以完整地描述表達(dá)式的結(jié)構(gòu)。例如表達(dá)式x×y+sin(z)可以表示為前序遍歷序列{+,×,x,y,sin,z}。同樣地,一個(gè)表達(dá)式序列也可以唯一地表示一棵符號(hào)表達(dá)式樹。值得注意的是,常見的前序序列不可以唯一地表示一棵二叉樹。但在表達(dá)式樹中,每個(gè)節(jié)點(diǎn)的子節(jié)點(diǎn)數(shù)量是明確的,例如,二元操作符(如乘法和除法)有兩個(gè)子節(jié)點(diǎn),而變量和常量無(wú)子節(jié)點(diǎn)。因此,前序序列結(jié)合每個(gè)節(jié)點(diǎn)對(duì)應(yīng)的子節(jié)點(diǎn)數(shù),可以唯一地表示一棵表達(dá)式樹。故可以通過生成表達(dá)式前序序列的方法來(lái)生成一個(gè)符號(hào)表達(dá)式。
將優(yōu)勝表達(dá)式轉(zhuǎn)為前序序列后,可生成前綴序列組G。具體生成過程為,首先,取前序序列中的第一個(gè)符號(hào),形成第一個(gè)前綴序列G1,此時(shí)G1中只有一個(gè)符號(hào)。接著,取前序序列中前兩個(gè)符號(hào),形成第二個(gè)前綴序列G2。依此類推,直到前序序列中的所有符號(hào)都被依次加入,從而生成l個(gè)前綴序列{G1,G2,…,Gl},其中l(wèi)是前序序列的長(zhǎng)度。每個(gè)前綴序列Gi的長(zhǎng)度為i,其表示從根節(jié)點(diǎn)逐漸擴(kuò)展到整個(gè)表達(dá)式樹的一部分,Gl則是原前序序列。這些前綴序列形成的集合即構(gòu)成了前綴序列組G。
如圖4中的優(yōu)勝表達(dá)式x×x+sin(z),其前序序列為+,×,x,x,sin,z,根據(jù)上述規(guī)則,可生成前綴序列組
G=+,+,×,+,×,x,+,×,x,x,+,×,x,x,sin,+,×,x,x,sin,z
2.1.2 前綴序列補(bǔ)全
在前綴序列補(bǔ)全步驟中,前綴序列組G中的每一個(gè)前綴序列Gi通過遞歸神經(jīng)網(wǎng)絡(luò)進(jìn)行補(bǔ)全,生成k個(gè)可能不同的完整前序序列,表示為{R(1)i,R(2)i,…,R(k)i}。最終,這些完整前序序列構(gòu)成
R(1)1,R(2)1,…,R(k)1,R(1)l,R(2)l,…,R(k)l
稱為完整前序序列組R。在下文中,為簡(jiǎn)便起見,將Ri用于表示Gi通過遞歸神經(jīng)網(wǎng)絡(luò)進(jìn)行補(bǔ)全后的任意一個(gè)完整前序序列。
補(bǔ)全步驟的核心是遞歸神經(jīng)網(wǎng)絡(luò),其參數(shù)記為θ。圖5展示了神經(jīng)網(wǎng)絡(luò)生成前序序列Ri的過程。Ri對(duì)應(yīng)的表達(dá)式樹記為T,其中第j個(gè)采樣符號(hào)記為Ri,j,其可選符號(hào)庫(kù)記為L(zhǎng),表示Ri,j中可以選擇符號(hào)的集合。在常見的遞歸神經(jīng)網(wǎng)絡(luò)任務(wù)中,通常通過逐步采樣每個(gè)時(shí)間步輸出產(chǎn)生一個(gè)完整的序列,其中每個(gè)時(shí)間步的輸入通常是先前時(shí)間步的輸出。然而在符號(hào)回歸任務(wù)中,由于表達(dá)式樹與前序序列的結(jié)構(gòu)特點(diǎn),搜索空間本質(zhì)是分層的,前一個(gè)采樣的符號(hào)可能在表達(dá)式中與下一個(gè)要采樣的符號(hào)相距較遠(yuǎn)。例如在圖中,Ri,4和Ri,5在前序序列中為相鄰節(jié)點(diǎn),但在表達(dá)式樹T中卻相隔三條邊。在本文中,為了更好地捕捉表達(dá)式樹中的層次信息,對(duì)一個(gè)符號(hào)進(jìn)行采樣時(shí),輸入網(wǎng)絡(luò)的是當(dāng)前要采樣符號(hào)的父節(jié)點(diǎn)與兄弟節(jié)點(diǎn)。對(duì)于沒有父節(jié)點(diǎn)或兄弟節(jié)點(diǎn)的情況,引入了一個(gè)空符號(hào)作為占位符。例如,采樣符號(hào)Ri,j時(shí),網(wǎng)絡(luò)會(huì)接受Ri,j的父節(jié)點(diǎn)和兄弟節(jié)點(diǎn)作為輸入,并生成一個(gè)可選符號(hào)庫(kù)L的概率分布Ψi,j。具體而言,網(wǎng)絡(luò)的第j個(gè)輸出經(jīng)過softmax層生成向量Ψi,j(Ri,j|θ),該向量定義了當(dāng)前神經(jīng)網(wǎng)絡(luò)選擇符號(hào)Ri,j的概率分布。Ri整體采樣序列的累積概率分布Ψi(Ri|θ)是序列中每個(gè)符號(hào)采樣概率Ψi,j(Ri,j|θ)的乘積,即
Ψi(Ri|θ)=∏lj=1Ψi,jRi,j|θ
(6)
為了限制搜索空間,本文采用施加先驗(yàn)概率掩碼Π的方法。該先驗(yàn)概率掩碼Π施加了以下幾個(gè)約束條件:
a)長(zhǎng)度約束:將表達(dá)式限制為預(yù)先指定的最小和最大長(zhǎng)度,以防止生成瑣碎的表達(dá)式和表達(dá)式膨脹。
b)嵌套約束:防止某些符號(hào)無(wú)意義的嵌套,例如sin和cos符號(hào)的相互嵌套,以及指數(shù)或?qū)?shù)符號(hào)的多層嵌套,這在實(shí)際公式中通常不會(huì)出現(xiàn)。
c)逆運(yùn)算約束:避免對(duì)數(shù)或指數(shù)符號(hào)的后代為指數(shù)或?qū)?shù)符號(hào),例如logexpx或explogx本質(zhì)上為x。生成logexpx或explogx,相較于生成x,這實(shí)際上浪費(fèi)了搜索空間。需要注意的是由于某些數(shù)據(jù)集對(duì)可選符號(hào)庫(kù)的限制,本文在Nguyen數(shù)據(jù)集中取消了這個(gè)約束,以正確生成結(jié)果。然而,在常規(guī)使用中,這個(gè)約束是存在的。
當(dāng)前采樣符號(hào)Ri,j的先驗(yàn)概率掩碼Πi,j是根據(jù)這些約束條件生成的,若當(dāng)前采樣符號(hào)sin違背約束,則其掩碼Πi,j中對(duì)應(yīng)的sin的先驗(yàn)概率掩碼Πi,jsin=0。對(duì)于不違背約束的符號(hào),其先驗(yàn)概率掩碼為1。這樣,這些符號(hào)的先驗(yàn)概率掩碼共同組成了先驗(yàn)概率掩碼Πi,j。在生成Ri,j的概率分布Ψi,j后,需要根據(jù)第j步的先驗(yàn)概率掩碼Πi,j將違反約束的符號(hào)概率歸零,再?gòu)闹胁蓸映龇?hào)Ri,j。通過歸零違反約束的符號(hào)的概率,在符號(hào)生成過程中直接應(yīng)用這些約束,而不是在生成完整公式后拒絕違反約束的公式,從而提高模型搜索表達(dá)式的性能。
序列補(bǔ)全過程利用網(wǎng)絡(luò)產(chǎn)生當(dāng)前可選符號(hào)的概率分布Ψi,j。對(duì)于Gi補(bǔ)全生成Ri的過程,若Gi在對(duì)應(yīng)位置存在符號(hào),則依次指定概率分布的采樣結(jié)果為Gi中對(duì)應(yīng)位置符號(hào),以確保生成的序列與Gi匹配。對(duì)于Gi中缺省的部分序列,按照實(shí)際采樣結(jié)果填補(bǔ),產(chǎn)生前序序列Ri。以圖5中前綴序列G3=+,×,x為例。在網(wǎng)絡(luò)中,輸入當(dāng)前節(jié)點(diǎn)的兄弟節(jié)點(diǎn)與父節(jié)點(diǎn),得到輸出的概率分布Ψ3,1。概率分布Ψ3,1采樣的結(jié)果可能是多樣的,但是G3={+,×,x}對(duì)應(yīng)位置存在符號(hào){+},因此指定概率分布Ψ3,1的采樣結(jié)果為{+}。依此類推,算子指定前三次結(jié)果分別為{+,×,x}。后續(xù)G3中缺省的符號(hào)根據(jù)實(shí)際采樣結(jié)果填充,最終得到前序序列R3。
例如對(duì)于圖4中的前綴序列組G,經(jīng)過補(bǔ)全后產(chǎn)生的完整前序序列組R為
+,exp,x,sin,z,…,+,×,z,z,exp,z,…,+,×,x,z,exp,x,…,+,×,x,x,sin,x,…,+,×,x,x,sin,exp,z,…,+,×,x,x,sin,z,…,
其中:每行前序序列具有相同的前綴。
前綴序列補(bǔ)全過程利用了前綴序列組,保留了優(yōu)勝表達(dá)式不同長(zhǎng)度前綴的特點(diǎn)。具體而言,在補(bǔ)全較短長(zhǎng)度前綴時(shí),算法傾向于廣泛探索表達(dá)式空間,積極搜尋新的公式結(jié)構(gòu),從而有效跳出局部最優(yōu)解。這一策略基于進(jìn)化算法中維持多樣性的理論,通過增加種群的多樣性,提升了發(fā)現(xiàn)全局最優(yōu)解的可能性。
另一方面,在補(bǔ)全較長(zhǎng)長(zhǎng)度前綴時(shí),算法則更加注重利用優(yōu)勝表達(dá)式中已驗(yàn)證的優(yōu)良結(jié)構(gòu)。這種策略借鑒了“精英保留”的理念,通過保留和擴(kuò)展高適應(yīng)度個(gè)體的良好特征,確保了優(yōu)化過程中的持續(xù)改進(jìn)和穩(wěn)定性。這不僅加速了優(yōu)良解的積累過程,還提高了整個(gè)種群的整體適應(yīng)度。
前綴序列補(bǔ)全方法是基于探索(exploration)與利用(exploitation)之間的平衡理論。在遺傳編程中,探索能力確保了算法能夠在廣闊的表達(dá)式解空間中尋找潛在的優(yōu)質(zhì)解,而利用能力則確保了算法能夠充分挖掘和優(yōu)化已發(fā)現(xiàn)的優(yōu)良解。通過在不同長(zhǎng)度前綴上的補(bǔ)全策略,前綴序列補(bǔ)全方法實(shí)現(xiàn)了這一平衡,使得算法既能夠基于原始表達(dá)式生成更優(yōu)良的結(jié)構(gòu),從而更快速地引導(dǎo)種群朝著誤差降低的方向發(fā)展,又有助于遺傳編程跳出局部最優(yōu)解。
2.1.3 表達(dá)式評(píng)估
在表達(dá)式評(píng)估步驟中,將R中前序序列全部實(shí)例化為對(duì)應(yīng)的表達(dá)式,計(jì)算其誤差,將誤差最低的表達(dá)式作為優(yōu)勝表達(dá)式。在本文設(shè)計(jì)的評(píng)估步驟中,由于R中包含原始表達(dá)式的前序序列,實(shí)例化的表達(dá)式實(shí)際上也包含原始表達(dá)式。所以避免神經(jīng)網(wǎng)絡(luò)算子破壞原本的優(yōu)良結(jié)構(gòu),可能朝著更壞的方向演變的情況。
最后,神經(jīng)網(wǎng)絡(luò)算子將優(yōu)勝表達(dá)式代替原本種群中的原始表達(dá)式,完成了一次神經(jīng)網(wǎng)絡(luò)算子變異步驟。
如圖3將R中前序序列全部實(shí)例化為表達(dá)式計(jì)算誤差,使用誤差最低的表達(dá)式x×x+sin(exp(z))替換原本表達(dá)式x×x+sin(z),形成新一代種群。
2.2 神經(jīng)網(wǎng)絡(luò)訓(xùn)練方法
在使用神經(jīng)網(wǎng)絡(luò)前,通過強(qiáng)化學(xué)習(xí)中的策略梯度方法,對(duì)其參數(shù)θ進(jìn)行多輪訓(xùn)練。在每輪訓(xùn)練中,根據(jù)上文中通過采樣概率生成前序序列的方法,神經(jīng)網(wǎng)絡(luò)生成N個(gè)前序序列。生成一個(gè)完整的前序序列Ri的過程被視為強(qiáng)化學(xué)習(xí)中的一個(gè)回合(episode),Ri的整體概率分布Ψi(Ri|θ)看作強(qiáng)化學(xué)習(xí)中的策略。在生成過程中,當(dāng)前要采樣符號(hào)的父節(jié)點(diǎn)與兄弟節(jié)點(diǎn)看作環(huán)境狀態(tài)的觀測(cè)值,當(dāng)前采樣符號(hào)Ri,j則看作當(dāng)前環(huán)境狀態(tài)下的采樣動(dòng)作。
在具體的實(shí)驗(yàn)設(shè)置中,為了確保模型的有效訓(xùn)練,對(duì)神經(jīng)網(wǎng)絡(luò)進(jìn)行了3 000次訓(xùn)練輪次(epochs)。每輪訓(xùn)練中,神經(jīng)網(wǎng)絡(luò)生成并評(píng)估1 000個(gè)前序序列。訓(xùn)練參數(shù)如學(xué)習(xí)率和優(yōu)化器的選擇,對(duì)模型的收斂和性能有著重要影響。采用了 Adam 優(yōu)化器,學(xué)習(xí)率設(shè)定為0.000 15。該優(yōu)化器具有自適應(yīng)學(xué)習(xí)率的特性,有助于加速模型的收斂。這些參數(shù)的選擇是通過網(wǎng)格搜索方法獲得的,以確保模型達(dá)到最佳性能。
在標(biāo)準(zhǔn)策略梯度方法中,通過計(jì)算累計(jì)獎(jiǎng)勵(lì),并最大化預(yù)期累積獎(jiǎng)勵(lì)來(lái)優(yōu)化策略參數(shù)。本文同樣通過最大化預(yù)期累積獎(jiǎng)勵(lì)的方式來(lái)訓(xùn)練神經(jīng)網(wǎng)絡(luò),但在計(jì)算獎(jiǎng)勵(lì)時(shí)略有不同。在生成過程中,采樣中間符號(hào)Ri,j的獎(jiǎng)勵(lì)視為0,累積獎(jiǎng)勵(lì)rewards (Ri)在前序序列Ri完全生成并實(shí)例化表達(dá)式Φi(X)后才進(jìn)行計(jì)算,即累積獎(jiǎng)勵(lì)只在最后一步生成時(shí)進(jìn)行評(píng)估。
在神經(jīng)網(wǎng)絡(luò)中,對(duì)于數(shù)據(jù)集〈X,y〉和待評(píng)估的表達(dá)式Φi(X),誤差通過歸一化均方根誤差(normalized root mean square error,NRMSE)計(jì)算:
E(Φi(X),y)NRMSE=1σy1n∑nj=1(yj-Φi(Xj))2
(7)
其中:σy是數(shù)據(jù)集中y的標(biāo)準(zhǔn)差。通過誤差可以計(jì)算出前序序列Ri的累積獎(jiǎng)勵(lì),其計(jì)算公式為
rewards(Ri)=1E(Φi(X),y)NRMSE+1
(8)
策略梯度更新是通過梯度上升的方法優(yōu)化策略參數(shù),目標(biāo)是使采樣序列在給定策略下獲得更高的預(yù)期獎(jiǎng)勵(lì)。以下是標(biāo)準(zhǔn)策略梯度更新方法的基本步驟:
首先計(jì)算策略的期望獎(jiǎng)勵(lì),定義策略的期望獎(jiǎng)勵(lì)為J(θ),期望獎(jiǎng)勵(lì)可以表示為在策略Ψi(Ri|θ)下采樣得到的序列Ri所對(duì)應(yīng)的獎(jiǎng)勵(lì)rewards(Ri)的期望值:
J(θ)=ERi~Ψi(Ri|θ)[rewards(Ri)]
(9)
標(biāo)準(zhǔn)策略梯度的更新通過計(jì)算期望獎(jiǎng)勵(lì)關(guān)于策略參數(shù)θ的梯度,從而確定參數(shù)更新的方向。該期望值的梯度計(jì)算公式為
(12)
其中:α是學(xué)習(xí)率。
根據(jù)Petersen等人[19]的見解,風(fēng)險(xiǎn)尋求策略梯度方法是在標(biāo)準(zhǔn)策略梯度方法基礎(chǔ)上的一種改進(jìn),專注于優(yōu)化少數(shù)表現(xiàn)優(yōu)異的樣本,從而提升神經(jīng)網(wǎng)絡(luò)產(chǎn)生最佳表達(dá)式的性能。在生成表達(dá)式方面,神經(jīng)網(wǎng)絡(luò)最終的性能由生成的少數(shù)最佳樣本來(lái)衡量。因此,本文選擇采用改進(jìn)后的風(fēng)險(xiǎn)尋求策略梯度方法訓(xùn)練神經(jīng)網(wǎng)絡(luò)。該方法需要最大化超過特定閾值以上的條件期望獎(jiǎng)勵(lì),即Jrisk(θ;ε),其定義為
3 實(shí)驗(yàn)
在本文實(shí)驗(yàn)中,為了驗(yàn)證神經(jīng)網(wǎng)絡(luò)算子的有效性和廣泛適用性,采用了兩個(gè)不同類型的數(shù)據(jù)集:
a)Nguyen數(shù)據(jù)集:包含12個(gè)不同形態(tài)的數(shù)學(xué)表達(dá)式,廣泛應(yīng)用于符號(hào)回歸方法的評(píng)估基準(zhǔn)。
b)宏觀經(jīng)濟(jì)數(shù)據(jù)集:基于多智能體仿真(multi-agent simulation,MAS)模型生成的宏觀經(jīng)濟(jì)數(shù)據(jù)[20],旨在評(píng)估方法在復(fù)雜數(shù)據(jù)集上的實(shí)際應(yīng)用表現(xiàn),以及進(jìn)一步探討神經(jīng)網(wǎng)絡(luò)算子在大規(guī)模數(shù)據(jù)集上的空間與時(shí)間表現(xiàn)。
3.1 Nguyen數(shù)據(jù)集
本實(shí)驗(yàn)采用Nguyen數(shù)據(jù)集中的12個(gè)不同形態(tài)的表達(dá)式作為實(shí)驗(yàn)基準(zhǔn)。Nguyen數(shù)據(jù)集具有廣泛代表性,適合作為符號(hào)回歸方法的評(píng)估基準(zhǔn)。實(shí)驗(yàn)基準(zhǔn)如表1所示,其中L={+,-,×,÷,log,exp,sin,cos,x}。
為了驗(yàn)證神經(jīng)網(wǎng)絡(luò)算子的有效性,實(shí)驗(yàn)結(jié)合了兩種不同的遺傳編程方法:Gplearn和Pysr。Gplearn方法是一種經(jīng)典的遺傳編程方法,采用單種群進(jìn)化策略,使用Python語(yǔ)言實(shí)現(xiàn)。Pysr則是當(dāng)前解決符號(hào)回歸問題的最優(yōu)遺傳編程方法,采用多種群進(jìn)化策略,基于Julia語(yǔ)言開發(fā)。
實(shí)驗(yàn)將本文提出的神經(jīng)網(wǎng)絡(luò)算子分別結(jié)合Pysr、 Gplearn方法,評(píng)估其效果。在分別結(jié)合兩種算法時(shí),神經(jīng)網(wǎng)絡(luò)算子都作為一種變異算子存在。為了評(píng)估神經(jīng)網(wǎng)絡(luò)算子的有效性,分別測(cè)試了四種方法:Gplearn方法、結(jié)合神經(jīng)網(wǎng)絡(luò)算子的Gplearn方法(NN-Gplearn)、Pysr方法、結(jié)合神經(jīng)網(wǎng)絡(luò)算子的Pysr方法(NN-Pysr)。
神經(jīng)網(wǎng)絡(luò)算子中遞歸神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程中的超參數(shù)如表2所示。超參數(shù)由網(wǎng)格搜索方法得到,訓(xùn)練輪次則是觀察訓(xùn)練曲線的收斂情況確認(rèn)。在NN-Gplearn和NN-Pysr方法中,遞歸神經(jīng)網(wǎng)絡(luò)的訓(xùn)練超參數(shù)是一致的。
遞歸神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程采用了策略梯度的方法,收斂情況如圖6所示。神經(jīng)網(wǎng)絡(luò)算子均在訓(xùn)練收斂的情況下對(duì)種群中的表達(dá)式進(jìn)行引導(dǎo)。
為了排除參數(shù)因素的干擾,基礎(chǔ)的遺傳編程方法與結(jié)合神經(jīng)網(wǎng)絡(luò)算子的方法參數(shù)保持一致。本文實(shí)驗(yàn)中Gplearn、NN-Gplearn、Pysr和NN-Pysr方法參數(shù)設(shè)置如表3所示。種群規(guī)模指的是遺傳編程過程中每一代種群中個(gè)體(表達(dá)式)的數(shù)量。種群數(shù)量則表示并行獨(dú)立進(jìn)化的種群數(shù)量,適用于多種群遺傳編程方法。代數(shù)指算法在遺傳編程運(yùn)行過程中迭代的次數(shù)。交叉概率是指在每一代中,個(gè)體進(jìn)行基因重組(交叉操作)的概率。神經(jīng)網(wǎng)絡(luò)變異概率表示在每一代中,個(gè)體通過神經(jīng)網(wǎng)絡(luò)算子進(jìn)行優(yōu)化的概率,而其他變異概率則指在變異操作中使用除神經(jīng)網(wǎng)絡(luò)算子之外的其他變異方法的概率。補(bǔ)全次數(shù)是指在表達(dá)式補(bǔ)全過程中,算子嘗試補(bǔ)全不完整表達(dá)式的次數(shù),如前文所述。Gplearn與NN-Gplearn方法誤差采用式(1)計(jì)算,Pysr與NN-Pysr方法誤差采用式(4)計(jì)算。
四種方法(Gplearn、NN-Gplearn、Pysr、NN-Pysr)在Nguyen數(shù)據(jù)集中的每個(gè)表達(dá)式上執(zhí)行三十次。實(shí)驗(yàn)采用公式恢復(fù)率作為評(píng)價(jià)指標(biāo),公式恢復(fù)率定義為算法最終輸出結(jié)果與基準(zhǔn)表達(dá)式保持完全代數(shù)一致性的比例。實(shí)驗(yàn)結(jié)果如表4所示,展示了四種方法在Nguyen數(shù)據(jù)集上的恢復(fù)率表現(xiàn)。
從恢復(fù)率的結(jié)果看,結(jié)合神經(jīng)網(wǎng)絡(luò)算子的遺傳編程方法NN-Pysr與NN-Gplearn比原方法Gplearn與Pysr分別提升了33.2百分點(diǎn)與10.3百分點(diǎn)。此外,本文還繪制了平均每代最佳個(gè)體誤差變化趨勢(shì)對(duì)比圖,展示了不同方法在進(jìn)化過程中的誤差變化情況。
Gplearn與NN-Gplearn平均每代最佳個(gè)體誤差變化趨勢(shì)如圖7所示。從圖7中可以看出, NN-Gplearn在種群迭代時(shí),比Gplearn具有更快的誤差收斂速度,并且在大多數(shù)情況下,收斂到的誤差更低。即使是在Nguyen-12公式的恢復(fù)過程中,兩種方法都未能達(dá)到代數(shù)相等,NN-Gplearn方法仍顯示出更快的收斂速度和更好的收斂結(jié)果。
Pysr與NN-Pysr平均每代最佳個(gè)體誤差變化趨勢(shì)如圖8所示。從圖中可以觀察到,NN-Pysr在大多數(shù)情況下比Pysr方法誤差收斂更快,且收斂到的誤差更低。同樣地,在Nguyen-12公式的恢復(fù)過程中,盡管兩種方法均未恢復(fù)到代數(shù)相等,NN-Pysr方法仍表現(xiàn)出更快的收斂速度和更優(yōu)的收斂結(jié)果。
結(jié)合神經(jīng)網(wǎng)絡(luò)算子的遺傳編程方法展現(xiàn)了更快的收斂速度和更低的誤差。進(jìn)一步驗(yàn)證了神經(jīng)網(wǎng)絡(luò)算子在學(xué)習(xí)數(shù)據(jù)特征后,能夠通過重構(gòu)種群中的優(yōu)勝表達(dá)式,有效加速種群進(jìn)化,從而證明了該變異算子的有效性。此外,該算子在不同編程語(yǔ)言和進(jìn)化策略的遺傳編程方法中均表現(xiàn)良好,顯示出其較強(qiáng)的通用性。
3.2 宏觀經(jīng)濟(jì)數(shù)據(jù)集
3.2.1 宏觀經(jīng)濟(jì)數(shù)據(jù)集實(shí)驗(yàn)與分析
該經(jīng)濟(jì)數(shù)據(jù)集通過多智能體仿真(MAS)模型生成,該模型通過模擬多個(gè)經(jīng)濟(jì)主體的互動(dòng)和決策過程,生成大規(guī)模、高緯度的宏觀經(jīng)濟(jì)數(shù)據(jù)。本次實(shí)驗(yàn)用到宏觀經(jīng)濟(jì)變量如表5所示,實(shí)驗(yàn)數(shù)據(jù)共計(jì)8 744條。
在本實(shí)驗(yàn)中,將貨幣供應(yīng)量(M)作為因變量,貨幣流動(dòng)速度(V)、天數(shù)(D)、平均價(jià)格(P)和交易數(shù)量(T)視為自變量。為了驗(yàn)證神經(jīng)網(wǎng)絡(luò)算子的實(shí)際應(yīng)用效果,采用與Nguyen數(shù)據(jù)集相同的四種符號(hào)回歸方法,分別是Gplearn、NN-Gplearn、Pysr和NN-Pysr。此外,神經(jīng)網(wǎng)絡(luò)算子訓(xùn)練參數(shù)以及這四種方法的相關(guān)參數(shù)均與Nguyen數(shù)據(jù)集中的設(shè)置保持一致。
本數(shù)據(jù)集中不存在已知的正確公式,無(wú)法采用恢復(fù)率作為評(píng)估方法效果的指標(biāo)。因此,本次實(shí)驗(yàn)同樣進(jìn)行了三十次獨(dú)立實(shí)驗(yàn),評(píng)價(jià)指標(biāo)改為誤差值和決定系數(shù)(R2)進(jìn)行衡量。具體而言,誤差值用于衡量模型預(yù)測(cè)值與實(shí)際值之間的偏差,而決定系數(shù)則反映了模型對(duì)數(shù)據(jù)變異的解釋能力。通過這些指標(biāo),能夠全面評(píng)估各符號(hào)回歸方法在處理復(fù)雜經(jīng)濟(jì)數(shù)據(jù)集時(shí)的表現(xiàn)。四種方法在三十次實(shí)驗(yàn)中得到的最優(yōu)表達(dá)式的平均誤差值與平均決定系數(shù)如表6所示。
從實(shí)驗(yàn)結(jié)果來(lái)看,結(jié)合神經(jīng)網(wǎng)絡(luò)算子的遺傳編程方法NN-Pysr與NN-Gplearn相比原方法Gplearn與Pysr,在平均誤差和平均決定系數(shù)上均具有更好的性能。
四種方法在實(shí)驗(yàn)過程中的平均每代最佳個(gè)體誤差變化趨勢(shì)如圖9所示。從圖中可以觀察到,NN-Gplearn比Gplearn方法誤差收斂得更快,且收斂到的誤差更低。同樣地,NN-Pysr比Pysr有著更快的收斂速度與更低的收斂誤差。
需要指出的是,由于 Pysr 算法內(nèi)部誤差計(jì)算涉及表達(dá)式復(fù)雜度的加權(quán),所以Pysr 和 NN-Pysr 算法的平均誤差略高于 Gplearn 和 NN-Gplearn。事實(shí)上,在本次實(shí)驗(yàn)中,最優(yōu)表達(dá)式M=(P×((T / V) + 0.117 375 577 554 607 13))由NN-Pysr產(chǎn)生,其決定系數(shù)最高,為0.993 01,是實(shí)驗(yàn)中最貼合本數(shù)據(jù)集的表達(dá)式,并與經(jīng)濟(jì)學(xué)家費(fèi)雪提出的宏觀經(jīng)濟(jì)公式(費(fèi)雪方程式[21])相一致。這一結(jié)果表明,神經(jīng)網(wǎng)絡(luò)算子不僅能夠提升基于遺傳編程的符號(hào)回歸方法的性能,還能夠在經(jīng)濟(jì)數(shù)據(jù)集中挖掘出具有實(shí)際經(jīng)濟(jì)意義的變量關(guān)系,為宏觀經(jīng)濟(jì)研究提供了有價(jià)值的參考。該結(jié)果證明了神經(jīng)網(wǎng)絡(luò)算子在處理大規(guī)模經(jīng)濟(jì)數(shù)據(jù)集和實(shí)際應(yīng)用中的有效性。
3.2.2 時(shí)間與空間復(fù)雜度分析
本文提出的神經(jīng)網(wǎng)絡(luò)算子可視為遺傳編程的一個(gè)關(guān)鍵組件,因此對(duì)其時(shí)間與空間復(fù)雜度進(jìn)行分析具有重要意義。
本次實(shí)驗(yàn)在一臺(tái)配備13代i9-13900HX處理器、NVIDIA GeForce RTX 4060 Laptop GPU顯卡和16 GB內(nèi)存的筆記本電腦上進(jìn)行。實(shí)驗(yàn)所使用的數(shù)據(jù)集為宏觀經(jīng)濟(jì)數(shù)據(jù)集,實(shí)驗(yàn)參數(shù)設(shè)置與Nguyen數(shù)據(jù)集中的訓(xùn)練集保持一致。
為了全面評(píng)估神經(jīng)網(wǎng)絡(luò)算子的時(shí)間與空間復(fù)雜度,實(shí)驗(yàn)選取了不同規(guī)模的數(shù)據(jù)集,數(shù)據(jù)量分別為1 000、10 000、100 000、200 000、400 000、600 000、800 000和1 000 000。本次實(shí)驗(yàn)關(guān)注的指標(biāo)有神經(jīng)網(wǎng)絡(luò)算子在訓(xùn)練過程中的時(shí)間與空間消耗,以及進(jìn)行一次神經(jīng)網(wǎng)絡(luò)算子變異所需要的時(shí)間。在訓(xùn)練過程中時(shí)間與空間的消耗如圖10所示。
從圖中可以明顯看出,神經(jīng)網(wǎng)絡(luò)算子訓(xùn)練時(shí)間隨著數(shù)據(jù)集樣本規(guī)模增加呈線性增長(zhǎng),符合理論認(rèn)知。此外,由于表達(dá)式使用數(shù)據(jù)集計(jì)算誤差部分在本文進(jìn)行了并行化處理,部分線性增長(zhǎng)被并行化處理所緩解,時(shí)間消耗增加幅度明顯小于樣本數(shù)量的增加幅度。訓(xùn)練期間空間消耗隨著樣本規(guī)模的擴(kuò)大而增加,但是增加幅度同樣明顯小于樣本數(shù)量的增加幅度,顯示出神經(jīng)網(wǎng)絡(luò)算子在空間利用方面的良好拓展性。
圖11展示了神經(jīng)網(wǎng)絡(luò)算子進(jìn)行一次變異所需時(shí)間隨樣本規(guī)模變化的情況。隨著樣本規(guī)模的擴(kuò)大,單次處理的時(shí)間有所增加。然而,時(shí)間增長(zhǎng)幅度相對(duì)于樣本規(guī)模的擴(kuò)大幅度依舊相對(duì)較小,顯示出神經(jīng)網(wǎng)絡(luò)算子在處理更大規(guī)模數(shù)據(jù)時(shí)依然保持了較高的處理效率。這一現(xiàn)象部分歸因于計(jì)算數(shù)據(jù)集誤差時(shí)并行化處理的應(yīng)用,有效降低了單次處理所需的時(shí)間。
實(shí)驗(yàn)結(jié)果表明,神經(jīng)網(wǎng)絡(luò)算子在處理不同規(guī)模的經(jīng)濟(jì)數(shù)據(jù)集時(shí),展現(xiàn)出良好的時(shí)間與空間擴(kuò)展性。訓(xùn)練時(shí)間和空間消耗均隨著樣本規(guī)模的增加而線性增長(zhǎng),且通過并行化處理,增長(zhǎng)幅度得以較小程度的控制,有利于提升神經(jīng)網(wǎng)絡(luò)算子在大規(guī)模數(shù)據(jù)集上的處理效率。
4 結(jié)束語(yǔ)
本文提出了一種基于遞歸神經(jīng)網(wǎng)絡(luò)的變異算子,該算子主要利用遞歸神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)數(shù)據(jù)集的特征,為遺傳編程方法中的種群進(jìn)化提供指導(dǎo)。將該變異算子與兩種遺傳編程方法結(jié)合后,在Nguyen數(shù)據(jù)集上進(jìn)行了對(duì)比實(shí)驗(yàn),驗(yàn)證了神經(jīng)網(wǎng)絡(luò)算子不僅能夠顯著提升遺傳編程算法中種群的進(jìn)化速度,還具備與多種遺傳編程方法兼容的通用性。在宏觀經(jīng)濟(jì)數(shù)據(jù)集上的應(yīng)用進(jìn)一步展示了結(jié)合神經(jīng)網(wǎng)絡(luò)算子的遺傳編程方法在實(shí)際應(yīng)用中的潛力。此外,對(duì)神經(jīng)網(wǎng)絡(luò)算子的時(shí)間與空間復(fù)雜度分析表明,其在處理大規(guī)模數(shù)據(jù)集時(shí)具有效率優(yōu)勢(shì)。
然而,該神經(jīng)網(wǎng)絡(luò)算子目前的不足在于每個(gè)數(shù)據(jù)集都需要重新訓(xùn)練。未來(lái)的研究應(yīng)進(jìn)一步優(yōu)化神經(jīng)網(wǎng)絡(luò)算子的設(shè)計(jì),例如采用Transformer模型,提升算子的泛化能力,以減少重新訓(xùn)練的需求。
參考文獻(xiàn):
[1]Dhar V. Data science and prediction[J]. Communications of the ACM, 2013, 56 (12): 64-73.
[2]Hastie T. The elements of statistical learning:data mining, inference, and prediction[M].Berlin:Springer, 2009.
[3]Angelis D, Sofos F, Karakasidis T E. Artificial intelligence in physical sciences:symbolic regression trends and perspectives[J]. Archives of Computational Methods in Engineering, 2023, 30 (6): 3845-3865.
[4]Martius G S, Lampert C. Extrapolation and learning equations[C]//Proc of the 5th International Conference on Learning Representations. 2017.
[5]Tohme T, Liu Dehong, Youcef-Toumi K. GSR: a generalized symbolic regression approach[EB/OL].(2022-05-31). https://arxiv.org/abs/2205.15569.
[6]Kim S, Lu P Y, Mukherjee S,et al. Integration of neural network-based symbolic regression in deep learning for scientific discovery[J]. IEEE Trans on Neural Networks and Learning Systems, 2020, 32 (9): 4166-4177.
[7]Tenachi W, Ibata R, Diakogiannis F I. Deep symbolic regression for physics guided by units constraints: toward the automated discovery of physical laws[J]. The Astrophysical Journal, 2023, 959 (2): 99.
[8]Drachal K. Analysis of Bayesian symbolic regression applied to crude oil price[C]//Proc of International Scientific Conference on Information Technology and Data Related Research. 2022: 3-13.
[9]田嘉欣, 李浩源. 基于遺傳編程的符號(hào)回歸在化學(xué)和材料研究中的應(yīng)用與展望[J]. 材料導(dǎo)報(bào), 2024, 38 : 268-274. (Tian Jiaxin, Li Haoyuan. Application and prospect of symbolic regression based on genetic programming in chemistry and materials research[J]. Mate-rials Review, 2024, 38 : 268-274. )
[10]Koza J R. Genetic programming: on the programming of computers by means of natural selection[M].Cambridge, MA:MIT Press, 1992.
[11]Dubcˇáková R. Eureqa: software review[J].Genetic Programming and Evolvable Machines, 2011, 12:173-178.
[12]McConaghy T. FFX: fast, scalable, deterministic symbolic regression technology[M]//Genetic Programming Theory and Practice IX.New York:Springer,2011: 235-260.
[13]Udrescu S M, Tegmark M. AI Feynman:a physics-inspired method for symbolic regression[J]. Science Advances, 2020, 6 (16): eaay2631.
[14]Cranmer M, Sanchez G A, Battaglia P,et al. Discovering symbolic models from deep learning with inductive biases[C]// Proc of the 34th International Conference on Neural Information Processing Systems.Red Hook,NY:Curran Associates Inc.,2020: 17429-17442.
[15]Mundhenk T N, Landajuela M, Glatt R. Symbolic regression via neural-guided genetic programming population seeding[EB/OL].(2021-10-30). https://arxiv.org/abs/2111.00053.
[16]Xing Hengrui, Salleb-Aouissi A, Verma N. Automated symbolic law discovery:a computer vision approach[C]// Proc of AAAI Conference on Artificial Intelligence.Palo Alto,CA:AAAI Press,2021: 660-668.
[17]涂同珩, 金煒東. 基于自動(dòng)機(jī)器學(xué)習(xí)流程優(yōu)化的雷達(dá)輻射源信號(hào)識(shí)別[J]. 計(jì)算機(jī)應(yīng)用研究, 2019, 36 (1): 191-193. (Tu Tong-heng, Jin Weidong. Radar emitter signal recognition based on optimization of automatic machine learning pipeline[J]. Application Research of Computers, 2019, 36 (1): 191-193. )
[18]De Frana F O, Virgolin M, Kommenda M, et al. Interpretable symbolic regression for data science: analysis of the 2022 competition[EB/OL]. (2023). https://arxiv.org/abs/2304. 01117.
[19]Petersen B, Larma K, Landajuela M M,et al. Deep symbolic regression: recovering mathematical expressions from data via risk-seeking policy gradients[EB/OL]. (2021-04-05). https://arxiv.org/abs/1912.04871.
[20]林宇坤. 基于策略的深度強(qiáng)化學(xué)習(xí)在多主體復(fù)雜經(jīng)濟(jì)系統(tǒng)仿真中的應(yīng)用[D]. 福州: 福州大學(xué), 2023. (Lin Yukun. Application of strategy-based deep reinforcement learning in multi-agent complex economic system simulation[D]. Fuzhou: Fuzhou University, 2023.)
[21]Fisher I. The theory of interest[M]. New York:Macmillan,1930.