背景
強化學習是機器學習三大分支之一,除去強化學習外,還有監督式學習和非監督式學習,雖然本系列文章主要介紹強化學習,但是瞭解另外兩類的特點還都是很有必要。本系列的文章首先整體介紹強化學習的相關知識,然後是相關的演算法,第一個演算法是Q-Learning。
監督式學習
監督式學習好比有一位老師告訴機器某個物件有什麼特徵,例如人有兩條腿,兩隻眼睛等等,而這些特徵被稱之為標籤,機器根據這些帶有標籤的大量資料訓練自己,獲得經驗,當獲得資料集之外的輸入時(檢驗模型),機器會根據自己學習到的經驗,判斷這個輸入是什麼物件。不難看出,監督學習便是通過大量帶有標籤的資料訓練機器自身,機器從中獲得經驗,達到可識別物體的目的,廣泛應用於分類問題和迴歸問題。為了便於理解,這裡舉一個例子:現在需要讓機器能夠在分辨羊和雞,最初機器是一個白痴,什麼也不懂,於是用大量帶有特徵的資料集來訓練機器,例如告訴機器羊有四條腿,雞隻有兩條腿;羊的體型大,雞的體型小;羊有一對犄角,而雞沒有等等,當然資料越多越好,特徵越具體越好,通過大量的資料訓練後,放一隻羊交給機器識別,機器便會提取當前識別物件的特徵,有沒有犄角,有幾隻腿等等,然後和自己學習到的標籤對比,得出是羊的結論。
非監督式學習
非監督學習在學習過程中沒有老師告訴你資料的標籤,也就是說機器得到的資料僅僅是一條條資料,資料不帶有任何提示資訊,而機器的任務是通過觀察大量的資料,自己形成一套認知體系,能夠將所有的資料進行歸類,但是機器本身並不知道這個類代表什麼,例如:給機器輸入大量的雞和羊的資料,但是不告訴機器它們的特徵,機器通過訓練後能夠將羊和雞分成兩類,但是機器並不知道他們是羊和雞,就叫聚類。
強化學習
從前文可以看出,監督學習和非監督學習的經驗來源(也就是資料集)都是靜態的。現在假設這樣一個情景,我們需要訓練一個機器人能夠自主的在地面上行走,我們應該怎麼訓練它呢?按照非監督學習或者監督學習,我們需要向機器人提供大量關於環境的資料,什麼是障礙物,什麼是溝壑等等,但是現實環境中影響因素很多,例如障礙物有很多種,有石頭這樣的較小障礙物,也有高樓這樣的障礙物,機器面臨不同的障礙物作出的反應也不同,前者是做出更大的跨步躲開障礙物,後者則需要繞行。而在環境中這樣的因素很多,加之環境變化很快,因此提供一個完整的資料集來訓練機器人顯然已經不可行。而強化學習便可解決這樣的問題,強化學習的資料集不是靜態資料集,而是動態的。強化學習可稱之為引導式學習,也有人稱之為試錯式學習,將機器(代理)仍在環境中,讓它自己探索(即在環境中自由玩耍),機器會做出很多動作作用於環境,並且環境會反饋給機器一個獎勵告訴機器人他做的動作是好還是壞,比如機器人向右走跌倒了,環境會反饋一個不好的獎勵給機器,告訴機器在這個狀態作這個動作並不有利,如果向左走沒有跌倒,則會反饋一個較好的獎勵,告訴機器在這個狀態做向左走的動作有利,通過不斷地施加動作作用於環境,環境做出反饋,是的機器人不斷從環境中得到經驗完善自己,告訴自己在某個狀態下做某個動作使自己不會摔倒,從而使其能自主行走。從而得到與環境最佳的互動策略。好比一位老師在你面前不會告訴你應該做什麼,但是你做的每一個動作老師都會給你打分(獎勵),不同動作得分有高有低,因此你會選擇分數更高的動作避免更低的動作。這裡用一個經典的方格世界舉例:假設這裡有一個5*5的方格,要求機器人從(1,1)的方格開始,目標走到(5,5)的方格。機器人在每個方格的動作只有前後左右,最初機器人什麼也不懂,在方格世界亂走,在(1,1)(左下角)有上下左右四種動作,如果選擇了左或者下,就走出方格世界,環境返回獎勵-1告訴機器人在(1,1)向左向下的動作很不好,如果向上或者向右則得到0的獎勵,這樣子機器人的狀態從(1,1)轉移到(1,2)或者(2,1),然後機器人繼續在該位置執行四個動作中的一個到達下一個狀態,得到相應的獎勵,當到達(5,5)時,獲得獎勵+10,通過這樣不斷的訓練,機器人便會在每個狀態選擇有利的動作執行而避免收益低的動作(例如在起點不會向左向下),從而最終到達終點。
強化學習五個方面
前文簡單介紹了監督學習、非監督學習、強化學習,而本系列文章主要記錄強化學習相關知識,首先看一下強化學習的五個內容組成。強化學習可以總結為環境+獎勵+表達策略的方法+選擇演算法訓練代理+部署驗證。在強化學習中,需要訓練的物件(即為前文的機器、機器人)統稱為Agent(代理、智慧體)。
Environment(環境)
環境即為代理玩耍的場所,前文提到,強化學習就是代理與環境不斷和互動得到反饋來完善自身的過程。代理可以有很多的動作,動作作用於環境,環境可以根據動作給代理獎勵評價代理的動作的好壞,並且代理可以從環境中觀察到狀態資訊。在方格世界中,環境就是整個5*5的方格,動作就是上下左右,狀態就是對應的位置資訊,也就是座標。
Reward(獎勵)
獎勵是代理用於獲取經驗、完善自己的重要依據,根據環境反饋的經驗,代理可以瞭解到在當前狀態下執行某個動作的利弊,從而使其在每個狀態執行有利的動作,而避免低收益動作。例如在方格世界中在(1,1)點執行向下或者向左會得到-1獎勵,是一個消極獎勵,代理便會在該狀態避免該動作。而在(4,5)執行向右的動作,便會得到+10的獎勵,是一個積極的獎勵,是的代理在該狀態更傾向於該動作。
Policy(策略)
策略可以理解為一個函式,該函式是狀態空間到動作空間的對映,輸入是狀態,輸出是執行動作,用於指引代理在該狀態執行什麼動作,最優策略則是在每一個狀態下,都能使得代理做出合適的動作從而獲得最佳的長期獎勵(價值)。而強化學習的目標就是學習與環境互動得最佳策略,而學習就是系統性調整引數使得策略收斂到最佳狀態的過程。表達策略的方法多種多樣,在之後的文章會介紹。
訓練代理的方法
常用的強化學習演算法有Q-Learning、Sarsa、DQN(Deep Q-Learning Network),在後面會逐步介紹。
部署驗證
實地部署驗證結果。
強化學習分類
強化學習可以分為兩類,基於模型的方法和無模型方法。
無模型的方法
在無模型訓練方法中,代理對環境一無所知,因此代理需要對環境的所有區域進行探索,意味著會花費大量時間去探索低獎勵回報的區域,這樣會浪費大量的時間去做無用功,但在大多數情況都會使用這種方式。
基於模型的方法
在開發者知道環境中某些區域或者全部環境的情況下,開發者可以將這些情況告知代理,就像一張地圖,會告訴代理哪些區域回報極低,避免探索低迴報區域,加快訓練速度,節約資源。
總結
關於強化學習的概述就當這裡結束,水平有限,如有理解不當或者需要改正補充的地方,歡迎批評指正。接下來我將詳細闡述五個方面,闡述完後開始相關演算法的分享,包括演算法的理解、演算法分析與總結、演算法實現、具體場景的模擬與分析。