日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

增强学习(五)----- 时间差分学习(Q learning, Sarsa learning)

發布時間:2025/4/5 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 增强学习(五)----- 时间差分学习(Q learning, Sarsa learning) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

接下來我們回顧一下動態規劃算法(DP)和蒙特卡羅方法(MC)的特點,對于動態規劃算法有如下特性:

  • 需要環境模型,即狀態轉移概率PsaPsa
  • 狀態值函數的估計是自舉的(bootstrapping),即當前狀態值函數的更新依賴于已知的其他狀態值函數。

相對的,蒙特卡羅方法的特點則有:

  • 可以從經驗中學習不需要環境模型
  • 狀態值函數的估計是相互獨立的
  • 只能用于episode tasks

而我們希望的算法是這樣的:

  • 不需要環境模型
  • 它不局限于episode task,可以用于連續的任務

本文介紹的時間差分學習(Temporal-Difference learning, TD learning)正是具備了上述特性的算法,它結合了DP和MC,并兼具兩種算法的優點。

TD Learing思想

在介紹TD learning之前,我們先引入如下簡單的蒙特卡羅算法,我們稱為constant-αα?MC,它的狀態值函數更新公式如下:

?

V(st)←V(st)+α[Rt?V(st)](1)(1)V(st)←V(st)+α[Rt?V(st)]


其中RtRt是每個episode結束后獲得的實際累積回報,αα是學習率,這個式子的直觀的理解就是用實際累積回報RtRt作為狀態值函數V(st)V(st)的估計值。具體做法是對每個episode,考察實驗中stst的實際累積回報RtRt和當前估計V(st)V(st)的偏差值,并用該偏差值乘以學習率來更新得到V(St)V(St)的新估值。

現在我們將公式修改如下,把RtRt換成rt+1+γV(st+1)rt+1+γV(st+1),就得到了TD(0)的狀態值函數更新公式:

?

V(st)←V(st)+α[rt+1+γV(st+1)?V(st)](2)(2)V(st)←V(st)+α[rt+1+γV(st+1)?V(st)]

為什么修改成這種形式呢,我們回憶一下狀態值函數的定義:

?

Vπ(s)=Eπ[r(s′|s,a)+γVπ(s′)](3)(3)Vπ(s)=Eπ[r(s′|s,a)+γVπ(s′)]


容易發現這其實是根據(3)的形式,利用真實的立即回報rt+1rt+1和下個狀態的值函數V(st+1)V(st+1)來更新V(st)V(st),這種就方式就稱為時間差分(temporal difference)。由于我們沒有狀態轉移概率,所以要利用多次實驗來得到期望狀態值函數估值。類似MC方法,在足夠多的實驗后,狀態值函數的估計是能夠收斂于真實值的。

那么MC和TD(0)的更新公式的有何不同呢?我們舉個例子,假設有以下8個episode, 其中A-0表示經過狀態A后獲得了回報0:

indexsamples
episode 1A-0, B-0
episode 2B-1
episode 3B-1
episode 4B-1
episode 5B-1
episode 6B-1
episode 7B-1
episode 8B-0

首先我們使用constant-αα?MC方法估計狀態A的值函數,其結果是V(A)=0V(A)=0,這是因為狀態A只在episode 1出現了一次,且其累計回報為0。

現在我們使用TD(0)的更新公式,簡單起見取λ=1λ=1,我們可以得到V(A)=0.75V(A)=0.75。這個結果是如何計算的呢? 首先,狀態B的值函數是容易求得的,B作為終止狀態,獲得回報1的概率是75%,因此V(B)=0.75V(B)=0.75。接著從數據中我們可以得到狀態A轉移到狀態B的概率是100%并且獲得的回報為0。根據公式(2)可以得到V(A)←V(A)+α[0+λV(B)?V(A)]V(A)←V(A)+α[0+λV(B)?V(A)],可見在只有V(A)=λV(B)=0.75V(A)=λV(B)=0.75的時候,式(2)收斂。對這個例子,可以作圖表示:

可見式(2)由于能夠利用其它狀態的估計值,其得到的結果更加合理,并且由于不需要等到任務結束就能更新估值,也就不再局限于episode task了。此外,實驗表明TD(0)從收斂速度上也顯著優于MC方法。

將式(2)作為狀態值函數的估計公式后,前面文章中介紹的策略估計算法就變成了如下形式,這個算法稱為TD prediction:

輸入:待估計的策略ππ
任意初始化所有V(s)V(s),(e.g.,V(s)=0,?s∈s+e.g.,V(s)=0,?s∈s+)
Repeat(對所有episode):
  初始化狀態?ss
  Repeat(對每步狀態轉移):
    a←a←策略ππ下狀態ss采取的動作
    采取動作aa,觀察回報rr,和下一個狀態s′s′
    V(s)←V(s)+α[r+λV(s′)?V(s)]V(s)←V(s)+α[r+λV(s′)?V(s)]
    s←s′s←s′
  Until?stst?is terminal
 Until 所有V(s)V(s)收斂
輸出Vπ(s)Vπ(s)

Sarsa算法

現在我們利用TD prediction組成新的強化學習算法,用到決策/控制問題中。在這里,強化學習算法可以分為在策略(on-policy)離策略(off-policy)兩類。首先要介紹的sarsa算法屬于on-policy算法。
與前面DP方法稍微有些區別的是,sarsa算法估計的是動作值函數(Q函數)而非狀態值函數。也就是說,我們估計的是策略ππ下,任意狀態ss上所有可執行的動作a的動作值函數Qπ(s,a)Qπ(s,a),Q函數同樣可以利用TD Prediction算法估計。如下就是一個狀態-動作對序列的片段及相應的回報值。

給出sarsa的動作值函數更新公式如下:

?

Q(st,at)←Q(st,at)+α[rt+1+λQ(st+1,at+1)?Q(st,at)](4)(4)Q(st,at)←Q(st,at)+α[rt+1+λQ(st+1,at+1)?Q(st,at)]

可見式(4)與式(2)的形式基本一致。需要注意的是,對于每個非終止的狀態stst,在到達下個狀態st+1st+1后,都可以利用上述公式更新Q(st,At)Q(st,At),而如果stst是終止狀態,則要令Q(st+1=0,at+1)Q(st+1=0,at+1)。由于動作值函數的每次更新都與(st,at,rt+1,st+1,at+1)(st,at,rt+1,st+1,at+1)相關,因此算法被命名為sarsa算法。sarsa算法的完整流程圖如下:

算法最終得到所有狀態-動作對的Q函數,并根據Q函數輸出最優策略ππ

Q-learning

在sarsa算法中,選擇動作時遵循的策略更新動作值函數時遵循的策略是相同的,即??greedy??greedy的策略,而在接下來介紹的Q-learning中,動作值函數更新則不同于選取動作時遵循的策略,這種方式稱為離策略(Off-Policy)。Q-learning的動作值函數更新公式如下:

?

Q(st,at)←Q(st,at)+α[rt+1+λmaxaQ(st+1,a)?Q(st,at)](5)(5)Q(st,at)←Q(st,at)+α[rt+1+λmaxaQ(st+1,a)?Q(st,at)]


可以看到,Q-learning與sarsa算法最大的不同在于更新Q值的時候,直接使用了最大的Q(st+1,a)Q(st+1,a)值——相當于采用了Q(st+1,a)Q(st+1,a)值最大的動作,并且與當前執行的策略,即選取動作atat時采用的策略無關。?Off-Policy方式簡化了證明算法分析和收斂性證明的難度,使得它的收斂性很早就得到了證明。Q-learning的完整流程圖如下:

小結

本篇介紹了TD方法思想和TD(0),Q(0),Sarsa(0)算法。TD方法結合了蒙特卡羅方法和動態規劃的優點,能夠應用于無模型、持續進行的任務,并擁有優秀的性能,因而得到了很好的發展,其中Q-learning更是成為了強化學習中應用最廣泛的方法。在下一篇中,我們將引入資格跡(Eligibility Traces)提高算法性能,結合Eligibility Traces后,我們可以得到Q(λ),Sarsa(λ)Q(λ),Sarsa(λ)等算法

總結

以上是生活随笔為你收集整理的增强学习(五)----- 时间差分学习(Q learning, Sarsa learning)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。