強化學習是如何解決問題的?
什麼是強化學習演算法?呢要回答這個問題,必須先回答強化學習可以解決什麼問題,強化學習如何解決這些問題。
強化學習可以解決什麼問題
例子是舉不完的,可以用一句話來說明強化學習所能解決的問題:智慧型決策問題。更確切地說是序貫決策問題。什麼是序貫決策問題呢?就是需要連續不斷地做出決策,才能實現最終目標的問題。如圖1.1中圖a的二級擺問題,它需要在每個狀態下都有個智慧型決策(在這裡智慧型決策是指應該施加給台車什麼方向、多大的力),以便使整個系統逐漸收斂到目標點(也就是兩個擺豎直的狀態)。圖b中的alphago則需要根據當前的棋局狀態做出該下哪個子的決策,以便贏得比賽。圖c中,機械人需要得到當前狀態下每個關節的力矩,以便能夠站立起來。一句話概括強化學習能解決的問題:序貫決策問題。那麼,強化學習是如何解決這個問題的呢?
在回答強化學習如何解決序貫決策問題之前,我們先看看監督學習是如何解決問題的。從解決問題的角度來看,監督學習解決的是智慧型感知的問題。
我們依然用乙個圖來表示。如圖1.2所示,監督學習最典型的例子是數字手寫體識別,當給出乙個手寫數字時,監督學習需要判別出該數字是多少。也就是說,監督學習需要感知到當前的輸入到底長什麼樣,當智慧型體感知到輸入長什麼樣時,智慧型體就可以對它進行分類了。如圖1.2所示,輸入手寫體長得像4,所以智慧型體就可以判斷它是4了。智慧型感知其實就是在學習「輸入」長得像什麼(特徵),以及與該長相一一對應的是什麼(標籤)。所以,智慧型感知必不可少的前提是需要大量長相差異化的輸入以及與輸入相關的標籤。因此,監督學習解決問題的方法就是輸入大量帶有標籤的資料,讓智慧型體從中學到輸入的抽象特徵並分類。
圖1.2 強化學習與監督學習的區別
強化學習則不同,強化學習要解決的是序貫決策問題,它不關心輸入長什麼樣,只關心當前輸入下應該採用什麼動作才能實現最終的目標。再次強調,當前採用什麼動作與最終的目標有關。也就是說當前採用什麼動作,可以使得整個任務序列達到最優。如何使整個任務序列達到最優呢?這就需要智慧型體不斷地與環境互動,不斷嘗試,因為智慧型體剛開始也不知道在當前狀態下哪個動作有利於實現目標。強化學習解決問題的框架可用圖1.3表示。智慧型體通過動作與環境進行互動時,環境會返給智慧型體乙個當前的回報,智慧型體則根據當前的回報評估所採取的動作:有利於實現目標的動作被保留,不利於實現目標的動作被衰減。具體的演算法,我們會在後面一一介紹。用一句話來概括強化學習和監督學習的異同點:強化學習和監督學習的共同點是兩者都需要大量的資料進行訓練,但是兩者所需要的資料型別不同。監督學習需要的是多樣化的標籤資料,強化學習需要的是帶有回報的互動資料。由於輸入的資料型別不同,這就使得強化學習演算法有它自己的獲取資料、利用資料的獨特方法。那麼,都有哪些方法呢?這是本書重點要講的內容。在進入詳細的講解之前,我們在這裡先簡單地了解下這些強化學習演算法的發展歷史。
圖1.3 強化學習基本框架
我們不去深究強化學習演算法的具體發展歷史,只給出兩個關鍵的時間點。第乙個關鍵點是2023年,標誌性的事件是richard s. sutton出版了他的強化學習導論第一版,即reinforcement learning : an introduction(該書第二版的中文版將由電子工業出版社出版),該書系統地總結了2023年以前強化學習演算法的各種進展。在這一時期強化學習的基本理論框架已經形成。2023年之前,學者們關注和發展得最多的演算法是**型強化學習演算法。當然,這一時期基於直接策略搜尋的方法也被提出來了。如2023年r.j.williams提出了rinforce演算法直接對策略梯度進行估計。第二個關鍵點是2023年deepmind提出dqn(deep q network),將深度網路與強化學習演算法結合形成深度強化學習。從2023年到2023年,學者們也沒閒著,發展出了各種直接策略搜尋的方法。2023年之後,隨著深度學習的火熱,深度強化學習也越來越引起大家的注意。尤其是2023年和2023年,谷歌的alphago連續兩年擊敗世界圍棋冠軍,更是將深度強化學習推到了風口浪尖之上。如今,深度強化學習演算法正在如火如荼地發展,可以說正是百家爭鳴的年代,或許再過幾年,深度強化學習技術會越來越普及,並發展出更成熟、更實用的演算法來,我們拭目以待。
已有的強化學習演算法種類繁多,一般可按下列幾個標準來分類。
(1)根據強化學習演算法是否依賴模型可以分為基於模型的強化學習演算法和無模型的強化學習演算法。這兩類演算法的共同點是通過與環境互動獲得資料,不同點是利用資料的方式不同。基於模型的強化學習演算法利用與環境互動得到的資料學習系統或者環境模型,再基於模型進行序貫決策。無模型的強化學習演算法則是直接利用與環境互動獲得的資料改善自身的行為。兩類方法各有優缺點,一般來講基於模型的強化學習演算法效率要比無模型的強化學習演算法效率更高,因為智慧型體在探索環境時可以利用模型資訊。但是,有些根本無法建立模型的任務只能利用無模型的強化學習演算法。由於無模型的強化學習演算法不需要建模,所以和基於模型的強化學習演算法相比,更具有通用性。
(2)根據策略的更新和學習方法,強化學習演算法可分為基於值函式的強化學習演算法、基於直接策略搜尋的強化學習演算法以及ac的方法。所謂基於值函式的強化學習方法是指學習值函式,最終的策略根據值函式貪婪得到。也就是說,任意狀態下,值函式最大的動作為當前最優策略。基於直接策略搜尋的強化學習演算法,一般是將策略引數化,學習實現目標的最優引數。基於ac的方法則是聯合使用值函式和直接策略搜尋。具體的演算法會在後面介紹。
(3)根據環境返回的回報函式是否已知,強化學習演算法可以分為正向強化學習和逆向強化學習。在強化學習中,回報函式是人為指定的,回報函式指定的強化學習演算法稱為正向強化學習。很多時候,回報無法人為指定,如無人機的特效表演,這時可以通過機器學習的方法由函式自己學出來回報。
強化學習尤其是深度強化學習正在快速發展,從當前的**可以初步判斷強化學習的發展趨勢如下。
第一,強化學習演算法與深度學習的結合會更加緊密。
機器學習演算法常被分為監督學習、非監督學習和強化學習,以前三類方法分得很清楚,而如今三類方法聯合起來使用效果會更好。所以,強化學習演算法其中乙個趨勢便是三類機器學習方法在逐漸走向統一的道路。誰結合得好,誰就會有更好的突破。該方向的代表作如基於深度強化學習的對話生成等。
第二,強化學習演算法與專業知識結合得將更加緊密。
如果將一般的強化學習演算法,如qlearning演算法直接套到專業領域中,很可能不工作。這時一定不能灰心,因為這是正常現象。這時需要把專業領域中的知識加入到強化學習演算法中,如何加?這沒有統一的方法,而是根據每個專業的內容而變化。通常來說可以重新塑造回報函式,或修改網路結構(大家可以開心地煉丹灌水了)。該方向的代表作是nips2016的最佳**值迭代網路(value iteration networks)等。
第三,強化學習演算法理論分析會更強,演算法會更穩定和高效。
強化學習演算法大火之後,必定會吸引一大批理**底很強的牛人。這些牛人不愁吃穿,追求完美主義、又有很強的數學技巧,所以在強化學習這個理論還幾乎是空白的領域,他們必定會建功立業,名垂千史。該方向的代表作如基於深度能量的策略方法,值函式與策略方法的等價性等。
第四,強化學習演算法與腦科學、認知神經科學、記憶的聯絡會更緊密。
腦科學和認知神經科學一直是機器學習靈感的源泉,這個源泉往往會給機器學習演算法帶來革命性的成功。人們對大腦的認識還很片面,隨著腦科學家和認知神經科學家逐步揭開大腦的神秘面紗,機器學習領域必定會再次受益。這個流派應該是以deepmind和倫敦大學學院為首,因為這些團體裡面不僅有很多人工智慧學家還有很多認知神經科學家。該方向的代表作如deepmind關於記憶的一列**。
本文節選自《深入淺出強化學習:原理入門》一書
我們是如何解決問題的
我們是如何解決問題的?2015年8月份自己動手寫了乙個工具 restfull request tool 0.0.1 snapshot.jar 裡面用到了 但是遇到乙個問題 沒有顯示表頭 header 如下圖 也在網上查了資料,一直沒有解決.下面才是我的預期 直到今天才解決,但是也是偶然解決的.經過是...
我們是如何解決問題的
我們是如何解決問題的?2015年8月份自己動手寫了乙個工具 restfull request tool 0.0.1 snapshot.jar 裡面用到了 但是遇到乙個問題 沒有顯示表頭 header 如下圖 也在網上查了資料,一直沒有解決.下面才是我的預期 直到今天才解決,但是也是偶然解決的.經過是...
我們是如何解決問題的
我們是如何解決問題的?2015年8月份自己動手寫了乙個工具 restfull request tool 0.0.1 snapshot.jar 裡面用到了 但是遇到乙個問題 沒有顯示表頭 header 如下圖 也在網上查了資料,一直沒有解決.下面才是我的預期 直到今天才解決,但是也是偶然解決的.經過是...