(一)强化学习概述
??強(qiáng)化學(xué)習(xí)近幾年成為了研究的熱門,AlphaGo的故事家喻戶曉。作為一個(gè)準(zhǔn)研究生,抱著極大的好奇心來學(xué)習(xí)這門理論,雖然網(wǎng)上已經(jīng)有了許多參考資料,但知識還不是自己的。希望寫這樣一個(gè)系列的博客,能夠在對這個(gè)領(lǐng)域有一些淺顯的認(rèn)識。所有文章的角度都會從一個(gè)小白出發(fā),希望能給大家提供一些幫助。如有錯誤,請各位積極幫助指正。
??本系列的參考書籍為《Easy RL》,獲取原文可點(diǎn)此處。提取碼2022。所以整系列博客的布局都是按照該書章節(jié)完成的。另外之前總有人傾力推薦李宏毅老師的強(qiáng)化學(xué)習(xí)課程,這個(gè)在B站上能夠找到資源。但經(jīng)過我親身感受來看,如果你只知道強(qiáng)化學(xué)習(xí)這四個(gè)字兒,最好還是先不要去看,其中涉及到很多前續(xù)課程,直接聽很容易懵的。
??強(qiáng)化學(xué)習(xí)畢竟是一個(gè)理論課,其中不可避免的會涉及到一些數(shù)學(xué)知識。這對我來說也很苦惱,但要想學(xué)明白還是要努力克服。好了,讓我們開始進(jìn)入正題吧!
??作為引言,本文希望能夠講清楚如下幾個(gè)問題?
????1.什么是強(qiáng)化學(xué)習(xí)?
????2.強(qiáng)化學(xué)習(xí)中一些關(guān)鍵的基礎(chǔ)概念
????3.強(qiáng)化學(xué)習(xí)的組成結(jié)構(gòu)
??1.什么是強(qiáng)化學(xué)習(xí)?
??要想介紹強(qiáng)化學(xué)習(xí),就不得不說一下下面這個(gè)圖:
??先不考慮強(qiáng)化學(xué)習(xí),回想一下人本身是如何成長的。當(dāng)我們學(xué)習(xí)東西時(shí),最開始是不知道哪種行為是正確的。一般就是每一個(gè)都試試,如果哪個(gè)受到了肯定(可能有多種行為受到肯定,但大小是不同)我們在下次面臨同樣的情況時(shí)就會有傾向去做這個(gè)動作,久而久之我們對于這種情況的處理的就越來越好。
??把上面的例子和上上面的圖對應(yīng)起來,人就是智能體,東西是從環(huán)境中獲取的。智能體最開始會有一種狀態(tài)(好比人啥也不會),在狀態(tài)下可以執(zhí)行多種動作,執(zhí)行完每次動作后就能夠得到這次動作的反饋(就是指圖里的獎勵)。得到獎勵后,智能體又會進(jìn)入一個(gè)新的狀態(tài)(比如人會了第一步怎么做),于是又可以再執(zhí)行動作。反復(fù)循環(huán),最后智能體的能力就會越來越強(qiáng),
??所以我覺得強(qiáng)化學(xué)習(xí)就是研究一個(gè)小白如何通過和環(huán)境的交互成長為一個(gè)大神。可能最開始小白也不知道怎么成為一個(gè)大神,但是會在不斷地試錯中不斷成長。
??學(xué)習(xí)強(qiáng)化學(xué)習(xí)就要明確它和監(jiān)督學(xué)習(xí)的區(qū)別。
??首先什么是監(jiān)督學(xué)習(xí),我也管它叫有標(biāo)簽學(xué)習(xí)。就是每干一件事都會有個(gè)結(jié)果,而標(biāo)簽就是正確的結(jié)果。每次干完都會和標(biāo)簽做比較,對了結(jié)束,不對吸取失敗經(jīng)驗(yàn)繼續(xù)干。這樣往往最后都能夠得到正確的情況。但監(jiān)督學(xué)習(xí)有兩個(gè)條件需要滿足:
??1)訓(xùn)練的數(shù)據(jù)必須要有標(biāo)簽
??2)數(shù)據(jù)要服從獨(dú)立同分布
??細(xì)看這兩個(gè)要求其實(shí)都很難滿足,現(xiàn)在完成訓(xùn)練標(biāo)簽的主要標(biāo)注手段還是人工,但效率實(shí)在太低。所以比較好的方式是無標(biāo)簽的。同時(shí)真實(shí)場景中采取不同動作會進(jìn)入不同的狀態(tài),不同狀態(tài)后續(xù)看到的場景也是不同的,所以說明前后的數(shù)據(jù)是時(shí)間序列相關(guān)的。這兩個(gè)是監(jiān)督學(xué)習(xí)的難點(diǎn),卻恰恰是強(qiáng)化學(xué)習(xí)的主要針對目標(biāo)。運(yùn)用強(qiáng)化學(xué)習(xí),就能夠順利解決這兩個(gè)問題(換句話說RL適合解決數(shù)據(jù)有時(shí)間序列相關(guān)性問題)。但強(qiáng)化學(xué)習(xí)有它自身的4個(gè)難點(diǎn):
??1)延時(shí)獎勵
??2)要不斷學(xué)習(xí)
??3)需要有一個(gè)好的結(jié)果
??4)環(huán)境帶給你的是有條件的
??延時(shí)獎勵說明的就是:和監(jiān)督學(xué)習(xí)不同,監(jiān)督學(xué)習(xí)中每一步都會和標(biāo)簽進(jìn)行比對。而諸如下圍棋這種強(qiáng)化學(xué)習(xí)場景,只有最終棋局結(jié)束時(shí)才能得到一個(gè)獎勵。前面每步的作用都不直接體現(xiàn),甚至無法判斷每步的正確與否,但是都間接影響著最終的結(jié)果。獎勵的延時(shí)性顯然是不利于模型訓(xùn)練的。應(yīng)該意識到在RL中,環(huán)境可能會告訴你這種行為是錯誤的(獎勵為負(fù)),但并不會告訴你正確的行為是什么。
??不斷學(xué)習(xí)指RL沒有固定的標(biāo)準(zhǔn),只要效果更好就可以繼續(xù)學(xué)習(xí)。那什么時(shí)候停止就是一個(gè)問題,學(xué)習(xí)的目的自然是希望好的結(jié)果,如果效果壞的話那就沒有意義了。
??一個(gè)很直白的問題就是: 智能體是如何獲得能力的?其實(shí)是通過不斷試錯探索。所以RL中研究的一個(gè)重點(diǎn)是:在試錯探索的前提下,智能體的行為如何穩(wěn)步提升。
??2.強(qiáng)化學(xué)習(xí)一些常見的概念
??智能體(agent):優(yōu)化行為的對象
??環(huán)境(environment):智能體通過和環(huán)境交互來學(xué)習(xí)行為,在博弈中指對手
??策略(policy):智能體采取行動的方式,不是具體的行動,但指導(dǎo)行動的發(fā)生。抽象為函數(shù)時(shí),輸入為狀態(tài),輸出為動作。分類包括隨機(jī)性策略、確定性策略(為了防止對手觀測,使用隨機(jī)性策略較多)
??動作(action):智能體實(shí)際的行動,會體現(xiàn)在環(huán)境中,改變環(huán)境的狀態(tài)
??動作空間(action space):環(huán)境確定情況下,有效動作的集合稱為動作空間。根據(jù)采取動作的性質(zhì)可分為離散動作空間、連續(xù)動作空間
??狀態(tài)(state):可以有兩種(智能體state和環(huán)境state),但主要關(guān)注的是環(huán)境的state。認(rèn)為智能體從環(huán)境中獲取的state是用來反應(yīng)環(huán)境的
??觀測(observation):主體是智能體,代表智能體從環(huán)境中看到的信息。
??注:那狀態(tài)和觀測有什么區(qū)別呢?
??這里舉一個(gè)例子:如果以圖像為例,state可以認(rèn)為是我們采集的一張?jiān)紙D像,而observation則是對原始圖像采集特征點(diǎn),observation依舊可以反應(yīng)圖像,但其實(shí)是圖像的精煉。但在算力逐漸提高的今天,其實(shí)可以模糊兩個(gè)概念的區(qū)別,認(rèn)定能夠觀測到所有的數(shù)據(jù),所以現(xiàn)在統(tǒng)一稱為state
??完全可觀測(full observed):智能體能夠觀察到環(huán)境中所有的狀態(tài)
??部分可觀測(partially observed):智能體只能夠觀察到環(huán)境中的部分狀態(tài)
??獎勵(reward):獎勵指按照一定的policy執(zhí)行,能夠收獲的價(jià)值。按照時(shí)間段長短,價(jià)值也可以分成從頭到尾的價(jià)值、執(zhí)行一步的價(jià)值、當(dāng)前狀態(tài)到最后的價(jià)值。
??以上主要說明了六個(gè)概念:
????agent environment policy
????action state reward
??把以上的六個(gè)概念分為兩組,前面三個(gè)描述了宏觀上的強(qiáng)化學(xué)習(xí)交互過程。就是agent通過policy和環(huán)境交互得到結(jié)果,用結(jié)果不斷改進(jìn)policy。而具體的落實(shí)過程是后面一組完成的:在某個(gè)state情況下執(zhí)行action得到reward,又會進(jìn)入下一個(gè)state然后反復(fù)循環(huán)。兩組之間的聯(lián)系在于state是從environment中獲得的,每次執(zhí)行的action其實(shí)是在policy的指導(dǎo)下完成的。
??對于一個(gè)agent,內(nèi)部也是由多方面組成的,主要包括三部分:
??1)策略函數(shù)(policy function):智能體通過policy function確定下一步的動作
??2)價(jià)值函數(shù)(value function):利用value function對當(dāng)前進(jìn)行評估,說明了當(dāng)前策略對后續(xù)回報(bào)的影響,也是未來獎勵的預(yù)測。
??3)模型(model):代表agent對世界的理解。模型決定了下一個(gè)狀態(tài)是什么樣的。模型包括概率函數(shù)(也叫狀態(tài)轉(zhuǎn)移函數(shù))和獎勵函數(shù)。給出其定義及數(shù)學(xué)化表達(dá)式:
??概率函數(shù):狀態(tài)之間如何轉(zhuǎn)移(也就是在狀態(tài)s采取動作a進(jìn)入狀態(tài)s’的概率)
??獎勵函數(shù):當(dāng)前狀態(tài)采取一個(gè)動作,所獲得獎勵
??折扣因子(discount factor):從主觀愿望看,希望盡可能在短的時(shí)間里得到多的獎勵。認(rèn)定越往后獎勵的權(quán)重越小,就把獎勵乘以折扣因子。取值在[0,1]
??存在policy function+value function+model這就組成了馬爾可夫決策過程(這個(gè)將在第二章進(jìn)行介紹)。可以先簡單的看看下面這個(gè)圖,有一個(gè)了解:
??在了解了一些概念以后。再來看看RL的研究對象及目標(biāo),逐步把各類進(jìn)行細(xì)分。RL整體就是圍繞policy展開,有了policy就可以執(zhí)行action,然后就能拿到reward。重點(diǎn)變成了一下三個(gè)問題:
????1)policy怎么來的?
????2)怎么評價(jià)一個(gè)policy是好是壞?
????3)policy是怎么進(jìn)行優(yōu)化的?
??對于以上三個(gè)問題,下面進(jìn)行解答。也會陸續(xù)給出一些相關(guān)的概念。
??1)policy是怎么來的?policy從宏觀上來說可以分為兩類:探索和利用
????探索:指去嘗試一些新的行為,帶來的結(jié)果可能好可能壞。
????利用:指采取已知的可以獲得最大獎勵的行為
??2)怎么評價(jià)一個(gè)policy是好是壞?最簡單的就是看policy能帶給我們的價(jià)值,價(jià)值高就是好。這在上面對于價(jià)值函數(shù)的定義中提到了,下面來詳細(xì)講講價(jià)值函數(shù)value function,價(jià)值函數(shù)分為兩種:
??(1)狀態(tài)價(jià)值函數(shù)(state value function)——價(jià)值由狀態(tài)決定
數(shù)學(xué)化的表達(dá)就是:
??(2)狀態(tài)-行為價(jià)值函數(shù)(state-action value function)——通常稱為Q函數(shù)。價(jià)值由狀態(tài)和行為決定。
數(shù)學(xué)化的表達(dá)就是:
??先不對這兩類價(jià)值函數(shù)介紹過多,只需要明白,它們可以用來評價(jià)policy的好壞即可(其實(shí)后續(xù)policy的優(yōu)化也離不開它們)
??了解到policy和value之后,RL就可以被分成兩類:
????1)基于policy的學(xué)習(xí):直接進(jìn)行策略學(xué)習(xí)
????2)基于value的學(xué)習(xí):先得到每一步的價(jià)值,根據(jù)最大價(jià)值選擇最佳策略
??所以說到底,RL就是在每一個(gè)狀態(tài)要確定一個(gè)最好的動作。無論是policy還是value都是為這個(gè)服務(wù)的,policy就直接一點(diǎn)兒,直接決定動作,value就先計(jì)算價(jià)值然后再根據(jù)價(jià)值大小決定動作,也就是策略是從學(xué)到的價(jià)值函數(shù)中推算出來的。
??當(dāng)明白這兩個(gè)分類以后,主要的研究對象就明確了:
????對于policy base而言,就是求解這個(gè)policy
????對于value base而言,就是求解每一步的value值
??那什么是學(xué)習(xí)呢?在沒有任何先驗(yàn)知識的背景下,不可能一開始就得到最好的policy。所以通過不斷與環(huán)境交互試錯,不斷改正policy,強(qiáng)化自己的model。這就是強(qiáng)化學(xué)習(xí)。
??在后面的過程,分別會針對policy base和value base詳細(xì)介紹各自的算法。先做一個(gè)簡單的介紹吧:
??對于value base有Q學(xué)習(xí)(Q-learning)、Sarsa
??對于policy base有策略梯度(policy gradient)
??其實(shí)還有一種演員-評論家算法,是對兩種base的融合,汲取各自優(yōu)點(diǎn)。
??現(xiàn)在回答上面的第三個(gè)問題,策略如何進(jìn)行優(yōu)化,其實(shí)就是不斷學(xué)習(xí)的過程。學(xué)習(xí)伴隨著迭代,迭代過程中完成優(yōu)化。
??前面介紹了model是agent的組成部分之一,那有一個(gè)問題:model是怎么來的呢?其實(shí)這又引出一種RL的分類:
????1)有模型強(qiáng)化學(xué)習(xí)智能體
????2)免模型強(qiáng)化學(xué)習(xí)智能體
??之前介紹過model中包括狀態(tài)轉(zhuǎn)移函數(shù)和獎勵函數(shù)。這里的有無指的就是這兩個(gè)東西。那這個(gè)反映了什么呢?其實(shí)反映的就是現(xiàn)階段是否對真實(shí)環(huán)境進(jìn)行建模。如果我們是有模型的(也就是有狀態(tài)轉(zhuǎn)移函數(shù)和獎勵函數(shù)),我們就可以根據(jù)這個(gè)選出最佳的策略(因?yàn)槟囊徊娇梢垣@得最佳回報(bào)是可以計(jì)算的)。但又有一個(gè)大問題就是:狀態(tài)轉(zhuǎn)移函數(shù)和獎勵函數(shù)哪里來呢?按照之前的應(yīng)用條件,連初始的數(shù)據(jù)都沒有。所以更多情況下研究的對象是免模型的RL。也就是智能體只能在真實(shí)環(huán)境中通過一定策略來執(zhí)行動作,等待獎勵和狀態(tài)遷移,然后根據(jù)這些反饋信息來更新行為策略,反復(fù)迭代直到學(xué)習(xí)到最優(yōu)策略。
??用一句話總結(jié)有模型和免模型的區(qū)別:是否需要對真實(shí)環(huán)境建模
??以上講了這么多,用一個(gè)匯總形式的分類圖吧:
??內(nèi)容到現(xiàn)在差不多了,但還是要再給出一些概念的定義:
??學(xué)習(xí)和規(guī)劃:序列決策中的兩個(gè)基本問題。在規(guī)劃中,環(huán)境已知,可以計(jì)算出完美m(xù)odel。不需要與環(huán)境交互就可以了解未來環(huán)境,尋找最優(yōu)解。學(xué)習(xí)就是啥也不知道,一切從頭學(xué)。常用的一個(gè)解決問題的思路是:先學(xué)習(xí)環(huán)境如何工作,了解環(huán)境工作方式,即學(xué)習(xí)得到一個(gè)模型,然后利用這個(gè)模型進(jìn)行規(guī)劃(也就是沒有模型先學(xué)一個(gè)模型,然后對模型進(jìn)行優(yōu)化)
??探索和利用:這個(gè)其實(shí)很像人處理事情的方式,對于有些人樂衷于用新的方式解決問題,他也不知道效果好壞。好就賺了,壞下次就不用這種方法了。有的人形成了自己的模式以后,總喜歡用一種已知效果最好的方法處理。前者就是探索,后者就是利用。
??講到探索和利用,總喜歡舉一個(gè)多臂老虎機(jī)的例子。具體多臂老虎機(jī)是啥,自己百度下。如果我們有K個(gè)搖臂,同時(shí)有K次機(jī)會。僅探索的思想就是一個(gè)搖一下,以最后的期望作為標(biāo)準(zhǔn)。僅利用的思想是,先拿一小部分每個(gè)搖一下,從中選出最好的,剩下的一大部分都搖這個(gè)。顯然,探索和利用是矛盾的。也就是探索-利用窘境。所以我們必須在探索和利用之間達(dá)到折中,使回報(bào)最大化。
??軌跡:狀態(tài)和動作的一個(gè)序列。執(zhí)行一次軌跡就叫做一個(gè)回合(episode)
??ps:之前沒有關(guān)注過神經(jīng)網(wǎng)絡(luò)到底有什么特別之處,只知道通過神經(jīng)網(wǎng)絡(luò)可以對圖片進(jìn)行特征提取然后完成分類功能。之前以為這個(gè)是直接出現(xiàn)的,但前面其實(shí)已經(jīng)有這個(gè)過程了:只不過當(dāng)初以兩個(gè)獨(dú)立的形式存在。特征提取+分類器,神經(jīng)網(wǎng)絡(luò)只是對兩者進(jìn)行了整合。這樣任務(wù)就變成了端到端的。這是神經(jīng)網(wǎng)絡(luò)比較方便的地方,可以讓多個(gè)過程變成端到端的。
??從上面的知識中明白,RL就是在和環(huán)境交互的過程中,確定一個(gè)策略。這個(gè)策略的價(jià)值很高,也就是最后能給我們帶來極大的回報(bào)。如果利用神經(jīng)網(wǎng)絡(luò)的方法得到價(jià)值/策略函數(shù)。這種就叫做深度強(qiáng)化學(xué)習(xí)
??書后面每一章都有一些習(xí)題,我會按照自己的理解做一些解答。可能有一些是不會的,暫時(shí)空下。日后明白后會再來補(bǔ)充滴~
1-1基本的結(jié)構(gòu)就是agent+environment+policy
1-2監(jiān)督學(xué)習(xí)是有標(biāo)簽的,在前向?qū)W習(xí)后根據(jù)標(biāo)簽得到結(jié)果再通過反向傳播修正參數(shù)。但是強(qiáng)化學(xué)習(xí)因?yàn)檠舆t獎勵的原因,可能訓(xùn)練的策略到最后因?yàn)闊o法及時(shí)評價(jià)好壞而造成多次無效的訓(xùn)練
1-3基本特征包括:無標(biāo)簽、數(shù)據(jù)是時(shí)間序列相關(guān)
1-4最大的原因還是算力提升吧,一些概念、算法好像上世紀(jì)就有了。
1-5狀態(tài)是全局的,觀測到的是部分。但現(xiàn)在實(shí)際應(yīng)用中在模糊二者的區(qū)別
1-6三部分:policy function+value function+model
1-7有模型、免模型 policy base、value base
1-8直接目標(biāo)不一樣:策略迭代是優(yōu)化策略,價(jià)值迭代是提高價(jià)值
1-9在開始學(xué)習(xí)的時(shí)候,是否完成了對環(huán)境的建模
1-10未知環(huán)境下,沒有先驗(yàn)數(shù)據(jù),智能體通過和環(huán)境交互試錯,選取動作,得到最大回報(bào)。最終提升智能體能力
1-1 未知環(huán)境下,沒有先驗(yàn)數(shù)據(jù),智能體通過和環(huán)境交互試錯,選取動作,得到最大回報(bào)。最終提升智能體能力
1-2 監(jiān)督學(xué)習(xí)和無監(jiān)督學(xué)習(xí)區(qū)別在于是否有標(biāo)簽,而數(shù)據(jù)是已經(jīng)獲得的。強(qiáng)化學(xué)習(xí)沒有標(biāo)簽也沒有初始數(shù)據(jù),通過和環(huán)境交互獲得數(shù)據(jù)。
1-3 使用場景就是博弈、自動駕駛領(lǐng)域
1-4 損失函數(shù)的作用都是通過梯度下降使損失loss不斷降低。深度學(xué)習(xí)中損失函數(shù)代表預(yù)測值和真實(shí)值的差異。強(qiáng)化學(xué)習(xí)中損失函數(shù)代表最小化負(fù)的總獎賞
1-5 區(qū)別在開始學(xué)習(xí)的時(shí)候,是否完成了對環(huán)境的建模
因作者水平有限,如果錯誤之處,請?jiān)谙路皆u論區(qū)指出!
總結(jié)
- 上一篇: Method for Discoveri
- 下一篇: (二)马尔可夫决策过程