棉花是一種重要農作物,既可以用于紡織產品也可以用作工業原料。棉花產量的增減關系著人民的生產、生活、收入及國防工業的發展和社會的穩定,因此,有必要對棉花產量進行動態監測和預測,對種植量進行適時調整,以免出現供過于求或供不應求的情況。只有適時、精確地掌握棉花生產、銷售、加工等環節的信息,引導產業鏈上各利益群體采取積極有效的措施,減小產業震蕩,降低行業風險,才能讓棉花產業健康持續地發展,因而有必要建立一種有效的棉花產量動態監測模型。
在農業產品產量預測方面,尹邦華等[1]以湖南省2001年至2017年間的糧食產量為基礎,采用復合馬爾可夫算法與灰色模型預估湖南省未來幾年糧食產量,結果顯示此種復合模型的預測精度優于單一的灰色模型。吳葉等[2]以2015年至2017年棉花月度平均價格為樣本數據,使用MIVGA-BP模型進行預測,試驗結果顯示MIV-GA-BP模型的預測準確性比普通BP模型有明顯提高。余焰文[3]結合江西省1990—2015年油菜年產量和氣象條件預測油菜產量,并分析3種模型的準確率,結果表明輻熱積模型預測精度最高。
棉花產業包括生產、銷售、儲藏及加工等諸多環節,要對其進行精確預測,存在很大難度。而BP[4](Back Propagation,簡寫為BP)神經網絡[5]由于擁有很強的非線性擬合特性,已在很多領域被用于解決擬合、分類及預測等問題。因而本文使用1980—2019年全國棉花產量先訓練BP神經網絡,再使用訓練好的BP神經網絡預測2020年的棉花產量,為棉花的種植、交易及加工等環節提供數據支持。
本文以1980—2019年國家棉花年產量為先驗數據,先對歷年產量進行滑動切片生成神經網絡訓練數據,再用訓練過的網絡預測2020年的年產量。各年棉花產量如圖1所示,可見各年產量波動較大,但總體而言產量是增加的,1980年時年產量僅200多萬噸,而到了2019年就增加到了600萬噸,30年間增加了兩倍。為使用神經網絡預測2020年的棉花產量,首先要使用已有的1980—2019年全國棉花產量數據對神經網絡預測進行訓練,這就要求我們先對歷史數據進行滑動切片,把前面q年的數據和當前年份的產量組成多個“q輸入-1輸出”的數據對,作為神經網絡的輸入和輸出,用于訓練神經網絡,使其根據誤差調節各神經節點的權重和偏置值,使總的誤差最小。為使預測結果精度較高,q的值分別取3、6、9、12、15,表示滑動切片前面3年、6年、9年、12年、15年的數據,作為神經網絡的輸入,而當年的產量作為神經網絡的輸出。由于過大的數據會導致神經節點飽和使其擬合能力急劇降低,一般要將神經網絡的輸入輸出數據歸一化到區間(0,1)之間。由圖1可見,歷年棉花產量均小于1000萬噸,因而本文先將數據除以1000進行歸一化,將這些歸一化后的數據作為神經網絡的訓練數據;同理,神經網絡的輸出需要乘以1000才能得到正確的預測值。

圖1 1980—2019年歷年全國棉花產量(單位:萬噸)
圖2是本文所用神經網絡的結構,包含兩個線性層、兩個非線性層及輸入輸出層,一共6層。圖中標記為S的神經節所在的層就是非線性層,S表示該節點所用激活函數是Sigmoid函數。Sigmoid函數呈S型,在正無窮大處趨于1,在負無窮大處趨于0,具有非線性特征,神經網絡的非線性擬合或分類的能力即來源于這種非線性特征。
Sigmoid函數的公式和一階倒數分別為

神經網絡的初始輸入可表示為:

表示第0層,即神經網絡的輸入層。它是由第i年的產量及之前(q-1)年的產量組成的數據切片,共q個數。本文中,切片長度q擬采用3、6、9、12及15,并根據試驗結果,選擇最優的3個切片長度。中間各級輸出

其中,M表示神經網絡的總層數,因而第M層的輸出就是神經網絡的輸出,式中的m表示第m層。
最后一層的輸出用a表示,及第i+1年的產量。

正向計算完成后會得到一個結果(神經網絡的輸出),此結果一般與目標結果存在誤差,需要將誤差反向傳播以調節神經節點的權重和偏置:

式(6)中t表示期望的輸出,神經網絡的實際輸出理論上應該與期望的輸出t相同,但實際上二者之間總存在一定誤差,這就要反復按負梯度法調節神經節點的權重和偏置值,使它們的值越來越接近。除最后一層外,前面各層敏感性反向傳播公式如式(7)所示:

其中,W(m+1)表示第(m+1)層的權重。
最后,根據梯度下降法或共軛梯度法等算法更新各神經元的權重和偏置值:

經試驗,每層設置15個神經元比較合適,既能解決問題,節點數也不太冗余,如圖2所示。

圖2 本文所用神經網絡結構
本文中設計了兩組試驗,第一組是通過試驗選出合適的神經網絡輸入個數,即訓練用歷史數據的年份數目q;第二組試驗是先用1980—2019年產量的切片數據訓練神經網絡,再用此網絡預測2020年的棉花產量。
第一部分:本組試驗由一步預測方案和兩步預測方案組成。一步預測方案指用1980—2017年的年產量切片數據訓練神經網絡并預測2018年的棉花年產量;兩步預測方案指用1980—2017年的棉花年產量切片數據訓練神經網絡并預測2019年的棉花年產量,以檢驗遠期預測的可行性。為方便描述,當滑動切片數分別為3、6、9、12、15(即q=3、6、9、12、15)時,對應的預測方案稱為3預測1,…,15預測1等。如表1所示,當切片數q由3變化到15時,相對誤差先減小后增大,切片數q=3、15時預測效果較差,當切片數q=6、9、12時預測值的相對誤差較小,因此優先選用切片數q=6、9、12這3種方案。
從表1中可以看出對最近年份的預測值,其相對誤差較小,使用1980—2017年的棉花產量預測得到的2018年的年產量為588.93萬噸,與真實值(609.6萬噸)的相對誤差僅為0.39%;而2019年產量的預測值為537.41萬噸,與真實值(588.9萬噸)相對誤差達到8.74%,效果較差。對2018年5種不同方案的預測結果而言,6預測1方案的預測值為606.73萬噸,與真實值(609.6萬噸)的相對誤差只有0.47%,預測精度最好。1980—2017年歷年實際產量與對應6預測1方案預測值的對比如圖3所示,可見二者基本吻合。

圖3 6預測1(1980—2016年)

表1 由1980—2017年產量預測2018和2019年產量
第二部分:測試由1980—2018年的年產量訓練神經網絡,然后預測2019年的產量并與2019年的實際產量(588.9萬噸)進行對比。由表2可以看出,當切片長度q=3、15時對應預測值與真實值的相對誤差較大。對q=6、9、12時方案的預測結果求平均值,結果為574.5萬噸,與真實值(588.9萬噸)的相對誤差為2.45%,在容許誤差5%范圍內,是可以接受的。

表2 由1980—2018年產量預測2019年產量
由上節中的試驗可以看出,當歷史數據的滑動切片長度q=6、9、12時,三種方案預測結果的平均值精度很高(相對誤差小于5%),因而采用此平均值作為正式預測結果。使用1980—2019年的數據切片對神經網絡進行訓練,再用訓練好的神經網絡對2020年產量進行預測的結果見表3,切片長度q=6、9、12三種方案的平均預測值為578.8萬噸,比2019年略少10萬噸。

表3 由1980—2019年產量預測2020年產量
本文以1980—2019年中國棉花產量數據為基礎,通過對原數據滑動切片生成神經網絡訓練數據,并用此數據訓練BP神經網絡,再用訓練好的神經網絡預測2020年的國家棉花產量。試驗表明,滑動切片的數據量過多或過少都會造成預測值的相對誤差偏大,對2018、2019年產量的實踐檢驗表明,當切片長度為6、9、12時取三者預測值的平均值效果較好,對這兩年的預測結果與真實值的相對誤差分別為0.39%及2.45%,對2020年產量的預測結果為578.8萬噸,比2019年約少10萬噸。