0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

深度學(xué)習(xí)科普文:最通俗易懂 從老虎機到電子游戲

zhKF_jqr_AI ? 來源:Medium ? 作者:Bing ? 2018-06-12 19:00 ? 次閱讀

最近,我受邀在北京的O’Reilly人工智能會議上分享自己在NLP領(lǐng)域的所學(xué)。當(dāng)時我有幸參加了一場由Unity Technologies舉辦的關(guān)于深度強化學(xué)習(xí)的培訓(xùn),這場由Arthur Juliani領(lǐng)導(dǎo)的會議給了我很大啟發(fā),下面我會分享我的收獲。

在我們與各大公司的交談中,我們發(fā)現(xiàn)了許多有趣的深度強化學(xué)習(xí)的應(yīng)用、工具和結(jié)果。同時,深度強化學(xué)習(xí)的應(yīng)用(例如AlphaGo)往往非常深奧、難以理解。在這篇文章中,我會以一種通俗易懂的方式介紹深度強化學(xué)習(xí)的核心要點。

深度強化學(xué)習(xí)的崛起

深度強化學(xué)習(xí)領(lǐng)域已經(jīng)出現(xiàn)了大量研究成果,比如讓計算機學(xué)習(xí)雅達利游戲、在Dota2中戰(zhàn)勝人類玩家,或者打敗世界頂尖圍棋選手。與只關(guān)注認知的傳統(tǒng)深度學(xué)習(xí)問題不同,深度強化學(xué)習(xí)加入了可以影響環(huán)境的動作,比傳統(tǒng)多了一個維度。例如傳統(tǒng)深度學(xué)習(xí)解決的是“這幅畫中有停止標(biāo)志嗎”這樣的問題,而深度強化學(xué)習(xí)還會研究“目的地在哪、應(yīng)該怎樣到達”的問題。例如在對話系統(tǒng)中,傳統(tǒng)的深度學(xué)習(xí)的目的是找到對應(yīng)問題的正確回答。而深度強化學(xué)習(xí)則關(guān)注如何組合出正確的句子順序才能獲得一個積極的結(jié)果,例如怎樣回答才能讓顧客開心。

這就讓深度強化學(xué)習(xí)在需要提前計劃和適應(yīng)的任務(wù)中非常受歡迎,例如制造業(yè)或自動駕駛。然而行業(yè)的實際應(yīng)用趕不上理論發(fā)展。其中主要原因是深度強化學(xué)習(xí)常常需要一個智能體進行數(shù)百萬次的實驗,如果想快速實現(xiàn)這一點,就需要一個模擬環(huán)境。這里可以參考Unity的教程創(chuàng)建一個模擬環(huán)境。

接下來,我將詳細講述目前深度強化學(xué)習(xí)領(lǐng)域的幾種主流算法

從老虎機到電子游戲,淺談強化學(xué)習(xí)

深度強化學(xué)習(xí)可以擊敗頂尖圍棋選手,但是想搞清楚它是怎么做到的,首先要了解幾個簡單的概念。我們先從簡單的開始。

假設(shè)你面前有四個箱子,每次只能打開一個,每個里面的裝的錢(獎勵)不一樣,你的目標(biāo)就是在一定的游戲次數(shù)中,最后拿到的總錢數(shù)是最大的。這個經(jīng)典游戲被稱為“多臂賭博機問題(multi-armed bandit problem”)。這個問題的核心就是控制游戲次數(shù),同時利用已知信息選擇最佳對象。

這里我們要用到一種將行為映射到預(yù)計獎勵中的價值函數(shù)——Q函數(shù)。首先,我們把所有的Q值定成同樣的。然后,我們會在每次選擇箱子后更新Q值,基于箱子中的錢有多少。這樣可以讓我們學(xué)習(xí)一個好的價值函數(shù),我們會用一個神經(jīng)網(wǎng)絡(luò)估計Q函數(shù)在四個箱子上潛在的表現(xiàn)。

價值函數(shù)告訴我們預(yù)測的每次結(jié)果如何,策略是決定在哪一步停止的函數(shù)。也就是說,我們可能會選擇具有最高Q值的策略。但這在實際中表現(xiàn)得很糟,因為Q值的估計在剛開始時表現(xiàn)得非常離譜,根本不足以計入試錯經(jīng)驗。這就是為什么我們需要在策略中加入一項機制鼓勵探索。其中一種方法就是利用貪婪算法,即用概率?進行隨機選擇。最初,當(dāng)概率接近于1時,選擇更隨機。隨著概率的降低就會學(xué)習(xí)到更多關(guān)于箱子的知識。最終我們知道了那個更好。

在實際中,我們也許想選擇另一種更精妙的方法,不用隨機選擇或挑選最優(yōu)策略。其中一種方法就是Boltzmann Exploration,它可以根據(jù)目前的情況改變概率,加入隨機因子。

不同狀態(tài)下會是怎樣

這里不同的背景顏色代表不同的平均獎勵

上一個例子的背景是假設(shè)狀態(tài)相同,挑選四個完全相同的箱子。而更真實的情況卻有很大不同,其中有不同的狀態(tài)。現(xiàn)在箱子后面的背景在三種顏色之間不斷變化,每個箱子的價值是在變的。所以我們需要學(xué)習(xí)一個Q函數(shù)來決定箱子的選擇和背景顏色。這一問題被稱為“語境下的多臂賭博機問題”。

我們用的方法和此前相同,唯一需要加入神經(jīng)網(wǎng)絡(luò)的是額外的密集層,將輸入向量作為目前狀態(tài)的代表。

學(xué)習(xí)行為所帶來的結(jié)果

這里我們學(xué)習(xí)如何移動藍色立方體,讓它到達綠色立方體那里,同時不碰到紅色方塊

這里還有一種可以讓我們的方法比其他方法更簡單的關(guān)鍵因素。在大多數(shù)環(huán)境中,例如迷宮,我們采取的每一步動作都會影響周圍環(huán)境。如果在網(wǎng)格中行進,有可能會得到獎勵(也可能什么都沒有),但是下一步我們就出在完全不同的狀態(tài)下了。這就是計劃的重要性。

首先,我們會將Q函數(shù)定義為目前狀態(tài)下立即的獎勵以及未來全部行為都結(jié)束后的部分獎勵。如果Q估計的狀態(tài)精確,那么這種方法就有用,所以我們先要學(xué)習(xí)如何做出正確估計。

我們要用一種成為Temporal Difference(TD)Learning的方法,學(xué)習(xí)一個好的Q函數(shù)。這種方法只關(guān)注最近的幾步行為,例如TD(1)只用接下來的兩步來評估獎勵。

意外的是,我們可以用表示目前狀態(tài)的TD(0)和對下一步獎勵的評估得到不錯的結(jié)果。網(wǎng)絡(luò)的結(jié)構(gòu)不變,但是我們需要在犯錯之前進行下一步行動,然后用這個錯誤對梯度進行反向傳播,就像傳統(tǒng)深度學(xué)習(xí)那樣,之后再對值進行重新估計。

蒙特卡羅介紹

預(yù)測最終成功的另一種方法就是蒙特卡羅估計。該方法要將目前策略下所有可能都運行以便知道結(jié)束,然后用這一結(jié)果對每次得到的狀態(tài)進行評估。這讓我們在每次動作時都能有效傳播值而不是簡單地移動。與之而來的代價就是會在估計值中引入噪聲。

離散的環(huán)境

此前的方法使用神經(jīng)網(wǎng)絡(luò)近似估計預(yù)測值,將一些狀態(tài)和動作映射到數(shù)值上。例如在迷宮中共有49個位置和四種動作,在這個環(huán)境下,我們試著學(xué)習(xí)如何讓球體在二維平面上保持平衡,每一步我們會決定讓平板往哪個方向傾斜。這里的狀態(tài)空間就是連續(xù)的,好消息是我們可以使用神經(jīng)網(wǎng)絡(luò)來估計函數(shù)。

這里插播一下off-policy和on-policy的區(qū)別:之前我們用的方法是off-policy,也就是我們可以從任意策略中生成數(shù)據(jù)并從中學(xué)習(xí)。on-policy的方法智能從動作中學(xué)習(xí)。這就限制了我們學(xué)習(xí)的過程因為我們必須有一個建立在策略之上的探索策略,但是可以將結(jié)果直接綁定在推理上,同時讓我們學(xué)習(xí)得更高效。

我們這里將使用的方法稱為策略梯度,這是一種on-policy方法。之前,我們首先學(xué)習(xí)了一個價值函數(shù)Q,然后在這之上建立了策略。在Vanilla策略梯度中,我們?nèi)匀皇褂妹商乜_估計,但是我們直接從損失函數(shù)那里學(xué)習(xí)策略,這樣增加了選到有獎勵的可能性。因為我們是在策略上進行學(xué)習(xí)的,就不能用貪婪算法這樣的方法,只能用一種稱為熵正則化的方法,它估計的概率更加廣泛,也鼓勵我們做出更多大膽的選擇。

直接從屏幕中學(xué)習(xí)

模型中輸入的是像素

這是用深度學(xué)習(xí)的另一個好處因為深度神經(jīng)網(wǎng)絡(luò)擅長處理視覺問題。當(dāng)人類玩游戲時,我們接收到的信息不是一串狀態(tài),而是一張圖片。

基于圖像的學(xué)習(xí)結(jié)合了卷積神經(jīng)網(wǎng)絡(luò)和強化學(xué)習(xí)。在這一環(huán)境中,我們關(guān)注的是原始圖像而不是特征,同時在網(wǎng)絡(luò)中加入了一個2層的CNN。我們甚至可以看看網(wǎng)絡(luò)在生成值時會做什么動作。在下面的例子中,我們可以看到網(wǎng)絡(luò)利用目前的分數(shù)和遠處的障礙預(yù)測目前的價值,用近處的障礙決定做出怎樣的動作。

這里我注意到,深度學(xué)習(xí)對超參數(shù)很敏感。例如稍微調(diào)整一下折扣率,就會完全阻止神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)。這個問題已經(jīng)普遍存在了,但是自己親眼看到還是很有趣的。

細微動作

目前為止,我們已經(jīng)在分散和連續(xù)的狀態(tài)空間中進行了實驗,但是我們研究的每個環(huán)境都有著分散的動作空間:我們可以向四個方向移動或者將板子向左向右傾斜。理想情況下,對于類似自動駕駛的產(chǎn)品,我們想學(xué)習(xí)連續(xù)的動作,例如轉(zhuǎn)動方向盤。在這個3D環(huán)境下,我們可以選擇傾斜板子到任意值,這也讓我們對動作有了更多控制,但是動作空間也更大了。

下一步

下面是區(qū)分各種算法的幾個概念:

并列(parallelizing):A3C是最常見的方法之一。它為actor critic添加了異步步驟,使其能并行運行。這讓它在合理時間內(nèi)解決更多有趣的問題。演化方法可以進一步并行化,并且表現(xiàn)得很不錯。

課程學(xué)習(xí)(curriculum learning):在很多情況中,隨機運行可能不會得到任何獎勵。這使得探索過程變得非常棘手,因為我們永遠學(xué)不到任何有價值的東西。在這樣的情況下,我們可以簡化問題,先解決一個簡單版本的問題,然后用基礎(chǔ)模型再解決更復(fù)雜的環(huán)境。

記憶:例如,利用LSTM,我們可以記住過去發(fā)生了什么,然后用序列進行決策。

基于模型的強化學(xué)習(xí):目前有好幾種方法可以幫助算法建立它們學(xué)習(xí)的環(huán)境模型,這樣它們可以推斷出環(huán)境是如何工作的,同時只用做簡單的動作就能得到較高獎勵。AlphaGo就結(jié)合了模型和計劃。

至此,我的總結(jié)就結(jié)束了,希望你能覺得有用!如果你想深入了解強化學(xué)習(xí)。編者按:本文作者是專注于機器學(xué)習(xí)和數(shù)據(jù)科學(xué)的專家Emmanuel Ameisen,他在自己的博客上分享了對深度學(xué)習(xí)的理解,用簡明扼要的方式為大家講述了深度學(xué)習(xí)的基本概念。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4588

    瀏覽量

    92505
  • 機器學(xué)習(xí)
    +關(guān)注

    關(guān)注

    66

    文章

    8352

    瀏覽量

    132315
  • 深度學(xué)習(xí)
    +關(guān)注

    關(guān)注

    73

    文章

    5465

    瀏覽量

    120891

原文標(biāo)題:這可能是最通俗易懂的深度學(xué)習(xí)科普文了

文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    單片學(xué)習(xí)資料。深入淺出通俗易懂,用錢買的。

    單片學(xué)習(xí)資料。深入淺出通俗易懂,用錢買的。
    發(fā)表于 02-04 22:46

    通俗易懂的PID教程

    本帖最后由 Calvin248 于 2013-5-5 15:31 編輯 幫助大家更好的理解PID算法,講解的很通俗易懂,并且附有程序,幫助大家理解掌握!
    發(fā)表于 05-05 15:30

    模擬老虎機程序分享

    自己做了個模擬老虎機,還有很多不足,請各位高手點評
    發(fā)表于 01-13 22:29

    通俗易懂的PID算法

    發(fā)幾個通俗易懂的PID算法,需要的拿走
    發(fā)表于 01-26 00:54

    通俗易懂系列整合—電源基礎(chǔ)知識講解

    之前發(fā)表了六篇用通俗易懂的話講解電源知識的文章,分別是關(guān)于三極管、電阻、電容、電感、二極管和場效應(yīng)管的講解。怕想學(xué)習(xí)的壇友找不到內(nèi)容,所以這邊整合一下,給大家分享文章的鏈接。用通俗易懂的話讓你明白
    發(fā)表于 02-17 09:43

    PID通俗易懂

    PID通俗易懂.....................
    發(fā)表于 06-30 18:54

    通俗易懂電子稱綜合演示篇

    通俗易懂電子稱綜合演示篇:前幾篇鏈接如下:通俗易懂電子稱開發(fā)立項篇https://bbs.elecfans.com/jishu_919726_1_1.html
    發(fā)表于 07-18 21:17

    通俗易懂電子稱開發(fā)導(dǎo)航篇

    通俗易懂電子稱開發(fā)立項篇https://bbs.elecfans.com/jishu_919726_1_1.html通俗易懂電子稱開發(fā)硬件篇https://bbs.elecfans
    發(fā)表于 07-18 21:22

    通俗易懂的單片教程

    通俗易懂的單片教程
    發(fā)表于 09-29 15:45 ?637次下載
    <b class='flag-5'>通俗易懂</b>的單片<b class='flag-5'>機</b>教程

    卡爾曼濾波的原理說明(通俗易懂)

    通俗易懂的 卡爾曼濾波原理 由淺入深不光是公式的介紹
    發(fā)表于 12-08 18:13 ?37次下載

    卡爾曼濾波的原理說明(通俗易懂)

    這是關(guān)于卡爾曼濾波的原理說明(通俗易懂),適合初學(xué)者
    發(fā)表于 03-16 14:40 ?0次下載

    PID通俗易懂

    PID通俗易懂PID通俗易懂PID通俗易懂PID通俗易懂PID通俗易懂PID通俗易懂
    發(fā)表于 04-19 09:54 ?21次下載

    步進電機基本原理(通俗易懂)

    步進電機基本原理(通俗易懂)
    發(fā)表于 11-30 11:55 ?0次下載

    通俗易懂的ArkTS語言入門指南

    本文為我整理出來最通俗易懂的 ArkTS 語言入門指南。
    的頭像 發(fā)表于 06-18 15:12 ?2.2w次閱讀
    最<b class='flag-5'>通俗易懂</b>的ArkTS語言入門指南

    通俗易懂的PCB爆板原因以及玻璃轉(zhuǎn)換溫度

    科普通俗易懂的PCB爆板原因以及玻璃轉(zhuǎn)換溫度
    的頭像 發(fā)表于 11-24 16:01 ?1008次閱讀
    <b class='flag-5'>通俗易懂</b>的PCB爆板原因以及玻璃轉(zhuǎn)換溫度