人工智能頂會NeurIPS 2018正在如火如荼的進行著,并且首次在第一天增加了Expo Workshop。一共有十家公司有幸拿到了組織workshop的機會,其中中國有四家,分別是阿里巴巴,百度,Pony.AI和網(wǎng)易。其中,AI方面一向低調的網(wǎng)易首次公布了自主研發(fā)的創(chuàng)新性強化編程(Reinforced Programing)框架。下面我們就一起了解下網(wǎng)易在NeurIPS 2018的Workshop,以及這個強化編程框架吧。
Workshop簡介
隨著李世石與AlphaGO的巔峰對決,強化學習為越來越多的人所知曉。強化學習(Reinforcement Learning,RL)是機器學習中的一個重要分支,智能體(Agent)通過與環(huán)境不斷交互學習如何進行連續(xù)決策。Agent從環(huán)境中獲取狀態(tài)(State),決策要做的動作(Action),并得到環(huán)境反饋(Reward),逐漸學會更好的策略(Policy),從而最大化自己的收益。換句話說,強化學習可以通過人機訓練或者自我學習,不斷進步,找到解決問題的最佳方法。隨著強化學習的爆發(fā)性進展,它也被大家寄予了越來越大的期望。
(圖1強化學習發(fā)展歷程)
既然強化學習這么厲害,已經(jīng)在棋類游戲中打遍人類無敵手。是不是之后所有的事情就可以交給強化學習讓機器自己來學習了呢?其實大部分強化學習的研究都還局限在學術界,如何把強化學習落地到實踐中來依舊是個非常大的難題,受著很多條件的限制。因此網(wǎng)易伏羲AI實驗室組織舉辦了主題為“Make Reinforcement Learning in Touch with Industry”的Expo Workshop來討論如何更好的讓強化學習應用到產(chǎn)業(yè)界中來。在Workshop中,網(wǎng)易除了公布自主研發(fā)的強化編程框架外,還邀請了南京大學的俞揚教授,天津大學的郝建業(yè)教授,氪信科技的CEO朱明杰博士,和滴滴AI實驗室強化學習組負責人秦志偉博士等多位學術界和產(chǎn)業(yè)界著名專家學者共同探討強化學習落地產(chǎn)業(yè)應用的相關進展。
強化編程框架
強化學習之所以難在產(chǎn)業(yè)界落地,主要有以下幾個問題:
1.知識依賴:強化學習這么前沿,對理論深刻理解的人自然少之又少,而僅僅想做應用也必需掌握一些基本的理論概念。
2. 現(xiàn)實場景的復雜性和多變性:學術研究是把問題簡單和抽象化,而現(xiàn)實中產(chǎn)業(yè)應用問題通常更加復雜,需要結合大量的先驗知識,而且場景豐富多變。
3.計算及數(shù)據(jù)量巨大:產(chǎn)業(yè)應用中問題的復雜性同樣帶來更大的計算量及數(shù)據(jù)樣本量需求。
強化編程框架的設計也正是為了解決這幾個問題。在解決知識依賴的問題上,新框架希望最終將學習成本降至最低,在傳統(tǒng)編程的基礎上,創(chuàng)新性的將函數(shù)概念擴展出可學習的“神經(jīng)網(wǎng)絡函數(shù)”。也就是說,就算你不懂強化學習,你也可以像調用普通函數(shù)一樣簡單的調用神經(jīng)網(wǎng)絡函數(shù),而且這個神經(jīng)網(wǎng)絡函數(shù)可以自我學習。在解決現(xiàn)實場景復雜性和多變性的問題上,新框架設計了一套可視化的流程圖前端工具,可以快速設計及維護上層邏輯,應對復雜多變的場景需求;同時,新框架讓傳統(tǒng)編程和強化學習無縫銜接,靈活的支持邏輯規(guī)則與強化學習混合編程,并支持多網(wǎng)絡的協(xié)同訓練。這通常對應了復雜問題的分解及分層結構的強化學習,在這里都可以通過流程圖輕松直觀的表達。在解決計算及數(shù)據(jù)量巨大的問題上,伏羲實驗室提供了一整套后端云平臺作為解決方案。之所以叫強化編程這個名字,實際上是一語雙關。首先是對現(xiàn)有編程方法的一種增強,其次是通過強化學習來實現(xiàn)這種能力。
(圖2伏羲強化編程框架)
從整個框架來看,首先提供了一個面向業(yè)務方的流程圖工具,以流程圖的形式對強化學習問題進行建模,自動生成代碼(目前支持Lua、Python及C#語言),嵌入到各種類型的業(yè)務產(chǎn)品中,實現(xiàn)與環(huán)境交互,并具有調試功能。同時提供一個基于完整計算集群的容器云平臺,將各種RL算法(DQN、A3C、Impala等)通過容器化的方式進行封裝,支持所有主流的深度學習框架(TensorFlow、Mxnet、PyTorch等)。基于RPC連接環(huán)境和訓練集群,并對客戶端獲取的數(shù)據(jù)進行有效地封裝和轉發(fā),同時將服務器產(chǎn)生的策略返回給客戶端,組包在服務器端進行,支持并行及動態(tài)擴容的訓練。網(wǎng)易伏羲實驗室還提供了一套完整的SDK方案,在平臺上完成訓練后,可以方便地將訓練結果導出,部署到服務器或客戶端。最后可以通過一個Web控制前端,查看訓練數(shù)據(jù)及效果、規(guī)劃計算資源、改進訓練方案,從而提升工作效率。
實際應用
伏羲實驗室先在Atari游戲Pong上驗證了該框架解決經(jīng)典強化學習實驗問題的有效性。下圖為相應的流程圖和訓練效果:
(圖3 Pong游戲訓練流程圖) (GIF1 Pong訓練效果)
然后,伏羲實驗室使用一款1v1動作對戰(zhàn)游戲驗證了混合編程和多網(wǎng)絡編程在解決復雜問題上的的優(yōu)勢。通過流程圖的方式可以引入專家經(jīng)驗,也可以對訓練模型進行分層。實驗設置如下:實驗1為未經(jīng)任何處理的端到端模型,直接由RL算法探索所有空間。實驗2為單個神經(jīng)網(wǎng)絡與專家知識的混合編程模型,神經(jīng)網(wǎng)絡先選擇技能大類,同一類技能內再靠人工規(guī)則實現(xiàn)選擇。實驗3為結合經(jīng)驗的分層神經(jīng)網(wǎng)絡模型,在這里,上層策略與底層策略都由神經(jīng)網(wǎng)絡實現(xiàn)。
(圖4端到端模型、混合編程模型與分層模型)
實驗結果顯示:藍色線條為端到端的模型,效果最差;紅色為網(wǎng)絡加規(guī)則的混合模型一開始上升很快,且始終優(yōu)于藍色;綠色線條為分層模型,最初低于紅色,但在后續(xù)訓練過程中逐漸變成收益最高的一條曲線。驗證了復雜問題中引入人工經(jīng)驗進行混合編程與問題分解進行分層網(wǎng)絡訓練的優(yōu)勢。
(圖5實驗結果對比)
在過去的一年多時間里,伏羲實驗室已經(jīng)利用該框架將深度強化學習應用于游戲產(chǎn)業(yè)。目前已在網(wǎng)易的多款自研產(chǎn)品中取得成果并上線,涵蓋MMORPG、籃球、動作及休閑等眾多品類。
下面是強化編程框架在潮人籃球這款游戲中的應用實例。以多網(wǎng)絡的方式實現(xiàn)了籃球游戲內的AI設計,通過流程圖實現(xiàn)attack、defense、ball clear、free ball四個網(wǎng)絡的建模,編輯對應的神經(jīng)網(wǎng)絡,調用RL插件接口,在Web前端申請計算資源進行訓練。
視頻2流程圖工具建模實例
(視頻2流程圖工具建模實例)
可以看到4個網(wǎng)絡的訓練隨著機器人的狀態(tài)進行切換
視頻2流程圖工具建模實例
(視頻3網(wǎng)絡訓練實例)