IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 深度强化学习DRL的学习笔记(随缘更新) -> 正文阅读

[人工智能]深度强化学习DRL的学习笔记(随缘更新)

本文主要学习资料为B站视频、相关GitHub代码以及有心人的学习笔记,相关链接如下:

  1. 【王树森】深度强化学习(DRL)
  2. 王树森深度强化学习GitHub仓库
  3. 李宏毅深度强化学习(国语)课程(2018)
  4. jessie_weiqing的李宏毅DRL学习笔记

一、专业术语

Agent: 一个嵌入在环境中的能够通过Action改变环境State的系统。例如:在游戏中的马里奥。

State(S): State可以看作是Agent过去的所有Action对环境影响的集合。未来的State取决于当前的State。State空间(S)包含从过去(已知)到未来(可能)所有的State。
如果当前为时间节点为t,则从现在到过去的State均为已观测值,用小写字母表示: s 1 , ? ? , s t s_1,\cdots,s_{t} s1?,?,st?;未来的State因为尚未发生,因此为随机变量,用大写字母表示: S t + 1 , S t + 2 , ? S_{t+1},S_{t+2},\cdots St+1?,St+2?,?

Action(A): Action是Agent的动作。Action空间(A)包含Agent所有可能的Action,Action的构成可以是离散集,如{上,下,左,右},也可以是连续集,如[1,100]。
如果当前为时间节点为t,则从现在到过去的Action均为已观测值,用小写字母表示: a 1 , ? ? , a t a_1,\cdots,a_{t} a1?,?,at?;未来的Action因为尚未发生,因此为随机变量,用大写字母表示: A t + 1 , A t + 2 , ? A_{t+1},A_{t+2},\cdots At+1?,At+2?,?

Reward(R): Reward是Agent在特定环境下做出Action的奖励值。强化学习的目标就是让获得的Reward尽量高。
如果当前为时间节点为t,则从现在到过去的Reward均为已观测值,用小写字母表示: r 1 , ? ? , r t r_1,\cdots,r_{t} r1?,?,rt?;未来的Reward取决于未来的State和Action,因此为随机变量,用大写字母表示: R t + 1 , R t + 2 , ? R_{t+1},R_{t+2},\cdots Rt+1?,Rt+2?,?

Policy function(π): 是一个条件概率函数: π ( a ∣ s ) = P ( A = a ∣ S = s ) π(a|s)=P(A=a|S=s) π(as)=P(A=aS=s)表示当观察到State为s时,做出Action为a的概率。
注:强化学习学习的就是Policy。AI可以通过Policy函数来控制Agent的Action。Policy最好是随机的。

State transition(p): 在特定环境中,通过Action(A=a)将State(S=s)转化为State(S’)。状态转移函数是一个条件概率密度函数: p ( s ′ ∣ s , a ) = P ( S ′ = s ′ ∣ S = s , A = a ) p(s'|s,a)=P(S'=s'|S=s,A=a) p(ss,a)=P(S=sS=s,A=a)。状态转移可以是确定的也可以是随机的,通常为随机的。状态转移的随机性来源于环境。

Environment与Agent的交互:在t时,环境会告诉Agent处于一个State( S = s t S=s_t S=st?),Agent做出相应的Action( A = a t A=a_t A=at?),环境根据Action给Agent相应的Reward( R = r t R=r_t R=rt?),同时环境会更新State( S = s t + 1 S=s_{t+1} S=st+1?),以此类推。

随机性的来源
1.Action有随机性。通过Policy对Action进行随机抽样。
2.State transition有随机性。环境通过状态转移函数得到转移到下一状态的概率并进行随机抽取。

Trajectory: 轨迹,表示每一步的(State,Action,Reward)。

以下为重要概念:

Return(U): aka cumulative future reward. 表示未来的累计奖励: U t = R t + R t + 1 + R t + 2 + R t + 3 + ? U_t=R_t+R_{t+1}+R_{t+2}+R_{t+3}+\cdots Ut?=Rt?+Rt+1?+Rt+2?+Rt+3?+?由于未来的奖励的重要性低于当前的奖励,因此强化学习中一般会使用Discounted return(aka cumulative discounted future reward)。定义discounted rate(γ∈[0,1],超参数),若未来的奖励与现在同等重要则γ=1。Discounted return表示为: U t = R t + γ R t + 1 + γ 2 R t + 2 + γ 3 R t + 3 + ? U_t=R_t+γR_{t+1}+γ^2R_{t+2}+γ^3R_{t+3}+\cdots Ut?=Rt?+γRt+1?+γ2Rt+2?+γ3Rt+3?+?

Action-value function( Q π Q_π Qπ?): Q π ( s t , a t ) Q_π(s_t,a_t) Qπ?(st?,at?)测量了,在给定Policy(π)与State( s t s_t st?)的情况下,Action( a t a_t at?)的价值。用于比较不同Action的优劣。通过求期望的运算可以将未来的随机变量消除,则可以通过给定的π与当前的状态 s t s_t st?决定动作 a t a_t at?的价值。 Q π ( s t , a t ) = E [ U t ∣ S t = s t , A t = a t ) ] Q_π(s_t,a_t)=E[U_t|S_t=s_t,A_t=a_t)] Qπ?(st?,at?)=E[Ut?St?=st?,At?=at?)]

Optimal action-value function( Q ? Q^* Q?): 最优动作价值函数是使得 Q π ( s t , a t ) Q_π(s_t,a_t) Qπ?(st?,at?)最大的 Q π Q_π Qπ?。主要用于判断动作的好坏。 Q ? ( s t , a t ) = max ? π Q π ( s t , a t ) Q^*(s_t,a_t)=\max \limits_{π}Q_π(s_t,a_t) Q?(st?,at?)=πmax?Qπ?(st?,at?)

State-value function( V π V_π Vπ?): 状态价值函数测量了,在给定Policy(π)情况下,State( s t s_t st?)的价值(好坏程度)。可用于判断当前局势的好坏。通过求期望的运算可以将未来的动作(随机变量A)消除,则可以通过给定的π决定当前状态 s t s_t st?的价值。 V π ( s t ) = E A [ Q π ( s t , A ) ] V_π(s_t)=E_A[Q_π(s_t,A)] Vπ?(st?)=EA?[Qπ?(st?,A)]注: V π V_π Vπ?能够评价π的好坏,如果π越好 E S [ V π ( S ) ] E_S[V_π(S)] ES?[Vπ?(S)]越大。

小结:

强化学习的目的就是如何控制Agent,让Agent怎么基于当前状态s做出最优的动作a,争取最终得到最多的奖励r。强化学习通常让AI学习Policy function( π ( a ∣ s ) π(a|s) π(as))或者学习Optimal action-value function( Q ? ( s , a ) Q^*(s,a) Q?(s,a))。前者通过输入当前状态s,算出每一个动作的概率π,进而进行抽样得到动作a;后者则可直接判断当前状态s下所有动作的好坏,进而选出最优的动作a。

二、Value-based learning 价值学习

Deep Q-Network(DQN)

目标:最大化未来的Reward
问题:根据 Q ? Q^* Q?得到每一个动作的平均回报,选择平均汇报最高的动作a
挑战: Q ? Q^* Q?难以直接得到,因此价值学习的目的就是获得近似的 Q ? Q^* Q?函数
DQN:用神经网络 Q ( s , a ; w ) Q(s,a;\bm{w}) Q(s,a;w)近似 Q ? ( s , a ) Q^*(s,a) Q?(s,a)函数。DQN的输出是对每一个动作的打分。
训练:
TD算法,无需完成全部任务也能够更新模型的参数。核心思想就是让TD error尽可能等于0。在深度强化学习中, 有如下的公式: Q ( s t , a t ; w ) ≈ r t + γ ? Q ( s t + 1 , a t + 1 ; w ) Q(s_t,a_t;\bm{w})≈r_t+γ \cdot Q(s_{t+1},a_{t+1};\bm{w}) Q(st?,at?;w)rt?+γ?Q(st+1?,at+1?;w)其中,左式是从t时刻看的,右式是从t+1时刻看的。
具体步骤:

  1. 已知预测(DQN): Q ( s t , a t ; w ) Q(s_t,a_t;\bm{w}) Q(st?,at?;w)
  2. TD target: y t = r t + γ ? Q ( s t + 1 , a t + 1 ; w ) = r t + γ ? max ? a Q ( s t + 1 , a ; w ) y_t=r_t+γ \cdot Q(s_{t+1},a_{t+1};\bm{w})=r_t+γ \cdot \max \limits_{a} Q(s_{t+1},a_{};\bm{w}) yt?=rt?+γ?Q(st+1?,at+1?;w)=rt?+γ?amax?Q(st+1?,a?;w)
  3. Loss: L t = 1 2 [ Q ( s t , a t ; w ) ? y t ] 2 L_t=\frac{1}{2} [Q(s_t,a_t;\bm{w})-y_t]^2 Lt?=21?[Q(st?,at?;w)?yt?]2
  4. 梯度下降: w t + 1 = w t ? α ? ? L t ? w ∣ w = w t \bm{w_{t+1}}=\bm{w_t}-α \cdot \frac{?L_t}{?\bm{w}} |\bm{w}=\bm{w_t} wt+1?=wt??α??w?Lt??w=wt?

三、Policy-based learning 策略学习

Policy函数π会根据输入的状态s输出每一个可能动作的概率值。Agent就可以根据概率对动作进行抽样。只要有一个好的Policy函数,就可以自动控制Agent的动作了。但Policy函数有时很难直接得到,因此仍然可以选择使用神经网络去近似Policy函数。
用神经网络 π ( a ∣ s ; θ ) π(a|s;\bm{θ}) π(as;θ)近似 π ( a ∣ s ) π(a|s) π(as)函数。其中, θ \bm{θ} θ为神经网络的参数,随机初始化,通过不断学习进行改进。
V π ( s t ) V_π(s_t) Vπ?(st?)中的 π π π替换成神经网络 π ( a ∣ s ; θ ) π(a|s;\bm{θ}) π(as;θ),则 V π ( s t ) V_π(s_t) Vπ?(st?)可以近似写成:$ V π ( s ; θ ) = ∑ a π ( a ∣ s ; θ ) ? Q π ( s , a ) V_π(s;\bm{θ})=\sum_{a} π(a|s;\bm{θ}) \cdot Q_π(s,a) Vπ?(s;θ)=a?π(as;θ)?Qπ?(s,a)该函数可用于评价状态s与策略网络的好坏。给定状态s,策略网络越好则 V π ( s ; θ ) V_π(s;\bm{θ}) Vπ?(s;θ)的值越大。优化策略网络的方法为改进 θ \bm{θ} θ。因此,可以通过对状态S求期望进而消除随机变量S,得到关于 θ \bm{θ} θ的函数: J ( θ ) = E S [ V ( S ; θ ) ] J(\bm{θ})=E_S[V(S;\bm{θ})] J(θ)=ES?[V(S;θ)]该函数只用于评价策略网络的好坏。

Policy gradient ascent

策略梯度上升法是改进 θ \bm{θ} θ的方法之一,其主要步骤如下:

  1. 观测到状态s
  2. 梯度上升更新: θ ← θ + β ? ? V ( s ; θ ) ? θ \bm{θ} \gets \bm{θ}+β \cdot \frac{?V(s;\bm{θ})}{?\bm{θ}} θθ+β??θ?V(s;θ)?,其中 ? V ( s ; θ ) ? θ \frac{?V(s;\bm{θ})}{?\bm{θ}} ?θ?V(s;θ)?为策略梯度(Policy gradient)

Policy gradient 策略梯度

策略梯度的两种近似形式:

Form 1: ? V ( s ; θ ) ? θ = ∑ a ? π ( a ∣ s ; θ ) ? θ ? Q π ( s , a ) \frac{?V(s;\bm{θ})}{?\bm{θ}}=\sum_{a} \frac{?π(a|s;\bm{θ})}{?\bm{θ}} \cdot Q_π(s,a) ?θ?V(s;θ)?=a??θ?π(as;θ)??Qπ?(s,a)

Form 2: ? V ( s ; θ ) ? θ = E A [ ? l o g π ( A ∣ s , θ ) ? θ ? Q π ( s , A ) ] \frac{?V(s;\bm{θ})}{?\bm{θ}}=E_A[\frac{? log π(A|s,\bm{θ})}{?\bm{θ}} \cdot Q_π(s,A)] ?θ?V(s;θ)?=EA?[?θ?logπ(As,θ)??Qπ?(s,A)]

Form 1适合action space A为离散的;Form 2适合连续的动作。
Form 2的期望是通过蒙特卡洛近似计算出来的,具体步骤如下:

  1. 随机抽样得到一个动作 a ^ \hat{a} a^,这是根据概率函数 π ( a ∣ s ; θ ) π(a|s;\bm{θ}) π(as;θ)抽取的。
  2. 将需要求期望的式子记为 g ( a ^ , θ ) = ? l o g π ( a ^ ∣ s , θ ) ? θ ? Q π ( s , a ^ ) g(\hat{a},\bm{θ})=\frac{? log π(\hat{a}|s,\bm{θ})}{?\bm{θ}} \cdot Q_π(s,\hat{a}) g(a^,θ)=?θ?logπ(a^s,θ)??Qπ?(s,a^) ,由于 a ^ \hat{a} a^是一个确定的数,因此直接带入计算即可。
    由于 E [ g ( A , θ ) ] = ? V ( s ; θ ) ? θ E[g(A,\bm{θ})]=\frac{?V(s;\bm{θ})}{?\bm{θ}} E[g(A,θ)]=?θ?V(s;θ)?,因此 g ( a ^ , θ ) g(\hat{a},\bm{θ}) g(a^,θ) ? V ( s ; θ ) ? θ \frac{?V(s;\bm{θ})}{?\bm{θ}} ?θ?V(s;θ)?的无偏估计。
  3. 蒙特卡洛近似,即使用 g ( a ^ , θ ) g(\hat{a},\bm{θ}) g(a^,θ)近似 ? V ( s ; θ ) ? θ \frac{?V(s;\bm{θ})}{?\bm{θ}} ?θ?V(s;θ)?
  4. 这个近似也可以用于离散的动作

算法

  1. 观察到当前状态 s t s_t st?
  2. 根据 π ( ? ∣ s t ; θ t ) π(\cdot|s_t;\bm{θ_t}) π(?st?;θt?),随机抽样得到一个动作 a t a_t at?
  3. 计算动作价值函数的值,结果记作: q t ≈ Q π ( s t , a t ) q_t≈Q_π(s_t,a_t) qt?Qπ?(st?,at?)
  4. 计算策略网络的梯度: d θ , t = ? l o g π ( a t ∣ s t , θ ) ? θ ∣ θ = θ t \bm{d}_{\bm{θ},t}=\frac{? log π(a_t|s_t,\bm{θ})}{?\bm{θ}} |\bm{θ}=\bm{θ_t} dθ,t?=?θ?logπ(at?st?,θ)?θ=θt?
  5. 蒙特卡洛近似策略梯度: g ( a t , θ t ) = q t ? d θ , t \bm{g}(a_t,\bm{θ}_t)=q_t \cdot \bm{d}_{\bm{θ},t} g(at?,θt?)=qt??dθ,t?
  6. 更新策略网络参数: θ t + 1 ← θ t + β ? g ( a t , θ t ) \bm{θ}_{t+1} \gets \bm{θ}_t+β \cdot \bm{g}(a_t,\bm{θ}_t) θt+1?θt?+β?g(at?,θt?)

算法第三步,近似计算 q t q_t qt?的方法有两个:

  1. Reinforce算法:记录一轮游戏的Trajectory,得到 u t u_t ut?,去近似 Q π ( s t , a t ) Q_π(s_t,a_t) Qπ?(st?,at?),则 q t = u t q_t=u_t qt?=ut?
  2. 用过另一个神经网络近似 Q π ( s t , a t ) Q_π(s_t,a_t) Qπ?(st?,at?)

三、

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-08-20 15:05:55  更:2021-08-20 15:06:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 20:28:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码