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