zoukankan      html  css  js  c++  java
  • Policy-Based Reinforcement Learning

    Policy-based Approach

    policy-based 强化学习通常是要学习一个actor, actor可以用(pi_ heta (S)) 来确定。如果我们用actor来玩游戏,那么每一局可以看成是一个操作序列( au={s_1, a_1, r_1, s_2, a_2, r_2, dots, s_T, a_T, r_T})

    其中(s_i) 表示状态,(a_i)表示action,(r_i)表示在(s_i)的状态下采取(a_i)动作可以获得的奖励。与普通的深度学习不一样,强化学习需要至少完成一局游戏后才会进行更新,也就是说强化学习看重的是整个局的最后的奖励。如果每走一步就更新,那么整个模型就没有全局观。

    玩一局游戏,最终的得分是

    [R_ heta = sum_{t=1}^Tr_t ]

    我们用(ar{R_ heta})来表示期望的奖励,那么我们的目的就是使得这个期望奖励最大化。其中

    [ar{R_ heta}=sum_ au R( au)P( au| heta)approx dfrac{1}{N}sum_{n=1}^NR( au^n) ]

    当采样的数足够大的时候,右边就会与左边无限逼近。类似于抛质地均匀的硬币,当抛的次数足够多的时候,正反面的比例接近(1:1)

    现在目标有了,我们要做的就是找出最大化(ar{R_ heta})( heta)

    [ heta^* = argmax_ hetasum_ au R( au)P( au| heta) ]

    梯度上升来一发?

    [igtriangledownar{R_ heta}=sum_{ au}R( au)igtriangledown P( au| heta) ]

    因为奖励不是由( heta)决定的,所以要做的是对(P( au| heta))进行梯度计算。

    这里要引入一个公式

    [dfrac{log (f(x))}{dx} = dfrac{df(x)}{f(x)dx} ]

    那么

    [igtriangledownar{R_ heta}=sum_{ au}R( au)igtriangledown P( au| heta)=sum_ au R( au)P( au| heta)dfrac{igtriangledown P( au| heta)}{P( au| heta)}=sum_ au R( au)P( au| heta)igtriangledownlog P( au| heta) ]

    [igtriangledownar{R_ heta}approxdfrac{1}{N}sum_{n=1}^NR( au^n)igtriangledownlog P( au^n| heta) ]

    那么(P( au| heta))怎么计算?

    [P( au| heta)=p(s_1)p(a_1|s_1, heta)p(r_1,s_2|s_1,a_1)p(a_2|s_2, heta)p(r_2,s_3|s_2, a_2)dots ]

    [P( au| heta)=p(s_1)prod_{t=1}^Tp(a_t|s_t, heta)p(r_t, s_{t+1}|s_t,a_t) ]

    所以由

    [igtriangledownlog P( au| heta) = sum_{t=1}^Tigtriangledown log p(a_t|s_t, heta) ]

    最后有

    [igtriangledownar{R_ heta}approxdfrac{1}{N}sum_{n=1}^NR( au^n)sum_{t=1}^{T_n}igtriangledown log p(a_t|s_t, heta) ]

    至于为什么最后要取log,因为取了log,本质上(dfrac{dp(a_t|s_t, heta)}{p(a_t|s_t, heta)}),这样就相当于有了一个归一化,整个期望的结果,不会由那些出现很频繁的但是奖励比较低的骚操作所主导(出现越频繁,分母越大)。

    参考

    1. 台大李宏毅老师的DL presentation
  • 相关阅读:
    列表框JList 及动作监听
    WindowListener(附带适配器改良方案)
    常用的几种文本组件(JTextComponent)
    JToggleButton组件
    java实现鼠标拖拽动作监听
    Flex读文本文件
    WPF socket通讯 UDP接收消息
    在线签名,并保存到本地
    flex直接访问服务器
    windows 8各种流之间的转换
  • 原文地址:https://www.cnblogs.com/crackpotisback/p/8743092.html
Copyright © 2011-2022 走看看