余 苗 陶 婷 陳 佳
(成都理工大學(xué)管理科學(xué)學(xué)院 四川 成都 610059)
曲線擬合是用連續(xù)曲線近似地刻畫或比擬平面上離散點(diǎn)組所表示坐標(biāo)之間的函數(shù)關(guān)系的一種數(shù)據(jù)處理方法。從一組實(shí)驗(yàn)數(shù)據(jù)(xi,yi)中尋求自變量x和因變量y之間的函數(shù)關(guān)系 y=f(x)來(lái)反映 x和y之間的依賴關(guān)系,即在一定意義下最佳地逼近已知數(shù)據(jù)。
對(duì)y=sin(x)曲線實(shí)現(xiàn)擬合
(一)訓(xùn)練數(shù)據(jù)導(dǎo)入
對(duì)樣本數(shù)據(jù)的獲取,可以通過(guò)用元素列表直接輸入、創(chuàng)建數(shù)據(jù)文件、從數(shù)據(jù)文件中讀取等方式。
(二)網(wǎng)絡(luò)初始化
根據(jù)系統(tǒng)輸入輸出序列,確定網(wǎng)絡(luò)輸入層節(jié)點(diǎn)數(shù)為1,隱含層節(jié)點(diǎn)數(shù)為20,輸出層節(jié)點(diǎn)數(shù)為1。初始化輸入層、隱含層和輸出層神經(jīng)元之間的連接權(quán)值wij,vjk,初始化隱含層閾值t0,輸出層閾值t1,給定學(xué)習(xí)速率a0,a1和u,給定算法迭代次數(shù)inum、最大可接受誤差error、神經(jīng)元激勵(lì)函數(shù)sigmoid。
(三)向前輸出計(jì)算
根據(jù)輸入變量x,輸入層和隱含層間連接權(quán)值wij和隱含層閾值t0,計(jì)算隱含層輸出P:
f為隱含層激勵(lì)函數(shù),該函數(shù)可設(shè)置為多種形式,本實(shí)驗(yàn)中所選函數(shù)為:
根據(jù)隱含層輸出P,隱含層和輸出層間連接權(quán)值vjk和輸出層閾值t1,計(jì)算BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)輸出Qk:
其中m為輸出層節(jié)點(diǎn)數(shù),本實(shí)驗(yàn)中取1。
(四)權(quán)值修正
根據(jù)網(wǎng)絡(luò)預(yù)測(cè)輸入Q和期望輸出y,計(jì)算網(wǎng)絡(luò)預(yù)測(cè)誤差e:
ek=yk-Qk
BP神經(jīng)網(wǎng)絡(luò)采用梯度修正法作為權(quán)值和閾值的學(xué)習(xí)算法,從網(wǎng)絡(luò)預(yù)測(cè)誤差的負(fù)梯度方向修正權(quán)值和閾值。在本實(shí)驗(yàn)采用的sigmoid激勵(lì)函數(shù)下,隱含層和輸出層間連接權(quán)值和輸出層閾值更新公式為:
vjk=vjk+u*a1Pjekj=1,2,…,l;k=1,2,…,m
t1k=t1k+u*ekk=1,2,…,m
輸入層和隱含層間連接權(quán)值和輸出層閾值更新公式為:
通過(guò)是否達(dá)到迭代次數(shù)或者錯(cuò)誤率是否在可接受范圍內(nèi)來(lái)判斷算法迭代是否結(jié)束,若沒(méi)有結(jié)束,則繼續(xù)迭代。
圖1 迭代60次擬合
圖2 迭代200次擬合
通過(guò)上面兩個(gè)圖可以看出,隨著迭代次數(shù)的增加,預(yù)測(cè)誤差是逐漸減小的,在開始的迭代中,誤差減小較快,最后經(jīng)過(guò)規(guī)定次數(shù)的迭代,基本上能將函數(shù)y=sin(x)擬合出來(lái)。雖然BP神經(jīng)網(wǎng)絡(luò)具有較高的擬合能力,但是預(yù)測(cè)結(jié)果仍然存在一定的誤差,其擬合能力也存在一定的局限。