那些年玩过的超级玛丽,竟然还隐藏了强化学习的这些原理
深度強化學習是一個很有意思,值得持續研究的方向。現在深度學習大熱,一點也不輸給現在的室外氣溫,但大熱背后也有隱憂,也就是深度學習雖然表面光鮮,但細看就會發現:仍然充滿了槽點。這里說兩個“費”。第一個“費”是費錢,深度學習的模型越來越大,越來越復雜,訓練模型不但需要得到高檔GPU的算力加持,才可能在可接受的時間內完成,而且非常費電,這里說的不是多了幾百塊的電費,而是訓練一輪,光電費就可能高達幾百萬美元。無論是GPU還是高電費,深度學習都越來越有點吞金巨獸的意思,所以有人悲觀地認為,照這樣發展下去,未來深度學習領域最終可能淪為“氪金玩家”的專屬游戲。
當然這個“費”存有爭議,暫且不展開了,而第二“費”則基本得到公認,這就是費數據。訓練模型需要數據,這是常識,雖然數據規模和訓練效果還不至于是赤裸裸的線性關系,不過大致可以認為是呈正比,而越是大型的模型,就越需要大量的數據。這就帶來兩個問題,第一個問題是數據從哪來?大家都說現在是大數據時代,數據是海量的,問題是,這些都是未經標識的數據。這有什么問題呢?我們馬上會提到一個術語,叫有監督學習,現在深度學習用得最多的就是有監督學習。有監督學習不妨理解成“有參考答案的學習”,它有一個特點,就是數據必須經過標識才能用于訓練。這些大量未經標識的數據在有監督學習看來還真有點像大海,不過是孤島求生者眼里的大海,自己明明口干得都要冒煙了,而眼前就是茫茫無際的海水,卻一滴也不能用于解渴。現在學界也在想辦法,提出了半監督學習、遷移學習等等思路,希望深度學習模型不再這么費數據。
另一個問題就更直擊靈魂了。很多研究人員,甚至包括有不少的大牛都在反思,琢磨深度學習是不是“錯了”。如果說人工智能發展的正道在于模擬人類智能,那深度學習的這套學習模式可能走了歪路。為什么這么說呢?這也要從深度學習的“費數據”說起。這一派研究人員,愛舉一個例子,就是人類的小嬰兒學走路。小嬰兒學走路肯定不是靠先看一大堆的《如何解鎖行走姿勢》或者《人類直立動作大全》之類的資料,用行話來說,就是不必依賴外部輸入大量的訓練數據。那小嬰兒是怎么學的呢?靠不斷嘗試,也就是我們常說的跌倒了爬起來再走。簡單來說,這一派研究人員認為:深度學習和人類的學習模式是截然不同的,別看現在大紅大紫,早晚是要碰到天花板的。那應該怎么改呢?很多人都指了指同一個地方,就是本章的主角——深度強化學習。
深度強化學習這個名字很長,看起來像是深度學習的plus版,其實它是兩套理論體系乘風破浪以后的成團產物,這兩套體系本來都是單飛型選手,分別是深度學習和強化學習,具體來說,深度強化學習的骨架來自強化學習,而靈魂則是由深度學習賦予。
所以,要講明白深度強化學習,首先得講明白深度學習和強化學習分別是怎么一回事。深度學習講得很多了,這里講講強化學習。說到強化學習,忍不住先聊一個八卦。現在市面上人工智能題材的書很多,非常多,擺在書架上滿滿當當的都是,而作者們似乎都有一個約定俗成的“癖好”,開篇都要扯AlphaGo的虎皮做大旗。當然了,AlphaGo名氣很大,這款由人工智能研究團隊DeepMind推出的棋類AI產品,當年在與人類頂尖棋手的對弈中一戰封神,確實難怪只要提到人工智能,就不得不提兩句AlphaGo,不然總感覺像是漏了點什么。
這沒什么問題,問題在于開篇就登場的AlphaGo,往往在大多數的書里都只不過是工具人,哦不,是工具狗。為什么這么說呢?因為大多數的書,哪怕是很多專講機器學習、深度學習的技術書,似乎都巧妙地錯過了AlphaGo所使用的一個核心技術,這就是強化學習。
也許當年我們看AlphaGo的新聞,除了“哇厲害”就沒有留下其它印象了,這里稍微回憶一下。當年AlphaGo一共迭代了三個版本,分別是戰勝李世石的一代目AlphaGo Lee、戰勝柯潔的二代目AlphaGo Master,以及吊打前兩代的三代目AlphaGo Zero。這三代棋藝當然是逐代遞增了,技術上也有一個明顯的變化趨勢,就是強化學習的比重越來越大。最開始訓練AlphaGo的模型,是需要用借助人類的棋譜的,也就是需要參考答案。原因我們前面介紹過了,因為用到了有監督學習,這是也是當前用得最多的方法。
而當進化到了AlphaGo Zero,哥們開始“悟了”,對,是真正意義上的悟了,不再需要任何棋譜,完全自食其力,從零開始自學成才,所以名字叫Zero。親爹DeepMind喜不自勝,跑到Nature發了一篇爆款論文,名字叫《Mastering the game of go without human knowledge》,我看中文不妨就翻譯為《圍棋滅霸》,反正意思就是“你們人類都是渣渣,我不需要人教也能稱霸棋壇”。這次是真·不用人教,那靠什么自學呢?就是強化學習。雖然這篇論文標題的中二感爆表,但AlphaGo Zero的學習模式非常類似于人類,而且取得了無可非議的良好效果,確實讓業內所有人都真真切切地感受到了強化學習的驚人潛力,也許這才是AlphaGo最讓人震撼的地方。
說了這么多強化學習,那什么是強化學習呢?
強化學習是機器學習中的一種。機器學習有幾大類,包括有參考答案的有監督學習,常見的分類問題、回歸問題都屬于有監督學習;沒有參考答案的無監督學習,譬如聚類問題;還有就是強化學習。強化學習這名字有點讓人摸不著頭腦,英文叫Reinforcement Learning,reinforcement有加深、增強的意思。我們臨考前都喜歡抱佛腳,拿著一段難記的材料反復背反復背,這叫“強化記憶”,強化學習里的“強化”也有點這個意思。
強化學習和有監督學習、無監督學習都不太一樣,有一個智能體(Agent)的概念。什么是智能體呢?大家應該都玩過任天堂的一款經典FC橫版通關游戲——馬里奧兄弟。在游戲中,玩家通過控制馬里奧頂蘑菇、踩烏龜來取得勝利,如果想用強化學習來通關,那這里的智能體指的就是馬里奧。
智能體是強化學習的第一個重要概念,是主角,但強化學習作為一臺好戲,自然不能光有主角,還得有舞臺,這就是強化學習的第二個重要概念,環境(Environment)。強化學習的學習過程,就是作為主角的智能體和作為舞臺的環境不斷交互的過程。這個過程又包括三個重要概念,分別是觀察(Observation)、動作(Action)和獎勵(Reward)。這五個概念可謂是強化學習的五線譜,能夠演奏出無數美妙動人的旋律。
那么,這五個概念是怎么進行演奏呢?
首先一條就是主線,前面已經介紹,強化學習的主線就是作為主角智能體,與作為舞臺的環境所作的各種交互。交互過程衍生了三個概念,聽起來復雜,其實玩馬里奧兄弟游戲非常相像,完全可以一對一比照。
回想一下,游戲里的馬里奧想要通關,第一步需要干什么呢?前進后退還是蹦蹦跳跳?都不對,首先需要觀察。你得先看一下周圍環境,看看前面到底蘑菇還是烏龜,才能決定接下來的行動。觀察環境,獲取當前的狀態信息了,才決定下一步行動對不對?強化學習也一樣,主角智能體通過前面介紹的第三個重要概念“觀察”,來獲得當前時刻的各種狀態信息,一般記為s(t)。
掌握了狀態信息,游戲里的馬里奧開始躍躍欲試,準備做出反應了。強化學習也一樣,我們將s(t)作為智能體的輸入,智能體會略加思索,接著就能做出“動作”。這里的動作,就是前面介紹的第四個重要概念。智能體能做出哪些動作呢?這和具體的場景有關,譬如在馬里奧游戲中,動作就是指“頂蘑菇”或者“踩烏龜”,一般記為a(t)。
最后一個重要概念是“獎勵”。這個好理解,前面我們一再強調,強化學習的主線是智能體與環境的各種交互,那現在當智能體做出某個動作后,環境當然也得有所表示,得有個反饋信息,這就是獎勵。譬如馬里奧游戲中,馬里奧“吃到金幣”后,相應的游戲得分就會增加,這就是獎勵。需要說明一點,強化學習的“獎勵”和我們日常所習慣的用法略有不同,強調的是環境對智能體的反饋。上面說的得分增加,這是一種好的反饋,當然也有壞的反饋,譬如做了什么動作被扣分了,但無論是好的反饋,還是壞的反饋,在強化學習這里都統一稱為“獎勵”。
至此,智能體就完成了一輪強化學習。不斷重復這輪流程,智能體就能順利地與環境交互下去。聽起來是不是很簡單?不過,魔鬼都藏在細節里。不知道大家在閱讀時,有沒有注意到強化學習的一個非常重要的問題,上面卻一筆帶過?沒錯,就是從獲取s(t)到做出a(t)之間的“略加思索”。作為輸入的狀態信息,和作為輸出的待選動作,都是給定好的,但二者的映射關系如何,也就是輸入什么樣的狀態信息該對應輸出什么樣的動作反應,也就是智能體應該如何進行思考。
這是強化學習最核心的問題。
有了問題,自然就會產生各種腦洞。我們說強化學習的五個概念像是五線譜,演奏出無數美妙旋律,這絕對不是藝術化的比喻,而是實情。為了解決強化學習這個核心問題,研究人員是真真切切地開了無數的腦洞,總的來說,主要是朝著兩大方向開腦洞。
第一個大方向叫基于價值(Value-Based)的強化學習。機器學習都有個目標函數的概念,而基于價值的強化學習,它的目標函數就是累計獎勵最大化,也就是當前哪個動作能讓得分更高就選擇做哪個動作。這很符合我們的直覺認知,比較容易理解。那怎么達到這個目標呢?不同的算法各有不同,基于價值(Value-Based)的強化學習算法中,最有名氣的算法應該數Q-Learning,也有人稱為Q學習,通過不斷計算和更新動作價值函數Q來實現獎勵最大化。
第二個大方向叫基于策略(Policy-Based)的強化學習。基于價值雖然符合直覺,但這種走一步看一步,每次都要用價值函數量一下才能行動的做法,難免讓人有種“無頭蒼蠅瞎轉”的無力感,而基于策略的強化學習最大的特點就是果斷拋棄了價值函數,嘗試找到每個狀態對應的最佳動作,從而形成一套動作策略,每走一步策略都能直接給出最佳的下一步動作。
當然,除了這兩大方向,強化學習還有其它的腦洞方向,譬如基于模型(Model-Based)的強化學習,不過由于成本和難度較高,用得比較少。而這兩大方向都各自包含了大量的具體實現算法,即使方向相同,各個算法在細節上仍然有很大差異。
最后一個問題是,深度學習是怎樣和強化學習結合,成為深度強化學習的呢?
前面我們說,深度強化學習,強化學習是骨架,深度學習是靈魂,這是什么意思呢?深度強化學習的主要運行機制,其實與強化學習是基本一致的,也都是根據輸入的s(t),找到對應的輸出a(t),只不過使用了深度神經網絡來完成這一過程。
更有甚者,有的深度強化學習算法,干脆直接在現成的強化學習算法上,通過添加深度神經網絡來實現一套新的深度強化學習算法,非常有名的深度強化學習算法DQN就是典型的例子。前面我們介紹基于價值的強化學習算法中介紹了Q-Learning算法,有一個重要的步驟是計算Q值,而傳統的Q-Learning算法是通過Q表來完成計算的,但表格存在一個明顯的局限性,狀態-動作空間越大,Q表就越膨脹,而且是大一點就膨脹好幾圈。這樣下去不行的,早晚是要河邊見的……
那怎么改善呢?研究人員一想,現在大熱的深度神經網絡不是最擅長干這事嗎?于是一拍大腿,不再需要勞駕Q表您老人家來記錄Q值了,統統改成了深度神經網絡,這就是DQN。雖然聽起來改動不大,但兩者結合效果很好,能力提升明顯,現在成了一款廣為使用的深度強化學習算法。
?
文章作者簡介:
莫凡??
網名木羊同學。娛樂向機器學習解說選手,《機器學習算法的數學解析與Python實現》作者,前沿技術發展觀潮者,擅長高冷技術的“白菜化”解說,微信公眾號“睡前機器學習”,個人知乎號“木羊”。
掃碼關注作者公號
推薦閱讀:
01
《機器學習算法的數學解析與Python實現》
點擊鏈接了解詳情
如果你之前不太了解機器學習,現在想要了解機器學習的主流算法和原理,并希望快速、清晰地建立對機器學習的“大局觀”,但是擔心一上來就被各種艱澀的數學公式“揍”得眼冒金星,那這本書就是你想要的。
02
《邊做邊學深度強化學習:PyTorch程序設計實踐》
點擊鏈接了解詳情
化繁為簡,既沒有復雜的符號邏輯,也沒有大篇幅的公式推導,旨在讓讀者快速上手,使用深度強化學習方法解決問題。
03
《深度強化學習:學術前沿與實戰應用》?
點擊鏈接了解詳情
北京理工大學劉馳教授團隊撰寫!更全面的深度強化學習指南!詳解深度強化學習領域近年來重要進展及其典型應用場景,涵蓋新的理論算法、工程實現和領域應用(涉及游戲、機器人控制、計算機視覺和自然語言處理四大領域)。
更多精彩回顧
書訊 |華章計算機拍了拍你,并送來了8月書單(下)
書訊 |?華章計算機拍了拍你,并送來了8月書單(上)
上新 |?遷移學習:邁向真正的人工智能
書單 |?“ABCD”,未來頗具潛力的四大信息技術方向
干貨 |?周志華新作《機器學習理論導引》閱讀攻略
收藏 |?DB-Engines 8 月數據庫排名:Redis悄悄拔高,猛超Elasticsearch
點擊閱讀原文了解更多AI好書
總結
以上是生活随笔為你收集整理的那些年玩过的超级玛丽,竟然还隐藏了强化学习的这些原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pip 指定镜像不超时安装
- 下一篇: 这可能是最通俗易懂的 webpack 知