圖1自動數據增強算法建模思路歸類
1)強化學習: AutoAugment(Autoaugment: Learning augmentation policies from data)借鑒了基于強化學習的架構搜索算法,在離散化的搜索空間內通過PPO (Proximal Policy Optimization)算法來訓練一個policy generator, policy generator的獎勵信號是其生成的policy應用于子網絡訓練完畢后的驗證集準確率。其問題在于AutoAugment的搜索成本非常高,還無法滿足工業(yè)界的業(yè)務需求,難以應用在業(yè)務模型開發(fā)中。
2)密度匹配:Fast AutoAugment(Fast autoaugment)采用了密度匹配的策略,希望驗證數據通過數據增強后的數據點能與原始訓練數據集的分布盡量匹配。這個思路直覺上可以排除一些導致數據集畸變的增強策略,但沒有解決“如何尋找最優(yōu)策略”這一問題。
3)遺傳進化: PBA(Population based augmentation: Efficient learning of augmentation policy schedules)采用了PBT的遺傳進化策略,在多個網絡的并發(fā)訓練中不斷“利用”和“擾動”網絡的權重,以期獲得最優(yōu)的數據增強調度策略。這個思路直覺上是可以通過優(yōu)勝劣汰來搜索到最優(yōu)策略。
4)網格搜索: RandAugment(Randaugment: Practical automated data augmentation with a reduced search space)通過統(tǒng)一的強度和概率參數來大幅減小搜索空間,期望能用網格搜索就解決數據增強搜索的問題。但這一技術并不具備策略的可解釋性,拋開實現手段不談,這篇論文更像是對AutoAugment的自我否定(注: RandAugment也是Google出品的論文)。
5)對抗學習: Adversarial AutoAugment(Adversarial autoaugment)在AutoAugment的基礎上借鑒了GAN的對抗思想,讓policy generator不斷產生難樣本,并且使policy generator和分類器能并行訓練,降低了搜索時長。但整體搜索成本還是非常高。
6)可微分: DADA(DADA: Differentiable Automatic Data Augmentation)借鑒了DARTS的算法設計思路,將離散的參數空間通過Gumbel-Softmax重參數化成了可微分的參數優(yōu)化問題,大大降低了搜索成本。
在上述的建模思路中,遺傳進化和可微分的建模思路更適合應用到模型開發(fā)中,因為這兩種思路將自動數據增強搜索的成本降低到了線上業(yè)務承受的資源范圍內,并且具備較好的策略可解釋性。基于對建模思路的評估和判斷,百度工程師決定將遺傳進化和可微分思路應用到零門檻AI開發(fā)平臺EasyDL中,便于開發(fā)者進一步優(yōu)化模型效果。
EasyDL面向企業(yè)開發(fā)者提供智能標注、模型訓練、服務部署等全流程功能,針對AI模型開發(fā)過程中繁雜的工作,提供便捷高效的平臺化解決方案,并且內置了豐富的預訓練模型與優(yōu)化的多種算法網絡,用戶可在少量業(yè)務數據上獲得高精度的模型效果。EasyDL面向不同人群提供了經典版、專業(yè)版、行業(yè)版三種產品形態(tài)。
目前,遺傳進化PBA技術已經在EasyDL平臺中的成功實現,可微分的技術思路在EasyDL業(yè)務中的實踐也在持續(xù)探索中。
PBA采用了PBT(Population based training of neural networks)的遺傳進化策略,通過訓練一群神經網絡(種群, Trials)來找出超參數調度。Trials之間會周期性地將高性能Trial的權重復制給低性能的Trial(exploit),并且會有一定的超參擾亂策略(explore),如圖2的PBT流程圖。
圖2 PBT算法流程圖
然而實際將能力落地到平臺中并不容易,工程師們在復現論文開源代碼的過程中發(fā)現了一些問題:
1)開源代碼采用了Ray的Population Based Training實現,但這個接口并不能保證并行的Trials一定能實現同步的exploit,尤其在資源受限的情況下,很大概率會出現進化程度較高的Trial和進化程度較低的Trial之間的exploit,這樣的錯誤進化是不可接受的。
2)開源代碼僅實現了單機多卡版本的搜索能力,想擴展到多機多卡能力,需要基于Ray做二次開發(fā)。
3)開源代碼僅實現了圖像分類的自動數據增強搜索,并未提供物體檢測等其他任務的數據增強搜索能力。
4)開源代碼現有增強算子實現方式比較低效。
綜合以上考慮,最終百度工程師從零開始構建了基于PBA的自動數據增強搜索服務。
這一自研自動數據增強搜索服務有以下幾個特點:
實現了標準的PBT算法,支持種群Trials的同步exploit、explore,保證公平進化。
支持分布式拓展,可不受限的靈活調節(jié)并發(fā)種群數,支持。
搜索服務與任務解耦,已支持飛槳深度學習平臺的圖像分類、物體檢測任務,并且可擴展到其他的視覺任務與文本任務。
數據增強算子基于C++高效實現。
自研的能力效果如何呢?在公開數據集上,我們基于自研的自動數據增強搜索服務與現有的Benchmark進行了對齊,其中表一的ImageNet Benchmark(https://paddleclas.readthedocs.io/zh_CN/latest/advanced_tutorials/image_augmentation/ImageAugment.html#id6)在PaddleClas框架上訓練,表二的Coco Benchmark(https://github.com/PaddlePaddle/PaddleDetection/tree/master/configs/autoaugment)在PaddleDetection框架上訓練。
結果顯示,EasyDL自動數據增強服務能達到與AutoAugment同樣高的精度,并有大幅的速度優(yōu)勢。目前,我們用于數據增強搜索的分類、檢測算子已經與AutoAugment對齊,后續(xù)將會持續(xù)不斷擴充更多更高效的算子,進一步提升模型效果。
表一 ImageNet Benchmark
表二 Coco Benchmark
EasyDL目前已在經典版上線了手動數據增強服務,在專業(yè)版上線了自動數據增強搜索服務。在圖像分類單標簽的任務上,我們隨機挑選了11個線上任務進行效果評測。如下圖,使用專業(yè)版自動數據增強服務后,11個任務準確率平均提長了5.42%,最高一項任務獲得了18.13%的效果提升。
圖3圖像分類單分類效果評測
在物體檢測任務上,我們隨機挑選了12個線上任務進行效果評測,效果對比如下圖,使用專業(yè)版自動數據增強服務后11個任務準確率平均提升了1.4%,最高一項任務獲得了4.2%的效果提升。
圖4物體檢測效果評測
EasyDL平臺通過交互式的界面,為用戶提供簡單易上手的操作體驗。同樣,使用EasyDL的數據增強服務操作非常簡便。
在經典版的訓練模型頁面“數據增強策略”里選擇“手動配置”,即可輕松實現數據增強算子的使用,如圖5。
在專業(yè)版的新建任務頁面的“數據增強策略”里選擇“自動搜索”,再設置需要搜索的算子范圍,即可立刻實現自動數據增強,如圖6。
圖5經典版手動數據增強使用流程
圖6專業(yè)版自動數據增強使用流程
為了讓開發(fā)者使用EasyDL更便捷高效地開發(fā)效果出色的模型,EasyDL在框架設計中內置了多個組件與多種能力。如EasyDL智能搜索服務的整體架構圖(圖7)所示,其底層基礎組件是分布式智能搜索,具備多機多卡搜索、訓練容錯、支持多種搜索優(yōu)化算法等特性。基于分布式智能搜索提供的核心能力,我們構建了自動數據增強搜索、超參搜索、NAS搜索等服務,盡可能讓用戶可以在無需關心技術細節(jié)的情況下,簡便使用EasyDL提供的多項搜索服務,獲得模型效果的優(yōu)化。
圖7 EasyDL智能搜索服務整體架構圖
在各行各業(yè)加速擁抱AI的今天,有越來越多的企業(yè)踏上智能化轉型之路,借助AI能力完成降本增效。但在AI賦能產業(yè)的過程中,大規(guī)模的商業(yè)化落地十分復雜,需要企業(yè)投入大量的精力。由于不同行業(yè)、場景存在著差異化與碎片化,對AI的需求也不盡相同。因此,一個能夠隨場景變化定制開發(fā)AI模型的平臺至關重要。通過零算法門檻的平臺能力覆蓋千變萬化的場景需求,并提供靈活適應具體業(yè)務的多種部署方式,這就是EasyDL。
EasyDL零門檻AI開發(fā)平臺,目前已在工業(yè)制造、智能安防、零售快消、交通運輸、互聯網、教育培訓等行業(yè)廣泛落地。
百度搜索“EasyDL”訪問官網,開發(fā)高精度AI模型。