<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # (1) 簡介 > 作者:[謝天](https://www.zhihu.com/people/xie-tian-55-77) > > 來源:[POST 館](https://zhuanlan.zhihu.com/c_150977189) ## 什么是增強學習? 首先我們不要去想很酷炫的人工智能,而從我們會如何訓練一只狗談起:你很可能會想訓練狗去做一些事情,比如讓狗坐下。一種可行的辦法是,如果狗做出了你喜歡的行為,那么你將對狗進行獎勵;而如果狗做出了你不喜歡的行為,則對狗進行懲罰(或者不給予獎勵)。具體來說,每次你一叫狗坐下狗就坐下,你就給他點兒好吃的;而如果它沒有坐下,那么就不給吃的。通過類似這樣的效應,狗就能通過這種獲得獎勵的機制來逐漸學習到你想讓它干什么。 **增強學習** (Reinforcement Learning) 本身則基本是對這一個原則的數學化描述。增強學習有一個學習者,經常稱為**智能體** (agent)。智能體需要和周圍的環境和整個世界打交道,智能體所做的事情是做出**決策** (decision),來執行什么**行動** (action),在一些時候也成為**控制** (control);而世界環境則接受智能體所做出的決策,并給出相應的后果。我們主要關注的是兩種后果:第一種是智能體所能看到或者感知到的它的行動所產生的結果,稱為**觀測** (observation):譬如一個機器人想要到某個地方去,它能“看”到它經過一整個過程的周圍景觀;另一種是智能體能直接通過做出某項行動所受到的**獎勵** (reward),譬如狗能夠得到食物來讓它的胃得到滿足。 用幾個簡單的例子來說明這一問題。 1. 第一個是狗,作為一個動物,它能影響世界的方式主要是通過肌肉活動,來發出聲音或者移動四肢之類的作為行動。它的觀測來自于它的感知器官,如視覺和嗅覺。它的獎勵譬如給予的食物。狗通過這些東西來認知到它是不是在做一件正確的事情。 2. 第二個是 Baymax 大白,它能影響世界的方式主要通過它的電動機,因此行動主要由控制電動機的電流、扭矩等的致動器來做出。它的觀測主要來源于它的傳感器、攝像頭等,而它的獎勵是由一些代碼決定的,如任務執行成功度的評分:如果 Baymax 要學習如何跑得快,那么獎勵就是它的跑步速度。 3. 第三個是運籌學中的庫存管理問題,這一問題中的行動如系統在什么時候買什么東西,觀測為商品的庫存水平,獎勵是系統運行的利潤:我們一般知道如果商品庫存過多則需要很多的庫存費用,而庫存過少則不能滿足銷售需求而使整體利潤降低。 4. 此外,也可以運用到機器翻譯中。如行動是法語句子,觀測為英語句子,獎勵是諸如 BLEU 評分 (Papineni et al., 2002)。 事實上,世界中有很多各種各樣的問題可以被描述為增強學習問題。增強學習問題也是最廣義的機器學習問題之一。值得一提的是,所有監督學習問題都可以被重新表述成一個增強學習問題,即便這不見得是一個好主意。如將輸入定義為觀測,輸出定義為行動,損失函數定義為獎勵。這樣做有時候不好是因為增強學習問題往往假設更少,因此更難被解決,但也有例外情況:如使用 BLEU 評分來描述翻譯質量,BLEU 是不可微的,因此常見的監督學習方法對這個問題并不好做,此時就適合用假設更少的相關增強學習算法。 ## 為什么要做深度增強學習? 這個就是由深度學習的特性決定的:我們采用深度學習的基本邏輯就是它能進行端到端 (end-to-end) 的訓練,做出一個復雜的多層的具有很強表達能力的模型。以目前深度學習最成功的領域,機器視覺為例,深度學習可以訓練出一個模型,從像素級別的圖像經過卷積神經網絡的若干線性和非線性變化最終產生出一個分類輸出,來說明這個圖片是一個什么。以下的圖形就被分類成一只老虎: ![](https://img.kancloud.cn/0c/50/0c50fd60256364cfda22d83ecdbce620_720x125.jpg) 我們關注深度模型,是因為目前我們認為深度模型能夠讓我們的增強學習算法來端到端地解決非常復雜的問題。將兩者結合,我們期望深度模型能提供給增強學習算法解決非常復雜的決策問題的能力。 那么端到端的學習手段對這樣的**序貫** (sequential) 決策問題有什么好處?絕大多數的機器學習系統都會通過看到的東西來以某種形式影響著世界。智能體通過機器學習的分類輸出來決定其行動。上面的例子,照片的大部分面積是一只老虎。智能體在收到這是老虎的結論之后,通過一些決策過程得到逃跑這一行動,進而影響了整個環境。這樣就構成了一個從感知到行動的交互過程。當然,前者的結論可能很難被“標簽化”,譬如一只飽腹睡著的老虎和一只饑腸轆轆的老虎的意義就相差很大,很難說是一個分類標簽那么簡單,因此決策過程可能也會變得相當復雜。一個端到端的決策就刨除了這個標簽,使得能從輸入直接得到行動決策輸出,如下圖: ![](https://img.kancloud.cn/53/fc/53fc87398b88547b2058f0ae307fabb7_720x287.jpg) 這樣做有利于我們把我們要做的整件事情通盤考慮,而**不需要人為去設定一些中間點**。如我們可以從整個庫存系統的收益的角度來制定決策,可以從跑速度最快的角度來制定 Baymax 的運動,可以從最大化食物的角度來決定狗的肌肉應該做些什么事情。 我們來描述兩個人工設計管道 (pipeline) 流程的例子。 1. 第一個是機器人控制系統。如果我們想弄一個機器人控制流程,首先第一步是從**觀測**得到像素級別的圖像;第二步是從這個圖像得出現在的情況意味著什么,即**狀態估計**;第三步是**模型預測**,可能會參考物理模擬器和相關仿真引擎來預測機器人下一步動作的效果;第四步是根據預測結果做行動的**計劃**;第五步是將計劃的結果變成**低級控制 (low-level control)** 來算出控制電機運轉和扭矩的命令,最終實現控制。 2. 第二個是視頻游戲。我們從**游戲 API**得到游戲的相關數據,并**提取相關的特征**,如敵人在什么地方;接著建立**狀態機**,在什么狀態下你的機器人應該做些什么事情,如你的分數比對手高則你更愿意出去來打擊你的對手,反之更愿意進入一個防守狀態之類云云;然后有一個**計劃器**,從狀態機的每個狀態將計劃(如到哪里去設計)轉達為**低級控制**,最后實現控制。 這樣每一個階段都被抽象化,立足于解決一個比較簡單的問題,并將結果傳遞給下一個階段。但是事實上這樣做每一個階段都會損失掉很多信息,必須保證每一次抽象都足夠正確。這個通常很難做到,如機器人是否成功做出第一步狀態估計,決定了之后的行動是否可靠。有點像很多綜藝節目里面的“動作傳話”這樣的自編碼器 (autoencoder),第一個人看了成語后表演,經過多個人傳遞后要從最后一個人的表演中還能保留有正確的信息。在多年前的機器視覺實踐中,一個比較常見的流程就是先提取 HOG (Histogram of Oriented Gradient) 特征,再提取器 DPM (Deformable Part Model) 特征 (Felzenszwalb, 2008),最后送給一個支持向量機來做分類。深度學習的最大革命就是它可以自動定基,無需自行設計這些抽象層,無需做特定的接口,目標直達分類問題。這樣端到端的訓練機制避免了對特征提取和層次設計的長期探索,大大拓寬我們能做的事情范圍。 ![](https://img.kancloud.cn/b1/0c/b10c70ffe03da9acebfd4c112686dcd2_720x430.jpg) 一個基于深度增強學習的機器人控制系統如上圖。機器人攝像頭為深度神經網絡提供像素圖像輸入,深度神經網絡提供馬達扭矩級別的控制輸出,形成一個序貫決策循環。一個形象但不確切的的理解方式是,這個神經網絡的前幾層卷積層可以認為是視覺皮層,而后幾層全連接層認為是馬達皮層,兩者都是高度專業化的,我自己感覺類似于生物組織中大腦區域的分化。想要做這樣的事情,有兩個很大的挑戰。第一點是它不像監督學習,通常沒有人告訴它看到什么圖像就應該做什么樣的馬達指令。第二點是它的行動會產生影響后果,不能只關注一個決策是不是做對了,而更應該關注整個序貫決策的正確性,直到產生我們想要的結果。因此深度增強學習的實踐很多是一個試錯的過程:系統嘗試去做一件事情,觀察結果后調整策略。 與 Levine 教授接近,我自己也覺得增強學習問題更接近 AI 的本質,可以用它來描述各種各樣的學習任務。如果能讓增強學習解決非常復雜的問題,那么它很可能在實踐中有用,而深度模型能賦予增強學習這一能力。這也就是為什么我個人對深度增強學習非常感興趣。 通常由幾種情況我們不需要關注序貫決策,一種是系統做出的決策都是單獨的,譬如監督學習中所常見的分類或者回歸問題;另一種是當期決策不會影響后續決策的情形。而很多更廣泛的情形,我們需要關注序貫決策:**有限監督**情形,我們知道我們想要什么,但不是怎么去具體做到它(我認為這種情形非常普遍,這一情形意義特別大),如狗知道它想要吃的但是不知道怎么用它的肌肉去贏得吃的;**有后果的行動**情形,一個單獨的行動不會立即產生所有的損益效果,而只有整個序列完成之后才能確定是對了還是錯了。這類問題在譬如機器人、自動駕駛汽車、語言和對話、商業運營和金融等領域都有很大意義。 當下也有三個實際原因來鼓勵我們學習深度增強學習。第一點是在近幾年深度學習的發展已經使我們看到了很多有表現力的高容量的模型,有了表現非常復雜決策任務的能力;第二點是增強學習的發展使得訓練增強學習模型的算法有了很大的可擴展性;第三點是當前計算力的發展已經能使得我們在一定時限內訓練足夠復雜的模型來解決現實問題。這一切都使得深度增強學習的研究是非常務實的。 事實上,將高容量的非線性模型納入決策之中的深度增強學習某種意義上是“新瓶裝舊酒”,80 年代末就有用神經網絡做控制的專著,90 年代出現的很多想法到近年才被很好實現;而且很多想法依然是最前沿的有先進性的,因為大家還不知道怎么去做這些事情。關于用神經網絡結合增強學習下棋也不是 AlphaGo 的首創,Tesauro (1995) 編寫了一個叫 TD-Gammon 的軟件,利用 Temporal Difference (TD) Learning 訓練神經網絡在西洋雙陸棋上擊敗了頂尖人類選手。 在當下,深度增強學習有很大影響力的工作已如雨后春筍。如在 Atari 游戲上(因為 ET 事件而倒塌的曾經的游戲界巨子,現已成為了 AI 的試驗田)取得顯著成果的:使用 Q-學習法 (Mnih et al., 2013/2015)、使用策略梯度法 (Schulman et al., 2015; Mnih et al., 2016);在實際的機器人控制上:使用引導策略搜索法 (Levine et al., 2015)、使用 Q-學習法 (Gu et al., 2016);當然還有著名的 AlphaGo (Silver et al., 2016),無需多談。 ## 實際序貫決策還涉及哪些其他問題? 深度增強學習問題到真實世界問題之間還是有很多距離的。基本的深度增強學習的目標是最大化獎勵,但這不是序貫決策問題所僅僅關心的。有些時候,指定獎勵函數是什么都是非常困難的,需要很多復雜的工程,而**逆增強學習** (Inverse Reinforcement Learning) 則致力于從例子中學習獎勵函數;有一個問題是將技能在不同的領域之間進行傳遞,有些時候可能沒有足夠的時間或者帶寬來直接學習目標領域,這個時候**遷移學習** (Transfer Learning) 就可以使用過去的經驗來加速;有的時候我們可以獲得非常充足的經驗,但是可能對獎勵或者任務并不明確,這個時候就可以用之前的經驗來預測從而完成任務。 獎賞從何而來?如果我們考慮玩一個 Atari 視頻游戲,我們會考慮最大化右上角顯示的得分,這個還挺明確的;但是如果我們要弄一個機器人讓它倒滿一杯水,這個獎賞函數該怎么設置?這個任務對于孩子來說并不難,但是對于機器人來說則異常艱難,也是一個開放問題。從生物學、大腦的角度看,有一塊非常復雜的、叫基底核 (Basal ganglia) 的部分負責人類的這塊“獎賞”,一般是對進化有利的人類行為進行獎勵。很難說是一個來自奇妙的地方的一個奇妙的“得分”,必然是有一定來源的。一只獵豹在捕獵一只羚羊,獵豹不能只是隨機地動它的四肢直到捕到羚羊這個事情發生,必然有很多諸如對方向感知等,這個獎勵系統事實上必然是非常復雜的。事實上,獎賞系統的存在性和完善性已然是一個相當強的假設。 關于監督學習,拋開端到端的函數擬合這樣的強形式,較弱的形式也會得出一些非常有趣的問題,需要用到更多的主觀能動性。第一種是從其他智能體的成功示范中學習,如直接復制觀察行為的**行為克隆** (Behavior Cloning),或者是試圖從觀察到的行為來“理解”實際意圖構建獎賞評分的逆增強學習:看智能體做了什么,找出為什么它們能成功的原因,并找出自己的方式——我認為人類的學習很大程度上就是這么在做的,因此是一個非常有意思的研究方向。第二種是通過對世界的觀察來學習,如獵豹理解周圍的物理環境來預測怎么去抓住羚羊,而不僅僅依賴長期的試錯過程,或者如找出結構規律,通過其他感官得到的某種程度的“通感”來加速對視覺的推斷,有點類似于無監督學習。第三種是從其他任務中學習(這一點也是人類非常擅長的),如在過去做過類似結構的任務,就使用遷移學習來加速到現在要做的任務中來;最近也有一個最近廣受關注的很火的**元學習** (Meta-learning) 的概念,比遷移學習來得更微妙,用過去的學習經驗來弄清如何學習得更快:我不知道怎么解決這個問題,但是在過去我通過嘗試一堆方法來解決過其他問題,因此我同樣把這些方法在現在的問題中進行嘗試看看效果。 **模仿學習** (Imitation Learning) 是解決序貫決策問題的一種很直接的方式。來自英偉達公司的一項自動駕駛的研究 (Bojarski et al., 2016) 就采用了這一技術,僅使用復制人類司機的行為,沒有用到任何獎勵函數或者傳統意義上的增強學習。雖然有一些理想化,這說明了僅通過模仿人類專家的行為已經能做很復雜的事情了。在模仿學習之上,就有了對意圖的推斷,這一點即便是孩子也可以做得相當好。有一個視頻是大人雙手捧著一大堆書然后想把書塞進關著門的櫥子里,但是沒有手打開,然后孩子就跑過來幫忙把櫥門打開,幫助他解決這一問題。Finn et al. (2016) 使用逆增強學習技術指導機器人完成一個拿著水杯倒水給另一個不同位置的水杯的任務,機器人就通過人類的教學,“理解”了這一意圖。 增強學習強調學習“技能”,學習從觀測狀態映射到行動的這樣一個行為。當然我們也可以嘗試去預測,而預測則是將現在的觀測狀態和行動,映射到下一個狀態。預測是人類大腦的一個重要組成部分,事實上人類經常在做這樣的事情,也用到了運動控制上。Wolpert and Flanagan (2001) 表示我們對運動指令所產生結果的預測,形成了感覺運動領域全方位的重要理論概念。如果你能進行預測,就能在還沒有執行這一行動之前想像可能會發生什么,就能通過合理的行動來完成目標。這是想象力告訴你這么做會成功,而不僅僅是依賴反復的試錯。如果我們有一個完美的(預測)模型,能確切地告訴你未來會發生什么,我們可以期望做非常復雜的決策問題。這一類實驗常常在模擬中,如 Mordatch et al. (2015) 在模擬器中使用深度學習和完美模型的軌跡優化來訓練小機器人走向用戶指定的點(這個點的方位在不停變化),這類方法也成為基于模型的增強學習 (Model-based RL)。如果我們沒有這樣完美的模型,也可以一定程度對現實世界的控制問題做出預測。如 Finn et al. (2017) 使用一大堆機器人與周圍環境隨機互動,記錄并收集行動后的圖像,來構建循環卷積神經網絡模型,通過看視頻的第一幀和提供之后機器人會做什么動作,預測會序貫產生的觀測場景。 ## 如何建造智能機器? 人類的大腦是分成很多不同區域,每個區域做不同的工作。作為一個工程師,可能會想到做出一堆模塊組件,如果能對每一個區域做出合適的組件然后弄在一起倒也是合理的。但是事實上這樣做出的智能體很難適應不斷變化的新情形,這樣的智能系統可能是相當脆弱的。 考慮將“學習”本身作為智能的基礎。有以下幾個事實,有一些技能是人類的先天屬性,譬如哭喊,這個除了身體缺陷外是人人都能做到的;有一些技能則是只有通過后天學習得到,如駕駛車輛,寫論文之類;人類強大到可以學習非常非常多不同的東西,包括非常復雜的事情。這幾個事實告訴我們,我們的學習機制看起來足夠強大,能做到任何被冠以智能之名的事情。但是依然有必要去將一些沒有時間去學的非常重要的內容進行“硬編碼”(hard-code),這樣可以把這些事情做得相當快。 人類的大腦分區,是不是每一個區域有一個特定的算法之類的東西來執行呢,如這塊存儲了視覺算法,另一塊儲存了運動算法,然后連起來?或是應該有一個靈活的算法來執行所有事情?如果你現在被要求做這個非常復雜的系統,對每一塊設計學習算法可能是非常麻煩的,可能我們只需要一個通用的算法。從生物感知的角度,這樣的猜想可能是真的。有研究證明人存在非常見的感知手段,如有用舌頭通過攝像頭的電極連線來“感受”到世界,盲人通過回聲定位來確定位置。也有對雪貂做實驗,將小時候的它們的視神經從視覺皮層切斷連到聽覺皮層,等到長大了發現視覺依然可用。這說明即便是非常規的感知手段,生物依然可以知道怎么去用這些感官來做事情,也說明了推廣到通用算法是可能的。 那么這個通用算法的需求應該是什么?首先它必須能解讀非常豐富的感官所帶來的輸入,包含看到的聽到的圖片文字之類的。同樣它必須能給出非常復雜的行動,來影響周邊的世界。很多時候想做的事情非常抽象,這時通用算法要將買賣股票編譯為實際的物理運動,有點像計算機中的低級語言。這兩點需求正好對應了深度增強學習的兩大特征:深度模型能夠幫助我們處理非常復雜的感知輸入,同時也能計算出非常復雜的函數;而增強學習能夠選擇非常復雜的行動。有一些相關證據說明這一問題。早在 Saxe et al. (2011) 使用深度學習來學習人類的視覺、聽覺和觸覺,其統計特征與之前做過的實驗相似。雖然這并不意味著深度學習做的和人類真正做的是一回事,但說明深度學習能夠助力學習這樣復雜的函數,使得統計特征與真實的實驗相近。這提供了一種可能性。增強學習則把決策問題轉化為了計算框架。一方面,預測獎勵的感知與獎勵本身的特征非常相關(我的理解是譬如狗怎么做去獲得食物,和食物本身在那邊非常相關),另一方面,動物的基底核與增強學習的獎勵函數也可以有一個對應關系。此外,無模型 (Model-free) 的增強學習類似的適應過程常常與動物適應過程的實驗數據相吻合(雖然并不總是這樣)。這些都說明了增強學習可能是一個好主意,而深度學習能幫助它做更復雜的事情。 我們也關心現在深度學習和增強學習到底能做好一些什么樣的事情。主要有三類問題。一類以 AlphaGo 在圍棋領域的突出事跡為代表,在一個已知規則且規則簡單的領域內,獲得很高程度的精通水平;第二類是給予足夠的經驗嘗試,使用直接的傳感器數據作為輸入來學習簡單的技能,這個在機器人中比較常見;第三類則是從足夠多的人類專家提供的行為中模仿學習,如自動駕駛。 同樣這類問題也有一些缺陷。首先,人類的學習速度可能快得驚人,而深度增強學習算法通常學得很慢;其次,人類可以利用過去的知識,而在深度增強學習中的遷移學習依然是一個開放問題。此外,一個很經常的問題是并不知道獎勵函數到底應該是什么東西,也不知道預測在整個問題中究竟應該處于怎么樣的角色。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看