孟 哲,余 粟
(上海工程技術大學 電子電氣工程學院,上海 200000)
BP神經網絡是目前使用最廣泛的深度學習算法之一,其模型原理使它在理論上有逼近任何函數的能力,它結構靈活,易擴展,有強大的自學習能力,被廣泛地用于預測行為,但是它在面對大數據集時會出現收斂速度過慢的情況,而Hadoop的出現及時地解決了這一問題。圍繞著Hadoop搭建的集群可以使計算任務并行運行在集群內的每一個工作節點的計算框架上,針對Hadoop相關平臺的各種研究開始層出不窮。
針對目前我國存在的出租車調度問題,圍繞Hadoop搭建了一個打車需求量預測系統。并且針對上述提到的BP神經網絡的缺點,提出了一種用MapReduce實現的并行BP神經網絡將其用于系統的預測功能。通過實驗可知并行BP神經網絡比傳統BP神經網絡的收斂速度快得多并且訓練效果也有提升。
接下來介紹本文作搭建的預測系統的核心技術Hadoop和核心算法BP神經網絡。
Hadoop是一個由Apache基金會開發的分布式系統基礎架構,它的出現解決了大數據時代下海量數據的存儲和分析計算問題。且自Hadoop2.x版本推出以后,Hadoop的核心組件有三個,分別是: HDFS(Hadoop分布式存儲文件系統)、MapReduce以及Yarn。
HDFS是Hadoop中的分布式文件系統,它位于Hadoop生態圈的最底層,負責Hadoop中的存儲工作,其中NameNode負責管理整個HDFS,DataNode是具體的工作節點,進行存儲工作并接收和執行來自NameNode的命令。
MapReduce是Hadoop中的分布式計算框架,負責處理Hadoop的所有計算任務。它分為map和reduce兩個階段,它將用戶編寫的業務邏輯代碼和自帶默認組件整合成一個完整的分布式運算程序,然后并發的運行在一個Hadoop集群上。
Yarn是一個資源調度框架,它像整個Hadoop集群的大腦一樣負責集群內部所有的資源管理和調度,它的存在讓Hadoop集群中的各個組件更加協調地工作。
BP神經網絡分為三部分:輸入層、隱含層和輸出層。輸入層負責向整個網絡輸入數據,輸出層負責輸出網絡的計算結果,隱含層負責網絡中間的一系列計算。
BP神經網絡的核心原理就是通過輸入層傳入隱含層,隱含層進行層層傳遞和計算,最后傳入輸出層輸出結果。之后對結果和給定值進行誤差分析,然后結合梯度下降法以及鏈式法則層層進行反向傳播以更新網絡內部的參數。不斷循環上述過程最后得到一個理想的網絡模型就是BP神經網絡的核心思想。
BP神經網絡雖然有著優秀的自學習能力并且理論上能逼近任何函數,但是在數據量大的情況仍然存在著收斂速度過慢的問題,為了緩解這一問題,本文提出了基于MapReduce的并行BP神經網絡來對打車需求量進行預測,并用Hadoop搭建了一個打車需求量的預測系統。
MapReduce在進行神經網絡的訓練時有優勢,也有劣勢,優勢在于MapReduce是一個基于Hadoop集群的并行計算框架,多個工作節點能同時進行計算來加快網絡的訓練過程。劣勢在于MapReduce不擅長迭代計算,每一次任務結束都要進行落盤操作,這就會造成大量的I/O操作。
為了充分利用MapReduce的并行計算優勢并降低其劣勢的負面影響,本文提出的并行BP神經網絡算法流程如圖1所示。

圖1 并行BP神經網絡流程圖
(1)首先將待訓練數據集進行隨機劃分,每個工作節點都讀取訓練數據集隨機劃分的35%的數據,并將其傳入map端。
(2)節點在map端對這35%的訓練數據進行網絡的迭代訓練,每個節點都在HDFS中有一個唯一的路徑文件,用于存儲本節點訓練過程中的網絡參數的變化,節點在訓練過程中會不斷地對其進行覆蓋更新,在訓練完成之后將節點自身唯一的編號封裝為key,把訓練之后以String形式存儲的網絡內部參數以及對應的誤差封裝為value,然后將
(3)在reduce端相同的key會傳入同一個reduce方法中,在此方法中找出誤差最小的一組參數即為一個節點此次訓練效果最好的一次,同理找出所有節點下訓練效果最好的一組,并將它們之間再進行比較找出所有節點之間訓練效果最好的一組并將其保存到HDFS中,上述過程即為一次MapReduce對BP神經網絡訓練的過程。
(4)再次訓練時,在map端將HDFS中上次訓練得到的網絡參數讀入網絡內部并繼續訓練即可。
上述即為本文提出的BP神經網絡在MapReduce實現并行的原理和流程。
為了證明提出的并行BP神經網絡的有效性,搭建了Hadoop集群并進行了一系列實驗
基于Hadoop搭建了一個打車需求量預測系統,其中整體框架為包含4個節點的Hadoop集群,核心的預測模型為本文提出的并行BP神經網絡。
集群4個節點的操作系統皆為Centos7.5,并安裝了Hadoop3.2.0以及JDK1.8,它們各自的硬件配置如下:
節點一:Intel(R) Core(TM) i7-10510U CPU 1.80 GHz 2.30 GHz,8 GB RAM, 8-core 處理器
節點二:Intel(R) Core(TM) i7-10510U CPU 1.80 GHz 2.30 GHz,6 GB RAM, 6-core 處理器
節點三:Intel(R) Core(TM) i7-10510U CPU 1.80 GHz 2.30 GHz,4 GB RAM, 4-core 處理器
節點四:Intel(R) Core(TM) i7-10510U CPU 1.80 GHz 2.30 GHz,4 GB RAM, 4-core 處理器
針對4個節點各自的硬件配置,為它們分配的集群角色以及工作如表1所示。

表1 4個節點在集群中扮演的角色
3.1.1 數據預處理
打車需求量預測系統所用數據來源于紐約TLC機構,其官網公開了其機構下的三種出租車每年載客的詳細數據,包括載客時間、載客地點、卸客地點等,數據形式是以月為單位存儲的csv文件,每個文件都包含了上述提到的總共17個字段。
選用黃色種類出租車2017年和2018年兩年的數據作為系統預測模型的訓練數據,用黃色種類出租車2019年的數據作為驗證數據對訓練過后的模型進行預測并對比檢驗。
而由于原始數據包含了很多系統用不到的無用字段并且缺少一些影響打車需求量的關鍵因素,所以需要對原始數據進行預處理。
通過分析,推測影響打車需求量的因素包括天氣、溫度、風力大小、以及節假日等。通過查找資料以及歷史數據的方式,將相應的字段以數字的表示方式并且以日期為單位單獨寫入一組文件中并存入HDFS。之后將原始數據也存入HDFS中,然后通過MapReduce以日期為單位將剔除無用數據后的原始數據和對應日期的上述數據合并得到預處理后的數據文件。此時預處理后的數據即可用于系統模型的訓練即預測。
3.1.2 系統架構
搭建的打車需求量系統整體架構如圖2所示。

圖2 打車需求量系統架構圖
(1)所有原始數據會先存入HDFS中。
(2)使用MapReduce對原始數據進行預處理,并將處理后的結果再次存入HDFS中。
(3)經過預處理的數據即為樣本數據集,運行系統的并行BP神經網絡模型對數據進行訓練。
(4)訓練完成之后進行預測驗證,輸出結果。
提出的并行BP神經網絡模型的打車需求量的預測實驗基于3.1節搭建的系統環境,同時將原始BP神經網絡用相同的數據集進行對比實驗。
圖3展示了兩種模型的迭代訓練次數以及相應的預測精確度,可以很清楚地看出并行BP神經網絡最后收斂時預測的精度為76.2%要高于傳統模型的66.2%,并且其收斂速度要快于傳統模型。而且圖4清晰地展現出并行BP神經網絡的迭代計算速度要遠快于傳統BP神經網絡,在完成40000次的迭代計算時,傳統BP神經網絡耗時25.3 h,而本文提出的并行BP神經網絡僅花費16.9 h,大大提高了訓練速度。

圖3 并行BP神經網絡與傳統BP神經網絡的訓練效果

圖4 并行BP神經網絡與傳統BP神經網絡的訓練速度
為了進一步驗證并行BP神經網絡的有效性,將驗證數據隨機分為10組并分別用并行BP神經網絡和傳統BP神經網絡進行預測,并將兩種模型得到結果的平均絕對誤差和平均絕對百分比誤差進行比較。如圖5所示,并行BP神經網絡在對10組數據進行單日某區域的出租車需求量預測時的平均絕對誤差都在180以內,并且穩定性較好。而傳統BP神經網絡的平均絕對誤差大都超過了270,并且波動較大。圖6為兩種模型的平均絕對百分比誤差對比,可以明顯看出傳統BP神經網絡的平均絕對百分比誤差比并行BP神經網絡高很多,在29.8%~40.2%之間并且波動較大,而后者的平均絕對百分比誤差在20.3%~26.7%之間。

圖5 并行BP神經網絡與傳統BP神經網絡的平均絕對誤差對比

圖6 并行BP神經網絡與傳統BP神經網絡的平均絕對百分比誤差對比
上述兩組實驗可以充分證明本文提出的并行BP神經網絡的有效性,其比傳統BP神經網絡有更快的收斂速度,并且訓練效果更好,擁有更高的預測精度和更小的誤差,能較好地完成出租車需求量預測的任務。
提出了基于MapReduce的并行BP神經網絡,與傳統BP網絡相比,其收斂速度加快并且訓練效果更好,同時訓練速度大大提高。并且針對我國目前存在的出租車調度問題,搭建了一個打車需求量預測系統,以并行BP神經網絡作為本系統的預測模型。通過對TLC的公開數據進行訓練和預測驗證可知系統能較好地完成打車需求量預測的任務,給交通系統和出租車公司對出租車調度提供幫助和參考。
未來的工作主要有以下兩個方面:一方面,優化并行BP神經網絡的細節,找到更優的用MapReduce實現并行BP神經網絡的方法。另一方面,優化Hadoop系統的搭建,包括數據的傳輸、預測結果的展示等。