深度强化学习算法PPO训练Pendulum

强化学习_06_pytorch-PPO实践(Pendulum-v1) TRPO(Trust Range Policy Optimate)算法每一步更新都需要大量的运算,于是便有其改进版本PPO在2017年被提出。PPO 基于 TRPO 的思想,但是其算法实现更加简单。TRPO 使用泰勒展开近似、共轭梯度、线性搜索等方法直接求解。PPO 的优化目标与 TRPO 相同,但 PPO 用了一些相对简单的方法来求解。具体来说, PPO 有两种形式,一是PPO-惩罚,二是PPO-截断,我们接下来对这两种形式进行介绍。 阅读详情

PPO代码部分,训练连续动作

1.  导入必须要的包

import torch
import torch.nn as nn
import torch.nn.functional as f
import torch.optim as optim
from torch.distributions import Normal
from collections import deque
import matplotlib.pyplot as plt
import numpy as np
import gym
import copy

2.  定义actor网络和critic网络

class actor_net(nn.Module):

    def __init__(self, state_n, action_n, hidden_n):
        super(actor_net, self).__init__()
        self.fc1 = nn.Linear(state_n, hidden_n)
        self.fc2 = nn.Linear(hidden_n, hidden_n)

        self.mu = nn.Linear(hidden_n, action_n)
        self.sigma = nn.Linear(hidden_n, action_n)

    def forward(self, x):
        x = f.relu(self.fc1(x))
        x = f.relu(self.fc2(x))
        mu = torch.tanh(self.mu(x)) * 2
        sigma = f.softmax(self.sigma(x), dim = 1) + 0.001
        return mu, sigma


class critic_net(nn.Module):

    def __init__(self, state_n, hidden_n):
        super(critic_net, self).__init__()
        self.fc1 = nn.Linear(state_n, hidden_n)
        self.fc2 = nn.Linear(hidden_n, hidden_n)
        self.fc3 = nn.Linear(hidden_n, 1)

    def forward(self, x):
        x = f.relu(self.fc1(x))
        x = f.relu(self.fc2(x))
        value = self.fc3(x)
        return value

3.  定义存储数据的buffer,包括buffer添加数据,采样数据,清空数据

class buffer(object):
    def __init__(self, length):
        self.buffer_length = length
        self.buffer = deque(maxlen = self.buffer_length)
    def push(self, trans):
        self.buffer.append(trans)
    def sample(self):
        batch = list(self.buffer)
        return zip(*batch)
    def clear(self):
        self.buffer.clear()
    def length(self):
        return len(self.buffer)

4.  定义config


        
强化学习_PPO算法实现Pendulum-v1 也就是说,我们产生数据的策略,和要更新的目标策略不是同一个策略。也可以是我们先假定策略分布函数服从一个特殊的分布,比如正太分布,我们的神经网络可以直接输出 mu 和sigma, 就能获得整个策略的概率密度函数了。答案是不行,但大家可以从如上图看到,如果用行动策略 B[0.1,0.9]产出的数据,对目标策略P进行更新,动作1会被更新 1次,而动作2会更新9次。PPO 应用了 importance sampling,使得我们用行为策略获取的数据,能够更新目标策略,把 AC 从在线策略,变成离线策略。 阅读详情

相关推荐

【深度强化学习】(6) PPO 模型解析,附Pytorch完整代码

近端策略优化算法PPO(proximal policy optimization),具备 Policy Gradient、TRPO 的部分优点,采样数据和使用随机梯度上升方法优化代替目标函数之间交替进行,但 PPO 提出新目标函数,可以实现小批量更新。PPO 算法可依据 Actor 网络的更新方式细化为含有自适应 KL-散度(KL Penalty)的 PPO-Penalty 和含有 Clippped Surrogate Objective 函数的 PPO-Clip。

博观而约取,厚积而薄发 5万+

智能体在车联网中的应用:第28天 深度强化学习实战:从原理到实现——掌握近端策略优化(PPO)算法

PPO算法是强化学习领域的重要突破,通过近端策略优化解决了传统策略梯度方法的稳定性问题。本文深入解析了PPO的核心原理,包括其裁剪机制和GAE优势估计方法,并展示了在Pendulum-v1环境中的完整实现。PPO在理论严谨性与实现简洁性之间取得了平衡,成为强化学习研究和应用的标杆算法。

IT深耕十余载,大道之简 1136

从代码学习深度强化学习 - PPO PyTorch版

欢迎来到深度强化学习(DRL)的世界!在众多 DRL 算法中,Proximal Policy Optimization (PPO) 无疑是最受欢迎和广泛应用的算法之一。它由 OpenAI 在 2017 年提出,以其出色的性能、相对简单的实现和稳定的训练过程而著称,成为了许多研究和应用的基准算法。本篇博客旨在通过一个完整的 PyTorch 实现,带您从代码层面深入理解 PPO 算法。我们将不仅仅是看公式,更是要“动手”,一步步构建、训练和分析 PPO 智能体。为了全面掌握其应用,我们将分别在经典的。

weixin_43887510的博客 895

Python之rl-algs包语法、参数和实际应用案例

rl-algs 是轻量级、纯Python实现的强化学习算法库,专注于经典强化学习(RL)算法的快速实现、测试与教学,无复杂依赖,适合入门学习、小型实验、算法验证和教学演示。

王国平的博客 248

深度强化学习实战:PPO、DQN、SAC等五大算法在gym+PyTorch中的实现与对比

深度强化学习是智能体通过与环境持续交互来优化决策策略的机器学习范式。在工程实践中,离散动作空间与连续动作空间分别对应不同的算法设计思路:DQN系列通过经验回放和目标网络稳定Q值估计,适合处理CartPole等离散任务;PPO利用重要性采样和裁剪机制实现稳定的策略更新;SAC、DDPG与TD3则面向Pendulum这类连续控制场景,在探索与利用、目标平滑等方面各有取舍。结合gym环境与PyTorch框架,开发者可以系统对比不同算法的网络结构、损失计算与归一化技巧,理解它们在不同任务上的收敛速度与稳定性差异。本

weixin_42523711的博客 204

inverted-pendulum:倒立摆问题的强化学习解决方案的调查

倒立摆 对倒立摆问题的强化学习解决方案的调查。 介绍 倒立摆问题可以简明地定义为创建一个系统,该系统使用致动器沿轨道移动推车,并使用传感器来揭示推车和摆的状态,从而自动平衡附着在轨道上的推车上的旋转摆。 给定特定的倒立摆系统,解决问题就等于选择使用哪种传感器,可以选择制定近似于所涉及物理的确定性或随机模型,最重要的是找出有效的控制策略。 它是控制理论和动力学中的经典问题,可以作为开发实时控制算法的良好测试平台。 注意到问题在自然界和人造世界中的普遍性,可以很好地证明人们理解问题的动机。 例如,每个人在站立时都需要不断进行调整以防止摔倒,因此我们所有人在坐着或四处走动时都会反复解决此问题的一个更为困难的版本。 问题表述 长度为l的摆锤的一端具有质量m ,并通过铰链连接到质量为M的手推车,该摆锤能够通过在手推车上施加一定的力F来旋转。 通过假设,忽略了小车在地面上的摩擦以及摆锤在小车上的摩擦

光耦继电器电路分析

光耦电路的分析笔记

MingYue_SSS的博客 6851

VMwareWorkstation安装UOS系统(1070版本)教程

UOS系统是一款国产信创操作系统。目前市面上主流的系统版本是1070,下面我们用虚拟机来安装一下这款系统。

欲买桂花同载酒的博客 4277

ChatGPT设置密钥后Codex免手机验证:配置顺序与身份凭证复用机制

API Key 是一种用于身份识别的凭证,其核心原理是通过预配置的密钥替代交互式登录流程。在开发工具中,密钥认证优先级通常高于会话认证,当本地存在有效密钥时,工具会直接复用该凭证,从而减少重复验证环节。这种机制的技术价值在于提升开发效率与配置一致性,尤其适用于多设备切换、CI/CD 流水线及编程辅助工具等场景。以 Codex 为例,在 ChatGPT 界面提前配置 API 密钥后,Codex 启动时可读取持久化存储的密钥,避免触发手机号验证,实现身份凭证的跨入口复用。

weixin_33940469的博客 394

镜头调焦的 调整的是焦距还是像距?

在镜头 “调焦”(即日常拍照时的)中,调整的核心是,而非焦距。

AIoT深度探索者 | 嵌入式系统架构师 深耕物联网(IoT)与人工智能(AI)融合技术,聚焦​​边缘计算、图像开发、低功耗通信协议​​,致力于智能硬件,关注我获取最新技术文章信息与海量资源~ 1346

Java 部分笔试题解析

合法的 try 语句块必须包含 try 块,并且至少包含一个 catch 块或一个 finally 块。给定一个长度为n的数组,数组中的每个元素,表示一根水管的长度,水管可以在任意位置锯开。调用 sleep() 方法、创建新线程、高优先级线程进入就绪状态只会暂停或抢占线程的执行,而不会终止线程的运行。A.抽象类中可以包含非抽象的普通方法,接口中的方法必须是抽象的,不能有非抽象的普通方法。接口中的成员变量必须是常量(static final),而抽象类可以有普通成员变量。

博客 2564

创建 Fiori Space 时看不到传输请求的根因与排查路径

摘要: 在创建Fiori Space时,若Transport字段下拉列表为空,通常是因为系统未找到符合要求的传输请求。主要原因是: 请求类型不匹配:需使用Customizing request而非Workbench request。 用户权限问题:当前用户需在请求下有可用的task。 客户端或系统不一致:请求需在当前客户端和正确系统(如后端)中创建。 解决方法: 在当前客户端和系统中新建Customizing request,确保包含用户task。 检查是否为前后端分离架构,确保请求创建在正确的系统。 验证

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 101

【数据分析】基于多组学数据整合的微生物与宿主互作网络构建及可视化分析

综上所述,本教程通过详细的步骤和方法,展示了如何整合微生物群落数据、宿主基因表达数据和代谢组数据,构建微生物与宿主互作网络,并进行可视化分析。这种方法为研究微生物与宿主之间的复杂关系提供了一种有力的工具,有助于推动相关疾病的研究和治疗。然而,在实际应用中,需要注意数据处理和分析过程中的各种问题,并结合实验验证来提高研究结果的可靠性和科学性。未来,随着多组学技术的不断发展和完善,以及数据分析方法的创新,相信我们能够更深入地理解微生物与宿主之间的互作机制,为疾病的预防、诊断和治疗提供更有力的支持。

专注生信领域 354

【无人机基站】基于K-mean算法实现无人机基站部署附matlab代码

【无人机基站】基于K-mean算法实现无人机基站部署附matlab代码

天天酷科研的博客 234

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

上一篇: 深度强化学习算法PPO训练CartPole
下一篇: Python与Matlab/Simulink交互(一)
槑槑紫
博客等级 码龄8年 168粉丝 62原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值