强化学习策略梯度梳理1 - REINFORCE(附代码)

策略梯度:REINFORCE算法代码详解 策略梯度算法代码解析 阅读详情

主要参考文献 Reinforcement Learning: An introduction,Sutton
主要参考课程 Intro to Reinforcement Learning,Bolei Zhou
相关文中代码
https://github.com/ThousandOfWind/RL-basic-alg.git

策略梯度(PG)

首先定义遵从一般约定
s ∈ S , a ∈ A ( s ) , θ ∈ R d ′ s \in \mathcal{S}, a \in \mathcal{A}(s), \boldsymbol{\theta} \in \mathbb{R}^{d'} s∈S,a∈A(s),θ∈Rd′

既然策略是 π ( a ∣ s , θ ) = Pr ⁡ { A t = a ∣ S t = s , θ t = θ } \pi(a \mid s, \boldsymbol{\theta})=\operatorname{Pr}\left\{A_{t}=a \mid S_{t}=s, \boldsymbol{\theta}_{t}=\boldsymbol{\theta}\right\} π(a∣s,θ)=Pr{At​=a∣St​=s,θt​=θ}
我们假设这个策略有表现 J ( θ ) J\left(\boldsymbol{\theta}\right) J(θ)
我们希望能够根据 J J J的梯度更新策略 θ t + 1 = θ t + α ∇ J ( θ t ) ^ \boldsymbol{\theta}_{t+1}=\boldsymbol{\theta}_{t}+\alpha \widehat{\nabla J\left(\boldsymbol{\theta}_{t}\right)} θt+1​=θt​+α∇J(θt​) ​

方向导数本质上研究的是函数在某点处沿某特定方向上的变化率问题,梯度反映的是空间变量变化趋势的最大值和方向。方向导数与梯度在微分学中有重要的运用。
具体等我把相关算法搞定再去看高数

这样问题就变成了怎么把表现和策略联合起来
然后sutton就说了,既然如此
J ( θ ) ≐ v π θ ( s 0 ) J(\boldsymbol{\theta}) \doteq v_{\pi_{\boldsymbol{\theta}}}\left(s_{0}\right) J(θ)≐vπθ​​(s0​)
v π ( s ) = [ ∑ a π ( a ∣ s ) q π ( s , a ) ] v_{\pi}(s)=\left[\sum_{a} \pi(a \mid s) q_{\pi}(s, a)\right] vπ​(s)=[∑a​π(a∣s)qπ​(s,a)]
⚠️用状态 s 0 s_0 s0​的价值是因为他还假设了条件 γ = 1 \gamma = 1 γ=1,所以 v π θ ( s 0 ) v_{\pi_{\boldsymbol{\theta}}}\left(s_{0}\right) vπθ​​(s0​) 实际上能够代表轨迹上的收益和
因此 J J J的梯度可以参考状态值的梯度

∇ v π ( s ) = ∇ [ ∑ a π ( a ∣ s ) q π ( s , a ) ] ,  for all  s ∈ S = ∑ a [ ∇ π ( a ∣ s ) q π ( s , a ) + π ( a ∣ s ) ∇ q π ( s , a ) ] = ∑ a [ ∇ π ( a ∣ s ) q π ( s , a ) + π ( a ∣ s ) ∇ ∑ s ′ , r p ( s ′ , r ∣ s , a ) ( r + v π ( s ′ ) ) ] = ∑ a [ ∇ π ( a ∣ s ) q π ( s , a ) + π ( a ∣ s ) ∇ ∑ s ′ p ( s ′ ∣ s , a ) v π ( s ′ ) ] = ∑ a [ ∇ π ( a ∣ s ) q π ( s , a ) + π ( a ∣ s ) ∇ ∑ s ′ p ( s ′ ∣ s , a ) ( ∑ a ′ [ ∇ π ( a ′ ∣ s ′ ) q π ( s ′ , a ′ ) + π ( a ′ ∣ s ′ ) ∇ ∑ s ′ ′ p ( s ′ ′ ∣ s ′ , a ′ ) v π ( s ′ ′ ) ] ) ] \begin{aligned} \nabla v_{\pi}(s) &=\nabla\left[\sum_{a} \pi(a \mid s) q_{\pi}(s, a)\right], \quad \text { for all } s \in \mathcal{S} \\ &=\sum_{a}\left[\nabla \pi(a \mid s) q_{\pi}(s, a)+\pi(a \mid s) \nabla q_{\pi}(s, a)\right] \\ &=\sum_{a}\left[\nabla \pi(a \mid s) q_{\pi}(s, a)+\pi(a \mid s) \nabla \sum_{s^{\prime}, r} p\left(s^{\prime}, r \mid s, a\right)\left(r+v_{\pi}\left(s^{\prime}\right)\right)\right]\\ &=\sum_{a}\left[\nabla \pi(a \mid s) q_{\pi}(s, a)+\pi(a \mid s) \nabla \sum_{s^{\prime} } p\left(s^{\prime} \mid s, a\right)v_{\pi}\left(s^{\prime}\right)\right]\\ &=\sum_{a}\left[\nabla \pi(a \mid s) q_{\pi}(s, a)+\pi(a \mid s) \nabla \sum_{s^{\prime} } p\left(s^{\prime} \mid s, a\right)\left(\sum_{a'}\left[\nabla \pi(a' \mid s') q_{\pi}(s', a')+\pi(a' \mid s') \nabla \sum_{s''} p\left(s'' \mid s', a'\right)v_{\pi}\left(s''\right)\right]\right)\right]\\ \end{aligned} ∇vπ​(s)​=∇[a∑​π(a∣s)qπ​(s,a)], for all s∈S=a∑​[∇π(a∣s)qπ​(s,a)+π(a∣s)∇qπ​(s,a)]=a∑​⎣⎡​∇π(a∣s)qπ​(s,a)+π(a∣s)∇s′,r∑​p(s′,r∣s,a)(r+vπ​(s′))⎦⎤​=a∑​[∇π(a∣s)qπ​(s,a)+π(a∣s)∇s′∑​p(s′∣s,a)vπ​(s′)]=a∑​[∇π(a∣s)qπ​(s,a)+π(a∣s)∇s′∑​p(s′∣s,a)(a′∑​[∇π(a′∣s′)qπ​(s′,a′)+π(a′∣s′)∇s′′∑​p(s′′∣s′,a′)vπ​(s′′)])]​

然后接下这一步其实我没懂。。罪过。我看完这个立刻去学

= ∑ x ∈ S ∑ k = 0 ∞ Pr ⁡ ( s → x , k , π ) ∑ a ∇ π ( a ∣ x ) q π ( x , a ) =\sum_{x \in \mathcal{S}} \sum_{k=0}^{\infty} \operatorname{Pr}(s \rightarrow x, k, \pi) \sum_{a} \nabla \pi(a \mid x) q_{\pi}(x, a) =x∈S∑​k=0∑∞​Pr(s→x,k,π)a∑​∇π(a∣x)qπ​(x,a)

anyway,
J ( θ ) ∝ ∑ s μ ( s ) ∑ a q π ( s , a ) ∇ π ( a ∣ s , θ ) J(\boldsymbol{\theta}) \propto \sum_{s} \mu(s) \sum_{a} q_{\pi}(s, a) \nabla \pi(a \mid s, \boldsymbol{\theta}) J(θ)∝s∑​μ(s)a∑​qπ​(s,a)∇π(a∣s,θ)
符号 ∝ \propto ∝ 是“正比于”的意思,就很合理,策略梯度也因此有很好的收敛性保证

进一步,我们可以推

∑ s μ ( s ) ∑ a q π ( s , a ) ∇ π ( a ∣ s , θ ) = E π [ ∑ a q π ( S t , a ) ∇ π ( a ∣ S t , θ ) ] = E π [ ∑ a π ( a ∣ S t , θ ) q π ( S t , a ) ∇ π ( a ∣ S t , θ ) π ( a ∣ S t , θ ) ] = E π [ q π ( S t , A t ) ∇ ln ⁡ ( π ( A t ∣ S t , θ ) ) ] \begin{aligned} \sum_{s} \mu(s) \sum_{a} q_{\pi}(s, a) \nabla \pi(a \mid s, \boldsymbol{\theta}) & =\mathbb{E}_{\pi}\left[\sum_{a} q_{\pi}\left(S_{t}, a\right) \nabla \pi\left(a \mid S_{t}, \boldsymbol{\theta}\right)\right]\\ &=\mathbb{E}_{\pi}\left[\sum_{a} \pi(a \mid S_{t}, \boldsymbol{\theta}) q_{\pi}(S_{t}, a) \frac{\nabla \pi(a \mid S_{t}, \boldsymbol{\theta})} {\pi(a \mid S_{t}, \boldsymbol{\theta})}\right] \\ &= \mathbb{E}_{\pi}\left[q_{\pi}(S_{t},A_t) \nabla \operatorname{ln}(\pi(A_t \mid S_t, \boldsymbol{\theta}))\right] \end{aligned} s∑​μ(s)a∑​qπ​(s,a)∇π(a∣s,θ)​=Eπ​[a∑​qπ​(St​,a)∇π(a∣St​,θ)]=Eπ​[a∑​π(a∣St​,θ)qπ​(St​,a)π(a∣St​,θ)∇π(a∣St​,θ)​]=Eπ​[qπ​(St​,At​)∇ln(π(At​∣St​,θ))]​

所以虽然J值是我们用来评估策略表现的,但是很多时候,我们说 ln ⁡ ( π ( a ∣ s , θ ) ) \operatorname{ln}(\pi(a \mid s, \boldsymbol{\theta})) ln(π(a∣s,θ))是score function
(我怀疑我又在胡说八道了。。。。

REINFORCE

如果用真实奖赏估计 v π ( s ) v_{\pi}(s) vπ​(s),我们就得到了这个算法
他的核心思路是用MC方法估计 q π ( S t , A t ) q_{\pi}(S_{t},A_t) qπ​(St​,At​)项
也就是说
J ( θ ) ∝ E π [ G ( S t , A t ) ∇ ln ⁡ ( π ( A t ∣ S t , θ ) ) ] J(\boldsymbol{\theta}) \propto \mathbb{E}_{\pi}\left[G(S_{t},A_t) \nabla \operatorname{ln}(\pi(A_t \mid S_t, \boldsymbol{\theta}))\right] J(θ)∝Eπ​[G(St​,At​)∇ln(π(At​∣St​,θ))]

突然意识到两年了我都没写过MC的代码,然后决定试试看

首先就是教科书里的伪代码
在这里插入图片描述

然后python实现是这个样

    def get_action(self, observation, *arg):
        obs = th.FloatTensor(observation)
        pi = self.pi(obs=obs)
        m = Categorical(pi)
        action_index = m.sample()

        self.log_pi_batch.append((m.log_prob(action_index)))
        return int(action_index), pi
    def learn(self, memory):
        batch = memory.get_last_trajectory()

        # build G_t
        G = copy.deepcopy(batch['reward'][0])
        for index in range(2, len(G)+1):
            G[-index] += self.gamma * G[-index + 1]
        G = th.FloatTensor(G)

        log_pi = th.stack(self.log_pi_batch)
        J = - (G * log_pi).mean()

        self.writer.add_scalar('Loss/J', J.item(), self._episode )
        self.optimiser.zero_grad()
        J.backward()
        grad_norm = th.nn.utils.clip_grad_norm_(self.params, 10)
        self.optimiser.step()

        self._episode += 1

但是但是,
我先试了一下小车爬坡效果很不行,参考了周老师的tutorial里推荐的源码: https://github.com/cuhkrlcourse/RLexample/blob/master/ policygradient/reinforce.py
用的环境是’CartPole-v1’,然而效果还是很糟糕。。。
这里贴贴一下结果
loss & score虽然说收敛了但是解很不好, 是我哪里写错了吗。。。
在这里插入图片描述
在这里插入图片描述

然后可视化了他的行动策略,红色和绿色分别是一个动作
,这样看的话它只有在做一个动作而已
在这里插入图片描述

REINFORCE-baseline

因为上文用的是
∇ J ( θ ) ∝ E π [ G ( S t , A t ) ∇ ln ⁡ ( π ( A t ∣ S t , θ ) ) ] \nabla J(\boldsymbol{\theta}) \propto \mathbb{E}_{\pi}\left[G(S_{t},A_t) \nabla \operatorname{ln}(\pi(A_t \mid S_t, \boldsymbol{\theta}))\right] ∇J(θ)∝Eπ​[G(St​,At​)∇ln(π(At​∣St​,θ))]
baseline的使用是因为 G ( S t , A t ) G(S_{t},A_t) G(St​,At​)的会带来很高的方差, 为了缓解这个问题我们考虑存在一个baseline 满足
∑ a b ( s ) ∇ π ( a ∣ s , θ ) = b ( s ) ∇ ∑ a π ( a ∣ s , θ ) = b ( s ) ∇ 1 = 0 \sum_{a} b(s) \nabla \pi(a \mid s, \boldsymbol{\theta})=b(s) \nabla \sum_{a} \pi(a \mid s, \boldsymbol{\theta})=b(s) \nabla 1=0 a∑​b(s)∇π(a∣s,θ)=b(s)∇a∑​π(a∣s,θ)=b(s)∇1=0
这样
∇ J ( θ ) ∝ ∑ s μ ( s ) ∑ a ( q π ( s , a ) − b ( s ) ) ∇ π ( a ∣ s , θ ) \nabla J(\boldsymbol{\theta}) \propto \sum_{s} \mu(s) \sum_{a}\left(q_{\pi}(s, a)-b(s)\right) \nabla \pi(a \mid s, \boldsymbol{\theta}) ∇J(θ)∝s∑​μ(s)a∑​(qπ​(s,a)−b(s))∇π(a∣s,θ)
然后一般会用状态值作为baseline
在这里插入图片描述

    def get_action(self, observation, *arg):
        obs = th.FloatTensor(observation)
        pi = self.pi(obs=obs)
        m = Categorical(pi)
        action_index = m.sample()

        self.log_pi_batch.append(m.log_prob(action_index))
        self.b_batch.append(self.B(obs=obs))
        return int(action_index), pi
    def learn(self, memory):
        batch = memory.get_last_trajectory()

        # build G_t
        G = copy.deepcopy(batch['reward'][0])
        reward = th.FloatTensor(batch['reward'][0])

        for index in range(2, len(G) + 1):
            G[-index] += self.gamma * G[-index + 1]
        G = th.FloatTensor(G)


        log_pi = th.stack(self.log_pi_batch)
        b = th.stack(self.b_batch)
        J = - ((G-b).detach() * log_pi).mean()
        value_loss = F.smooth_l1_loss(b.squeeze(-1), reward).mean()

        loss = J + value_loss

        self.writer.add_scalar('Loss/J', J.item(), self._episode)
        self.writer.add_scalar('Loss/B', value_loss.item(), self._episode)
        self.writer.add_scalar('Loss/loss', loss.item(), self._episode)


        self.optimiser.zero_grad()
        loss.backward()
        grad_norm = th.nn.utils.clip_grad_norm_(self.params, 10)
        self.optimiser.step()

        self._episode += 1

然而结果也很悲剧
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

对比DQN

因为我很怀疑是不是我的代码有什么问题就决定对比一下dqn,虽然dqn发散,但是效果果然好很多,而且策略的颜色也是比较理想的那种

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

总结

onpolicy 果然收敛的很好然而效果不好
offpolicy 虽然不收敛但是又能看到效果
然而两个结果都很糟糕,
可能原因包括

  • 可能我的参数不好
  • 网络结构不够好,一般经验来看可能换rnn会好一些
  • 我写的代码有问题。。。。等我找到原因会回来改改的
深度强化学习-策略梯度算法(Reinforce)代码 引言 本文主要采用Pytorch来实现策略梯度算法,算法的原理可以参考我的这篇博文:深度强化学习-策略梯度算法推导,里面对该算法进行了详细推导。如果想深入理解策略梯度算法公式,可以参考我的另一篇博文:深度强化学习-策略梯度算法深入理解,里面将其与手写数字识别问题进行了类比,深入剖析了策略梯度算法公式。代码已经上传到我的Github上,喜欢的话可以点个小星星噢。 代码:https://github.com/indigoLovee/Reinforce_pytorch 1 Reinforce算法 强化学习 阅读详情

相关推荐

强化学习(Reinforcement Learning)简单例子的Matlab代码实现——扫地机器人(Q-learning and SARSA)

强化学习(Reinforcement Learning, RL)作为机器学习的一种技术,近年来受到了大量的关注,也取得了一些应用上的进展,比如AlphaGo的成功。论坛上已经有了大量的帖子博文介绍强化学习,感兴趣的朋友可以参考https://blog.youkuaiyun.com/Young_Gy/article/details/73485518,https://blog.youkuaiyun.com/liweibin1994/article/details/79079884 这里应用强化学习中最基本的Q-Learning算法来实

玄在天涯的博客 2万+

强化学习:Reinforce with Baseline求解MountainCar-v0小车上山问题

A2C网络求解MountainCar-v0问题

赛亚茂的博客 1442

强化学习基础:强化学习分类,强化学习表示,值函数,策略迭代/值迭代, 主要的强化学习技术(蒙特卡洛学习/时间差分学习,DQN.,策略梯度/REINFORCE/AC系列算法)

强化学习

weixin_36378508的博客 3422

Reinforce算法原理及Tensorflow代码实现

Q-learning和DQN算法都是强化学习中的Value-based的方法,它们都是先经过Q值来选择动作。强化学习中还有另一大类是Policy Gradient 是一类直接针对期望回报(Expected Return)通过(Gradient Descent)进行策略优化的强化学习方法。这一类方法避免了其他传统强化学习方法所面临的一些困难,比如,没有一个准确的价值函数,或者由于连续的状态和动作空间,以及状态信息的不确定性而导致的难解性(Intractability)。

AI研究院 905

keras实现REINFORCE算法强化学习

keras实现REINFORCE算法强化学习: # Policy Gradient Minimal implementation of Stochastic Policy Gradient Algorithm in Keras ## Pong Agent ![pg](./assets/pg.gif) This PG agent seems to get more frequent wins after about 8000 episodes. Below is the score graph.

从零开始:在Ubuntu 22.04上配置Isaac Gym Preview 3环境(含常见错误解决方案)

本文提供了在Ubuntu 22.04系统上从零开始配置Isaac Gym Preview 3环境的完整实战指南。内容涵盖NVIDIA驱动安装、Conda环境搭建、CUDA与PyTorch版本精准匹配、Isaac Gym核心安装与验证,并重点介绍了针对四足机器人等复杂系统的强化学习训练环境配置、常见错误解决方案及性能调优技巧,旨在帮助开发者高效部署这一高性能物理仿真平台。

weixin_29048775的博客 393

从Policy Gradient到REINFORCE++,万字长文梳理强化学习最新进展

强化学习的核心目标是通过不断调整策略(即根据当前状态选择动作的规则),使智能体表现得更好。在强化学习中,有几个关键元素至关重要:首先是奖励模型和价值函数,它们用于评估每个动作或策略的优劣,从而决定模型优化的方向;其次是更新规则,主要涉及损失函数的约束项,它决定了策略更新的力度和稳定性。本文首先介绍了三类基础的强化学习算法,这三类算法主要在奖励计算和更新规则上有所不同,是 RLHF(人类反馈强化学...

Paper weekly 2425

LSTM模型 轨迹经纬度预测

原始时间序列数据如下所示,我们只取前两列纬度和经度作为输入数据 我们设定用前六个位置信息预测下一个位置,则两个样本的输入输出数据如下所示: 创建LSTM网络训练模型: import numpy as np from keras.layers.core import Dense, Activation, Dropout from keras.layers import LS...

Muzi_Water的博客 2万+

强化学习策略梯度算法梳理:从REINFORCE到PPO2(REINFORCE、QAC、A2C、Off-Policy AC、PP01、PPO2))

策略优化方法的发展过程梳理,从REINFORCE到ppo2(REINFORCE、QAC、A2C、Off-Policy AC、PP01、PPO2)

dc_young的博客 774

【异常】QClaw客户端安装失败(OpenClaw资源解压出错)问题排查与修复指南: 安装失败:OpenClaw 资源解压出错。 请重新安装或联系支持。

摘要:QClaw客户端安装失败报错"OpenClaw资源解压出错"的主要原因是资源包解压异常,常见于安装包损坏、系统权限不足、安全软件拦截、旧版本残留或系统环境问题。解决方案分三步:1)快速修复:重新下载安装包、管理员权限运行、关闭安全防护;2)深度修复:清理旧版本残留、修复系统组件;3)终极方案:收集日志联系官方支持。建议优先检查安装包完整性并使用纯英文安装路径,80%问题可通过快速修复方案解决。

奶爸的编程之路,也就一周冷个三天 383

基于DNN神经网络的多输入多输出数据回归预测(附带Matlab代码)

假设我们的输入数据包含n个特征,输出数据包含m个特征。在本文中,我们将介绍如何使用DNN(深度神经网络)实现多输入多输出数据回归预测,并提供相应的Matlab代码。需要注意的是,上述代码中的DNN模型是一个简化的示例,您可以根据实际任务的复杂程度和要求进行相应的调整和优化。综上所述,我们介绍了如何使用DNN神经网络实现多输入多输出数据回归预测,并提供了相应的Matlab代码。函数对DNN模型进行训练,其中输入数据需要转置,以适应网络的输入要求。最后,我们使用训练好的模型对测试数据进行预测,并打印预测结果。

DevWizard的博客 1069

深度学习强化学习策略梯度方法终极指南:从REINFORCE到PPO的实战解析

Tianshou是一个优雅的PyTorch深度强化学习库,提供了丰富的策略梯度算法实现,帮助开发者快速构建和训练强化学习智能体。本文将系统讲解策略梯度方法的核心原理,从基础的REINFORCE算法到先进的PPO算法,带你掌握策略梯度方法的演进脉络与实战应用。 ## 策略梯度方法入门:从智能体与环境交互谈起 🤖 策略梯度方法是强化学习中直接优化策略函数的一类重要算法。不同于价值函数方法(如Q-

gitblog_00696的博客 725

使用Qt和MX Component插件实现与菱PLC的通信

在本文中,我们介绍了如何使用Qt和MX Component插件实现与菱PLC的通信。我们首先安装和配置了MX Component插件,并在Qt项目中初始化和使用MX Component来连接、读取和写入PLC的数据。安装完成后,您需要在Qt项目中配置MX Component的路径,以便Qt可以找到所需的库文件。在本文中,我们将探讨如何使用Qt和MX Component插件来实现与菱PLC的通信。在主函数中,我们将初始化MX Component,并创建一个与PLC通信的示例。在上面的代码中,我们使用了。

TlScratch的博客 996

强化学习策略梯度梳理3-SOTA上(附PPO2代码)

强化学习策略梯度梳理-SOTA一级目录策略梯度方法总结进阶方向1Trust region policy optimization(TRPO) 一级目录 这个部分主要参考周博磊老师的第六节的顺序 主要参考课程 Intro to Reinforcement Learning,Bolei Zhou 相关文中代码 https://github.com/ThousandOfWind/RL-basic-alg.git 策略梯度方法 首先策略的优化目标是 J(θ)=Eτ∼πθ[R(τ)] J(\theta)=\math

thousandsofwind的博客 979

SAP 中租赁资产的实现需区分经营租赁与融资租赁,核心围绕资产主数据配置、折旧与利息设置、科目分配及业务操作展开

摘要:SAP系统租赁资产管理需区分经营租赁与融资租赁,通过SPRO配置资产主数据、折旧范围、利息计算及科目分配。关键步骤包括:激活折旧范围利息计算(OABZ)、设置租赁资产类别(OAYZ)、维护总账科目(AO90)及创建租赁资产主数据(AS01)。业务操作涵盖资产资本化(ABZON)、折旧利息过账(AFAB)、租金支付(F-53)及终止处理(ABUMN)。核心配置要点在于准确设置租赁类型、利率参数和科目联动,确保系统自动计算折旧与利息并生成正确凭证。

金牌架构师 1076

Keras中神经网络可视化模块keras.utils.visualize_util安装配置方法

Keras中神经网络可视化模块keras.utils.visualize_util安装配置方法

jacke121的专栏 2759

强化学习策略梯度梳理2 - AC(附代码)

策略梯度梳理 ACActor-CriticActor-Critic Policy Gradient (QAC)QAC with shared networkone-step AC 主要参考文献 Reinforcement Learning: An introduction,Sutton 主要参考课程 Intro to Reinforcement Learning,Bolei Zhou 相关文中代码 https://github.com/ThousandOfWind/RL-basic-alg.git Act

thousandsofwind的博客 1270

Vek385评估板(二):板子联网 & memtester安装(LPDDR5X测试)

继上一篇文章:Vek385评估板(一):EDF成功烧录启动及一些问题。 本章完成最主要的两个功能:开发板联网+内存 memtester。因为我是做测试行业的,所以这两个是最想试的。内存测试,除了FPGA测,也可以系统级测,本次在versal上实现这个功能,主要是可以应急。在没有安卓、X86的情况下,可以使用本方案测试。 下一篇会继续做一些其他功能。

千歌叹尽执夏的博客 224

策略梯度深入:从 REINFORCE 到 Actor-Critic

本文系统梳理了策略梯度方法的演进历程:从最朴素的REINFORCE算法开始,到结合价值评估的Actor-Critic框架,最终发展为PPO这一集大成者。REINFORCE直接优化策略网络,但面临高方差和样本效率低的问题;引入基线(baseline)和优势函数(Advantage Function)可降低方差;Actor-Critic架构通过Critic网络评估状态价值,实现单步更新;PPO则进一步通过约束更新幅度确保训练稳定性。文章还介绍了广义优势估计(GAE)对偏差-方差的平衡,并对比了各算法的适用场景,

2603_95397518的博客 267

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

强化学习极简入门:通俗理解MDP、DP MC TD和Q学习、策略梯度、PPO

强化学习里面的概念、公式,相比ML/DL特别多,初学者刚学RL时,很容易被接连不断的概念、公式给绕晕,而且经常忘记概念与公式符号表达的一一对应(包括我自己在1.10日之前对好多满是概念/公式的RL书完全看不下去,如今都看得懂了,故如果读文本之前,你正在被RL各种公式困扰,相信看完这篇RL极简入门后就完全不一样了)。

结构之法 算法之道 14万+

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

从REINFORCE到PPO:一文搞懂Policy-based强化学习算法的进化之路

本文深入探讨了从REINFORCE到PPO的Policy-based强化学习算法演进历程,解析了策略梯度方法的核心理论和技术突破。重点分析了REINFORCE的高方差问题、Actor-Critic架构的优化思路,以及PPO算法通过重要性采样和策略约束实现的高效稳定训练。文章还提供了算法性能对比和工程实践建议,帮助开发者掌握强化学习前沿技术。

Black的专栏 1053

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

从REINFORCE到PPO:Policy-based强化学习算法演进与实战解析

本文深入解析了从REINFORCE到PPO的Policy-based强化学习算法演进历程,详细介绍了REINFORCE、A2C和PPO的核心原理及实战应用。通过对比分析各算法的优缺点,提供了调参经验和适用场景建议,帮助开发者高效选择和应用强化学习算法。文章特别强调了PPO在工业级应用中的卓越表现,如机器人控制和金融交易等领域。

hh234的博客 948

策略梯度定理(Policy Gradient)系列算法Pytorch代码实现

在学习强化学习算法的过程中发现,实际上基于策略梯度定理的强化学习算法是一个大类,会接触到一系列算法与相关的名词(例如REINRECE, Acotr-critic, A2C, A3C等等)。但实际发现网上大多数相关介绍与代码实现似乎并没搞清楚他们之间的区别和联系,经常张冠李戴(比如一些标题为A2C的代码实际里面为REINRECE+baseline算法),因此本文希望直接通过代码来对策略梯度定理系列算法进行一个总结,供大家参考。

duyangyi的博客 796

强化学习中策略梯度的探索和利用

在强化学习中,探索(Exploration)与利用(Exploitation)是一个核心权衡。智能体既要利用已知最优策略来获得高回报,又要探索未知状态或动作,以便发现更好的策略。策略梯度(Policy Gradient)是一类直接优化策略的强化学习算法,采用独特的方式处理探索。这里基于网络资料,尝试深入分析,探索和学习策略梯度。

liliang199的专栏 917

强化学习再梳理,从PPO到GRPO到DAPO

是时候准备实习和面试了。不同以往的是,当前职场已不再是那个双向奔赴时代了。求职者在变多,HC 在变少,岗位要求还更高了。强化学习基于奖励最大化假设,所有的算法都是建立在得到一个最大的期望奖励的基础上。PPO,GRPO,DAPO 都是 On-Policy 的策略。

xiaoganbuaiuk的博客 1314
上一篇: 注意力机制:认知模型与计算机应用
下一篇: 强化学习策略梯度梳理2 - AC(附代码)
ThousandsOfWind
博客等级 码龄11年 21粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值