主頁 >  其他 > 強化學習-學習筆記15 | 連續控制

強化學習-學習筆記15 | 連續控制

2022-07-15 06:56:45 其他

本系列的完結篇,介紹了連續控制情境下的強化學習方法,確定策略 DPG 和隨機策略 AC 演算法,

15. 連續控制

15.1 動作空間

  • 離散動作空間

    • \(Action \ space \ \mathcal{A}={left,right,up}\)
    • 比如超級瑪麗游戲中的向上\向左\向右;
    • 此前博文討論的,都是離散的控制,動作有限,
  • 連續動作空間

    • \(Action \ space \ \mathcal{A}=[0°,360°]×[0°,180°]\)

    • 比如機械臂,如果具有兩個運動關節:

image

  • 價值網路 DQN 可以解決離散動作控制的問題,因為 DQN 輸出的是有限維度的向量,

    img

  • 策略網路也同樣,

    img

  • 所以此前的方法不能簡單照搬到連續控制,要想應用到連續控制上,可以采用 連續空間離散化

連續空間離散化:

  • 比如機械臂進行二維網格劃分,那么有多少個格子,就有多少種動作,
  • 缺點:假設d為連續動作空間的自由度,動作離散化后的數量會隨著d的增加呈現指數增長,從而造成維度災難,動作太多會學不好DQN 或 策略網路,
  • 所以 離散化 適合自由度較小的問題,

另外還有兩個方法:

  1. 使用確定策略網路(\(Deterministic \ policy \ network\))
  2. 使用隨機策略(\(Stochastic \ policy \ network\)),

15.2 DPG | 確定策略

a. 基礎了解

Deterministic Policy Gradient.確定策略梯度,可以用于解決連續控制問題,后續引入深度神經網路,就是著名的 DDPG,

DPG 是 Actor-Critic 方法的一種,結構圖如下:

image

  • 策略網路 actor

    • 策略網路是確定性的函式 \(a=\pi(s;\theta)\)
    • 輸入是狀態 s ;輸出是一個具體的動作 s;即給定狀態輸出具體的動作,無隨機性,
    • 輸出的動作是可以指導運動的實數或向量,
  • 價值網路 critic

    • 記作 \(q(s,a;w)\)
    • 輸入是狀態 s 和 動作 a,基于狀態 s,評價動作 a 的好壞程度,輸出一個分數 q;
  • 訓練兩個神經網路,讓兩個網路越來越好,

  • 用 TD 演算法更新 價值網路:

    1. 觀測 transition:\((s_t,a_t,r_t,s_{t+1})\)

    2. 價值網路預測 t 時刻 的動作價值 \(q_t=q(s_t,a_t;w)\)

    3. 價值網路預測 t+1時刻的價值:\(q_{t+1}=q(s_{t+1},a'_{t+1};w)\)

      注意這里的 \(a'_{t+1}\) 是 策略網路 t+1 時刻預選出來的動作,尚未執行,

    4. TD error:\(\delta_t=q_t-\underbrace{(r_t+\gamma\cdot q_{t+1})}_{TD \ target}\)

    5. 更新引數:\(w\leftarrow w-\alpha\cdot\delta_t \cdot \frac{\partial q(s_t,a_t;w)}{\partial w}\)

  • 策略網路用 DPG 演算法 更新

b. 演算法推導

對 DPG 演算法進行推導,

  • 訓練價值網路的目標是,讓價值網路的輸出 q 越大越好,

  • 而在DPG 的網路結構中,在給定狀態時,動作是確定的(策略網路會給出一個確定的動作),且價值網路固定,那么影響輸出的就是策略網路的引數 \(\theta\)

  • 所以更新 θ 使價值 q 更大;

  • 計算價值網路關于 θ 的梯度 DPG:\(g=\frac{\partial q(s,\pi(s;\theta))}{\partial\theta}=\frac{\partial a}{\partial\theta}\cdot\frac{\partial q(s,a;w)}{\partial a}\)

    鏈式法則,讓梯度從價值 q 傳播到動作 a;再從 a 傳播到策略網路,

  • 梯度上升更新 \(\theta\)\(\theta\leftarrow \theta+\beta\cdot g\)

c. 演算法改進1 | 使用 TN

上面的 DPG 是比較原始的版本,用 Target Network 可以提升效果,Target Network 在此前第11篇中講過,上文中的演算法也會出現高估問題或者低估問題,

因為用自身下一時刻的估計來更新此時刻的估計,

Target Network 方法的程序是:

  1. 用 價值網路 計算 t 時刻的價值: \(q_t=q(s_t,q_t;w)\)
  2. TD target (不同之處):
    • 改用兩個不同的神經網路計算 TD target ,
    • 用 target policy network 代替 策略網路 來預選 \(a'_{t+1}\),網路結構和策略網路一樣,但引數不一樣;記為 \(a'_{t+1}=\pi(s_{s+1};\theta^-)\)
    • 用 target value network 代替 價值網路 計算 \(q_{t+1}\),與價值網路結構相同,引數不同;記為 \(q_{t+1}=q(s_{t+1},a'_{t+1};w^-)\)
  3. 后續 TD error 以及 引數更新 與 原始演算法一致,具體見第11篇

d. 完整程序

  1. 策略網路做出選擇:\(a=\pi(s;\theta)\)
  2. 用 DPG 更新 策略網路:\(\theta\leftarrow \theta+ \beta\cdot\frac{\partial a}{\partial\theta}\cdot\frac{\partial q(s,a;w)}{\partial a}\)
  3. 價值網路計算 \(q_t\)\(q_t=q(s,a;w)\)
  4. Target Networks 計算 \(q_{t+1}\)
  5. TD error:\(\delta_t=q_t-(r_t+\gamma\cdot q_{t+1})\)
  6. 梯度下降:\(w\leftarrow w-\alpha\cdot\delta_t \cdot\frac{\partial q(s,a;w)}{\partial w}\)

同樣,之前講過的其他改進也可以用于這里,如經驗回放、multi-step TD Target 等,

15.3 確定策略 VS 隨機策略

DPG 使用的是 確定策略網路,跟之前的隨機策略不同,

\ 隨機策略 確定策略
策略函式 $\pi(a s;\theta)$
輸出 每個動作一個概率值,向量 確定的動作
控制方式 根據概率分布抽樣a 輸出動作并執行
應用 大多是離散控制,用于連續的話結構大有不同 連續控制

15.4 | 隨機策略

這部分來介紹怎么在連續控制問題中應用隨機策略梯度,

構造一個策略網路,來做連續控制,這個策略網路與之前學過的相差很大,以機械臂為例:

a. 自由度為 1 的連續動作空間

先從一個簡單的情況研究起,自由度為1,這時動作都是實數 \(\mathcal{A}\subset \mathbb{R}\)

  • 記均值為 \(\mu\),標準差是 \(\sigma\) ,都是狀態 s 的函式,輸出是一個實數
  • 假定我們的策略函式是正態分布函式\(N(\mu,\sigma^2)\)\(π(a|s)=\frac{1}{\sqrt{6.28}\sigma}\cdot exp(-\frac{(a-\mu)^2}{2\sigma^2})\)
  • 根據策略函式隨機抽樣一個動作

b. 自由度 >1 的連續動作空間

而機械臂的自由度通常是3或者更高,把自由度記為 d,動作 a 是一個 d 維的向量,

  • 用粗體 \(\boldsymbol{\mu}\) 表示均值,粗體 \(\boldsymbol{\sigma}\) 表示標準差,都是狀態 s 的函式,輸出是都是 d 維向量
  • \(\mu_i\)\(\sigma_i\) 表示 \(\boldsymbol{\mu}(s)\)\(\boldsymbol{\sigma}(s)\) 輸出的第 i 個元素,假設各個維度獨立,則可以表示成 a 中的函式連乘
  • \(π(a|s)=\Pi_{i=1}^d \frac{1}{\sqrt{6.28}\sigma_i}\cdot exp(-\frac{(a_i-\mu_i)^2}{2\sigma_i^2})\)

但是問題是,我們不知道 具體的 \(\mu , \sigma\),我們用神經網路來近似它們

c. 函式近似

  • 用神經網路 \(\mu(s;\theta^\mu)\) 近似 \(\mu\)
  • 用神經網路 \(\sigma(s;\theta^\sigma)\)近似 \(\sigma(s)\),實際上這樣效果并不好,近似方差的對數更好:\(\boldsymbol{\rho_i=ln\sigma_i^2},for \ i=1,...,d.\)
  • 即用神經網路 \(\boldsymbol\rho(s;\boldsymbol{\theta^\rho})\) 近似 \(\boldsymbol\rho\)

網路結構如下:

image

d. 連續控制

  1. 觀測到 狀態 s,輸入神經網路;

  2. 神經網路輸出 \(\hat\mu=\mu(s;\theta^\mu),\hat\rho=\rho(s;\theta^\rho)\),都是 d 維度

  3. \(\hat\rho\) 計算 \(\hat\sigma_i^2=\exp(\hat\rho_i)\)

  4. 隨機抽樣得到動作 a :\(a_i\sim\mathcal{N}(\hat\mu_i,\hat\sigma_i^2)\)

    這個正態分布是假定的策略函式,

e. 訓練策略網路

1. 輔助神經網路

Auxiliary Network, 計算策略梯度時對其求導,

  • 隨機策略梯度為:\(g(a)=\frac{\partial ln\pi(a|s;\theta)}{\partial\theta}\cdot Q_\pi(s,a)\)

  • 計算 \(\pi\) 的對數,

  • 策略網路為:\(\pi(A|s;\theta^\mu)=\Pi_{i=1}^d\frac{1}{\sqrt{6.28}}\cdot\exp(-\frac{(a_i--\mu)^2}{2\delta^2_i})\),輸出是一個概率密度,表示在某點附近的可能性大小

    雖然可以算出來某個動作的概率,但實際上我們只需要知道 均值 和 方差,來做隨機抽樣即可,所以實際上我們用不到這個策略函式 \(\pi\)

  • 由上面策略梯度公式知:我們需要策略 \(\pi\) 的對數,所以訓練時,我們會用到策略 \(\pi\) 的對數,而不是 \(\pi\) 本身:

    \[\ln\pi(a|s;\theta^\mu,\theta^\rho)=\sum_{i=1}^d[-\ln\delta_i-\frac{(a_i-\mu_i)^2}{2\delta^2}]+const \]

  • 由于神經網路輸出的時方差對數\(\rho_i\),而不是\(\delta^2_i\),所以做個替換:\(\delta_i^2=\exp\rho_i\)

  • \(\ln\pi(a|s;\theta^\mu,\theta^\rho)=\sum_{i=1}^d[-\ln\delta_i-\frac{(a_i-\mu_i)^2}{2\delta^2}]+const\\=\sum_{i=1}^d[-\frac{\rho_i}{2}-\frac{(a_i-\mu_i)^2}{2\exp(\rho_i)}]+const\)

  • 這樣 神經網路的對數 就表示成了 \(\rho,\mu\) 的形式,記 \(\theta=(\theta^\mu,\theta^\rho)\)

  • 把上式連加的一項記為 \(f(s,a;\theta)\),這就是輔助神經網路 Auxiliary Network.用于幫助訓練,

    • \(f(a,s;\theta)=\sum_{i=1}^d[-\frac{\rho_i}{2}-\frac{(a_i-\mu_i)^2}{2\exp(\rho_i)}]\)

    • f 的輸入是 s, a ,依賴于 \(\rho,\mu\),所以引數也是 \(\theta\)

    • 結構如下:

      image

      1. 輸入為 \(\underbrace{\mu,\rho}_{s},a\),輸出為一個實數 f;

      2. f 依賴于卷積層和全連接層的引數,所以接下來反向傳播,可以算出 f 關于全連接層 Dense 引數的梯度,再算出 關于卷積層引數的梯度:

        image

        \(\frac{\partial f}{\partial \theta}\) 來表示梯度,

2.策略梯度演算法訓練策略網路
  • 隨機策略梯度:\(g(a)=\frac{\partial ln\pi(a|s;\theta)}{\partial\theta}\cdot Q_\pi(s,a)\)

  • 輔助神經網路:\(f(s,a;\theta)=\ln\pi(a|s;\theta)+const\)

  • 可以注意到,f 的梯度和 \(\ln\pi\) 的梯度相同,可以用前者梯度代替后者,即

    \[g(a)=\frac{\partial f(s,a;\theta)}{\partial \theta}\cdot Q_\pi(s,a) \]

    而 f 作為一個神經網路,成熟的 pytorch 等可以對其自動求導,

  • Q 還未知,需對其做近似

    • 具體參見 第14篇
    • Reinforce
      • 用觀測到的回報 \(u_t\) 來近似 \(Q_\pi\)
      • 更新策略網路:\(\theta\leftarrow\theta+\beta\cdot\frac{\partial f(s,a;\theta)}{\partial\theta}\cdot u_t\)
    • Actor-Critic(A2C)
      • 用價值網路 \(q(s,a;w)\) 近似 \(Q_\pi\)
      • 更新策略網路:\(\theta\leftarrow\theta+\beta\cdot\frac{\partial f(s,a;\theta)}{\partial\theta}\cdot q(s,a;w)\)
      • 而新引入的價值網路 \(q(S,a;w)\),用 TD 演算法來進行學習,

15.5 總結

  1. 連續動作空間有無窮多種動作數量

  2. 解決方案包括:

    • 離散動作空間,使用標準DQN或者策略網路進行學習,但是容易引起維度災難

    • 使用確定策略網路進行學習

      沒有隨機性,某些情境下不合適,

    • 隨機策略網路(\(\mu\)\(\sigma^2\)

  3. 隨機策略的訓練程序:

    • 構造輔助神經網路 \(f(s,a;\theta)\) 計算策略梯度;
    • 策略梯度近似演算法包括:reinforce、Actor-Critic 演算法
      • 可以改進 reinforce 演算法,使用帶有 baseline 的 reinforce 演算法
      • 可以改進 Actor-Critic 演算法,使用 A2C 演算法

本系列完結撒花!

x. 參考教程

  • 視頻課程:深度強化學習(全)_嗶哩嗶哩_bilibili
  • 視頻原地址:https://www.youtube.com/user/wsszju
  • 課件地址:https://github.com/wangshusen/DeepLearning
  • 參考博客:https://blog.csdn.net/Cyrus_May/article/details/124137445

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/499351.html

標籤:其他

上一篇:GET 和 POST 請求的區別與安全性

下一篇:Deflection for Mac(結構梁分析工具)

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more