译者:hijkzzz

distributions 包含可参数化的概率分布和采样函数. 这允许构造用于优化的随机计算图和随机梯度估计器. 这个包一般遵循 TensorFlow Distributions 包的设计.

通常, 不可能直接通过随机样本反向传播. 但是, 有两种主要方法可创建可以反向传播的代理函数. 即得分函数估计器/似然比估计器/REINFORCE和pathwise derivative估计器. REINFORCE通常被视为强化学习中策略梯度方法的基础, 并且pathwise derivative估计器常见于变分自动编码器中的重新参数化技巧. 得分函数仅需要样本的值 , pathwise derivative 需要导数 . 接下来的部分将在一个强化学习示例中讨论这两个问题. 有关详细信息, 请参阅 Gradient Estimation Using Stochastic Computation Graphs .

得分函数

当概率密度函数相对于其参数可微分时, 我们只需要sample()log_prob()来实现REINFORCE:

是参数, 是学习速率, 是奖励 并且 是在状态 以及给定策略 执行动作 的概率.

在实践中, 我们将从网络输出中采样一个动作, 将这个动作应用于一个环境中, 然后使用log_prob构造一个等效的损失函数. 请注意, 我们使用负数是因为优化器使用梯度下降, 而上面的规则假设梯度上升. 有了确定的策略, REINFORCE的实现代码如下:

probs = policy_network(state)
# Note that this is equivalent to what used to be called multinomial
m = Categorical(probs)
action = m.sample()
next_state, reward = env.step(action)
loss = -m.log_prob(action) * reward
loss.backward()

Pathwise derivative

实现这些随机/策略梯度的另一种方法是使用来自rsample()方法的重新参数化技巧, 其中参数化随机变量可以通过无参数随机变量的参数确定性函数构造. 因此, 重新参数化的样本变得可微分. 实现Pathwise derivative的代码如下:

阅读全文/改进本文

PyTorch 1.0 中文文档:torch.distributions相关推荐

  1. PyTorch 1.0 中文文档:torch.sparse

    译者:hijkzzz 警告 这个API目前还处于试验阶段,可能在不久的将来会发生变化. Torch支持COO(rdinate )格式的稀疏张量,这可以有效地存储和处理大多数元素为零的张量. 稀疏张量表 ...

  2. PyTorch 1.0 中文文档正式接受校对 | ApacheCN

    参与方式:https://github.com/apachecn/pytorch-doc-zh/blob/master/CONTRIBUTING.md 整体进度:https://github.com/ ...

  3. PyTorch 1.0 中文文档:torch.onnx

    译者:guobaoyo 示例:从Pytorch到Caffe2的端对端AlexNet模型 这里是一个简单的脚本程序,它将一个在 torchvision 中已经定义的预训练 AlexNet 模型导出到 O ...

  4. PyTorch 1.0 中文文档:torch.hub

    译者:kunwuz torch.hub.load(github, model, force_reload=False, *args, **kwargs) 从github上加载一个带有预训练权重的模型. ...

  5. PyTorch 1.0 中文文档:torch.utils.bottleneck

    译者: belonHan torch.utils.bottleneck是 调试瓶颈bottleneck时首先用到的工具.它总结了python分析工具与PyTorch自动梯度分析工具在脚本运行中情况. ...

  6. PyTorch 1.0 中文文档:Torch 脚本

    译者:keyianpai 创建 Torch 脚本代码 将追踪和脚本化结合起来 Torch 脚本语言参考 类型 表达式 语句 变量解析 python值的使用 调试 内置函数 Torch脚本是一种从PyT ...

  7. PyTorch 1.0 中文文档:torch.autograd

    译者:gfjiangly torch.autograd 提供类和函数,实现任意标量值函数的自动微分. 它要求对已有代码的最小改变-你仅需要用requires_grad=True关键字为需要计算梯度的声 ...

  8. PyTorch 1.0 中文文档:torch.nn.init

    译者:GeneZC torch.nn.init.calculate_gain(nonlinearity, param=None) 返回给定非线性函数的推荐的增益值.对应关系如下表: 非线性函数 增益 ...

  9. PyTorch 1.0 中文文档:torch.utils.model_zoo

    译者:BXuan694 torch.utils.model_zoo.load_url(url, model_dir=None, map_location=None, progress=True) 由给 ...

最新文章

  1. 投票 | RONG奖学金最佳人气奖评选活动开始啦!
  2. Subversion存储库中“分支”,“标记”和“主干”的含义是什么?
  3. Apache 配置虚拟目录、主机的疑惑及解决
  4. 按英语体育计算机创建透视表,数据透视表和数据透视图概述
  5. MySql(四):备份与恢复
  6. 算法导论 高频算法题 数据结构与算法之美
  7. PSD网页切图制作HTML全过程教程
  8. php获取笔顺矢量,php如何获取汉字笔画数功能的实例分析
  9. A9财务管理软件与金蝶、用友财务管理软件功能比较表(一)
  10. MyQQ project
  11. 检验入参合法性有哪些_参数检验和非参数检验是什么意思
  12. GIS软件——ArcGIS去除影像黑边
  13. 汇编程序的有符号数与无符号数的加减乘除(8086)
  14. 解决Spring文件下载时文件损毁问题
  15. NDK (C++) 开发中如何使用 ASan 检测内存越界、溢出等内存错误
  16. 阿里云服务器修改主机名
  17. 使用TensorFlow搭建智能开发系统,自动生成App UI代码
  18. Windows SendMessage函数讲解及实例
  19. tomcat重启机制
  20. 关于Node里面的pause和pauseSchedulerAndActions

热门文章

  1. (49)VHDL实现8位奇偶校验电路(while loop语句)
  2. python编程设计登录和注册程序_小白成长记-----python实现注册的小程序
  3. 使用VS2015的Visual Studio Installer打包
  4. 【STM32】HAL库 STM32CubeMX教程十五---FMC-SDRAM(一)
  5. 嵌入式Linux系统编程学习之二十三 System V 共享内存机制
  6. linux 复用寄存器,I/O多路复用一些概念
  7. matlab在电磁学中的应用,MATLAB在电磁学中的应用
  8. mysql data to long_mysql 当插入中文字段时发生“data too long for column”错误
  9. html自动播放auto,为移动而生的 HTML 属性autocapitalize和autocorrect
  10. 在虚拟机linux上安装gdb,linux下gdb的安装和使用