百度飛槳強化學(xué)習(xí)框架PARL發(fā)布首個工業(yè)級深度進化學(xué)習(xí)庫EvoKit
百度飛槳強化學(xué)習(xí)框架PARL曾兩次奪得NeurIPS強化學(xué)習(xí)賽事世界冠軍。近期PARL升級1.3版本,通過發(fā)布深度進化學(xué)習(xí)庫EvoKit,多智能體強化學(xué)習(xí)(Multi-Agent RL)算法,助力強化學(xué)習(xí)進一步落地工業(yè)應(yīng)用場景。
深度進化學(xué)習(xí)庫EvoKit
PARL 1.3 重點發(fā)布了首個工業(yè)級進化學(xué)習(xí)框架EvoKit,支持大規(guī)模神經(jīng)網(wǎng)絡(luò)在真實業(yè)務(wù)場景中調(diào)研和部署進化學(xué)習(xí)算法,針對性解決進化學(xué)習(xí)算法部署到業(yè)務(wù)場景所遇到的難題。
什么是進化學(xué)習(xí)算法?
進化學(xué)習(xí)(Evolution Strategy)借鑒自然界種群進化過程,通過演化的方式找到全局最優(yōu)。進化學(xué)習(xí)由來已久,近年來被不少學(xué)者用于解決強化學(xué)習(xí)(Reinforcement Learning),AutoML(Auto Machine Learning)等場景的問題。相對于梯度優(yōu)化而言,進化學(xué)習(xí)直接通過參數(shù)空間的擾動來觀察最終目標(biāo)(如下圖所示),并且和強化學(xué)習(xí)一樣,進化學(xué)習(xí)不要求優(yōu)化目標(biāo)和參數(shù)之間可導(dǎo),因此適用范圍非常廣泛,易于并行化。基于EvoKit,可以利用數(shù)百臺CPU優(yōu)化百萬量級參數(shù)的模型。
進化學(xué)習(xí)能用到哪些地方?
- 優(yōu)化目標(biāo)和模型之間不可導(dǎo)的場景。例如,模型超參數(shù)的搜索,一些推薦類產(chǎn)品留存,總時長等不能建模,或者直接建模成本較高的場景。
- 模型和業(yè)務(wù)規(guī)則邏輯或和其他流程耦合的場景。例如,某業(yè)務(wù)線的流程包括上下游總共十幾個模塊串行處理,希望優(yōu)化中間某個模塊的模型參數(shù),但是下游處理模塊的邏輯對于當(dāng)前優(yōu)化是黑箱。通過進化算法可以避免黑箱對于優(yōu)化的不確定性,直接提升最終評價指標(biāo)。
- 元學(xué)習(xí)。很多模型不是直接使用,而是需要在多個場景上進一步fine-tune。進化學(xué)習(xí)算法可以利用最終fine-tune結(jié)果來優(yōu)化元學(xué)習(xí)模型,破解求導(dǎo)鏈條過長等問題。
EvoKit有哪些特點?
1. EvoKit提供一整套可供線下調(diào)研及線上部署的進化學(xué)習(xí)工具。線下借助飛槳開源框架 API實現(xiàn)快速調(diào)研,線上基于Paddle Lite等工具,支持以較小的成本完成調(diào)研到上線的流程。同時,EvoKit提供包含異步更新機制,參數(shù)壓縮和還原等線上業(yè)務(wù)普遍需求的功能。
2. EvoKit使用上非常便利。用戶可以利用飛槳開源框架 API搭建任意結(jié)構(gòu)的復(fù)雜網(wǎng)絡(luò)。進化學(xué)習(xí)算法包含兩個關(guān)鍵步驟,采樣(或者擾動)和更新。網(wǎng)絡(luò)參數(shù)不斷通過擾動收集反饋,并基于相關(guān)反饋迭代進化網(wǎng)絡(luò)(如上圖所示)。 EvoKit定義了主接口分別用于網(wǎng)絡(luò)的擾動(AddNoise)和更新迭代(Update)。用戶只需通過簡單幾行代碼就能實現(xiàn)完整的進化流程,下圖展示了一個偽代碼的樣例。EvoKit內(nèi)置了包括ES, GA, CMA-ES等常用進化策略,也提供了很好的便于二次開發(fā)的可擴展接口,可以方便實現(xiàn)新的算法。
多智能體強化學(xué)習(xí)
PARL 1.3還實現(xiàn)了全新的多智能體強化學(xué)習(xí)算法(Multi-Agent RL,MARL)的框架支持。MARL是RL挑戰(zhàn)群體決策問題的“殺手锏”,可以被廣泛運用在包括地圖派單,游戲AI, 任務(wù)分配等等問題中,但是算法的復(fù)現(xiàn)難度比起傳統(tǒng)算法更大。很多RL框架很難利用一套框架兼容多種單智能體RL算法和MARL算法的開發(fā)。PARL在這一點上有新的突破。在單智能體算法中,PARL抽象出了Model、Algorithm、Agent三個模塊,分別定義了前向網(wǎng)絡(luò)(forward)、算法損失函數(shù)(backward)、數(shù)據(jù)交互等邏輯(見下圖)。這種以智能體為核心的設(shè)計方式,在擴展到多智能體算法的時候,只需創(chuàng)建多個Agent實例,就可以讓多個智能體交互起來,共同更新MARL算法。
以主流的MADDPG算法的評估為例,可以看到PARL在MARL的擴展性:
當(dāng)通過Model、Algorithm搭建好多個Agent之后,這些Agent可以很方便地和環(huán)境進行交互,存儲各自的數(shù)據(jù),然后訓(xùn)練模型。PARL1.3此次開源的MADDPG算法在OpenAI的8個MARL場景都進行了驗證,效果能完全復(fù)現(xiàn)最優(yōu)的表現(xiàn)。
此外,PARL 1.3版本還針對使用文檔、應(yīng)用樣例進行了全面梳理,并開源了NuerIPS 2019強化學(xué)習(xí)賽事的冠軍解決方法。
基于這些全新的功能,希望PARL和EvoKit能給相關(guān)領(lǐng)域的同學(xué)帶來新的便利,助力強化學(xué)習(xí)和進化學(xué)習(xí)算法在工業(yè)場景的進一步應(yīng)用落地。
PARL和EvoKit完全開源,歡迎大家使用,反饋和貢獻。
PARL鏈接:https://github.com/PaddlePaddle/PARL
如在使用過程中有技術(shù)問題,歡迎加入飛槳官方QQ群進行提問:703252161