深度强化学习

发布时间:2026/7/5 4:05:41
深度强化学习 【王树森】深度强化学习(DRL)_哔哩哔哩_bilibili1.1基本概念大写字母表示变量小写字母表示观测值数学概念概率密度函数PDF概率密度函数性质——概率的积分或求和为1期望Expectation p为概率密度函数 f为取值随机抽样 Random Sampling强化学习中的随机性动作随机性给出当前的state policy随机抽样得到action。状态转移的随机性 给出当前的state和action 环境根据状态转移函数根据当前的s 和a 得到一个状态转移的概率随机抽样决定下一个state。专业术语状态state智能体agentploicy Π 观测到当前状态做出决策让agent做什么动作。其实是一个概率密度函数根据当前的状态会有一个包含各个动作的概率密度函数分为确定性策略和随机性策略。下图为随机性策略包含不同的动作最后通过随机抽样选择一个执行的动作。奖励Reward状态专转移 state transition 会有一个状态转移函数环境根据这个函数做出改变具有随机性轨迹trajectory交互过程奖励Rewards回报Return包含未来的所有奖励。通常采用discounted return折扣回报 设置一个折扣率调整未来的奖励重要性。奖励Ri依赖Si和Ai故Ut也跟未来的状态以及动作有关。回报Return的随机性来源就是未来所有的动作和状态动作价值函数Action-Value Function Q(s,a)由于Ut是随机变量其依赖未来的state和reward 所以当前时刻不知道当前的Ut故引出Q 对未来的A和S求期望 把所有未来随机性平均掉。用于评估当前的状态下动作的好坏。QΠ只跟当前的st和at有关未来的都被积分掉了。也跟当前的policyΠ有关积分过程中会用到policyΠ不同的Π得到的Q也不同。最优动作价值函数Optimal action-value Function 去掉QΠ中的Π 求最大的Qmax状态价值函数Stat-value Function 对A求期望消除动作变量只和状态有关。下图为离散和连续的期望过程跟Π和State有关给当前的状态打分两种方法控制agent选择动作根据Π选取动作根据最优动作价值函数选择分数最高的动作强化学习最终就是学到一个Π或Q⭐1.2价值学习用一个神经网络近似Q⭐。用TD算法更新网络参数DQN把Q⭐当作一个先知他会告诉你每个动作的平均回报选择执行分数最高的动作用神经网络DQN Qs,a,w近似Q⭐saQs,a,w) 输入当前状态s输出所有动作打分 w是神经网络参数优化该参数使其打分更准执行过程 主要用到Q选动作状态转移函数选下一个状态Temporal Difference Learning TD通过TD算法训练DQN让他打分更准确例1起点到终点 完整运行一次。更新一次w 蒙特卡洛目标最小化损失函数L损失函数L为什么这么写:误差越大惩罚越强平滑梯度平方是二次凸函数误差小时梯度平缓、微调权重误差大时梯度放大快速修正严重偏差全程连续可导适合梯度下降。求导化简消除系数 2加 1/2 的目的损失求导如果不加1/2导数会多出系数 2训练时多一层常数计算加1/2直接简化梯度表达式代码更简洁。梯度是损失函数 L 在当前参数点的上升最快方向梯度指向往这个方向改 w误差 L 会变大梯度反方向往这个方向改w误差 L 会变小故用梯度下降更新参数wa为学习率例2起点开始没有走到终点只走了一小段到DC停止。如何用这段来更新参数w TD算法TD 算法 即使不跑完全程也能更新参数让预测更准到了DC再预测剩余路程的时间为600 加上起点到DC的实际时间300 用900来更新参数可以推出原来起点到DC的预测时间为400 得到TD errorTD算法的目标就是让TD error接近0TD learning DQN在DQN更新中也要用类似的路程公式 如下图公式推导训练过程目标让Loss变小SummaryTD算法更新DQN过程1.3策略学习用Policy神经网络Π( a | s ; θ 近似Πsa。用策略梯度更新参数θPolicy Function Πa|s)Policy Network Π( a | s ; θ 输出的所有动作的概率求和必须为1 必须包含所有动作状态价值函数的近似Policy Gradient 策略梯度策略学习的思想V(s; θ)可以评价状态和策略网络的好坏。学习θ让J(θ)变大 用policy gradient ascent 用梯度上升来更新θ策略梯度计算 假设QΠ不依赖θ 但是实际Π还是和θ有关只是简化推导从紫色字推导离散情况对函数的期望对概率X函数的求和最后得到策略梯度的两种形式 两种等价策略梯度的计算离散动作连续动作蒙特卡洛近似g(a顶,θ) 是策略梯度的无偏估计故用它来近似策略梯度高斯分布 动作的概率规则从这里抽动作蒙特卡洛 利用抽取到的样本去估算梯度期望的数学方法。Summary但是3中QΠ不知道有两种方法来近似QΠReinforce用观测到的ut来近似QΠ 需要完成一局游戏拿到所有奖励才能更新参数最基础的蒙特卡洛策略梯度算法逐步蒙特卡洛采样 每一步从策略分布抽动作算出对数梯度并缓存目的是近似梯度期望单步仅存数据无更新操作。蒙特卡洛回报Ut需要完整一局所有奖励折现求和只有轨迹终止后才能算出REINFORCE 只用它作为Qt计算梯度g这是该算法独有的特点。整体流程串联 边走边采样存梯度 → 对局结束算出全部Ut → 梯度 ×Ut得到g → 统一梯度上升更新策略网络。神经网络来近似QΠ 即 A C 方法 具体内容见 1.4一步一更新1.4Actor-Critic Method基本概念训练训练步骤Value network q (TD)TDpolicy network Πpolicy gradient更新流程Summary如果使用baseline 就不用qt了..蒙特卡洛计算Π、蒙特卡洛近似求积分也是重要的应用蒙特卡洛近似期望根据概率分布抽样不再是随机抽样高斯分布这些都有现成的抽样函数.随机排列均匀随机排列任何一个元素出现在n个位置上的概率都是1/n另一种定义:任何一个位置上出现n个元素中的一个的概率都是1/nFisher-Yates ShuffleOriginal Version目标对元素均匀随机排列--如扑克牌随机数生成器:在指定区间内每个数值被抽取到的概率完全相等准备原始数组所有牌 全新空数组两块存储空间均匀随机生成器在「剩余未抽牌索引区间」均等抽一个下标 j取出下标j对应的牌放入空数组尾部原始数组删掉这张牌后面所有元素整体前移填补空位循环直到原始数组清空新数组就是随机洗牌结果。缺点时间复杂度 \(O(n^2)\)很慢每次删除元素都要把后面全部数据向前平移平均每次移动 \(n/2\) 个元素总操作平方级增长牌越多越卡。必须额外开一块新内存空间复杂度 \(O(n)\)需要两倍存储存放原始 结果数组内存开销大。Modern Version这个是倒序,抽到的放到最后一个位置设数组长度为 n循环变量 i 从最后一位下标 (n-1)倒着走到 1用均匀随机生成器在区间 [0,i]生成随机下标 j只在还没固定的元素里抽交换数组arr[i]和arr[j]i 减 1此时下标 i 及之后的元素已经完成洗牌不再变动。时间复杂度低,不需要额外内存用处均匀随机生成器是 RL 所有随机采样的底层工具Fisher-Yates 原地洗牌主要用于经验回放池、离线数据集、多轨迹样本打乱消除时序样本相关性稳定网络训练。.Sarsa算法TDlearning-1Saras 是一种TD算法,可以用来学习动作价值函数QΠ做蒙特卡洛近似TDlearning的目标Sarsa 查表方法Q 表存储所有离散 (s,a) 价值仅小规模离散场景可用表格初始化全部置 0每走一步交互即时更新对应 (s,a) 格子后续任意步骤查表均使用此前所有步骤更新完成后的表格值。通过查表取出来 QΠ(st,at)也能查出来Sarsa:神经网络版本不用 Q 表用神经网络 (q(s,a;w)拟合动作价值 Q(s,a))输入状态、动作输出单一路 Q 估值。第一章就用的这种方法单步 SARSA1 个五元组((st,at,rt,s{t1},a{t1) 即可完成一次网络更新Summary.Q-learning算法TD learning-2Q-learning是TD算法,用来学习最优动作价值函数Q⭐Sarsa VS Q-LearningTD Target的计算对期望做蒙特卡洛近似,得到TD Target.通过一次环境交互完成蒙特卡洛单点采样取出分布内一组观测样本rt st1 然后代入公式替代期望Q-Learning表格找到对应的行,找到最大值,然后计算仅更新当前交互的一组\(st,at)对应的表格格子Q(st,at). Q(St1,a)只用来辅助计算,不执行Q-Learning神经网络--DQN训练DQN最常用的算法就是Q-Learning被更新的对象整套网络所有权重参数wSummary.Multi-Step TD TargetTDlearning如上图,两种TDTarget 只包含一个rt.这种叫one step TDTarget如下图下一次用rt1来更新其实可以用多个r来计算TD Target如下图多步TD Target数学推导:由Ut可以推出TD Target 的公式一步VS多步.经验回访价值学习高级技巧回顾TD算法用完之后,这个四元组就会丢掉经验回放概念传统的,会造成经验浪费之前按顺序使用四元组transition,前后相关性太强,不利与训练.如果能把序列打散,消除相关性,会更好训练DQN经验回放设置了一个Repaly BufferTD with Experience Replay从经验池里随机抽一个四元组,用来计算TDTarget,来训练网络rt就是回放池里存好的历史旧值,如此类推。优点:打破序列的相关性能够重复利用过去的经验实验中可能抽取多个四元组,算出多个梯度,用平均梯度更新网络优先经验回放Prioritized Experience Replay用非均匀抽样代替均匀抽样Buffer有许多transitions ,但是重要性却不一样可以用TD error的绝对值判断重要性,越大,越重要,应该给更高的优先级有两种不同的抽样方法调整学习率,抵消不同抽样概率造成的偏差如果一条transition有较大的抽样概率,那么设置他的学习率较低是一个超参数,需要自己调参,初始调低,慢慢变成1为了做优先经验回放,对每一条的transition 标记TDerrot还没有用过的,给最高优先,使用后更新,就有了新的权重Summary.高估问题、Target Network、Double DQN价值学习高级技巧高估的产生自举,在RL中,用一个估算去更新同类的估算yt里有DQN的估计值,然后用包含yt的公式更新DQN---这就是自举问题会产生高估会有累计高估,如果当前的DQN已经高估,用这个去更新会更加高估,会高估下一状态真实最优价值最大化高估的数学解释DQN中另一个原因自举为什么会高估--会产生一个正反馈,一旦出现高估,就会原来越高估高估的害处均匀的高估不会影响最优动作价值函数选择最优动作,但是不均匀的高估会影响DQN的准确性解决办法-Target Network在一定程度上避免自举Target Network的参数需要隔一段时间更新一次比较两种方法,原始的和Target Network 计算TD Target 时候不同.但是无法消除,依赖DQN参数无法独立DQN,以及最大化操作也不可避免解决办法-Double DQN原始DQN-严重高估Target Network--高估还是挺严重Double DQN--三种最好的,但是高估仍然存在 可以缓解最大化造成的高估Summary.Dueling Network价值学习高级技巧讲述在DQN上的使用Advantage Function优势函数将V⭐作为Baseline A⭐表示动作a的相对于Baseline的优势定理一直接给出最后一项很重要Dueling Network这节课的内容如下:用神经网络近似Dueling Network 和DQN的输入输出完全一样.策略梯度中的Baseline.Reinforce with Baseline.AC方法.Reinforce与AC异同.离散控制与连续控制连续控制.确定策略梯度DPG连续控制.随机策略做连续控制连续控制.TRPO.多智能体强化学习基本概念.多智能体强化学习三种架构