关于强化学习(2)

根据 Simple statistical gradient-following algorithms for connectionist reinforcement learning

5. 段落式(Episodic)的REINFORCE算法

该部分主要是将我们已有的算法进行扩展, 扩展到拥有temporal credit-assignment component的问题上.

特别地, 我们假设一个网络《关于强化学习(2)》, 基于一段一段这样来训练, 每一段都包含《关于强化学习(2)》个时间步, 每一个时间步, 许多单元会重新计算它们的输出, 整个环境可能会改变其非强化的输入, 在每一段的结束的时候, 一个强化值《关于强化学习(2)》将会被传递到网络《关于强化学习(2)》.

该算法的引出是基于使用按时间展开(unfolding-in-time)进行映射, 即当任意的一个网络《关于强化学习(2)》在一个时间周期中进行操作, 另一个网络《关于强化学习(2)》没有周期但是展现对应的行为. 展开的网络《关于强化学习(2)》通过在每一个时间步对《关于强化学习(2)》进行复制来获得.

形式化来说, 这相当于和每一个在《关于强化学习(2)》中的时间依赖的变量《关于强化学习(2)》联系起来, 对应的《关于强化学习(2)》以时间为索引的集合《关于强化学习(2)》, 其中《关于强化学习(2)》中的变量并不依赖于时间, 在《关于强化学习(2)》中的《关于强化学习(2)》就对应《关于强化学习(2)》中的《关于强化学习(2)》.

给出参数《关于强化学习(2)》的增量形式:
《关于强化学习(2)》

上述形式和我们之前给的形式有点类似, 唯一出现改动的地方就是《关于强化学习(2)》变为《关于强化学习(2)》
这个对应于非周期的网络《关于强化学习(2)》, 即《关于强化学习(2)》

我们举个例子吧, 一个内部全连接的递归神经网络(Recurrent Neural Network), 使用伯努利-逻辑斯蒂单元, 有
《关于强化学习(2)》
需要注意的是baseline是独立于其他变量和输出的, 我们称具有以上格式的算法为段落式的REINFORCE算法
给出完整的权值修改公式:
《关于强化学习(2)》

定理2:

对于任意的段落式REINFORCE算法, 《关于强化学习(2)》《关于强化学习(2)》的内积是非负的, 更进一步, 如果《关于强化学习(2)》, 那么当仅当《关于强化学习(2)》, 内积才为0, 如果《关于强化学习(2)》是和《关于强化学习(2)》独立的话, 有《关于强化学习(2)》,

在段落式的REINFORCE算法中, 性能度量应该改为《关于强化学习(2)》

6. 多参数分布的REINFORCE

REINFORCE框架的一个有趣的应用就是对于单元的学习算法的发展决定了它们的随机标量输出, 输出来自于多参数分布而不是使用半线性随机单元的单参数分布. 举个例子, 试想一个这样的单元, 首先得到确定性的计算结果, 基于权值和输入, 来获得所有参数来控制的随机数值生成过程的值, 接着将符合一个合适的分布的输出随机输出. 特别地, 正态分布具有两个参数, 均值《关于强化学习(2)》和标准差《关于强化学习(2)》, 一个单元根据这样的一个分布来进行输出, 那么将要首先计算出《关于强化学习(2)》《关于强化学习(2)》的值, 然后根据该正态分布随机进行输出, 保证均值和标准差.

一种高斯单元(Gaussian Unit)的可能的有用特征是它输出的均值和变化是单独地可控的, 只要分离的权值(或者可能是输入)被用来确定这两个参数, 有趣的点是控制标准差《关于强化学习(2)》就相当于控制单元的搜索行为. 通俗来讲, 使用多参数分布的随机单元就有可能控制探索行为的等级, 并且和在哪里进行探索无关, 这就与使用单参数分布的单元不一样.

这里我们注意到对于任意单元的REINFORCE算法是易于推导出来, 我们用高斯单元来作为一个例子. 为了保证确定这种单元输出的均值和标准差的特定方法, 而不是它的输入和它的权重, 我们将会简单地将单元的均值和标准差它们看作是单元的自适应的参数. 在实际的自适应参数和输入上这些参数的任何更多的通用的函数依赖需要链式法则, Gullapalli提出来一个计算这些参数的方法是, 使用通过输入行的共同集合的分离的权值的和(并且使用一些不同的学习规则), 为了简化这种方法, 我们关注于单一的单元并且自始至终忽略单元索引的下标.

给出这样的密度函数《关于强化学习(2)》:
《关于强化学习(2)》

进而
《关于强化学习(2)》
《关于强化学习(2)》

我们可以得到一个更新的表达式
《关于强化学习(2)》
《关于强化学习(2)》

我们令《关于强化学习(2)》可以得到简化的版本

推广到指数分布簇上
《关于强化学习(2)》
对于均值, 仍然有
《关于强化学习(2)》

7. 和反向传播的兼容性

当我们使用强化算法的时候, 会忽略掉所有单元之间连接的信息, 作为有监督学习的算法, 反向传播就完全利用了这样的信息, 注意到我们的强化学习是针对目标函数和环境的, 所以不像有监督的学习那样, 但是我们可以将反向传播和我们的强化学习结合起来.

7.1 使用确定性的隐藏单元的网络

考虑一个前馈的网络, 拥有确定的隐藏单元, 使用随机的输出单元, 使用这样的一个网络对于强化学习系统是有意义的, 因为对于输出单元有随机性的限制使得发生必要的探索.

《关于强化学习(2)》是网络的输入向量, 《关于强化学习(2)》是输出向量, 我们可以定义《关于强化学习(2)》为概率质量函数, 描述了网络的输入和输出.
只不过整个网络的输出是一个向量而不是标量, 对于网络里面的任意一个权值《关于强化学习(2)》, 有《关于强化学习(2)》的无偏估计是《关于强化学习(2)》

《关于强化学习(2)》是输出单元的索引集合, 因为所有的随机性都在输出单元上, 并且输出单元的随机性是独立的. 我们有
《关于强化学习(2)》

《关于强化学习(2)》是由于将模式《关于强化学习(2)》呈现给网络而出现在第《关于强化学习(2)》个单元的输入处的模式

《关于强化学习(2)》
故, 可以得到
《关于强化学习(2)》
以上的求和可能可以使用反向传播来计算出来, 特别地, 如果是伯努利非线性单元, 我们可以直接使用参数《关于强化学习(2)》作为中间变量, 故有:
《关于强化学习(2)》
我们可以直接计算得到
《关于强化学习(2)》

我们只需要将无偏估计进行反向传播即可

7.2 通过随机数字生成器的反向传播

考虑一个随机的半线性单元, 并且假设有这么一个函数《关于强化学习(2)》, 《关于强化学习(2)》对输出《关于强化学习(2)》有一定的确定性的依赖, 这种条件下, 我们假设这个单元是输出单元并且《关于强化学习(2)》, 我们可以利用《关于强化学习(2)》来计算《关于强化学习(2)》

我们还可以推出《关于强化学习(2)》决定了《关于强化学习(2)》

不幸的是, 这种性质并不是通用的. 如果《关于强化学习(2)》《关于强化学习(2)》的非线性函数的话. 然而, 如果输出是一个随机数生成器, 可以被写成一个参数可微的函数, 那么我们就可以利用确定性的计算.

考虑一个正态随机数生成器, 比如高斯单元, 输出《关于强化学习(2)》根据《关于强化学习(2)》《关于强化学习(2)》随机生成
《关于强化学习(2)》
其中《关于强化学习(2)》标准正态离差(standard normal deviate), 注意到
《关于强化学习(2)》
以及
《关于强化学习(2)》
因此, 我们可以将高斯隐藏单元和REINFORCE结合起来

    原文作者:Mezereon
    原文地址: https://www.jianshu.com/p/36431840ad48
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞