1. 程式人生 > 實用技巧 >【RL】強化學習的基本思想

【RL】強化學習的基本思想

在機器學習中,有監督學習和無監督學習的特點是基於已有的資料,去學習資料的分佈或蘊含的其他重要資訊。強化學習與上述這二者最顯著的不同在於,首先它不是基於已有的資料進行學習,而是針對一個環境進行學習;另外,它的目標不是學習資料中蘊含的資訊,而是尋找能夠在環境中取得更多獎勵的方法。通俗地說,監督學習的目標只是“弄清楚環境是什麼樣的”,而強化學習的目標是“在這個環境中生活得更好”。上述的特點導致了強化學習的思維模式與我們所熟悉的監督學習或非監督學習有非常大的區別。

概括地說,強化學習演算法主要涉及到兩個組成部分:其一是通過與環境互動產生大量的資料,其二是利用這些資料去求解最佳策略。在給定資料集的問題中,我們往往只用考慮演算法的計算量。而在強化學習中,我們不但要考慮演算法的計算量,也要考慮我們產生資料所消耗的成本,這就是資料效率(data efficiency)。如何能高效地與環境互動產生資料(提升資料效率),並高效地求解最優策略(提升訓練效率),這也正是強化學習的困難所在。

下面,我們就分別講一講這兩個部分所用到的主要思想,以及其對於強化學習演算法的意義所在。

一 從環境中產生資料

在有監督學習中,我們假定自然中有一個我們不瞭解的分佈 P ( Y ∣ X = x ) P(Y \mid X=x) P(YX=x)而我們有許多服從於 P P P分佈的資料。我們的目標是通過資料學習出資料背後的 P P P。而強化學習問題中,我們假定有一個能夠自由與其互動產生資料的環境。我們可以不斷從環境中獲取資料,以訓練智慧體在環境中的行為方式,以使其獲得更多的獎勵。有監督學習中我們擁有的是資料,而強化學習中我們擁有的是環境。

有的讀者可能有疑問:“擁有資料”與“擁有環境”有什麼區別?即使強化學習中我們“擁有環境”,但我們仍然要通過與環境互動產生資料,最後通過資料來學習。如此說來,“擁有環境”和“擁有資料”豈不是一樣的嗎?

這裡我們要特別強調的是, “擁有資料”意味著我們擁有環境中隨機產生的資料。 “擁有環境”意味著我們可以自主地選擇與環境互動的方式,從環境中產生我們需要的資料。簡單地說,有監督學習中的訓練資料是環境中隨機產生後交到我們的手上,並不包含我們人為設計的成分;而強化學習的訓練資料則包含了我們主觀設計的成分,它無疑比隨機產生的訓練資料包含更多的價值。正因如此,我們可以專門選擇環境中我們感興趣的或對於目標有幫助的部分進行探索,即根據需要來獲得資料。這也正是強化學習中的探索利用平衡發揮作用的地方。

打個比方,我們目標是訓練一個擅長下象棋的智慧體,使得它能夠儘可能地在標準的象棋對局中戰勝對手。下圖中的 s 1 s^{1}

s1是一個正常對弈中很可能會出現的局勢。熟悉象棋的同學不難看出,到了這一步,紅方已經處於絕對優勢。如果走法恰當,只需要兩步就可以取勝了。即使走法不那麼恰當,也幾乎不可能被對手逆轉;與之相比, s 2 s^{2} s2是一個非常罕見的局勢,只有在專門設計的殘局挑戰中才會出現。在 s 2 s^{2} s2中,紅方處於極其危險的境地,只有一種步步緊逼的走法才有可能反敗為勝。只要有一步的疏忽,就立即會被對手將死。如果單從技術難度的角度來說,局勢 s 2 s^{2} s2下選擇走法無疑是更難的。但問題是,我們的目標是讓智慧體在標準的象棋對局中取勝,這兩種局勢是否對於我們的目標是否同樣重要?
在這裡插入圖片描述
如果我們站在遊戲規則本身來看,這兩種局勢都是遊戲中有可能出現的。假設對弈雙方在符合遊戲規則的條件下隨機地亂走(可以吃對方棋子卻不吃),則出現這兩種局勢的可能性或許不相上下。在這個角度下, s 1 s^{1} s1 s 2 s^{2} s2應該是同樣重要的。但是,如果是兩個有一定象棋基礎的玩家對弈,則對局中幾乎不可能出現 s 2 s^{2} s2的情況。即使 s 2 s^{2} s2局勢下的走法非常精妙,但是它對於我們的目標——在標準對局中儘可能地戰勝對手——卻並沒有那麼重要。由於我們每次產生模擬對局產生資料都是有成本的,所以我們應該產生更多有關 s 1 s^{1} s1局勢的資料,以提升演算法的資料效率。

我們現在面臨的問題是,我們如何知道 s 1 s^{1} s1 s 2 s^{2} s2相比更加重要?我們如何知道 s 1 s^{1} s1是有可能出現的局勢,而 s 2 s^{2} s2則是完全不可能出現的局勢?在訓練剛開始的時候,智慧體的引數是隨機初始化而得到的。如果讓它與人對弈,它就相當於是在隨機地胡亂走棋。這樣,他也沒有能力分辨出 s 1 s^{1} s1 s 2 s^{2} s2這兩個局勢哪一個是更重要的。

為此,我們只有對智慧體進行初步訓練,當它有了初步的分辨能力之後就能夠判斷併產生相對更加“重要”的資料。然後,智慧體又會用這些資料優化自身的策略,並能夠更準確地判斷哪些資料更加“重要”。隨後,它又能夠更有針對性地從環境中產生更加有價值的資料,並進一步優化自身的策略。將這個過程迭代下去,便是一個“越學越強”的過程。這也正是“強化學習”這個名稱的由來。

通過上述的例子,想必我們應該大致能夠體會到“擁有資料”與“擁有環境”的區別。“擁有環境”意味著我們可以源源不斷地、有針對性地從環境中產生我們所需要的資料。換一個角度說,強化學習的目標是尋找能夠在環境中取得較多獎勵的策略。如果僅僅依靠給定的資料是難以求解出很好的策略的。只有擁有可互動的環境,才能充分驗證我們策略的有效性。

有一類演算法稱作模仿學習(imitation learning)。它的思想簡而言之就是將強化學習問題轉換為有監督學習問題。以自動駕駛為例,我們需要從狀態(包括車輛雷達檢測的路況、車載攝像頭拍攝的周圍環境影象),選擇動作(包括轉彎、加油、剎車)。一個很自然的想法是收集大量人類司機駕駛的資料集,從資料中學習狀態到動作的對映關係。這是一個典型的有監督學習問題。

對於一些現實中的複雜問題,模仿學習的實際應用效果很差,這是因為有監督學習與強化學習的性質不同。在有監督學習問題中,我們的目標是要優化真實值 y y y與預測值 f ( x ) f(x) f(x)之間的差距。模型對所有 x x x給出的預測 f ( x ) f(x) f(x)都難免會和實際上的 y y y有誤差。而在整個測試集上,總的誤差由所有 f ( x ) f(x) f(x) y y y的誤差線性疊加而成,這是我們可以接受的;而在強化學習中,假設我們訓練出來的模型有誤差,這會導致我們採取的動作 A 1 ′ A_{1}^{\prime} A1與司機給出的動作 A 1 A_{1} A1有一定的誤差,繼而導致進入的下一個狀態 S 2 ′ S_{2}^{\prime} S2也和 S 2 S_{2} S2有一定的誤差。然後由於我們採取的動作 A 2 ′ A_{2}^{\prime} A2與司機給出的動作 A 2 A_{2} A2有一定的誤差,這會導致 S 3 ′ S_{3}^{\prime} S3 S 2 ′ S_{2}^{\prime} S2的誤差基礎上產生更大的誤差。經歷了多步的過程之後,我們得到的 S t ′ S_{t}^{\prime} St可能已經與人類司機所面對的$S_{t}有了巨大的誤差,以至於訓練集中根本就沒有這種 下的應對方式。這種情況下,根據監督學習訓練的智慧體就無法給出很好的應對方式。

為了在模仿學習的框架下解決這種問題,我們就不能僅僅用已經產生的資料進行模仿,而要找一個專家,讓它對我們新產生的資料不斷進行標註。這種訓練技巧被稱為DAgger(Dataset Aggregation)。

DAgger的基本思路如下所示:
在這裡插入圖片描述
當採取了DAgger的技巧之後,模仿學習就不再只是經典的有監督學習問題,而是具有了一定強化學習的性質。這是因為,我們不再只是擁有給定的資料,而是擁有一個可以按需要不斷產生資料的環境(能夠為資料進行標註的專家)。當然,由於模仿學習與強化學習性質不同,這裡的環境和強化學習所說的環境還是有區別的。我們舉例的主要目的是為了說明可以通過互動產生新資料的重要性。

二 求解最佳策略

上一節中我們說過,如何從環境中產生資料是強化學習中很重要的組成部分,這決定了我們的學習效率。但是,強化學習的核心目的在於求解最優策略。所以,如何利用這些資料計算出最佳策略,這才是強化學習中最核心的部分。具體而言,求解最優策略分為兩大類方法——基於價值的方法與基於策略的方法。每一大類的方法背後都有一定的思路,例如基於價值的方法基於時間差分的思想,而基於策略的方法具有優化的思想。每一大類的方法又包括許多具體的方法,例如大家耳熟能詳的DQN、Policy Gradient、Actor-Critic,等等。這也將是本書的主要內容。

要注意的是,我們所說的強化學習,一般指的是對於一個未知的環境,通過智慧體與環境的不斷互動、產生大量資料,並通過這些資料來學習最佳策略。如果我們既要考慮產生有價值的資料,又要考慮從資料中學習最佳策略,這個問題無疑會非常困難。為此,我們會嘗試進行一些簡化。

在上世紀的中葉誕生了一門叫做最優控制(Optimal Control)的學科,並被廣泛視作是強化學習的前身。所謂的最優控制問題,簡而言之就是要求解一個環境已知的MDP。在最優控制問題中,我們將被給定一個已知的環境表示式(狀態S、動作A獎勵R之間的轉移關係已知),而我們需要針對已知的環境表示式求解最優的策略。由於環境是已知的,所以我們不必考慮如何產生資料的問題,而可以將精力集中於如何求解最優策略的思想與技巧上。

總的來說,強化學習針對的是一個未知環境求解最優策略的複雜問題。在強化學習中,我們既需要與環境互動產生資料,又需要通過這些資料去求解能夠取得最大獎勵的最優策略。因此,我們必須兼顧上述兩個方面,同時提升訓練的資料效率與計算效率。