算法理论:强化学习1基本概念

161 阅读4分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

一、基本术语

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,定义为:

在这里插入图片描述

其中RtR_t表示第t时刻的奖励。agent的目标就是让return最大化。

未来的奖励不如现在等值的奖励那么好(比如一年后给100块不如现在就给),所以Rt+1R_{t+1}的权重应该小于RtR_t。因此,强化学习通常用discounted return(折扣回报,又称cumulative discounted future reward),取 γ\gamma 为discount rate(折扣率),γ(0,1]\gamma\in(0,1],则有,

在这里插入图片描述

折扣率是一个超参数,需要自己来调(tuning hyper-parameter)。折扣率的设置对强化学习的效果有一定的影响。

return也有随机性。如果游戏已经结束了,那么r和u都用小写表示,如果还没结束,那么他们都是随机变量,用大写。随机性有两个来源,即action和state transition是随机的。

对于任意时刻 iti\ge t ,奖励 RiR_i 取决于 SiS_iAiA_i ,因此,UtU_t 与未来所有时刻的状态和动作都有关,它的随机性由所有未来动作和状态的随机性构成。

action-value function

动作价值函数,action-value function for policy π\pi

在t时刻,我们并不知道 UtU_t 等于多少,例如在t时刻硬币还没有抛,不可能知道它的结果。那如何评估当前的形势?用期望。

在这里插入图片描述

在求期望的时候,sts_tata_t以后的状态和动作都被积分积掉了,只剩下sts_tata_t,它们被作为观测到的数值来对待,而不是作为随机变量。Q的值也和 π\pi 有关:如果 π\pi 不一样,积分的结果也不一样。

动作价值函数的意义:如果指定用 π\pi 来做出决定,那么s状态下做动作a是好还是坏。它给所有的a打分,这样就能知道哪个动作好,哪个不好。

optimal action-value function

但是,在不同的 π\pi 的作用下,打分结果不同。为了统一,先求出最好的 π\pi ,最好的 π\pi 是让 QπQ_\pi 取最大值的 π\pi

在这里插入图片描述

这就是最优动作价值函数,它与 π\pi 无关。也就是说,无论用什么样的 π\pi ,也不会得到比它更好的结果了。

state-value function

状态价值函数,是对action-value function的期望:

在这里插入图片描述

它只与 π\pi 和 s 有关,与a无关,可以用来评估当前的局面好不好。如果 π\pi 是固定的, 那么s越大,局面越好。

在这里插入图片描述

V也可以用来评估 π\pi 的好坏: π\pi 越好,V的均值越大

在这里插入图片描述

二、如何使用强化学习

学到 π\pi 函数:policy-based learning,根据输入sts_t,经过 π\piata_t进行随机抽样,就可以控制了

在这里插入图片描述

或者学到Q函数:valued-based learnning,如果处在状态sts_t,可以用Q来评价每个a是好还是坏,找到最好的a

在这里插入图片描述

三、标准库-OpenAI Gym

A toolkit for developing and comparing reinforcement learning algorithms.

gym.openai.com/

设计好了一个算法,需要进行验证或者对比

在python里调用:(env为环境)

在这里插入图片描述

四、参考资料

深度强化学习(全)