強化學習的框架化,會引爆AI開發的新腦洞嗎?

naojiti發表於2019-01-28

假如你是應用開發者,不懂演算法,又想開發一個帶AI功能的APP,你會選擇:

1.自己從頭訓練一個AI模型;

2.使用開發平臺的訓練框架和API;

答案顯而易見,能夠提供技術解決方案及低准入門檻的後者才是王道。

但面對眾多開發平臺的深度學習框架,需要考慮的問題可就多了:相容性、社群資源、框架遷移等等不一而足。

而最近,框架之爭的焦點又轉移到強化學習身上了。

谷歌在去年推出了基於TensorFlow的強化學習框架Dopamine,強化學習界的明星OpenAI也將很多演算法放上了baseline,百度也在前不久更新了PaddlePaddle的強化學習框架PARL。就連一向低調的網易,都公佈了自主研發的強化程式設計(Reinforced Programing)框架……

對於大部分開發者來說,強化學習到底能帶來什麼,與深度學習框架有何區別,自家應用又該何去何從,恐怕還有點雲裡霧裡的。

所以我們今天不妨就來釐清強化學習的真正價值與現實難題。

深度學習、強化學習、深度強化學習,傻傻分不清楚?

經過幾年的市場教育,大多數開發者對於深度學習框架能夠做什麼、怎麼做,已經比較有譜了。

但是各大平臺隨即推出的強化學習框架或者深度強化學習框架,就讓人有點蒙圈了。它們之間的區別在哪裡,又分別承擔著怎樣的職責呢?

我們舉個例子來解釋一下這三種機器學習方法的不同吧:

假如我是個種植工廠,想要做一個能夠識別蘋果好壞的APP,那麼就需要一個深度學習開發框架,在上面搭建訓練過程。幾乎所有開發平臺都有現成的影像識別API,我只需要把訓練用的圖片(也就是各種各樣的蘋果照片)拖進系統,就可以得到一個訓練好的蘋果識別模型了。

但如果我更懶一點,想要一個能自己學會採摘優質成熟蘋果的機器人呢?深度學習就有點搞不定了。

這時我需要用強化學習框架來訓練一個智慧體,每當它摘下一個新鮮漂亮的好蘋果,就會收到來自系統的獎勵,進行正強化。要是錯誤摘下了沒熟或者爛掉的蘋果,就沒有獎勵甚至會被扣分,進行負強化。

為了得到更多的回報,智慧體會就更願意選擇那些好果子來摘,而放棄那些會帶來0分甚至負分的果子。通過這種方法,我就得到了一個最大化摘到好果子的智慧機器人,豈不是美滋滋?

但嚐到甜頭的我又不滿足了,不僅想讓它學會摘黃瓜摘蕃茄,而且還懶得再訓練一遍。這時候就需要一種全新的演算法,將深度學習與強化結合學習起來,只要告訴它新的獎勵機制,機器就能通過深度神經網路自主get類似技能,不需要我再手把手訓練。

以前,我還需要自己一行行敲程式碼,現在只要有一個開發框架+訓練樣本,就可以輕鬆擁有永不疲倦、勤奮學習、還會舉一反三的智慧體,這樣的誘惑試問誰能拒絕?

當然,這裡只是簡單解釋一下它們的工作模式,真要訓練出這樣一個智慧模型並應用於自家產品上,是一個更為複雜的綜合工程。

不過,增加了強化學習功能的開發框架,大大降低了強化學習訓練的程式設計難度和工作量,對於想做強化學習但又無力從零開始搭建環境和訓練的技術人員和企業來說,無疑是個好訊息。

AI開發新寵:強化學習究竟有什麼用?

如今,強化學習不僅成了學術界的寵兒,相關研究論文在各大頂會中的比例飛速上升;各家開發平臺也都把強化學習框架當成重點來部署和爭奪。

但問題也隨之而來:框架只能降低一部分開發門檻,定製化模型、除錯、相容等工作依然需要企業投入大量人力物力財力,如果費了大力氣得到的成果最後無法應用或者不切實際,對開發者來說無疑是非常殘酷的。

因此在貿然“以身效法”之前,有必要先搞搞清楚:強化學習到底強在哪些地方?開發者又應該在何種情況下向它投誠?

先解釋一下強化學習的核心邏輯,那就是智慧體(Agent)可以在環境(Environment)中根據獎勵(Reward)的不同來判斷自己在什麼狀態(State)下采用什麼行動(Action),從而最大限度地提高累積獎勵。

比如擊敗圍棋世界冠軍的Alpha Go,在《Dota 2》中血虐人類玩家的OpenAI Five,打下Atari 2600遊戲最高分的DeepMind DQN,都是基於強化學習實現的。

那麼它具體有哪些特徵呢,大致可以總結為三個方面:

1.訓練樣本。強化學習是通過環境給出的獎懲結果來學習,需要帶有回報的資料。

2.互動方式。強化學習的學習過程是動態的,需要與環境進行互動來完成,不是給什麼樣本就學什麼,沒有環境都白搭。

3.解決問題。強化學習的邏輯更像人腦,主要解決的是智慧決策問題,比如遊戲打出高分、通用機器人、推薦系統等等。

這些特殊設定,使得強化學習可以在很多應用領域表現得比傳統深度學習更為出色,比如:

控制類智慧:工業上多關節機械臂的實時控制,讓機器人觀看YouTube 視訊學習動作並應用到現實場景中,又或者是幫助無人車學習如何應對人和動物亂穿馬路這樣的特殊情況;

序列問題:比如文字序列預測,通過行為反饋讓搜尋排序達到最優效果;電商推薦系統, 根據使用者對推薦列表的反饋(忽略、點選或購買)來實時改變推薦策略。

對話生成:比如體驗更好的人機多輪對話,讓機器人能夠持續生成有意義的對話,而不是亂說一氣地尬聊;與深度學習相結合,實現更好的機器雙語翻譯效果。

傳統深度學習已經能很好地解決機器感知和識別問題,但人類對機器智慧的要求顯然不止於此,能夠應對複雜現實中決策型問題的強化學習,以及二者的融合,自然成為AI應用未來的重點發展方向。

這種情況下,掌握了演算法先發優勢的技術平臺相繼推出RL框架,無疑是爭奪開發者和入口權的最好佈局。

強化學習框架之爭,究竟拼些什麼?

當然,強化學習雖然取得了很多“炫酷”的成就,但其應用的侷限也是顯而易見的,不得不預先做好準備:

比如強化學習就像剛出生的嬰兒,所有技能都要從零開始訓練,需要花很多時間才能教會它掌握一個任務目標;

而且,強化學習只能根據即時反饋指令來進行動作,下圍棋、打dota或許很牛,但面對個性化語音助手這樣需要記憶和推理能力的任務,就有點力不從心;

另一個困擾的問題是,目前的強化學習演算法在穩定性和效率上參差不齊,想要真正滿足現實場景的應用需求,還有待加強。

因此,如何選擇適合自身業務的強化學習框架來試水,或許是開發者當下最為關心的問題。

就強化學習的發展方向和各個平臺的特點來看,我們有幾個不成熟的小建議供參考:

1.平臺的穩定及復現性。

深度學習是穩定的,有固定的資料集和固定目標,超引數出現很小的改動,最終的效能也不會受到太大影響。但強化學習(或者深度強化學習)就不是如此了,訓練結果會受到隨機機率、樣本效率、演算法穩定性等多重影響,從而帶來結果上的巨大差異,降低成功的復現率。更嚴重的情況是,機器認為自己無論怎麼嘗試都會導致失敗,直接崩潰不學了。

為了解決隨機性和復現的問題,不同平臺的解決方案也不盡相同。

比如谷歌是實現訓練環境和測試環節的標準化。為程式碼提供60款遊戲的測試覆蓋範圍和訓練資料,並使用街機學習環境(Arcade Learning Environment)進行標準化經驗評估。

而百度則是儘可能多地覆蓋相關演算法。PARL框架提供algorithm集合,裡面包含了大量主流的經典演算法和完整的超引數列表,以保障模型的復現率。

2.靈活性&易用性。

大多數開發者的終極需求,是希望藉助技術框架打破演算法的桎梏自由馳騁,釋放自己的新想法和商業創造力。因此,框架設計一方面要平衡多元業務場景和簡易訓練方式之間的矛盾,另一方面則要跟上技術趨勢的發展快速迭代。

比如谷歌的街機學習環境,智慧體在其中是如何工作的,理解起來就非常簡單,並且有詳細的文件記錄和原始日誌。除此之外,谷歌還推出了一個TensorBoard的視覺化工具套件,幫助幫助開發者在短時間內清晰直觀地梳理、驗證和迭代新想法。

3.框架與業務的耦合性。

儘管我們說強化學習距離產業端落地還有遙遠的距離,但技術框架從基礎開發就為產業結合做好準備,顯然能加快這一程式。

因此,技術框架與產業端業務需求的耦合,就成為開發平臺生命力的一大保障。比如百度加快跟進強化學習框架,就很好地填補了中文文件和訓練資料在強化學習演算法中的不足。

另外需要考慮的,則是中文世界的開發者數量、資料規模、使用者體量,對技術框架的支援能力也是一大挑戰。基於PaddlePaddle對大規模工業級排序/推薦等稀疏模型的支援能力,百度的PARL得以輕鬆擴充套件到百億級別資料或特徵的訓練,這種並行提速的能力,更符合中國市場的真實需求。

當然,影響強化學習效能和使用者選擇的因素還有很多,比如社群資源的豐富,演算法質量,應用工具的多元化等等。

總體而言,現階段想要低門檻、短時間地訓練處一個好的強化學習模型,還是很困難。但正如吳恩達所說的,“短期悲觀,長期樂觀”,深度強化學習作為機器智慧接下來的發展方向,是毋庸置疑的。

想要贏得未來,這個新的競爭高地不得不去佔領。強化學習的框架之爭只是序曲,隨著各種難度超乎想象的實際問題被一一解決,很多有趣的事情將會發生。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31561483/viewspace-2565092/,如需轉載,請註明出處,否則將追究法律責任。

相關文章