国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

參數(shù)并行:一種基于群啟發(fā)式算法的機器學習參數(shù)尋優(yōu)方法

2022-02-28 08:31楊艷艷李雷孝林浩王永生王慧高靜
科學技術與工程 2022年5期
關鍵詞:搜索算法數(shù)據(jù)量適應度

楊艷艷, 李雷孝*, 林浩, 王永生 , 王慧, 高靜

(1.內蒙古工業(yè)大學數(shù)據(jù)科學與應用學院, 呼和浩特 010080; 2.內蒙古自治區(qū)基于大數(shù)據(jù)的軟件服務工程 技術研究中心, 呼和浩特 010080; 3.內蒙古農業(yè)大學計算機與信息工程學院, 呼和浩特 010010)

隨著大數(shù)據(jù)時代的到來,越來越多的機器學習算法被應用于數(shù)據(jù)處理和分析中[1]。為了訓練出準確率較高的模型,模型訓練者不可避免地要對機器學習算法中可調整的參數(shù)尋優(yōu)。如果參數(shù)取值不當,將會嚴重影響模型的性能[2]。而在進行機器學習的參數(shù)尋優(yōu)時,需將多組參數(shù)輸入機器學習算法中,利用訓練得到的模型的準確率和泛化能力作為參數(shù)尋優(yōu)的標準評價指標。這就意味著機器學習的參數(shù)尋優(yōu)是一個極其耗時的過程,每評價一次參數(shù)就需要訓練一次模型?;跀?shù)據(jù)并行的并行訓練方法是目前提高機器學習訓練效率的主流方法,該方法將訓練數(shù)據(jù)劃分后分配到各個工作節(jié)點上,各節(jié)點使用分到的數(shù)據(jù)對模型按照某種優(yōu)化方法進行更新[3]。但在考慮參數(shù)尋優(yōu)時,它的訓練效率常常不盡如人意。目前為止,如何提高機器學習的參數(shù)尋優(yōu)效率仍是一個棘手問題。

近幾年來,針對機器學習參數(shù)尋優(yōu)的問題,大量學者進行了研究。首先用于實踐的是人為的手動調參。但由于手動調參不確定性大且耗時耗力,因此新的方法被應用到機器學習參數(shù)尋優(yōu)。比如Cui 等[4]、李瀚等[5]提出利用改進的網格搜索算法來提高機器學習最優(yōu)參數(shù)的搜索效率。李坤等[6]提出了基于Spark并行計算框架進行網格搜索的并行計算,以找到支持向量機(support vector machines, SVM)的最優(yōu)參數(shù)。但網格搜索算法實際上是對固定范圍內的所有參數(shù)取值進行遍歷搜索,且傳統(tǒng)的網格搜索僅僅是通過改變步長來提高搜索效率。網格搜索的并行計算雖然在一定程度上提高了參數(shù)尋優(yōu)的效率,但參數(shù)尋優(yōu)的范圍和步長會直接影響參數(shù)的優(yōu)化程度。另一方面,網格搜索算法只適用于參數(shù)較少以及參數(shù)范圍較小的情況下。在參數(shù)多,取值范圍較廣的情況下使用網格搜索算法,將會存在計算復雜、耗時長等問題[7]。

針對使用網格搜索算法對機器學習算法的參數(shù)尋優(yōu)時精度較低的問題,群啟發(fā)式算法被廣泛應用于機器學習的參數(shù)尋優(yōu)中。王麗婷等[8]提出了利用烏鴉搜索算法求SVM的最優(yōu)參數(shù)組合,實驗證明此模型具有較高的分類準確度。Wang 等[9]采用遺傳算法(genetic algorithm, GA)求解SVM最優(yōu)參數(shù),實驗結果表明此模型預測效果較好。潘成勝等[10]針對K-means算法在文本聚類過程中易陷入局部最優(yōu)解的問題,提出了一種基于灰狼優(yōu)化算法的K-means文本聚類方法。實驗結果表明,該方法的準確率、召回率和F值都有明顯提高,文本聚類結果更可靠。依據(jù)經驗調整參數(shù)會導致隨機森林模型性能不佳,鄒宗民等[11]提出基于粒子群優(yōu)化支持向量回歸的方法?;诰哂休^強搜索能力的粒子群算法來獲取支持向量回歸模型的最優(yōu)參數(shù)組合。除此之外,還有生物地理學優(yōu)化算法(biogeography-based optimization,BBO)[12]、布谷鳥搜索算法(cuckoo search,CS)[13]、磷蝦群(improved krill herd,IKH)[14]算法等群啟發(fā)式算法被用于機器學習的參數(shù)尋優(yōu)中。目前基于各種改進或者未改進的群啟發(fā)式算法用于機器學習算法的參數(shù)尋優(yōu)的研究,雖然解決了機器學習參數(shù)尋優(yōu)精度的問題,在一定程度上耗時也有所降低。但是機器學習參數(shù)尋優(yōu)的效率依然沒有達到質的提升?;跀?shù)據(jù)并行機制的訓練方式可以用來解決群啟發(fā)式算法進行機器學習參數(shù)尋優(yōu)效率低的問題,但是基于數(shù)據(jù)并行的機制只有在大數(shù)據(jù)量下,優(yōu)勢才會逐漸體現(xiàn)出來。因此目前仍然沒有一個很好的方案來解決基于群啟發(fā)式算法的機器學習參數(shù)尋優(yōu)效率低的問題,參數(shù)尋優(yōu)效率仍有上升空間[15]。

現(xiàn)通過對比實驗驗證在機器學習參數(shù)尋優(yōu)方面,群啟發(fā)式算法相較于網格搜索算法的優(yōu)越性。另外對群啟發(fā)式算法應用于機器學習參數(shù)尋優(yōu)時的各部分耗時進行分析。針對使用數(shù)據(jù)并行機制來解決求解種群個體適應度耗時問題時的不足,提出一種基于參數(shù)并行機制的機器學習參數(shù)尋優(yōu)方法。該方法利用Spark并行計算框架將群啟發(fā)算法中的種群轉化為Spark所支持的彈性分布式數(shù)據(jù)集(resilient distributed dataset,RDD),然后將RDD切分并分發(fā)到各個節(jié)點,各個節(jié)點并行計算種群個體適應度。使用GA和RF算法驗證了基于參數(shù)并行機制的機器學習參數(shù)尋優(yōu)方法的先進性、效率以及可擴展性。

1 相關技術

1.1 機器學習算法及其參數(shù)

機器學習是一門多領域交叉學科,涉及概率論、統(tǒng)計學、逼近論、凸分析、算法復雜度理論等多門學科。機器學習研究計算機怎樣模擬或實現(xiàn)人類的學習行為,以獲取新的知識或技能,重新組織已有的知識結構,使之不斷改善自身的性能。

機器學習算法的參數(shù)可以分為模型參數(shù)和模型超參數(shù)。模型參數(shù)是可以通過數(shù)據(jù)學習過程進行初始化和更新的一種參數(shù),不需要手動設置。模型超參數(shù)是無法直接從數(shù)據(jù)學習中估計出來的參數(shù),必須在訓練機器學習模型之前進行設置。比如訓練神經網絡的學習速率、SVM的懲罰參數(shù)c和RBF核參數(shù)g等。學習速率太大會導致神經網絡的權重更新的幅度大,梯度下降法可能會越過最低點,導致權重在極值點兩端不斷發(fā)散或者劇烈震蕩。學習速率設置太小,則會使神經網絡的權重更新速度太慢,導致無法快速找到好的下降的方向。對于SVM來說,c的取值直接影響SVM模型的泛化能力。c太大,容易出現(xiàn)過擬合,c太小,容易出現(xiàn)欠擬合。g越大支持向量越少,g越小支持向量越多。而支持向量的個數(shù)會影響SVM模型訓練與預測的速度。因此機器學習模型超參數(shù)的選擇將會直接影響訓練好的機器學習模型的性能。

1.2 機器學習參數(shù)尋優(yōu)形式化描述

利用群啟發(fā)式算法進行機器學習算法的參數(shù)尋優(yōu),將其尋得的參數(shù)用作機器學習算法訓練模型的超參數(shù)。設er為機器學習訓練模型的誤差,P為超參數(shù)集合,則機器學習參數(shù)尋優(yōu)問題定義為

miner=F(P)

(1)

(2)

式中:k為需要尋優(yōu)的機器學習算法超參數(shù)的個數(shù);pimin、pimax為超參數(shù)pi的變化范圍。種群中的一個個體對應一組P。P的更新依賴于種群的更新。例如,GA通過種群個體的交叉、變異等操作來更新種群,經過解碼更新過后的個體得到新的P;PSO根據(jù)找到的當前個體極值和整個粒子群共享的當前全局最優(yōu)解來更新自己的速度和位置,經過解碼更新過后的粒子得到更新過后的P。當滿足終止條件時,終止算法。終止條件為

(3)

式(3)中:fitnessbest為擁有最優(yōu)解的個體適應度;fitnessmin為算法設置的最小適應度;T為迭代次數(shù);Tmax為算法設置的最大迭代次數(shù)。當種群最優(yōu)個體的適應度大于算法設置的最小適應度或者迭代次數(shù)大于算法設置的最大迭代次數(shù)時,終止迭代,返回最優(yōu)參數(shù)作為機器學習算法的模型超參數(shù)。

1.3 Spark平臺

Spark是專門基于大數(shù)據(jù)而設計的通用計算引擎[15],可以完成包括SQL查詢、文本處理、機器學習等各種運算[16],能夠解決由于單機計算資源不足而導致運行速度慢、檢測效率低等問題[17]。Spark基于內存的運算速度比Hadoop MapReduce快100倍以上,而且擁有Hadoop MapReduce具有的所有的優(yōu)點。Spark將數(shù)據(jù)抽象為其特有的RDD。在Spark中,對數(shù)據(jù)的操作主要有創(chuàng)建RDD,轉化已有RDD以及調用RDD操作進行求值,Spark會自動將RDD中的數(shù)據(jù)分發(fā)到集群上,進行并行化計算[18]。

Spark還提供了很多程序庫,包括Spark SQL、Spark Streaming、MLib、GraphX。其中MLib庫是Spark提供的可擴展的機器學習庫。Mlib庫是專為在集群上并行運行的情況而設計的,提供了很多種機器學習算法,包括分類、回歸、聚類、協(xié)同過濾等。Mlib的設計理念就是把數(shù)據(jù)以RDD的形式表示,然后在分布式數(shù)據(jù)集上調用Mlib庫所提供的機器學習算法。

2 基于參數(shù)并行的機器學習參數(shù)尋優(yōu)

2.1 參數(shù)尋優(yōu)耗時分析

在群啟發(fā)式算法中,其操作都可分為初始化種群、計算種群個體適應度、種群更新3個部分。初始化種群部分包括種群參數(shù)的設置、種群個體初始化以及種群個體適應度的初始化。種群更新部分為根據(jù)種群的更新規(guī)則進行種群的更新。計算種群個體適應度的部分為遍歷種群中的所有個體,并調用機器學習算法來計算種群中每一條個體的適應度。以GA為例,運行GA 5次,其中最大迭代次數(shù)為50,種群規(guī)模為20,數(shù)據(jù)量為2萬條,計算并記錄各部分耗時的平均值。各部分耗時情況如圖1所示。

圖1 GA各部分耗時Fig.1 Time consuming parts of GA

由圖1可知,計算個體適應度的部分耗時最長,占總體算法運行時間的96.6%,種群初始化和種群更新部分分別占2.4%和1%。計算適應度部分耗時較長的原因是因為種群中的每一個個體都需要訓練一次機器學習模型。若種群規(guī)模為20,最大迭代次數(shù)為50,則要進行1 000次機器學習算法模型的訓練,加上種群個體適應度初始化部分,算法總共要進行1 020次機器學習算法模型的訓練。

針對群啟發(fā)式算法在機器學習參數(shù)尋優(yōu)問題中計算個體適應度耗時較長的問題,采用Spark平臺對種群進行并行化處理來提高計算種群個體適應度的效率。

2.2 參數(shù)并行

根據(jù)上述GA各部分操作耗時分析,可以通過并行化計算個體適應度來提高機器學習參數(shù)尋優(yōu)的效率。在Spark平臺上通過parallelize()方法將種群轉換為RDD,將整個種群切分為子種群,然后分發(fā)給不同的Worker節(jié)點。由Worker節(jié)點中的Executor并行進行計算子種群個體適應度,最終Executor將計算結果返回給Driver。參數(shù)并行如圖2所示。

圖2中,Driver負責資源的申請、RDD的轉換、任務的生成等;Master負責資源調度,與Worker進行RPC通信,讓Worker啟動Executor;Executor負責真正的邏輯計算。

在參數(shù)并行的并行化實現(xiàn)中,Driver首先向Master申請需要的資源,Master收到Driver的請求后與Worker進行RPC通信,讓Worker啟動Executor。Executor啟動之后,Driver端將切分之后的RDD和一些計算邏輯等生成具體的任務通過網絡發(fā)送給不同Worker中的Executor來實現(xiàn)并行化計算。當Executor將任務計算完后,向Driver端返回計算結果。Driver端匯總所有種群個體適應度,然后根據(jù)種群個體適應度來進行種群的更新,更新之后保留最優(yōu)個體,得到種群一次迭代的最優(yōu)參數(shù)組合。

通過將種群切分為子種群,并行化計算種群個體的適應度來提高機器學習參數(shù)尋優(yōu)的效率。

2.3 基于參數(shù)并行的并行化算法設計

并行化算法的設計主要依賴Spark所特有的RDD來對種群或者數(shù)據(jù)進行讀取、切分和并行化處理。針對計算適應度耗時較長的問題,現(xiàn)有的方法是基于數(shù)據(jù)并行的機器學習參數(shù)尋優(yōu)方法,其將數(shù)據(jù)切分為多個子數(shù)據(jù),并行計算種群內個體的適應度。基于參數(shù)并行機制的機器學習參數(shù)尋優(yōu)方法,將種群切分為多個子種群,并行計算子種群內個體的適應度?;跀?shù)據(jù)并行和參數(shù)并行的并行化設計流程圖如圖3所示。

圖3中,左側是數(shù)據(jù)并行的流程圖,右側是參數(shù)并行流程圖。在Spark平臺進行并行化計算首先應進行Spark參數(shù)初始化,包括節(jié)點個數(shù)的設置,并行度的設置以及節(jié)點內存的設置等,用于Spark集群應用的提交。然后將所需要并行處理的部分轉化為Spark所支持的RDD。RDD支持兩種操作:轉化操作和行動操作。RDD的轉化操作返回一個新的RDD操作,它只是封裝了邏輯,但并未真正開始計算。而行動操作是向驅動器程序返回結果或者把結果寫入外部系統(tǒng)的操作,觸發(fā)真正的計算。

圖2 參數(shù)并行Fig.2 Parallel parameters

圖3 基于數(shù)據(jù)并行和參數(shù)并行的并行化設計流程圖Fig.3 Parallel design flow chart based on data parallelism and parameter parallelism

種群初始化完成后,將包含著參數(shù)、適應度、編碼等信息的種群個體存放在一個列表中,形成一個包含所有個體信息的種群列表。將種群個體攜帶的參數(shù)信息作為訓練機器學習算法模型的超參數(shù),把模型的準確率作為種群個體的適應度。

由圖3可知,數(shù)據(jù)并行操作是先隨機初始化種群,然后再讀取數(shù)據(jù),只將數(shù)據(jù)轉化為RDD,然后基于數(shù)據(jù)并行來計算種群內個體的適應度。參數(shù)并行是初始化種群的同時就讀取數(shù)據(jù),將數(shù)據(jù)和種群一起存放在列表中,然后將列表轉化為RDD。當數(shù)據(jù)和種群轉換為RDD時,并未觸發(fā)真正的計算,只是定義了一個RDD。用行動操作collect()合并計算的所有個體適應度時,才真正開始計算。所有種群個體的適應度計算完成后,根據(jù)每個個體的適應度來進行種群的更新。不同的種群更新的規(guī)則也是不同的。進行完種群更新操作后,保留更新過后的個體最優(yōu)值。如果滿足式(3)所示的終止條件,則返回最優(yōu)參數(shù)作為機器學習算法模型的超參數(shù),否則,將繼續(xù)執(zhí)行并行化計算個體適應度、合并所有個體適應度、更新種群、保留最優(yōu)個體的操作。

3 相關實驗與結果分析

3.1 實驗環(huán)境

采用隨機森林作為機器學習算法的代表,選用GA作為群啟發(fā)式算法的代表。二者均是各自應用場景中的主流算法。隨機森林依靠Scikit-learn實現(xiàn)。Scikit-learn是針對Python編程語言的免費軟件機器學習庫,它有各種分類、回歸和聚類算法,是GitHub上最受歡迎的機器學習庫之一。實驗數(shù)據(jù)為廣州市公交車的IC卡交易數(shù)據(jù)。經過歸一化后,將其處理為時間序列數(shù)據(jù),利用隨機森林進行回歸預測。Scikit-learn中的隨機森林需要調節(jié)的參數(shù)為:n_estimators、max_depth、max_features。分別為決策樹的個數(shù)、決策樹的深度、單個決策樹使用特征的最大數(shù)量。由于使用的數(shù)據(jù)中,數(shù)據(jù)段總共只有6個,因此選取了所有特征。所以只對n_estimators、max_depth兩個參數(shù)進行尋優(yōu)。其中n_estimators參數(shù)的取值范圍為[100,200], max_depth參數(shù)的取值范圍為[2,30]。

通過構建Spark集群來驗證并行化計算算法的效率。Spark集群詳細配置為:CentOS-6.10-x64,spark-2.1.1-bin-hadoop2.7,hadoop-2.7.2,py4j- 0.10.4,jdk1.8.0_261,scikit-learn-0.24.0,pyspark-2.3.2。根據(jù)經驗設置Spark集群節(jié)點個數(shù)為8,節(jié)點運行參數(shù)配置如表1所示。

GA的參數(shù)設置如表2所示。

表1 節(jié)點運行參數(shù)配置Table 1 Node’s operating parameter configuration

表2 GA參數(shù)設置Table 2 GA parameter settings

3.2 實驗結果分析

3.2.1 網格搜索算法與群啟發(fā)式算法對比實驗

實驗的目的是通過和文獻[6]提出的并行化網格搜索算法進行對比,來驗證群啟發(fā)式算法作為機器學習算法參數(shù)尋優(yōu)的方法,不僅可以提高機器學習參數(shù)尋優(yōu)的效率,而且還能保證機器學習算法模型的準確率。

(1)第一個實驗。在上述實驗環(huán)境以及參數(shù)范圍內,通過給網格搜索算法設置不同的步長,來實現(xiàn)不同步長下的參數(shù)尋優(yōu)。將每一次得到的最優(yōu)參數(shù)組合作為機器學習算法訓練模型的最終的參數(shù)。記錄網格搜索算法不同步長下的機器學習模型的準確率。實驗結果如表3所示。

(2)第二個實驗。在第一個實驗的基礎上,選取機器學習算法模型準確率最高時所對應網格搜索算法的步長作為此次實驗的步長。在相同的數(shù)據(jù)量和并行度下,將基于網格搜索算法的參數(shù)尋優(yōu)實驗和基于群啟發(fā)式算法的參數(shù)尋優(yōu)實驗分別進行了5次,統(tǒng)計每一次參數(shù)尋優(yōu)實驗的耗時以及最優(yōu)參數(shù)模型的準確率,計算5次實驗的平均值。實驗結果如表4和表5所示。

表3 不同步長下的網格搜索算法的參數(shù)尋優(yōu)的模型準確率Table 3 Model accuracy rate of parameter optimization of grid search algorithm under asynchronous length

表4 不同算法參數(shù)尋優(yōu)的模型準確率Table 4 Model accuracy of different algorithm parameter optimization

表5 不同算法參數(shù)尋優(yōu)耗時Table 5 Time consuming to optimize the parameters of different algorithms

由表3可以看出,基于網格搜索算法的參數(shù)尋優(yōu)的模型精度受網格搜索算法的步長影響。隨著網格搜索算法步長的增加,模型的準確率出現(xiàn)了一定程度的下降。另外,從表3還可以看出,當參數(shù)n_estimators和參數(shù)max_depth的步長都為1時,得到的最優(yōu)參數(shù)組合的模型的準確率是最高的。這是由于網格搜索算法遍歷了參數(shù)取值范圍內的所有參數(shù)組合,沒有遺漏任何一組參數(shù),但搜索效率很低。隨著步長的增加,網格搜索算法會根據(jù)步長來進行參數(shù)的選擇,這就極其容易跳過最優(yōu)參數(shù)組合導致尋優(yōu)精度不高。

由表4可以看出,基于群啟發(fā)式算法的機器學習參數(shù)尋優(yōu),得到的最優(yōu)參數(shù)組合的模型準確率的平均值為0.819 99;基于網格搜索算法且搜索步長為1的機器學習參數(shù)尋優(yōu)得到的模型平均準確率為0.811 557。兩者的模型準確率相差不多,在誤差范圍內。從表5可以看出,基于網格搜索算法的機器學習參數(shù)尋優(yōu)的耗時約是群啟發(fā)式算法的1.49倍。由此可以看出,在確保模型準確率不相上下的基礎上,群啟發(fā)式算法作為機器學習算法的參數(shù)尋優(yōu)方法效率要高于網格搜索算法。

和網格搜索算法相比,群啟發(fā)算法作為機器學習參數(shù)尋優(yōu)的方法,不僅在效率上得到了提升,而且并不會使機器學習算法模型的準確率下降。因此,群啟發(fā)式算法作為機器學習參數(shù)尋優(yōu)的方法在尋優(yōu)能力和效率上都要優(yōu)于網格搜索算法。

3.2.2 參數(shù)并行與數(shù)據(jù)并行對比實驗

實驗的目的是驗證參數(shù)并行機制相較于數(shù)據(jù)并行機制的效率優(yōu)勢。在上述實驗環(huán)境下,采用Python語言實現(xiàn)了基于數(shù)據(jù)并行機制和參數(shù)并行機制的并行化RF,并記錄算法在不同數(shù)據(jù)量下所用的運行時間。在實驗中,最大迭代次數(shù)設為50,種群規(guī)模設為20和100。為驗證數(shù)據(jù)量對并行效率的影響,在2萬、4萬、8萬、16萬、32萬數(shù)據(jù)量下進行實驗。種群規(guī)模為20和100的實驗結果分別如圖4和圖5所示。

圖4 種群規(guī)模為20時的兩種并行機制的運行時間Fig.4 Running time of the two parallel mechanisms with a population size of 20

圖5 種群規(guī)模為100時的兩種并行機制的運行時間Fig.5 Running time of the two parallel mechanisms with a population size of 100

由圖4、圖5可以看出,當數(shù)據(jù)量為20萬左右的時候,兩種并行機制的運行時間出現(xiàn)了交點。當數(shù)據(jù)量小于20萬時,參數(shù)并行優(yōu)勢較為明顯,參數(shù)并行相較于數(shù)據(jù)并行來說,參數(shù)尋優(yōu)效率提高了42.8%。當數(shù)據(jù)量大于20萬時,參數(shù)并行的運行時間出現(xiàn)顯著增長。此時,數(shù)據(jù)并行的優(yōu)勢顯現(xiàn)出來,所用時間較短。這是因為在小數(shù)據(jù)量下,每個任務的計算量越大,效率越高,每個任務切分越細,效率越低。參數(shù)并行是將種群切分成若干份,訓練數(shù)據(jù)不進行切分。在相同數(shù)據(jù)量下,對于參數(shù)并行而言,每一個個體都需要一份數(shù)據(jù)量計算個體適應度,種群規(guī)模為20時,這個種群就對應20份數(shù)據(jù)。本實驗中參數(shù)并行根據(jù)分區(qū)度將種群切分為6份,則每一個任務就對應3.333份數(shù)據(jù)。對于數(shù)據(jù)并行來說,是根據(jù)分區(qū)度把訓練數(shù)據(jù)切分為6份,種群不進行切分。則每一個任務所對應的訓練數(shù)據(jù)為0.167份。所以在小數(shù)據(jù)量下,數(shù)據(jù)并行每一個任務的數(shù)據(jù)量要小于參數(shù)并行。由于每個任務的計算量越大,效率越高。即在數(shù)據(jù)量小于20萬時的小數(shù)據(jù)量下,參數(shù)并行的效率要高于數(shù)據(jù)并行。隨著數(shù)據(jù)量的增大,每一個任務對應的計算量越來越大,則運行時間相應的會越來越長。由于參數(shù)并行每一個任務對應的數(shù)據(jù)量是數(shù)據(jù)并行每一個任務對應的數(shù)據(jù)的20倍左右,在大于20萬時的大數(shù)據(jù)量下,數(shù)據(jù)并行要比參數(shù)并行有優(yōu)勢。

由圖5可知,在數(shù)據(jù)量為2萬的時候,參數(shù)并行和數(shù)據(jù)并行運行時間相差不大。其原因在于Spark集群模式下,各個節(jié)點之間需要進行資源分配、任務劃分、任務調度以及節(jié)點之間的通信,這些操作也要消耗時間。當數(shù)據(jù)量較小時,Spark之間的資源調度等操作會占一大部分時間,所以此時參數(shù)并行和數(shù)據(jù)并行之間的差距并不明顯。

另外,根據(jù)圖4、圖5還可以看出,數(shù)據(jù)量為8萬時,是數(shù)據(jù)并行的一個拐點。在數(shù)據(jù)量大于8萬時,運行時間出現(xiàn)了下降趨勢。此時對于數(shù)據(jù)并行來說,其優(yōu)勢開始顯現(xiàn)出來。數(shù)據(jù)量較小時,每一個任務對應的計算量小,每個任務切分的細,因此效率較低。

通過上述結果分析可得,在小數(shù)據(jù)量下,基于參數(shù)并行的機器學習并行化訓練方法效率更高。但這并不意味著小數(shù)據(jù)量下并行訓練是無意義的。由圖5可知,在數(shù)據(jù)量為8萬時,使用參數(shù)并行可節(jié)省將近2 h的可觀的訓練時間。

3.2.3 可擴展性實驗

可擴展性實驗是指是否能夠通過增加結點的數(shù)量來提高算法運行速度。實驗基于單節(jié)點、2個節(jié)點、4個節(jié)點以及8個節(jié)點,在數(shù)據(jù)量為1萬,迭代次數(shù)為20的基礎上將參數(shù)并行算法運行5次,計算算法運行時間并記錄平均值。參數(shù)并行運行結果如圖6所示。

由圖6可以看出,算法運行時間隨著種群規(guī)模的增加而增長。當種群規(guī)模為50時,4個節(jié)點和8個節(jié)點的算法運行時間差別較小。這是因為多個節(jié)點運行程序時,節(jié)點之間需要進行資源分配、任務

圖6 參數(shù)并行算法可擴展性實驗Fig.6 Parametric parallel algorithm scalability experiment

劃分、任務調度以及節(jié)點之間的通信等操作。這些操作也要消耗時間。隨著種群規(guī)模的增大,8個節(jié)點時算法運行效率逐漸高于其他節(jié)點。這是因為節(jié)點數(shù)越多,算法并行度就越高,即每個節(jié)點計算量就越小。

通過上述實驗結果分析,參數(shù)并行算法具有良好的可擴展性。

3.2.4 節(jié)點個數(shù)與分區(qū)度實驗

節(jié)點個數(shù)與分區(qū)度實驗是指在確定的分區(qū)度下,不同的節(jié)點個數(shù)對參數(shù)并行算法運行效率的影響。在節(jié)點個數(shù)為2、4、6、8個,分區(qū)度為6,迭代次數(shù)為20的基礎上分別將參數(shù)并行算法運行5次,計算并記錄算法運行時間的平均值。參數(shù)并行算法運行結果如圖7所示。

由圖7可以看出,在節(jié)點個數(shù)為6和8時的算法運行時間低于節(jié)點個數(shù)為2和4時參數(shù)并行算法運行時間。這是因為本實驗節(jié)點的個數(shù)決定算法每一輪并行執(zhí)行的任務數(shù)的多少。實驗分區(qū)度為6,即有6個任務需要計算。節(jié)點個數(shù)為2或4時,

圖7 分區(qū)度為6時不同節(jié)點個數(shù)運行時間Fig.7 Running time of different nodes when the partition degree is 6

算法每一輪并行執(zhí)行的任務數(shù)為2個或4個,則需要兩輪才能將所有任務計算完畢。當節(jié)點個數(shù)為6時,剛好一輪就能計算完所有的任務。當節(jié)點個數(shù)為8時,算法運行時間要稍稍高于節(jié)點個數(shù)為6時。這是由于只有6個任務,并行度為8,會有兩個節(jié)點不計算任務,但這2個節(jié)點之間還是會被分配資源,進行節(jié)點間的通信。在一定程度上,算法運行時間會加長。

由以上分析可知,盡管可以通過增加結點的數(shù)量來提高算法運行效率,但是節(jié)點個數(shù)并不是越多越好,應當根據(jù)分區(qū)度的大小來設置節(jié)點個數(shù)。

4 結論

在對機器學習的參數(shù)尋優(yōu)問題進行深度分析研究的基礎上,針對群啟發(fā)式算法提出了一種基于參數(shù)并行機制的機器學習參數(shù)尋優(yōu)方法。設計了數(shù)據(jù)并行與參數(shù)并行對比實驗、可擴展性實驗、節(jié)點個數(shù)與分區(qū)度實驗來驗證參數(shù)并行機制的優(yōu)勢,得到以下結論。

(1)提出的方法在機器學習參數(shù)尋優(yōu)精度和效率上都要優(yōu)于主流的并行化網格搜索算法。

(2)參數(shù)并行機制在小數(shù)據(jù)量下能顯著提高參數(shù)尋優(yōu)的效率,進而可以提高機器學習的訓練效率,并具有良好的可擴展性。

只是把GA算法作為群啟發(fā)式算法的代表來進行機器學習算法超參數(shù)尋優(yōu)。但基于群啟發(fā)式算法進行機器學習算法超參數(shù)的尋優(yōu)問題仍有很多可以研究的方面。在接下來工作中,將會著力研究更適合機器學習算法超參數(shù)尋優(yōu)的群啟發(fā)式算法。例如,可以將參數(shù)并行機制應用于基于混合式群啟發(fā)式算法的機器學習算法超參數(shù)的尋優(yōu);對群啟發(fā)式算法進行優(yōu)化,使之能在不影響機器學習算法模型性能的前提下減少計算個體適應度的次數(shù)等。

猜你喜歡
搜索算法數(shù)據(jù)量適應度
改進的自適應復制、交叉和突變遺傳算法
一種基于分層前探回溯搜索算法的合環(huán)回路拓撲分析方法
基于大數(shù)據(jù)量的初至層析成像算法優(yōu)化
改進的非結構化對等網絡動態(tài)搜索算法
改進的和聲搜索算法求解凸二次規(guī)劃及線性規(guī)劃
高刷新率不容易顯示器需求與接口標準帶寬
寬帶信號采集與大數(shù)據(jù)量傳輸系統(tǒng)設計與研究
一種基于改進適應度的多機器人協(xié)作策略
基于跳點搜索算法的網格地圖尋路
自適應遺傳算法的改進與應用*
达尔| 长汀县| 固原市| 简阳市| 登封市| 鞍山市| 普兰县| 浮山县| 景洪市| 太仆寺旗| 夹江县| 榆社县| 凌海市| 太谷县| 龙岩市| 西峡县| 迭部县| 墨江| 武山县| 西乌| 锦屏县| 昭通市| 万宁市| 大名县| 景谷| 留坝县| 南充市| 偏关县| 乐业县| 呼和浩特市| 裕民县| 金乡县| 张北县| 绵阳市| 开化县| 宜州市| 红桥区| 翼城县| 神木县| 清涧县| 中江县|