一、基本术语
state:s,状态。
action:a,行为,比如游戏里的向上、向右,是随机的。为什么不是确定的?如果是在博弈背景下,确定性动作会让对手发现规律,而随机的动作才可能赢。
agent:动作是由谁做的,谁就是agent,比如自动驾驶里的汽车,游戏里的马里奥
policy: π \pi π,根据观测到的状态来决策,然后控制agent的运动。它是个概率密度函数,数学上的定义:在s状态下采取a动作的概率,
例如:
如果让policy函数来自动决策,那么它就是进行一个随机抽样,来决定下一步怎么走。强化学习,学的就是这个policy函数,只要学会了,就可以自动操作了。
reward:R,奖励,需要自己来定义。例如,游戏里根据不同目标的重要程度来确定不同状态得到的奖励的大小:
奖励定义的好坏会影响强化学习的结果。
state transition:状态转移,可以是确定的也可以是随机的,一般认为是随机的,其随机性来源于环境。可以用状态密度函数来表示:
环境可能会变化,在当前环境和行动下,衡量系统状态向某一个状态转移的概率是多少。注意环境的变化通常是未知的。
强化学习中的随机性
来源一:action,action是根据 π \pi π 函数随机抽样得到的,所以随机。
来源二:state transition,state transition是根据p函数随机抽样的,所以随机。
强化学习的生效过程
观测一个状态,学习 π \pi π 函数来控制agent,转移到另一个状态并获得奖励,循环……由此得到游戏的trajectory(轨迹):(状态,动作,奖励)
return
回报,又称cumulated future reward,定义为:
其中 R t R_t Rt表示第t时刻的奖励。agent的目标就是让return最大化。
未来的奖励不如现在等值的奖励那么好(比如一年后给100块不如现在就给),所以 R t + 1 R_{t+1} Rt+1的权重应该小于 R t R_t Rt。因此,强化学习通常用discounted return(折扣回报,又称cumulative discounted future reward),取 γ \gamma γ 为discount rate(折扣率), γ ∈ ( 0 , 1 ] \gamma\in(0,1] γ∈(0,1],则有,
折扣率是一个超参数,需要自己来调(tuning hyper-parameter)。折扣率的设置对强化学习的效果有一定的影响。
return也有随机性。如果游戏已经结束了,那么r和u都用小写表示,如果还没结束,那么他们都是随机变量,用大写。随机性有两个来源,即action和state transition是随机的。
对于任意时刻 i ≥ t i\ge t i≥t ,奖励 R i R_i Ri 取决于 S i S_i Si 和 A i A_i Ai ,因此,$U_t $与未来所有时刻的状态和动作都有关,它的随机性由所有未来动作和状态的随机性构成。
action-value function
动作价值函数,action-value function for policy π \pi π。
在t时刻,我们并不知道 U t U_t Ut 等于多少,例如在t时刻硬币还没有抛,不可能知道它的结果。那如何评估当前的形势?用期望。
在求期望的时候, s t s_t st和 a t a_t at以后的状态和动作都被积分积掉了,只剩下 s t s_t st和 a t a_t at,它们被作为观测到的数值来对待,而不是作为随机变量。Q的值也和 π \pi π 有关:如果 π \pi π 不一样,积分的结果也不一样。
动作价值函数的意义:如果指定用 π \pi π 来做出决定,那么s状态下做动作a是好还是坏。它给所有的a打分,这样就能知道哪个动作好,哪个不好。
optimal action-value function
但是,在不同的 π \pi π 的作用下,打分结果不同。为了统一,先求出最好的 π \pi π ,最好的 π \pi π 是让 Q π Q_\pi Qπ 取最大值的 π \pi π:
这就是最优动作价值函数,它与 π \pi π 无关。也就是说,无论用什么样的 π \pi π ,也不会得到比它更好的结果了。
state-value function
状态价值函数,是对action-value function的期望:
它只与 π \pi π 和 s 有关,与a无关,可以用来评估当前的局面好不好。如果 π \pi π 是固定的, 那么s越大,局面越好。
V也可以用来评估 π \pi π 的好坏: π \pi π 越好,V的均值越大
二、如何使用强化学习
学到 π \pi π 函数:policy-based learning,根据输入 s t s_t st,经过 π \pi π 对 a t a_t at进行随机抽样,就可以控制了
或者学到Q函数:valued-based learnning,如果处在状态 s t s_t st,可以用Q来评价每个a是好还是坏,找到最好的a
三、标准库-OpenAI Gym
A toolkit for developing and comparing reinforcement learning algorithms.
设计好了一个算法,需要进行验证或者对比
在python里调用:(env为环境)