□文/宋欣欣 閔海華 刁 鈺 秘 誠(chéng)
綜合管廊作為目前城市現(xiàn)代化市政基礎(chǔ)設(shè)施的標(biāo)志之一,其規(guī)劃路徑選擇至關(guān)重要,與用地功能及強(qiáng)度、道路等級(jí)及建成度、地下開(kāi)發(fā)情況等多種因素有關(guān)[1],但現(xiàn)階段綜合管廊的規(guī)劃工作主觀(guān)性過(guò)強(qiáng)而科學(xué)性不足。
基于上述問(wèn)題,引入機(jī)器學(xué)習(xí)方法,可以相對(duì)客觀(guān)地對(duì)某一地段管廊適建性進(jìn)行評(píng)估;主要應(yīng)用機(jī)器學(xué)習(xí)算法中的神經(jīng)網(wǎng)絡(luò)算法以及梯度上升算法作為輔助管廊規(guī)劃工作的工具,神經(jīng)網(wǎng)絡(luò)算法與梯度上升算法具有高度非線(xiàn)性的特點(diǎn)[2],可以描述管廊規(guī)劃工作中管廊的適建性與影響管廊建設(shè)各因素之間的關(guān)系。本文介紹了原始數(shù)據(jù)的獲取、神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的建立、應(yīng)用神經(jīng)網(wǎng)絡(luò)工具進(jìn)行管廊規(guī)劃三部分,展示了應(yīng)用神經(jīng)網(wǎng)絡(luò)算法的管廊規(guī)劃方法;在此基礎(chǔ)上引入了更為便捷簡(jiǎn)單的梯度上升算法,與神經(jīng)網(wǎng)絡(luò)算法進(jìn)行對(duì)照分析。
利用機(jī)器學(xué)習(xí)進(jìn)行分析主要包括三部分:首先收集用于訓(xùn)練的原始數(shù)據(jù);然后選擇機(jī)器學(xué)習(xí)方法對(duì)原始數(shù)據(jù)中的訓(xùn)練集進(jìn)行學(xué)習(xí);最后利用原始數(shù)據(jù)中的測(cè)試集對(duì)機(jī)器學(xué)習(xí)算法的準(zhǔn)確度進(jìn)行評(píng)估。利用這一方法可以減少?zèng)Q策問(wèn)題中的主觀(guān)性[3]。
在管廊規(guī)劃問(wèn)題中,機(jī)器學(xué)習(xí)具體方法:選取某管廊建設(shè)情況良好地區(qū),對(duì)該地區(qū)街道的管廊適建性總體評(píng)分,同時(shí)對(duì)管廊建設(shè)的各分項(xiàng)影響因子打分,作為用于機(jī)器學(xué)習(xí)訓(xùn)練的原始數(shù)據(jù);構(gòu)建學(xué)習(xí)模型,調(diào)整模型中的參數(shù),以得到最適合管廊建設(shè)的機(jī)器學(xué)習(xí)模型;應(yīng)用建立好的機(jī)器學(xué)習(xí)模型處理某一待規(guī)劃地區(qū)的影響因子得分,得到該地區(qū)每條道路的管廊適建性得分,根據(jù)這一得分完成管廊規(guī)劃工作。見(jiàn)表1和圖1。
表1 機(jī)器學(xué)習(xí)訓(xùn)練原始數(shù)據(jù)
如表1 所示,本研究認(rèn)為與管廊適建性有關(guān)的因素共6 個(gè),分別為用地功能及強(qiáng)度、管線(xiàn)重要度、道路等級(jí)及建成度、地下開(kāi)發(fā)情況、交通路況和景觀(guān)功能。利用某地區(qū)290條道路的數(shù)據(jù)作為原始數(shù)據(jù)集進(jìn)行訓(xùn)練,原始數(shù)據(jù)集被劃分為兩部分,200 份作為訓(xùn)練集,90份作為測(cè)試集。
首先利用基于神經(jīng)網(wǎng)絡(luò)算法對(duì)輸入數(shù)據(jù)分析,求得影響因素與管廊適建性之間的關(guān)系,以定量解決管廊規(guī)劃問(wèn)題。
神經(jīng)網(wǎng)絡(luò)(ANN)是20世紀(jì)80年代以來(lái)機(jī)器學(xué)習(xí)領(lǐng)域的一個(gè)研究熱點(diǎn)。近年來(lái),人工神經(jīng)網(wǎng)絡(luò)的研究工作取得了很大進(jìn)展,成功地解決了現(xiàn)代計(jì)算機(jī)在模式識(shí)別、智能機(jī)器人、自動(dòng)控制、預(yù)測(cè)估計(jì)、生物、醫(yī)學(xué)和經(jīng)濟(jì)等領(lǐng)域中難以解決的許多實(shí)際問(wèn)題。
人工神經(jīng)網(wǎng)絡(luò)從信息處理的角度抽象人腦神經(jīng)網(wǎng)絡(luò),建立一個(gè)簡(jiǎn)單的模型并根據(jù)不同的連接方法形成不同的網(wǎng)絡(luò)。神經(jīng)網(wǎng)絡(luò)是一種操作模型,由大量的節(jié)點(diǎn)(或神經(jīng)元)相互連接組成;每個(gè)節(jié)點(diǎn)表示一個(gè)特定的輸出函數(shù),稱(chēng)為激發(fā)函數(shù)(激活函數(shù));每?jī)蓚€(gè)節(jié)點(diǎn)之間的連接表示連接信號(hào)的加權(quán)值,稱(chēng)為權(quán)值,相當(dāng)于人工神經(jīng)網(wǎng)絡(luò)的存儲(chǔ)器。網(wǎng)絡(luò)的輸出依賴(lài)網(wǎng)絡(luò)的連接方式、權(quán)重值和激勵(lì)功能,網(wǎng)絡(luò)本身是某種算法或函數(shù)的近似,也可能是一種邏輯策略的表達(dá)[4]。
神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)由若干神經(jīng)元組成,在深度學(xué)習(xí)技術(shù)中,通過(guò)損失函數(shù)的大小判斷一個(gè)神經(jīng)網(wǎng)絡(luò)模型表現(xiàn)是否良好;而神經(jīng)網(wǎng)絡(luò)隨著訓(xùn)練性能逐漸提升的過(guò)程也在損失函數(shù)值下降的過(guò)程中體現(xiàn)。這個(gè)下降的過(guò)程指的就是通過(guò)梯度下降法找到損失函數(shù)中的全局最小值,當(dāng)損失達(dá)到全局最小時(shí)該次訓(xùn)練完成;該點(diǎn)得到的神經(jīng)元權(quán)重值組成的神經(jīng)網(wǎng)絡(luò)模型即為訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)模型。
選用均方誤差MSE(Mean square error)作為損失函數(shù)。均方誤差損失函數(shù)是一種平方損失(Square loss),是反映估計(jì)量與被估計(jì)量之間差異程度的一種度量[3],是通過(guò)神經(jīng)網(wǎng)絡(luò)得到的數(shù)據(jù)偏離真實(shí)值的距離的平方和的平均數(shù),其表達(dá)式為
式中:k為當(dāng)前計(jì)算損失函數(shù)的數(shù)據(jù);n為總數(shù)據(jù)量為該組數(shù)據(jù)的期望值為輸入量通過(guò)神經(jīng)網(wǎng)絡(luò)模型后的返回值,是關(guān)于神經(jīng)網(wǎng)絡(luò)中每一個(gè)節(jié)點(diǎn)的權(quán)重值w的函數(shù)。
相較于其他損失函數(shù),均方誤差損失函數(shù)較為適合用于回歸問(wèn)題中對(duì)神經(jīng)網(wǎng)絡(luò)模型表現(xiàn)進(jìn)行評(píng)估。
神經(jīng)網(wǎng)絡(luò)模型的調(diào)整是通過(guò)神經(jīng)元間連接的權(quán)重值的調(diào)整實(shí)現(xiàn)的,相應(yīng)地,損失函數(shù)值的下降過(guò)程同樣依托于權(quán)重值的更新。
利用Matlab的神經(jīng)網(wǎng)絡(luò)工具箱實(shí)現(xiàn)原始數(shù)據(jù)的讀取、神經(jīng)網(wǎng)絡(luò)的搭建以及算法的評(píng)估等工作。見(jiàn)圖2。
圖2 Matlab設(shè)置人工神經(jīng)網(wǎng)絡(luò)
首先進(jìn)行原始數(shù)據(jù)的讀?。簩⒃紨?shù)據(jù)分為包含因素的290組六維行向量,作為輸入數(shù)據(jù);包含適建性結(jié)果的290組一維向量,作為目標(biāo)數(shù)據(jù)。
在神經(jīng)網(wǎng)絡(luò)算法中,原始數(shù)據(jù)被分為3部分:訓(xùn)練集、測(cè)試集和確認(rèn)集;其中確認(rèn)集是為了確認(rèn)訓(xùn)練好的程序適用于各種不同的情況。在本案例中,將290 組原始數(shù)據(jù)中的70%作為訓(xùn)練集,15%作為測(cè)試集,15%作為確認(rèn)集。
原始數(shù)據(jù)讀取完成后開(kāi)始神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的搭建,本案例中神經(jīng)網(wǎng)絡(luò)共有3層:第一層是輸入層,為六維向量,即與管廊適建性有關(guān)的6個(gè)因素;第二層是隱藏層,為神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)特有的算法結(jié)構(gòu),設(shè)置隱藏層的神經(jīng)元共有10 個(gè);第三層是輸出層,作為最終輸出結(jié)果的表達(dá)方式,為最終管廊適建性評(píng)估結(jié)果。見(jiàn)圖3。
圖3 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)建立好后,選擇萊文貝格-馬夸特方法作為訓(xùn)練算法;設(shè)置好算法后,即可開(kāi)始訓(xùn)練得到結(jié)果。該方法能提供非線(xiàn)性最小化(局部最小)的數(shù)值解,能借由執(zhí)行時(shí)修改參數(shù)達(dá)到結(jié)合高斯-牛頓算法以及梯度下降法優(yōu)點(diǎn)的目的并對(duì)兩者之不足作改善(比如高斯-牛頓算法之反矩陣不存在或是初始值離局部極小值太遠(yuǎn))。
結(jié)果顯示,神經(jīng)網(wǎng)絡(luò)算法在進(jìn)行到第296 次擬合時(shí)確認(rèn)集表現(xiàn)最佳,其均方誤差達(dá)到最佳值。計(jì)算過(guò)程中梯度下降過(guò)程正常,其余各項(xiàng)指標(biāo)的表現(xiàn)也在正常范圍內(nèi)。計(jì)算結(jié)果的誤差很小,可以采用神經(jīng)網(wǎng)絡(luò)方法計(jì)算得到的結(jié)果作為管廊規(guī)劃的依據(jù)。見(jiàn)圖4-圖6。
圖4 均方差情況
圖5 神經(jīng)網(wǎng)絡(luò)計(jì)算過(guò)程中梯度變化
圖6 神經(jīng)網(wǎng)絡(luò)計(jì)算結(jié)果誤差分布
神經(jīng)網(wǎng)絡(luò)算法雖然能夠較好地解決非線(xiàn)性規(guī)劃問(wèn)題,但其在實(shí)際操作過(guò)程中計(jì)算量較大、耗時(shí)長(zhǎng)且對(duì)各項(xiàng)參數(shù)設(shè)置有較高要求,因此本研究進(jìn)一步提出更為便捷簡(jiǎn)單的基于梯度上升算法的管廊規(guī)劃。
梯度上升算法為回歸問(wèn)題中的一種算法。其本質(zhì)是在給定已知數(shù)據(jù)的前提下對(duì)輸出量與輸入量間的關(guān)系算出一個(gè)一般性的估值函數(shù),然后對(duì)給定新數(shù)據(jù)的輸出量進(jìn)行估算;其目標(biāo)是在已知數(shù)據(jù)框架內(nèi),使估算值與實(shí)際值的總均方誤差盡量更小;其實(shí)現(xiàn)是通過(guò)迭代的方法得到局部最大值[5]。
通過(guò)迭代的方法逐步逼近函數(shù)最大值,以尋找最佳擬合參數(shù),其迭代公式為
應(yīng)用式(2)找到全局最大值,求得此時(shí)的參數(shù),即為一個(gè)訓(xùn)練過(guò)程,經(jīng)過(guò)若干訓(xùn)練過(guò)程后得到的結(jié)果即可用于管廊規(guī)劃。
本算法通過(guò)python 語(yǔ)言實(shí)現(xiàn),利用sklearn 庫(kù)中的Gradient BoostingRegressor 工具作為實(shí)現(xiàn)梯度上升的主程序并通過(guò)Numpy 庫(kù)中的reshape 工具將結(jié)果輸出為列向量,便于結(jié)果的導(dǎo)出和整理。見(jiàn)圖7。
圖7 導(dǎo)入梯度上升主程序
將最終輸出結(jié)果導(dǎo)入Excel中進(jìn)行分析,該算法在90個(gè)測(cè)試集中的表現(xiàn)見(jiàn)圖8。
圖8 性誤差對(duì)照
由圖8可知,該算法表現(xiàn)良好,可以較為準(zhǔn)確地實(shí)現(xiàn)管廊適建性的預(yù)測(cè)。
1)利用神經(jīng)網(wǎng)絡(luò)算法獲取影響因素與適建性關(guān)系,建立了良好的神經(jīng)網(wǎng)絡(luò)模型并調(diào)整參數(shù),使其在管廊規(guī)劃問(wèn)題中有較好的表現(xiàn)。
2)提出了基于梯度上升算法的管廊規(guī)劃方法。該方法融合了神經(jīng)網(wǎng)絡(luò)自動(dòng)化、客觀(guān)性以及處理非線(xiàn)性關(guān)系的優(yōu)點(diǎn),同時(shí)避免了神經(jīng)網(wǎng)絡(luò)發(fā)操作過(guò)程中計(jì)算量較大、耗時(shí)長(zhǎng)的缺點(diǎn)。
在確定影響因素與適建性關(guān)系的過(guò)程中共選用了兩種算法,經(jīng)過(guò)對(duì)照分析,二者都可以準(zhǔn)確地實(shí)現(xiàn)管廊適建性的預(yù)測(cè),但均需要大量的數(shù)據(jù)庫(kù)用于訓(xùn)練才可以有較為準(zhǔn)確的表現(xiàn)。在本案例的290個(gè)數(shù)據(jù)的情況下這兩種算法已經(jīng)取得了令人滿(mǎn)意的成績(jī),若可以有更多數(shù)據(jù)作為原始數(shù)據(jù)供機(jī)器學(xué)習(xí)算法學(xué)習(xí)的話(huà),其在管廊適建性預(yù)測(cè)上的表現(xiàn)則會(huì)更加優(yōu)秀。此外,該項(xiàng)目實(shí)現(xiàn)過(guò)程中并未對(duì)機(jī)器學(xué)習(xí)算法實(shí)現(xiàn)過(guò)程中的各小參數(shù)進(jìn)行調(diào)整,若嘗試調(diào)整算法中的各項(xiàng)參數(shù),如:神經(jīng)層層數(shù),神經(jīng)元數(shù)等,則可能會(huì)得到更為優(yōu)秀的結(jié)果。