Skip to content

Latest commit

 

History

History
291 lines (184 loc) · 12.8 KB

連續空間的強化學習.md

File metadata and controls

291 lines (184 loc) · 12.8 KB

連續空間的強化學習

Agenda

Note

深度強化學習

  • 基本概念回顧
  • MDP(馬爾可夫決策流程)
    • 一個MDP是由一組狀態S,動作A,機率P,獎勵R, 折扣因子r所組成。

643

  • 流程
    • 任何時間步t+1的狀態僅依賴於上個時間步t的狀態和採取的動作。(此特性稱為馬爾可夫特性)
    • 嘗試估測特定狀態下採取動作的值Q(S,A)
    • 最終,可以幫助我們找到最優策略,從而最大化總獎勵。
      • 因為,我們不能預期未來將獲得怎樣的獎勵以及持續多久,所以我們通常計算的事總預期獎勵。
      • 透過折扣因子讓未來的獎勵分配更低的權重。

644

  • 強化學習算法通常分成兩大類
    • 基於模型的方法
      • 策略迭代
      • 值迭代
    • 不基於明確模型的方法
      • 蒙地卡羅方法
      • 時間差分法

645

  • 傳統強化學習的缺點

    • 傳統強化學習通常包含有限的MDP,及狀態跟動作數量有限。但現實世界中有太多問題是具有非常大的狀態跟動作空間。
    • 傳統強化學習是使用表格或字典或者是其他有限結構來記錄狀態跟動作值。
  • 深度強化學習

    • 讓強化學習可以適用於大型的連續空間。
    • 深度Q學習
    • 策略梯度
    • 行動者-評論者方法(結合深度Q學習和策略梯度)

646

資源

離散空間與連續空間

  • 離散空間
    • 一組有限的狀態跟動作(簡化了問題)
    • 可以使用有限的結構來記錄

647

648

  • 離散空間對很多強化學習算法也很關鍵
    • Value Iteration算法內for-loop。
    • Q-learning中,潛在執行的max運算。
    • 如果狀態是連續空間則不可能這樣操作,這些算法都會不適用。

649

650

  • 連續空間

651

  • 為什麼連續空間很重要
    • 掃地機器人要前往房間的某個位置(不在像之前的網格空間,而是一個連續空間)
    • 玩飛鏢的機器人,飛鏢的高度跟角度和使用不同的力(這些都是動作的連續空間)

652

653

空間表示法

654

離散化

  • 離散化: 就是將連續空間轉換成離散空間。

  • 掃地機器人為例

    • 採取網格空間方式,雖然會失去連續空間的精準性,但好處就是幾乎不用修改就可以使用現在的強化算法。
      • ex. (3.1, 2.4) 或 (2.9, 1.8) 都四捨五入成(3, 2)

655

  • Non-Uniform Discretization
    • 針對某些特地狀態(阻礙物的位置)進行更細微的離散化。

656

  • 其他例子,汽車的自動換檔
    • 隨然速度是一個連續值
    • 如何離散化:讓一個檔位對應一個速度範圍

657

Tile Coding

Tile Coding: 一種將連續的狀態空間轉化離散空間的方法。

  • 這裡假設底層的狀態空間是連續的二維空間(ex. 速度, 油耗)。

658

  • 在此空間上方疊加多個網格,每一層都稍微不對齊。

659

  • 狀態空間的任何位置S,都可以粗略被分配不同網隔層中的某一個網格。
    • 因此可以將離散化狀態表示為向量。
    • 激活的位置1,其他位置是0。

660

  • 需先提供網格大小,偏移量,層數等(多了許多超參數需要調適)。

661

Adaptive Tile Coding: 不需要事先提供網格大小,偏移量,層數。(內容講得有點太簡單,不是很懂)

  • 先從非常大的網格開始。
  • 然後再合適的時間點,將網格一分為二。
  • 如何判斷何時該進行拆分?
    • 利用試探法,當目前的拆分方式,不在學到更多規律時,也就是值函數收斂,不在改變,就嘗試進行拆分狀態空間,直到達到網格數量上限或者迭代上限,才停止拆分。
    • 為了判斷哪個網格需要進拆分,需要確定哪個網格對值函數影響最大,因此需要紀錄每個網格以及權重

662

Coarse Coding

Coarse Coding: 使用更稀疏的特徵來表示狀態空間。

  • 在狀態空間中,放置一堆圈圈,對於任何狀態S,標記所屬的所有圈圈,構建一個位置向量,所屬圈圈用1表示,其餘用0表示。(狀態的稀疏編碼表示法),當狀態空間從二維變高維,圈圈也成球面到超球面。

663

  • 圈圈越小,空間的泛化程度越低,算法的學習時間就拉長,但可以獲得更高的分辨率。
  • 圈圈越大,空間的泛化程度越高,會形成更平緩的值函數,但可能會失去一定的分辨率。
  • 可以將圈圈調整成更高或更寬,這樣可以控制在某個維度下可以獲得更高的分辨率。

664

  • RBF
    • 根據每個圈圈的中心位置到狀態S的距離,來衡量該特徵的活躍程度。

665

函數逼近

  • 前面所學到離散化方式,還是存在一些限制,當底層的狀態空間很複雜時,所需的離散化狀態數量可能就會變得很大,也因此失去離散化的優勢。

    • 所以當底層的狀態空間沒有複雜,我們可以採取離散化的方式,來拆解狀態空間,否則就是要使用函數逼近的方式。
  • 对于具有连续状态 s∈S=Rn的问题领域,我们希望有一种方式能表示值函数vπ(s)(针对预测)或 q π(s,a)(针对控制)。

  • 为此,我们可以选择一个_逼近_真值函数的参数化函数:

  • 我们的目标变成找到一组生成最优函数的参数w

  • 接下來就可以通过蒙特卡洛或时间差分方法使用一般强化学习框架,并根据所选函数修改更新机制。

666

  • Feature Vector: 首先,我們必須確保有一個表示狀態的特徵向量。
    • 將任何一個狀態S轉為特徵向量X(S),這樣就不需要對原始的狀態值進行運算。

667

  • Dot Product: 將特徵向量跟我們找到最優化的參數W進行內積,也就是線性組合進行,也就是線性函數逼近。

668

線性函數逼近

  • 這是一個數值優化問題,找到一組最佳的w來逼近真實的狀態函數。

669

  • Gradient Descent
    • v^是一個線性函數,針對W進行偏微分得到就是特徵向量X(S)
    • 定義平方誤差,這樣就不用擔心誤差的正負關係。
    • 利用梯度下降,相對於W的偏微分,並利用chain rule得到結果。
    • 利用學習率,來控制參數的更新幅度。

670

  • 每次迭代時,都是朝誤差的相反方向進行小幅度的更新。

671

動作值函數的逼近

  • X(S,a): 先將特徵向量,導入action。

672

  • 要如何產生不同的動作值?

673

  • 直覺思考,我們嘗試找到n個不同的動作值函數,每個動作維度對應一個函數,因此可以同時計算他們。
    • 矩陣中的每一列都是一個單獨的線性函數。

674

線性函數逼近的限制

  • 只能表示輸入與輸出之間的線性關係,但如果底層的值函數是非線性狀態,那麼線性逼近就會產生非常糟糕的結果。

675

內核函數

Kernel Functions: 可以幫助我們捕獲非線性關係。

  • 該方法的核心是特徵轉換。
    • feature vector中的每一個元素都可以用單獨的函數生成。
    • 利用Kernel Functions將輸入狀態轉為不同的空間。
    • 最後,值函數則是利用這些不同Kernel Functions跟W進行線性組合。

676

Radial Basis Function: 是一個常被使用的Kernel Function

  • 將當前的狀態S當作連續狀態空間內的位置。
  • 假設狀態空間表示為矩陣平面。
  • 每個Kernel Function都是一個水泡。
  • 狀態S越接近水泡中心的Kernel Function,返回結果就越高。
  • 利用高斯內核與每個Kernel Function進行相關聯。
  • 對於任何一個狀態都可以透過RBF返回結果向量。

677

非線性函數逼近

  • 上一節提到如何用RBF當作Kernel Function作為特徵轉換,捕獲輸入狀態和輸出值之間的非線性關係。
    • 但在此模型中,輸出值相對於特徵仍然是線性關係。
    • 如果底層的值函數對於這些特徵值的組合是非線性關係,那該如何處理?

678

  • 解決方式:將內積的結果再傳入一個非線性函數f中
    • 這個非線性函數就是神經網路的基礎,又被稱為激活函數
    • 可以利用梯度下降來更新此類函數的參數。

679

680

總結

  • 傳統的強化學習技巧是使用有限的MDP對環境進行建模。
    • 如此以來就限定只能處理具有離散狀態和動作空間的環境。

681

  • 為了要將學習算法擴展到連續空間,可以採用兩種方式。
    • 離散化狀態空間。
      • 利用Tile Coding 或 Coarse Coding進行離散化,這樣就會間接形成值函數的逼近結果。
    • 直接逼近期望的值函數。
      • 首先,定義一個特徵轉換。
      • 然後,計算這個特徵轉換的線性組合。
      • 使用RBF等非線性特徵轉換,使我們能夠使用相同線性組合框架來捕獲一些非線性關係。
      • 為了表示特徵組合的非線性關係,我們應用一個激活函數,這樣就為強化學習使用深度神經網路奠定了基礎。

682

683

684