【强化学习】关于PPO收敛问题

文章目录


前言

写了好几个版本的PPO,很容易出现的问题。


1.注意两处维度须一致

  • 1.注意两处维度须一致

    markdown 复制代码
    1.surr1 = ratio * adv
    2.returns = adv + value
    又由于ratio = torch.exp(new_log_probs - old_log_probs)得到
    所以须保证log_prob 与 adv的维度一致;adv与value的维度一致
    即:log_prob与adv与value的维度一致
    
    而elegentRL 有此代码,推荐其代码库
    即: assert logprobs.shape == advantages.shape == reward_sums.shape == (buffer_size,)
     
     不然会出现 bx1 + b = bxb 的结构 ,这样就不对了 

2.梯度问题

  • 2.梯度问题

    即:其实就是求导问题:一般来说,目标值不需要梯度 例子,目标值为5, x-5求导为1 ,否则 对x - y 求导 就会报错。

    这里就是old_log,adv, return 不需要梯度。

    与adv 计算相关的value值 也可以有梯度,只要最终adv没有梯度就行。

    特别的torch.tensor(advantage_list, dtype=torch.float) (--- hand-on RL) 这种也是去掉梯度的方式,所以一般buffer里的数据都是无梯度的。

3.提高收敛因素

  • 3.提高收敛因素

    1.horizon 即每次更新的步数设置为2048时极大提高收敛效率

    2.state 归一到 -1~1

    3.action只有在环境需要限制大小的值时才要clip,在训练时的action 不要clip 保证与训练时计算的分布相同

其他

  • 其他

    torch.cat(values, last_value.unsqueeze(0)) 不会起移除梯度,加梯度作用

    主要作用是 with torch.no_grad():

    markdown 复制代码
    with torch.no_grad():
         values = self.value(batch_states).squeeze(-1)
    
    print(values.requires_grad,1)
    values = torch.cat([values, last_value.unsqueeze(0)]) 
    print(values.requires_grad)
    
    False 1
    True
    markdown 复制代码
    with torch.no_grad():
         values = self.value(batch_states).squeeze(-1)
    
         print(values.requires_grad,1)
         values = torch.cat([values, last_value.unsqueeze(0)]) 
         print(values.requires_grad)
    
    False 1
    False
相关推荐
ai小陈5 小时前
PyTorch DataLoader数据加载性能排查:GPU利用率低的实操指南
人工智能·pytorch·python·深度学习·ai·gpu算力
2601_962299248 小时前
Azure python操作系统列表
python·操作系统·azure·虚拟机·存储配置文件
现代野蛮人8 小时前
【深度学习实验】—— 基于 LSTM 与 Optuna 调参的丙型肝炎预测
人工智能·深度学习·lstm
学术 学术 Fun9 小时前
如何用 API 与 Webhook 批量把图表图片转换成 VSDX
python·自动化·api·visio
2601_9621005410 小时前
python包和模块的内容整理
python·模块·导入·虚拟环境·
二进制漫游记10 小时前
FastAPI项目集成 Qdrant向量数据库+阿里云Embedding完整实战(工具封装+业务调用)
数据库·python·阿里云·embedding
DM今天肝到几点?10 小时前
AI 安全进入「攻防同频」:Gemini 3.8 Flash Cyber 上线、Astra 触及关键级、HiddenLayer 融资 1 亿美元
网络·人工智能·深度学习·安全·语言模型·开源·知识图谱
-今昭-11 小时前
《V2V 迁移实战:将 VMware 虚拟机转为 OpenStack 可用 Glance qcow2 镜像》
开发语言·python
乐迪信息11 小时前
智慧港口船舶AI算法实现在线状态监测
大数据·人工智能·深度学习·算法·计算机视觉
2601_9623815811 小时前
【转】Python渗透测试工具:sqlmap
python·渗透测试·sql注入·sqlmap·数据库安全