(1.浙江工業大學 計算機科學與技術學院,浙江 杭州 310023;2.浙江大學醫學院附屬浙江醫院,浙江 杭州 310023)
近年來,兒童青少年生長發育問題受到廣泛關注。國務院在2017年發布的《國民營養計劃》中明確指出:到2020年,中國兒童青少年的生長遲緩率要保持在5%以下[1]。在我國,針對兒童成年身高預測的研究主要應用在運動員的選材方面[2]。在運動員選材時,身高是一項十分重要的形態指標。有些項目需要運動員個子高一些,如籃球、排球等;有些項目需要運動員個子矮一些,如舉重、跳水等。這就需要教練員在選拔運動員之前能夠準確預測他們成年后的身高[3]。兒童青少年在生長發育過程中可能會因為某些激素的缺失影響身高的增長,如生長激素的缺失會導致兒童身材矮小,無法達到同齡人的標準身高[4]。對兒童青少年成年后身高的預測,不但能夠及時發現兒童青少年在生長發育過程中的異常情況,而且還能及時進行干預治療,幫助其減少發育異常帶來的不良影響。兒童青少年的成年身高作為評估其生長發育情況的一項重要指標,一直是大家關心的重點[5]。因此,提出一種較為精確的身高預測方法具有重要的社會意義。目前,國內外的專家學者提出了很多兒童成年身高預測方法:賀矗[6]提出了一種利用赤足跡來預測身高的方法,根據主成分分析法從赤足跡中得到主成分,利用這些主成分構建的多元回歸模型雖然比當前已有的多元回歸方程準確度更高,但是該方法實驗時所使用的樣本量較少,實驗結果的適用性還有待進一步驗證;潘嘉嚴等[7]對TW2法中的身高預測公式進行了改進,得到了TW3成年身高預測改良法,與傳統的身高預測方法相比,準確度得到了提高;Karlberg等[8]利用父母身高、兒童的妊娠長度、出生時的大小、最高峰速度的估計年齡(PHV)和8歲之前的身高測量值,結合多元回歸分析,預測兒童青少年的成年身高;Beunen等[9]使用Beunen-Malina-Freitas方法來預測女孩的成年身高,該方法雖然在預測12~15 歲女孩的成年身高時是有效的,但是在預測較低年齡段女孩成年身高時準確度較低。后面兩個方法所使用的實驗數據并非來自中國,并且年代久遠,因此不太適用于中國人口或具有中國血統的人口。隨著人工智能領域的興起,機器學習的方法在兒童青少年身高預測上被廣泛應用:Shmoish等[10]根據兒童青少年的身高和體重數據,分析了線性、多層感知機(MLP)、決策樹和隨機森林等回歸模型預測兒童成年身高的可行性,發現隨機森林回歸模型預測精度較好;Thodberg等[11]提出了一種基于骨齡自動評判的成人身高預測新方法,并取得了不錯的結果。
雖然目前已有大量的身高預測方法,但是大多數方法都已經隨著兒童青少年身體素質的提升而被逐漸淘汰,并且預測的準確率也不夠高。為了準確預測兒童青少年的成年身高,筆者基于BP神經網絡提出一種高精度的兒童成年身高預測方法。針對BP神經網絡易陷入局部最優解的不足,提出一種基于位置策略的蟻獅算法(Location strategy ant lion optimization,LSALO)并對其進行優化。該算法的主要改進之處在于改變了螞蟻隨機游走的方式,加強了算法的全局搜索能力。
BP神經網絡是一種按誤差反向傳播算法進行學習的多層前饋網絡,由輸入層、隱藏層和輸出層構成,是目前應用最廣泛的神經網絡模型之一[12]。典型的BP神經網絡如圖1所示,圖1中(X1,X2,…,Xn)為一組輸入值,其期望值為Y;Wij為輸入層與隱藏層之間的權值;i為輸入值的個數;j為隱藏層神經元的個數;Vj1為隱藏層與輸出層之間的權值。BP神經網絡預測模型主要由兩個過程構成:輸入信號的正向傳播和誤差信號的反向傳播。正向傳播時,傳播方向由輸入層經過隱藏層最后從輸出層輸出,若在輸出層得到的值與期望值相差較大,則開始誤差信號的反向傳播,按誤差梯度下降的方式修正各層權值[13]。通過這兩個過程對網絡進行反復訓練,最終使輸出結果的誤差在要求的范圍內。

圖1 BP神經網絡示意圖Fig.1 Schematic diagram of BP neural network
蟻獅優化算法ALO (Ant lion optimizer)是澳大利亞學者Mirjalili[14]在2015年提出的一種新的群體智能優化算法。研究證明:蟻獅算法的尋優能力要優于粒子群算法、遺傳算法和螢火蟲算法等7 種智能算法,該算法通過模擬自然界中蟻獅捕捉螞蟻的行為進行全局最優解的搜索[14]。蟻獅算法包括以下幾個角色:螞蟻、蟻獅以及精英蟻獅。螞蟻代表嘗試解,它可以圍繞蟻獅隨機游走,嘗試尋找解空間上的最優解;蟻獅代表局部最優解,當圍繞蟻獅游走的螞蟻搜索到比該蟻獅更優的位置時,蟻獅會將螞蟻“吃掉”(將螞蟻當前位置賦值給蟻獅),取代螞蟻當前的位置;精英蟻獅代表全局最優解,每次更新后,都會從全部蟻獅中選取位置最好的蟻獅作為精英蟻獅。通過這樣不斷迭代,最后得到一個較精確的全局最優解。
螞蟻的隨機游走可以通過數學的方式表示為
X(t)=[0,cumsum(2r(1)-1),cumsum(2r(t)-
1),…,cumsum(2r(T)-1)]
(1)
式中:cumsum為位置的累加和;t為當前的迭代次數;T為最大迭代次數;r(t)為一個隨機函數,表示為

(2)
式中rand為在[0,1]的范圍內生成的隨機數。螞蟻的游走范圍并不是無限制的,螞蟻只能在搜索空間內發生隨機游走的動作,具體公式為
(3)

(4)
(5)
式中:ct為所有變量在第t次迭代時的最小值;dt為所有變量在第t次迭代時的最大值。
通過適應度函數可以判斷螞蟻位置的優劣,并記錄每個螞蟻的適應度值,即
(6)
式中:FOA用來記錄每組螞蟻的適應度;Ki,j為第i個螞蟻第j維的值;n為螞蟻的數量;f為適應度函數。
適應度越高,說明螞蟻的位置越好。在每一次迭代時,如果在蟻獅的狩獵范圍內出現適應度更高的螞蟻,蟻獅就會將其捕捉并吃掉,代替螞蟻原來的位置,即將螞蟻的位置值賦值給蟻獅,表達式為

(7)
每次迭代之后,從所有蟻獅中選出一只適應度最高的蟻獅作為精英蟻獅。當迭代次數達到最大迭代次數或者誤差范圍時停止搜索,這時的精英蟻獅即代表解空間范圍內的全局最優解。
蟻獅算法具有調節參數少、收斂精度高和魯棒性好等優點,已被應用到多種參數尋優場合。在傳統的蟻獅算法中,蟻獅位置的優劣是根據適應度來評判的,適應度高的蟻獅周圍有更多的螞蟻圍繞其游走,找到解空間上全局最優解的概率增大。適應度低的蟻獅很少會有螞蟻在其身邊游走,蟻獅作用減小,同時可能會因為蟻獅的位置不佳,算法在一定程度上存在陷入局部最優的問題。因此,為進一步提高蟻獅算法的尋優能力,對算法進行改進。
在原始的蟻獅算法中,螞蟻圍繞蟻獅進行隨機游走,蟻獅的選擇使用輪盤賭的方式,對于適應度高的蟻獅來說被選中的概率更大。當蟻獅所處的位置不夠好時,螞蟻的尋優過程就相當于在局部范圍內尋找局部最優解。為了降低這種情況發生的概率,在每次迭代時對蟻獅進行以下替換操作:
Step1假設原始的蟻獅數量為n,在一次迭代完成之后,隨機初始化相同數量的蟻獅。
Step2計算新蟻獅群的適應度值,對原蟻獅群和新蟻獅群進行排序,適應度值較高的蟻獅排在前面。
Step3運用貪心選擇機制選擇適應度更高的n個蟻獅作為下一次迭代的原始蟻獅群。

(8)
(9)

經過替換,原來位置不好的蟻獅被位置更好的蟻獅所替換。不僅螞蟻在尋找最優解,蟻獅也同樣在尋找最優解出現的范圍。因此,算法的搜索能力得到了提高。
每個新替換蟻獅適應度較高,但是會出現未被輪盤賭選中的情況,導致蟻獅替換成為無意義動作,無法發揮其作用。因此,只要判斷出有新蟻獅的更替,就使螞蟻圍繞其隨機游走,保證每個新蟻獅都有其存在的意義。而精英蟻獅是每次迭代后選出的全局最優解,它在很大程度上影響了螞蟻的隨機游走,所以在每次迭代時,讓螞蟻圍繞精英蟻獅、新替換蟻獅以及通過輪盤賭選中的蟻獅進行隨機游走。在蟻獅優化算法中,前期螞蟻游走的步長要大,越到后期步長越小,直到收斂到某一位置附近,所以引入了步長調節函數y(t),其數學表達式為
(10)
對螞蟻隨機游走的過程進行調整,數學表達式為
(11)
(12)
(13)


圖2 y(t)函數圖像Fig.2 Function image of y(t)
每次迭代螞蟻隨機游走的最終位置為
(14)

假設有m個蟻獅被替換,螞蟻尋優過程結束后就會出現m個新的螞蟻。這些螞蟻根據式(14)得到最終位置。螞蟻的位置越好,適應度值越高,則越容易被蟻獅“吃掉”。因此,螞蟻的位置在一定程度上決定了最優解出現的位置。為了提高LSALO算法的尋優效率,對適應度值低的螞蟻進行替換。

(15)
(16)

螞蟻替換過程和蟻獅替換過程是相輔相成的。蟻獅確定螞蟻的搜索范圍,螞蟻在該范圍內尋找最優解。在原始的蟻獅算法中,蟻獅的更替只能通過“吃掉”位置更好的螞蟻來實現。算法改進后,位置較差螞蟻和蟻獅能夠被位置更好的螞蟻和蟻獅替換,使得算法更容易找到最優解,提高了算法的搜索效率。
為了得到BP神經網絡的最優權值,選擇樣本集實際值與BP神經網絡預測值的均方誤差作為預測準確度的判斷標準。均方誤差越小,說明當前的權值越好。因此,選擇均方誤差的倒數作為LSALO的適應度函數,其表達式為
(17)
式中:FMSE為均方誤差;n為樣本總數;Yi為第i個樣本實際值;_Yi為第i個BP神經網絡預測值。
LSALO-BP算法由兩個部分組成,LSALO部分和BP神經網絡訓練部分,具體步驟如下:
Step1初始化算法的各項參數。
Step2計算每個蟻獅所在位置的適應度值,記錄每個蟻獅當前適應度值和全局最優值。
Step3記錄每個蟻獅當前適應度值和全局最優值,將全局最優值作為權值賦值給BP神經網絡,運行BP神經網絡進行一次訓練。
Step4根據BP神經網絡的返回值,判斷是否滿足停止迭代條件,若滿足,結束循環,否則跳至下一步。
Step5利用式(8,9)替換適應度值較低的蟻獅,并利用貪婪選擇機制選擇蟻獅。
Step6螞蟻根據式(14)進行隨機游走并更新其位置和適應度值。
Step7利用式(15,16)替換適應度值低的螞蟻。跳轉至Step 3。
LSALO-BP算法流程圖如圖3所示,其中左側為LSALO部分,右側為BP神經網絡訓練部分。

圖3 LSALO-BP算法流程圖Fig.3 LSALO-BP algorithm flow chart
本研究使用的數據集來自浙江省的中小學。筆者獲取到兒童的基本信息,并通過回訪的形式確認檢測者成年后的身高,總計1 096 人,其中男生647 人,女生449 人。訓練集和測試集的劃分見表1。最終的數據信息包括:性別、年齡、骨齡和當前身高。這些數據來自浙江省的城市學校以及鄉村學校,保證了數據的多樣性,并且數據的可用性要優于來自醫院的數據。

表1 訓練集和測試集的劃分Table 1 The division of training set and test set 單位:人
通過對回訪樣本數據的整理分析,樣本中年齡人數的基本分布情況如圖4,5所示。以6歲為例,表示的是6歲0~12月的人數。采集的數據樣本中,男女生樣本分布較均勻。處于青春期的人數較多,說明兒童在到達青春期后開始重視自身的身高情況。通過對比圖4,5可知女生開始發育的時間要早于男生。

圖4 男生年齡人數分布情況Fig.4 Distribution of boys by age

圖5 女生年齡人數分布情況Fig.5 Distribution of girls by age
樣本中骨齡的分布情況如圖6,7所示。根據骨齡和年齡之間的關系,可將兒童的發育情況分為3 種,即發育遲緩、發育正常和發育提前。發育遲緩表示骨齡小于年齡1 歲或1 歲以上,發育正常表示骨齡和年齡相差在1 歲以內,發育提前表示骨齡大于年齡1 歲或1 歲以上。樣本中包括了以上3 種發育情況的兒童,具有可靠性。

圖6 男生骨齡人數分布情況Fig.6 Distribution of boys’ bone age

圖7 女生骨齡人數分布情況Fig.7 Distribution of girls’ bone age
為了驗證位置策略的有效性,選取10 個基準函數進行算法的對比實驗,結果如表2所示。表2中:f1~f4為單峰函數;f5~f7為多峰函數;f8~f10為固定低緯度下的多峰函數。對比的對象為原始ALO算法以及文獻[15]提出的OB-L-ALO算法[15]。

表2 基準函數Table 2 Benchmark function
為了體現本次對比實驗的公平性,3 種算法采用相同的參數設置,即種群規模N=30,最大的迭代次數T=1 000,并且將不同算法對每個基準函數獨立運行30 次,取實驗結果的平均值進行比較,以減小隨機性帶來的影響。ALO算法、OB-L-ALO算法和LSALO算法的實驗結果如表3所示,ALO算法和LSALO算法的迭代收斂曲線對比情況如圖8所示。

表3 基準函數對比情況Table 3 Benchmark function comparison

表3 (續)






圖8 基準函數的迭代曲線Fig.8 Iteration curve of benchmark function
由表3和圖8可知:與其他算法相比,LSALO算法取得了更好的實驗結果。對于單峰函數f3和f4,LSALO算法的實驗平均結果相比ALO算法和OB-L-ALO算法提高了1~5 個數量級,且標準方差更小,說明該算法的尋優能力強,穩定性好。對比函數f3和f4的收斂曲線發現,LSALO算法的收斂精度更高。對于多峰函數f5,ALO算法在迭代次數不到100 次時就陷入了局部最優,導致算法尋優過程早早結束。而LSALO算法的位置策略使得該算法不易陷入局部最優,全局搜索能力更強。對于固定低緯度下的多峰函數f8和f9,LSALO算法的結果平均值已經達到了理論上的最優值,尋優率達到了100%。
綜上所述,根據基準函數的優化結果可知:LSALO在全局尋優能力和收斂精度方面均優于ALO算法和OB-L-ALO算法,說明該算法是有效可行的,可以進一步應用于BP神經網絡的權值尋優問題,改進后的BP網絡可用來預測兒童成年身高。
4.3.1 BP網絡結構
BP神經網絡輸入變量選取準則有兩點[16]:1) 輸入變量應與預測對象密切相關;2) 輸入變量之間不能有較強的線性關系。基于這兩個準則,選取兒童檢測時的身高、骨齡以及年齡作為輸入量,表達式為
Xi=(X(age)i,X(boneage)i,X(height)i)
(18)
式中:Xi為第i組輸入值;X(age)i為第i個兒童的檢測年齡;X(boneage)i為第i個兒童當前的評估骨齡;X(height)i為第i個兒童的當前身高。輸出層以兒童成年預測身高作為輸出值。
骨齡、年齡等身體基本信息和成年身高之間并不是簡單的線性關系,且每個兒童的生長發育情況不同,導致輸入量呈現多樣性的特征。BP神經網絡具有較強的非線性映射能力和自學習能力,能夠更高效地建立多因子模型[17],本次實驗的BP神經網絡采用雙隱藏層的設計。
在BP神經網絡模型中,隱藏層節點數太少將導致欠擬合,節點數過多將導致過擬合,降低神經網絡的泛化能力。常用的隱藏層節點數選擇公式為
(19)
式中:NH為隱藏層節點數;ni為輸入層節點數;l為輸出層節點數;?為1~10的常數。根據式(19)計算,隱藏層節點數NH的取值范圍可以確定為[2,12]。大量實驗表明:當第1層隱藏層節點數為輸入層節點數的2倍,第2層隱藏層節點數和輸入層節點數一致時,BP神經網絡的訓練效果最好。因此,可以確定BP神經網絡的結構為3-6-3-1。
4.3.2 預測結果比較
將LSALO-BP模型與GA-BP模型[18]、PSO-BP模型[19]、BP神經網絡和Bayley-Pinneau法[20]進行對比,對樣本進行預測分析。以真實值和預測值的差值是否在±2 cm以內作為準確性的判斷依據。男生、女生成年身高預測的分析結果分別如表4,5所示。由表4可知:LSALO-BP模型針對男生的預測結果在準確性和標準差方面要優于其他預測模型,準確率達到了86.67%,標準差為1.176,相較于BP神經網絡,準確率提高了16.08%;由表5可知:LSALO-BP模型針對女生的預測結果在準確性和標準差方面仍然優于其他預測模型,準確率達到了85.32%,標準差為1.615。

表4 男生成年身高預測分析Table 4 Predictive analysis of adult height of boys

表5 女生成年身高預測分析Table 5 Predictive analysis of adult height of girls
誤差分析結果采用箱線圖展示,結果如圖9所示。箱線圖能夠直觀地判斷誤差的離散分布情況,了解誤差的分布狀態,并能識別出誤差中異常值。誤差的范圍用垂直距離表示,誤差的四分位間距由箱子的高度表示。圖9(a,b)分別表示男生、女生的誤差分析結果。由圖9(a)可知:LSALO-BP模型預測誤差的四分位間距和中位數都要優于其他預測模型;由圖9(b)可知:LSALO-BP模型預測誤差的四分位間距和中位數與Bayley-Pinneau法相似,但是異常值的數量要少于Bayley-Pinneau法。綜合以上分析可知LSALO-BP預測模型的性能要優于其他預測模型。

圖9 誤差分布圖Fig.9 Error distribution map
筆者利用回訪的兒童青少年成年身高樣本,對基于LSALO-BP模型的兒童青少年成年身高預測模型進行實例驗證,每個性別隨機抽取20 個實例,預測結果如表6,7所示,其中年齡、骨齡以及身高指的是當時檢測時所采集的數據,成年身高是回訪采集到的數據,絕對差值表示成年身高和成年預測身高之間差值的絕對值。由表6可知:男生的成年身高與成年預測身高的絕對差值總體保持在±2.0 cm范圍內,最大差值為2.68 cm,最小差值為0.02 cm;由表7可知:女生的成年身高與成年預測身高的絕對差值總體也都保持在±2.0 cm 范圍內,最大差值為2.42 cm,最小差值為0.02 cm。實例驗證表明:基于LSALO-BP模型的兒童青少年成年身高預測模型預測結果精確度較高,誤差波動較小,可以用來預測兒童青少年成年身高。

表6 男生成年身高預測具體結果Table 6 Prediction results of adult height of boys

表7 女生成年身高預測具體結果Table 7 Prediction results of adult height of girls
針對傳統成年身高預測存在預測方法過時、預測精度不高等問題,基于BP神經網絡提出了一種高精度的兒童成年身高預測方法。為了彌補BP神經網絡易陷入局部最優解的不足,提出基于位置策略的蟻獅優化算法。該算法通過改變螞蟻的游走方式和替換方式,增強了全局搜索能力和局部優化能力。通過對不同基準函數的優化求解,將LSALO與原始蟻獅算法和其改進算法進行對比,驗證了位置策略的有效性。將LSALO算法優化的BP神經網絡應用于兒童成年身高預測,選取4 種不同的模型與其進行對比。實驗結果表明:LSALO-BP模型的預測精確度更高,誤差波動更小,可以準確地預測兒童成年身高。