強化學習基本方法 一

2021-07-13 01:45:32 字數 2704 閱讀 3195

在機器學習領域一般將機器學習劃分為三大型別:有監督學習,無監督學習和強化學習。有監督學習和無監督學習都主要是為了解決分類問題,而強化學習比較特殊,強化學習的目的是為了研究策略,比如讓機械人自主的學會如何把花養好,如何在乙個未知環境進行探索等。

強化學習的核心問題在於通過研究各種不同策略的價值並給予評價,來自主選擇最優策略。策略,即是決策層對於不同的狀態所作出的不同反應。以種花而言,看到花處於枯萎的狀態,就要施加澆水的動作,看到花葉子變黃的狀態,就應當加以施肥的動作。狀態在施加不同動作之後,就可能向各個其他狀態轉移,所以強化學習是在乙個高動態的,高複雜性的環境中尋找最佳選擇的一種演算法。

在程式流程進行時,主要有以下幾個方面需要解決:

需要正確評價各個執行動作的優劣

在了解了強化學習的基本思想之後,我們需要探尋的就是具體如何去進行學習了。

在強化學習中,每乙個狀態一般用s表示,轉移概率用p表示,每個狀態的收益用r表示,這樣,乙個普通的狀態轉換對就可以表示為:

p,s′

,r>

,這表示狀態s以p的概率轉移到狀態s』並且得到數值為r的收益。這描述的是乙個自然的,無人為干涉的過程,狀態之間的轉換都是自然發生的,這樣的話,我們就沒有討論的意義了,所以,我們加上了a來表示不同狀態下才去的動作(人為干涉),從而讓我們的狀態對變成

a,p,

s′,r

>

這樣,實際上每乙個p所代表的就是特定狀態特定動作的轉移概率p(

s′|s

,a) 了。在了解了基本記號之後,就可以去設計乙個收益方程來評價狀態-動作對了。

首先,我們來研究乙個簡單的環境,我們知道狀態,假設整個環境中的

a,p,

s′,r

>

都是已知的

該如何評價各個狀態的價值呢。比如,我們的目標是如何讓花健康的活下去,那花枯萎的狀態和花死亡的狀態價值顯然是不同的,一般來說,我們的學習過程通常都會有乙個到若干和目標狀態(比如植物開花)以及若干個避免狀態(比如植物死亡),顯然,越接近目標狀態的狀態越有價值,越接近避免狀態的狀態越應該避免。這個又是如何衡量的呢,我們先不加證明的寫出狀態價值函式的bellman方程: vπ

(s)=

∑s′∈

sp(s

′|s,

π(s)

)[r(

s′|s

,π(s

))+γ

vπ(s

′)]=

eπ[r

(s′|

s,π(

s))+

γvπ(

s′)]

哇,這麼長乙個方程,到底該如何理解呢。其實很簡單,就會求期望!我們把最後一部分拆開,它就是這樣的樣子: vπ

(s)=

e(r(

s′|s

,π(s

)))+

γeπ[

vπ(s

′)]

這表示在

π 策略的作用下,狀態s的價值v(

s)可以表示為s轉換到s』的狀態轉換收益的期望以及下乙個狀態的價值函式期望的和。

p21 給出的例子,並沒有必要把它再呈現一遍。

2.1.1.狀態收益的後向傳遞

實際的計算中我們並沒有將vπ

(s′)

繼續展開到下個狀態計算。因為那樣的話,每一次的計算公式都會因為巢狀而變得極其冗餘。實際上我們只使用當前計算得到的下乙個狀態的狀態收益作為真值計算(不管它是不是真的正確)。在程式初期,由於每個狀態的收益值都不知道,我們一般是將其全部初始化為0的。這時候你可能會說:全部都是0,那不是每個狀態的收益就只有乙個簡單的一階轉換收益了嗎,那樣不就不正確嗎。是的,一開始的確我們只能得到下乙個狀態的一階轉換收益,但是在我們不斷迭代的過程中,我們會發現這個收益逐漸會被「傳遞」到前一狀態去。

讓我們來看這個例子,假如有狀態鏈: a→

b→c→

d 其中c→d狀態收益是100,d為目標狀態,其他狀態的收益都是0,那麼應用上面的公式有: v(

c)=v

(d)+

100=

100 v(

b)=v

(c)+

0=0

繼續進行迭代: v(

c)=v

(d)+

100=

100 v(

b)=v

(c)+

0=100

可以發現,c→d的收益,經過迭代漸漸變成了b的狀態價值,而且這個狀態價值在這個網路還會無損耗的往回傳遞!可是問題來了,這樣算的話,abc三個狀態價值都是100,也就是說這三個狀態是沒有區別的?

2.1.2.狀態衰減係數

為了解決這個問題,公式裡面那個很礙眼的

γ 就派上用場了,

γ 的取值一般在0~1之間,被稱之為狀態衰減係數,這個係數是為了狀態價值在反向傳播的時候不會讓這個狀態價值無限無損耗的傳遞下(這樣各個狀態價值就沒有區別了)去而設定的。比如我們設定這個引數為0.8,那麼就有: v(

c)=0.8∗v

(d)+

100=

100 v(

b)=0.8∗v

(c)+

0=0

繼續進行迭代: v(

c)=0.8∗v

(d)+

100=

100 v(

b)=0.8∗v

(c)+

0=80

這樣,最終a狀態的價值就是64,b為80,c是100。幾個狀態之間的區別立馬就顯現出來了。

強化學習基本方法 二

之前的討論裡面只提到了狀態的轉化,然而實際情況可能更加複雜,第一 應用在狀態上的不同動作其價值本來就是不同的,這也值得我們加入考慮的範圍。比如花枯萎的時候,我得去挑水來澆花,這時候我要付出勞動力的,這個動作的收益可以設定為 100,我也可以選擇不管,雖然花會死,但是 不管 這個動作的收益可是0,要是...

強化學習 強化學習基礎

為了應對車載網路中通訊環境快速變化的難題,可以使用強化學習進行解決,這裡對強化學習的基礎進行整理。主要的應用場景為車載網路中資源分配問題。本文源自莫煩python 強化學習章節,有需要請查閱原文 20200413補充了一些內容,來自這篇部落格,是李巨集毅的深度強化學習的筆記。強化學習的主要構成有 a...

強化學習篇 強化學習案例詳解一

一 前述 本文通過乙個案例來講解q learning 二 具體 1 案例 假設我們需要走到5房間。轉變為如下圖 先構造獎勵,達到5,即能夠走得5的action則說明獎勵比較高設定成100,沒有達到5說明獎勵比較低,設定成0。q learning實現步驟 2 案例詳解 第一步的q 1,5 最開始的q矩...