
强化学习
文章平均质量分 95
强化学习学习笔记
WSKH0929
2022年博客之星综合评分人工智能领域Top4、总榜Top24;阿里云专家博主;优快云博客专家、人工智能领域优质创作者;已授权美国专利1件、发明专利10件和软著2件、受理发明专利2件;获得17个算法/系统开发类竞赛奖项,在第四届集成电路EDA设计精英挑战赛(国内EDA算法领域最高水平竞赛)中获得一等奖和华大九天企业特别奖;负责过5个企业项目的算法及系统开发,其中3个合作企业为世界五百强,拥有较丰富的算法设计与开发经验
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【强化学习】深度确定性策略梯度(DDPG)算法求解 Pendulum 问题 + Pytorch代码实战
动作:往左转还是往右转,用力矩来衡量,即力乘以力臂。范围[-2,2]状态:cos(theta), sin(theta) , thetadot(角速度)奖励:总的来说,越直立拿到的奖励越高,越偏离,奖励越低。游戏结束:200步后游戏结束。所以要在200步内拿到的分越高越好。原创 2022-11-09 16:08:52 · 25071 阅读 · 3 评论 -
【EasyRL学习笔记】第十二章 Deep Deterministic Policy Gradient 深度确定性策略梯度(DDPG)算法
深度确定性策略梯度(deep deterministic policy gradient,DDPG):在连续控制领域经典的强化学习算法,是深度Q 网络在处理连续动作空间的一个扩充方法。具体地,从命名就可以看出,“深度”表明使用了深度神经网络;“确定性”表示其输出的是一个确定的动作,可以用于连续动作环境;“策略梯度”代表的是它用到的是策略网络,并且每步都会更新一次,其是一个单步更新的策略网络。其与深度Q 网络都有目标网络和经验回放的技巧,在经验回放部分是一致的,在目标网络的更新上有些许不同。原创 2022-11-09 14:29:06 · 22933 阅读 · 0 评论 -
【EasyRL学习笔记】第十一章 模仿学习
模仿学习 (imitation learning,IL) 讨论的问题是,假设我们连奖励都没有,要怎么进行更新以及让智能体与环境交互呢?模仿学习又被称为示范学习 (learning from demonstration),学徒学习 (apprenticeship learning),观察学习 (learning by watching)。在模仿学习中有一些专家的示范,智能体也可以与环境交互,但它无法从环境里得到任何的奖励,它只能通过专家的示范来学习什么是好的,什么是不好的。原创 2022-11-09 13:04:55 · 24137 阅读 · 0 评论 -
【EasyRL学习笔记】第十章 稀疏奖励
实际上用强化学习训练智能体的时候,多数时候智能体都不能得到奖励。在不能得到奖励的情况下,训练智能体是非常困难的。例如,假设我们要训练一个机器臂,桌上有一个螺丝钉与一个螺丝起子,要训练它用螺丝起子把螺丝钉栓进去很难,因为一开始智能体是什么都不知道,它唯一能够做不同的动作的原因是探索。如果环境中的奖励非常稀疏,强化学习的问题就会变得非常困难,但是人类可以在非常稀疏的奖励上去学习。人生通常多数的时候,就只是活在那里,都没有得到什么奖励或是惩罚。但是,人还是可以采取各种各样的行为。所以,原创 2022-10-24 15:56:33 · 22594 阅读 · 0 评论 -
【强化学习】优势演员-评论员算法(Advantage Actor-Critic , A2C)求解倒立摆问题 + Pytorch代码实战
Agent 必须在两个动作之间做出决定 - 向左或向右移动推车 - 以使连接到它的杆保持直立。优势演员-评论员算法的流程如下图所示,我们有一个 π\piπ ,有个初始的演员与环境交互,先收集资料。在策略梯度方法里收集资料以后,就来更新策略。但是在演员-评论员算法里面,我们不是直接使用那些资料来更新策略。我们先用这些资料去估计价值函数,可以用时序差分方法或蒙特卡洛方法来估计价值函数。接下来,我们再基于价值函数,使用下式更新 π\piπ 。∇Rˉθ≈1N∑n−1N∑t−1Tn(rtn+Vπ(st+1n)−V原创 2022-10-24 11:18:05 · 24298 阅读 · 3 评论 -
【EasyRL学习笔记】第九章 Actor-Critic 演员-评论员算法
演员-评论员算法是一种结合策略梯度和时序差分学习的强化学习方法演员是指策略函数πθ(a∣s)πθ(a∣s),即学习一个策略以得到尽可能高的回报。评论员是指价值函数Vπ(s)V_\pi(s)Vπ(s),对当前策略的值函数进行估计,即评估演员的好坏。借助于价值函数,演员-评论员算法可以进行单步参数更新,不需要等到回合结束才进行更新。在演员-评论员算法里面,最知名的算法就是异步优势演员-评论员算法。原创 2022-10-24 09:27:56 · 22559 阅读 · 0 评论 -
【EasyRL学习笔记】第八章 针对连续动作的深度Q网络
但很多时候动作是连续的,例如,假设智能体要开车,它要决定方向盘要左转几度、右转几度,这种动作就是连续的。假设智能体是一个机器人,身上有 50 个关节,它的每一个动作就对应身上 50 个关节的角度,而这些角度也是连续的。所以很多时候动作并不是离散的,它是一个向量,这个向量的每一个维度都有一个对应的值,这些值都是实数,它是连续的。有时候动作是离散的,比如我们玩雅达利的游戏时,智能体只需要决定如上、下、左、右这4个动作,这种离散的动作DQN很容易处理。减掉第一项,所以第一项的值越小,最后的。原创 2022-10-23 18:23:32 · 21999 阅读 · 0 评论 -
【强化学习】噪声深度Q网络(Noisy DQN)求解倒立摆问题 + Pytorch代码实战
Agent 必须在两个动作之间做出决定 - 向左或向右移动推车 - 以使连接到它的杆保持直立。噪声网络 (noisy net)是在参数的空间上加噪声。噪声网络是指,每一次在一个回合开始的时候,在智能体要与 环境交互的时候,智能体使用 Q\mathrm{Q}Q 函数来采取动作, Q\mathrm{Q}Q 函数里面就是一个网络,我们在网络的每一个参数上加 上一个高斯噪声 (Gaussian noise),就把原来的 QQQ 函数变成 Q~\tilde{Q}Q~ 。因为我们已经用 Q^\hat{Q}Q^ 来原创 2022-10-23 15:25:16 · 24551 阅读 · 5 评论 -
【强化学习】竞争深度Q网络(Dueling DQN)求解倒立摆问题 + Pytorch代码实战
Agent 必须在两个动作之间做出决定 - 向左或向右移动推车 - 以使连接到它的杆保持直立。较于原来的 深度 Q\mathrm{Q}Q 网络,它唯一的差别是改 变了网络的架构。 QQQ 网络输入状态,输出的是每一个动作的 QQQ 值。如下图所示,原来的深度 QQQ 网络直接输出 QQQ 值,竞争深度 QQQ 网络不直接输出 QQQ 值,而是分成两条路径运算。第一条路径会 输出一个标量 V(s)V(s)V(s) ,因为它与输入 sss 是有关系的,所以称为 V(s)V(s)V(s) 。第二条路径会输出一个原创 2022-10-22 22:31:46 · 24369 阅读 · 0 评论 -
【强化学习】双深度Q网络(DDQN)求解倒立摆问题 + Pytorch代码实战
Agent 必须在两个动作之间做出决定 - 向左或向右移动推车 - 以使连接到它的杆保持直立。如下式所示,假设我们有两个Q函数: QQQ 和 Q′Q^{\prime}Q′ ,如果 QQQ 高估了它选出来的动作 aaa ,只要 Q′Q^{\prime}Q′ 没有高估动作 aaa 的值,算出来的就还是正常的值。假设 Q′Q^{\prime}Q′ 高估了某一个动作的值,也 是没问题的,因为只要 QQQ 不选这个动作就可以,这就是DDQN神奇的地方。Q(st,at)⟷rt+Q′(st+1,argmaxaQ(原创 2022-10-22 21:42:05 · 25524 阅读 · 3 评论 -
【EasyRL学习笔记】第七章 深度Q网络进阶技巧(Double-DQN、Dueling-DQN、Noisy-DQN、Distributional-DQN、Rainbow-DQN)
第一个技巧是双深度Q网络(double DQN,DDQN)。为什么要有DDQN呢?因为在实现上,Q 值往往是被高估的。如下图所示,这里有 4 个不同的小游戏,横轴代表迭代轮次,红色锯齿状的一直在变的线表示Q函数对不同的状态估计的平均 Q 值,有很多不同的状态,每个状态我们都进行采样,算出它们的 Q 值,然后进行平均。这条红色锯齿状的线在训练的过程中会改变,但它是不断上升的。因为Q函数是取决于策略的,在学习的过程中策略越来越强,我们得到的 Q 值会越来越大。在同一个状态, 我们得到奖励的期望会越来越大,所以一原创 2022-10-22 21:26:45 · 25513 阅读 · 1 评论 -
【强化学习】深度Q网络(DQN)求解倒立摆问题 + Pytorch代码实战
Agent 必须在两个动作之间做出决定 - 向左或向右移动推车 - 以使连接到它的杆保持直立。深度 Q\mathrm{Q}Q 网络算法是这样的,我们初始化两个网络 :估计网络 QQQ 和 目标网络 Q^,Q^\hat{Q} , \hat{Q}Q^,Q^ 就等于 QQQ ,一开始 目标网络 Q^\hat{Q}Q^ 与原来的 QQQ 网络是一样的。在每一个回合中,我们用演员与环境交互,在每一次交互的过程中,都会得到一个 状态 sts_tst ,会采取某一个动作 at。a_{t 。}at。 怎么知道采原创 2022-10-22 19:57:03 · 26256 阅读 · 5 评论 -
【EasyRL学习笔记】第六章 DQN 深度Q网络(基本概念)
传统的强化学习算法会使用表格的形式存储状态价值函数 V(s)V(s)V(s) 或动作价值函数 Q(s,a)Q(s, a)Q(s,a) ,但是这样的方法存在很大的局 限性。例如,现实中的强化学习任务所面临的状态空间往往是连续的,存在无穷多个状态,在这种情况下,就不能再使用 表格对价值函数进行存储。价值函数近似利用函数直接拟合状态价值函数或动作价值函数,降低了对存储空间的要求,有 效地解决了这个问题。Qϕ(s,a)≈Qπ(s,a)Q_\phi(\boldsymbol{s}, \boldsymbol{a}) \原创 2022-10-22 16:32:34 · 24370 阅读 · 1 评论 -
【强化学习】PPO算法求解倒立摆问题 + Pytorch代码实战
Agent 必须在两个动作之间做出决定 - 向左或向右移动推车 - 以使连接到它的杆保持直立。近端策略优化 ( proximal policy optimization, PPO):避免在使用重要性采样时由于在θ\thetaθ下的pθ(at∣st)pθ(at∣st)与在θ′θ′下的pθ′(at∣st)pθ′(at∣st)相差太多, 导致重要性采样结果偏差较大而采取的算法。原创 2022-10-22 13:40:24 · 30380 阅读 · 13 评论 -
【EasyRL学习笔记】第五章 Proximal Policy Optimization 近端策略优化算法
让我们回忆一下策略梯度。策略梯度是同策略的算法,因为在策略梯度中,我们需要一个智能体、一个策略和一个演员。演员去与环境交互搜集数据,搜集很多的轨迹 τ\tauτ,根据搜集到的数据按照策略梯度的公式更新策略的参数,所以策略梯度是一个同策略的算法。PPO是策略梯度的变形,它是现在 OpenAI 默认的强化学习算法。∇Rˉθ=Eτ∼pθ(τ)[R(τ)∇logpθ(τ)]\nabla \bar{R}_\theta=\mathbb{E}_{\tau \sim p \theta(\tau)}\left[R(\t原创 2022-10-22 13:32:36 · 23837 阅读 · 1 评论 -
【强化学习】Policy Gradient 策略梯度算法求解CartPole倒立摆问题 + Pytorch代码实战
Agent 必须在两个动作之间做出决定 - 向左或向右移动推车 - 以使连接到它的杆保持直立。我们可以把采样到的数据代入下式中,把梯度算出来。也就是把每一个sss与aaa的对拿进来,计算在某一个状态下采取 某一个动作的对数概率(log probability)logpθ(atn∣stn)logpθ(atn∣stn)。对这个概率取梯度,在梯度前面乘一个权重,权重就是这场游戏的奖励。我们计算出梯度后,就可以更新模型。∇Rˉθ=1N。原创 2022-10-21 10:55:35 · 25036 阅读 · 13 评论 -
【EasyRL学习笔记】第四章 Policy Gradient 策略梯度
策略(policy):在每一个演员中会有对应的策略, 这个策略决定了演员的后续动作。具体来说, 策略 就是对于外界的输人,输出演员现在应该要执行的动作。一般地, 我们将策略写成π\piπ。回报 (return):一个回合 (episode) 或者试验 (trial) 得到的所有奖励的总和, 也被人们称为总奖励 (total reward)。一般地, 我们用RRR来表示它。轨迹 (trajectory):一个试验中我们将环境输出的状态sss与演员输出的动作aaa。原创 2022-10-21 09:31:37 · 23283 阅读 · 1 评论 -
【强化学习】Q-Learning算法求解悬崖行走问题 + Python代码实战
下面仅对Q-Learning算法对简单介绍Q学习是一种异策略(off-policy)算法。目标策略(target policy)和行为策略(behavior policy)。目标策略就是我们需要去学习的策略,相当于后方指挥的军师,它不需要直接与环境进行交互行为策略是探索环境的策略,负责与环境交互,然后将采集的轨迹数据送给目标策略进行学习,而且为送给目标策略的数据中不需要at+1a_{t+1}at+1,而Sarsa是要有at+1a_{t+1}at+1的。原创 2022-10-20 16:21:54 · 26122 阅读 · 5 评论 -
【强化学习】Sarsa算法求解悬崖行走问题 + Python代码实战
Sarsa 是一种同策略(on-policy)算法,它优化的是它实际执行的策略,它直接用下一步会执行的动作去优化 Q 表格。同策略在学习的过程中,只存在一种策略,它用一种策略去做动作的选取,也用一种策略去做优化。所以 Sarsa 知道它下一步的动作有可能会跑到悬崖那边去,它就会在优化自己的策略的时候,尽可能离悬崖远一点。Q(S,A)←Q(S,A)+α(R+γQ(S′,A′)−Q(S,A))Q(S, A) \leftarrow Q(S, A)+\alpha\left(R+\gamma Q\left(S^{原创 2022-10-20 15:59:01 · 25398 阅读 · 0 评论 -
【EasyRL学习笔记】第三章 表格型方法(Q-Table、Sarsa、Q-Learning)
(1)在每个回合中,如果在时间步 ttt 状态 sss 被访问了,那么(2)状态 sss 的价值可以通过回报的平均来估计,即 V(s)=S(s)/N(s)V(s)=S(s) / N(s)V(s)=S(s)/N(s) 。根据大数定律,只要我们得到足够多的轨迹,就可以趋近这个策略对应的价值函数。当 N(s)→∞N(s) \rightarrow \inftyN(s)→∞ 时, V(s)→Vπ(s)V(s) \rightarrow V_\pi(s)V(s)→Vπ(s) 。μt=1t∑j−1txj=1t(xt+∑j原创 2022-10-20 11:29:42 · 23966 阅读 · 0 评论 -
【EasyRL学习笔记】第二章 Markov Decision Process 马尔可夫决策过程
下图介绍了强化学习里面智能体与环境之间的交互,智能体得到环境的状态后,它会采取动作,并把这个采取的动作返还给环境。环境得到智能体的动作后,它会进入下一个状态,把下一个状态传给智能体。在强化学习中,智能体与环境就是这样进行交互的,这个交互过程可以通过马尔可夫决策过程来表示,所以马尔可夫决策过程是强化学习的基本框架。 本章将介绍马尔可夫决策过程。在介绍马尔可夫决策过程之前,我们先介绍它的简化版本:马尔可夫过程(Markov process,MP)以及马尔可夫奖励过程(Markov reward pro原创 2022-10-19 17:14:27 · 25514 阅读 · 0 评论 -
【EasyRL学习笔记】第一章 强化学习基础
强化学习(reinforcement learning,RL):智能体可以在与复杂且不确定的环境进行交互时,尝试使所获得的奖励最大化的算法。动作(action): 环境接收到的智能体基于当前状态的输出。状态(state):智能体从环境中获取的状态。奖励(reward):智能体从环境中获取的反馈信号,这个信号指定了智能体在某一步采取了某个策略以后是否得到奖励,以及奖励的大小。探索(exploration):在当前的情况下,继续尝试新的动作。其有可能得到更高的奖励,也有可能一无所有。原创 2022-10-05 19:56:16 · 23460 阅读 · 0 评论 -
【强化学习】Q-Learning算法求解迷宫寻路问题 + Java代码实现
相信大多数小伙伴应该和我一样,之前在学习强化学习的时候,一直用的是Python,但奈何只会用java写后端,对Python的一些后端框架还不太熟悉,(以后要集成到网站上就惨了),于是就想用Java实现一下强化学习中的Q-Learning算法,来搜索求解人工智能领域较热门的问题—迷宫寻路问题。(避免以后要用的时候来不及写)。下面仅对Q-Learning算法对简单介绍Q学习是一种异策略(off-policy)算法。目标策略(target policy)和行为策略(behavior policy)。原创 2021-11-26 20:29:35 · 25753 阅读 · 0 评论