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