強化學習所學習的,是當我們處在某個環境下,我們應該做的最好的決策是什么?
假設我們所處的狀態(State)是有限的,例如在開車的時候,前面紅燈還是綠燈,前后左右有沒有車,這些數據可以歸結為有限多個狀態。
假設前面有車沒車,左邊有車沒車,前面是紅燈還是綠燈,這樣簡單的歸類,我們就有2x2x2 = 8種狀態,狀態數量可以任意多,有限即可(甚至對于無限個狀態,我們也可以模糊的歸結為有限)
每個狀態下我們能做的事情(行動,action)是有限個的,還是開車,我們是直行、還是停下來等,這也就2種行動而已
在有限個狀態下,有限個行動下,如果我們想在某種狀態下選擇一個最好的行動,并且如何學習到這種選擇,就是強化學習的目標
例如:前方紅燈,我們應該停車等待,也就是
狀態/動作 | 直行 | 等待 |
---|---|---|
紅燈 | 0 | 1 |
綠燈 | 1 | 0 |
歸結為數學語言就是,在 狀態 = 紅燈 時,選擇 行動 = 等待 的收益最大
綠燈時, 行動 = 直行 的收益最大
每一行是一種狀態,每一列是一種行動,每個交叉點,是這個行動的收益。假設我們已經有了這張圖表,我們也知道我們當前的狀態(通過觀察紅綠燈),那么我們只要找到當前行,最大值的某個列的行動去做就好了。
所以問題就是,我們怎么得到這張表?
對于一個簡單的問題,例如這張表只有10行,5列,50個元素,人類當然可以一個一個填寫最優的可能性。不過假設狀態有數千個,行動數量有數百個,我們就很難以人力完成這件工作。強化學習的一個簡單思路,就是填完這張表。
它所希望的就是得到這個表格(Q-table),或者說Q function
在當前狀態下,我們所應該選擇的行動為:最大的 【Q(狀態,行動) for 行動 in 所有可能的行動】
也就是在某個狀態那一行,尋找哪個列(哪個行動)的值最大,值最大代表在這個狀態下實行這個行動可以獲取的獎勵最大,或者說得到的收益最好。
強化學習不僅僅學習當前,也學習未來
我們可以計算出每個狀態下,每個行動的收益(初始化一張Q-table)
這個初始的收益是不準確的,我們怎么更新它,我們使用:
當前行動收益 = 真實收益 + 當前行動做過之后下一個狀態的最大收益
例如當前是紅燈,我們直行的收益就很低(違反交規),這是當前的真實收益;但是如果我們是救護車,正在運病人,把病人快速運到的收益非常高(也就是闖紅燈之后可能帶來的收益),這個時候很可能是:我們應該闖紅燈,因為未來遠期的收益太高了。
這也是為什么強化學習需要學習遠期收益
深度強化學習
深度強化學習是強化學習的深度學習版,其實并不高級。它使用一個神經網絡來代替Q-table,因為狀態可能太多了(雖然有限,但是數量太大),不過依然要求行動是有限的(例如幾十種行動)
我們定義一個神經網絡,輸入是當前狀態,輸出是每個行動的收益,我們希望結果是訓練出這個網絡,每當我們輸入一個狀態獲得每個行動的收益,然后我們可以從結果中選擇收益最大的行動來直行,也就是代替Q-table的作用。