強化學習基本方法 二

2021-07-13 01:45:32 字數 2953 閱讀 6532

之前的討論裡面只提到了狀態的轉化,然而實際情況可能更加複雜,第一:應用在狀態上的不同動作其價值本來就是不同的,這也值得我們加入考慮的範圍。比如花枯萎的時候,我得去挑水來澆花,這時候我要付出勞動力的,這個動作的收益可以設定為-100,我也可以選擇不管,雖然花會死,但是「不管」這個動作的收益可是0,要是花不怎麼值錢,我還是任由它死掉算了嘿嘿嘿。第二:不同的動作也會影響狀態轉移的概率分布,拿前面的例子來說,澆水總比不管讓花活下來的機率更大的。

我們還是先不加解釋的丟擲動作-累計獎勵函式的bellman方程: qπ

(s,a

)=∑s

′∈sp

(s′|

s,a)

[r(s

′|s,

a)+γ

vπ(s

′)]=

eπ[r

(s′|

s,a)

+γvπ

(s′)

] 這個式子和之前的狀態收益函式其實非常像,唯一的區別就在於轉換概率加了乙個動作,並且一階收益期望也被動作價值所影響了。

很重要的一點在於,在強化學習的框架裡面,動作價值和達到某狀態帶來的價值是可以直接疊加的!這樣做的目的是為了讓整個價值評價體系統一,不必費心去分辨這是動作帶來的價值收益還是狀態帶來的價值收益。

還是之前的那個例子: a→

b→c→

d v(

c)=0.8∗v

(d)+

100−1=

99 v(

b)=0.8∗v

(c)+

0−1=

−1繼續進行迭代: v(

c)=0.8∗v

(d)+

100−1=

99 v(

b)=0.8∗v

(c)+

0−1=

78.2

依次類推,直到最終狀態收斂

現在收益能夠量化了,我們需要做的就是根據這兩個式子找到策略使得式子所得的收益最大化。這樣,整個問題就轉變為了乙個動態規劃問題。優化目標為: π∗

(s)=

argm

axπv

π(s)

此時所得到的策略被稱為最佳策略π∗

此時對應的最佳累計獎勵和最佳行為-累計獎勵為v∗

,q∗ ,而且存在關係式:v∗

(s)=

maxa

q∗(s

,a)

從而可以匯出bellman最優性方程: v∗

(s)=

maxa

e[r(

s′|s

,a)+

γv∗(

s′)|

s0=s

]=ma

xa∈a

(s)∑

p(s′

|s,π

(s))

[r(s

′|s,

π(s)

)+γv

π(s′

)] q

∗(s)

=e[r

(s′|

s,a)

+γv∗

(s′)

|s0=

s]=m

axa∈

a(s)

∑p(s

′|s,

π(s)

)[r(

s′|s

,π(s

))+γ

vπ(s

′)]

這裡其實是存在乙個小技巧的,因為如果將v,

q 完全展開的話,可能存在回環一類無限步長的情況。當然,

γ 的限制是一方面,另一方面,其實也會貪心策略的一種應用,在每次優化的時候只關注當前結點和優化係數相關的情況而忽略其他結點和優化係數的互動作用(其實我們在每一步優化的時候也只優化了當前結點所採取的策略,但是同上文提到的,因為回環與延遲的存在,當前的策略改變可能會在其他節點的消費也有所體現)。

基於這個原則,我們在每一步累計獎勵方程選擇合適的動作,使其滿足最優。由於在每次選擇時都有多個動作可以選擇,此時,累計獎勵方程: vπ

(s)=

∑aπ(

a|s)

∑s′∈

sp(s

′|s,

a)[r

(s′|

s,a)

+γvk

(s′)

] 這樣,在全知的條件下,我們可以提出下面的演算法思路:

那麼,首先我們需要做的就好殺死初始化策略並且估計這個策略下的狀態收益。

在既定策略估計每乙個狀態收益的演算法流程如下:

input π

for all s in s

v(s) = 0

while true

δ ← 0

for each s in s

temp = v(s)

v(s) = vπ(s)

δ = max(δ,|temp-v(s)|)

if δ < θ

break

在這個演算法中,我們直接使用了每一步更新出來的新值作為當前狀態的估計收益,而不是在一遍完整的遍歷之後將取出其迭代結果再進行迭代。這樣其實是有助於迭代收斂的。

那下一步就是改進我們的策略使其達到(接近)最優了。也就是說,在之後的迭代中,我們只需要修改策略並比較這個策略是不是比原來的策略好,如果更好,就接受這個策略,如果不好,就丟棄掉。這樣理解的話,整個問題突然就轉回乙個動態規劃的問題上面來了。這樣,我們的整體優化思路就是如下:

這時候,我們發現,在每一次優化以後都必須估算這個策略下面每個狀態的收益,這一步其實需要大量的迭代步驟,非常耗時,然而這一步是必要的嗎?

在改進的策略裡面,我們可以直接將每一步獲取的最新值作為當前結點收益的更新值,以只更新當前結點的方法來更新全域性收益。

這樣做的理由是我們在每乙個結點的迭代結束之後,再進行全域性估計其實是為了預防當前的策略改變沒有立即得到收益反饋的影響。但是另一方面來看,由於整個演算法是在不斷迭代的過程中完成的,所以只要我們這個新的接不小於原來的解(單調遞增),其一定是可以收斂到最優極限的。所以,我們可以使用這樣的策略來更新

強化學習基本方法 一

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

強化學習 強化學習基礎

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

深度強化學習 二

強化學習和深度學習有什麼關係?深度學習參與的強化學習與傳統的強化學習有何不同?為什麼要引入深度學習?強化學習的過程中,處理的是狀態,實際上,很多時候狀態是連續的 複雜的 高階的。因此,求助於深度學習。深度學習善於處理高維資料,並快速地從中抽取模式。比如在影象處理中,用畫素的集合體來表示完整的影象。這...