找回密码
 立即注册

QQ登录

只需一步,快速开始

本帖最后由 lou 于 2020-4-22 11:38 编辑

Geek专栏:强化学习随机策略之高斯似然数原理与代码实现



今天Geek专栏为大家带来
乐聚机器人王松博士的
“强化学习随机策略之高斯似然数原理与代码实现”

一、原理介绍

使用随机策略有两个关键点

1.    从策略当中进行采样,获得动作a(Action)
2.   计算特定动作的似然数 logπθ(a∣s)

什么是多元高斯分布?

在多元高斯分布中,当协方差矩阵 ∑ 只有在对角元素非零,而其余元素为 0时,成为对角高斯分布。
多元高斯分布(MultivariateGaussian Distribution)是一元高斯分布的在向量形式上的推广 11.png ,其中向量的均值为 12.png ,协方差矩阵为 13.png ,概率密度函数表示为

14.png

例如二元高斯多元分布可以如图所示

15.png

对于一对随机变量X和Y,它们的协方差矩阵写作

16.png

对于多个变量的问题,用协方差矩阵  来表示各个变量之间的相关性,有

17.png

对角多元高斯分布
特殊地,当 N 个随机变量 18.png 为各自独立的高斯随机变量时,协方差矩阵为对角阵,即

19.png

对角高斯策略 DiagonalGaussian Policies


1.     由于标准差的公式 20.png 可知σ始终大于等于 0 ,对标准差取log对数,可以将标准差映射到 21.png ,这样更有利于神经网络的训练。
2.     采样:假设已知动作(Action) 的均值 22.png 和标准差 23.png ,引入服从 24.png 分布的噪声 32.png ,下一步的动作采样表示为 25.png 中⊙表示两个向量之间的内积。
3.     似然数:当均值为 26.png ,标准差为 27.png 28.png 维的动作 29.png 的似然数表示为

30.png

二、代码实现

要求
1.     输入: 样本x,对角高斯分布的均值和标准差
2.     输出:样本x的似然数

  1. import tensorflow as tf
  2. import numpy as np
  3. EPS = 1e-8
复制代码

根据上一节,似然数公式,理解公式后就很容易写出代码

31.png

参考链接

  • https://spinningup.openai.com/en/latest/spinningup/rl_intro.html#stochastic-policies
  • https://www.tensorflow.org/api_docs/python/tf/math/reduce_sum
分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册