本文正在参加「金石计划」
导语
本系列笔记为b站Shusen Wang老师的强化学习课程笔记,整体按照老师讲课的思路来记录。本节课介绍强化学习中的一些基础概念和OpenAI发布的一个标准的实验库Gym。
概率论复习
随机变量
首先复习一下概率论中的随机变量的概念,随机变量是指其值取决于随机事件的输出的变量,例如抛一枚硬币,它的正面朝上和反面朝上的概率都是0.5。
通常使用小写字母表示随机变量的观测值,大写字母表示随机变量。
概率密度函数与概率质量函数
概率密度函数(Probability Density Function (PDF))意味着连续随机变量在某个点附近取值的可能性,例如高斯分布的概率密度函数如下:
概率质量函数(Probability Mass Function (PMF))则是离散随机变量取某个值的可能性,例如:
概率密度函数的积分和概率质量函数的求和为1。
期望
对于连续函数和离散函数的期望定义如下:
随机抽样
随机抽样可以通过从箱子中随机摸一个球,观测其颜色的例子理解。
术语
State与Action
以超级玛丽游戏为例,State就是状态,可以认为当前的状态就是屏幕上的这张画面(这里不严格区分Observation和State),而马里奥能采取的动作(向左、向右、向上)就是action。这里例子里面,马里奥就被称作Agent,在一个强化学习里面,动作是由谁做的,谁就是agent(智能体)。
Policy
Policy是策略,指的是在观察到当前的状态后,该做什么动,做出决策。在数学上,Policy是一个概率密度函数。例如,马里奥在当前状态下向左、向右、向上的概率分别是0.2,0.1和0.7。在执行时,将会按这个概率进行随机抽样,决定接下来的动作。
强化学习实质上就是在学习这个Policy函数。
Reward
奖励是指这个动作执行后对最后结果的影响,比如马里奥吃到一个金币奖励+1,打赢了一场游戏奖励+10000,打输了一场游戏奖励-10000.
State transition
状态转移指的是在旧状态下,agent采取一个action后,状态发生变化的过程。状态转移一般是随机的,这种随机性来源于环境。这种状态转移用函数表示,这个状态转移函数是环境自己知道,而玩家是不知道的。
Agent environment interaction
当前状态是,Agent看到后会做出动作,做完动作后,环境会更新状态变成,同时环境还会给Agent一个奖励
两种随机性
强化学习中的随机性有两个来源:
- 动作具有随机性。动作是根据Policy进行随机抽样的。
- 状态转移具有随机性。给定和动作,环境会随机生成一个新的状态.
利用强化学习来打游戏
强化学习来打游戏实际上就是由Policy来决定每个时刻的动作输出At来进行游戏,直到游戏胜利或失败结束。整体的轨迹Trajectory就是一系列(state, action, reward)的序列。
Return
Return翻译为回报,它的另一个名字是Cumulative future reward(未来的累计奖励)。其定义如下:
但是,和同样重要吗?可以思考这样一个问题,假如现在给你100块钱,和明年这个时候给你100块钱,你会选择哪个?理性的人都会选择现在得到100块钱,因为未来具有很大的不确定性。所以,应该比更加重要。因此,强化学习中普遍采用折扣回报,即对未来的奖励打折扣,进行累加,
这里的折扣率记作,这个值位于0与1之间,这是个超参数,会对最终的结果有影响。
Return也具有随机性,这是由于Reward是依赖于和的,而这两者都是随机变量。
这里需要区分一下,是随机变量、是观测值。
Value Function
Action-value Function
是一个随机变量,对求期望可以得到一个数,记作。这个期望是如何求的呢? 我们将当做未来的动作A和状态S的函数,而动作和状态都具有随机性,其概率密度函数分别是和,期望就是对这两个随机变量求的,把这些随机变量用积分积掉。除了st和at,其余的所有变量都被积掉了。这里被积掉的变量是等动作和等状态。
是关于st和at的函数,因为其他变量都被积掉了,只有和作为观测值被留了下来。函数也与Policy函数有关,因为积分的时候,Policy函数不一样,就会导致不一样。
函数即Action-Value Function,它的直观意义是在Policy函数为的条件下,在状态st时做动作at的好坏。
由于函数还是跟有关,那么有什么方法可以去掉呢,我们可以对不同的求最大化,即
这个也称为最优动作价值函数(Optimal action-value Function)。
State-value Function
状态价值函数是对动作价值函数中将动作视为随机变量得到的数学期望,得到的只与和s有关,那么有什么直观意义呢?
可以告诉我们当前的局势好不好。假如我们根据Policy函数在下围棋,让看一下棋盘,就会告诉我们当前的胜算多大,是快赢了还是快输了,还是不分高下。这里的期望是对求的,A的概率密度函数是,根据的定义,它可能是离散的,比如动作只有上下左右,那么就是求连加。有时候,动作是个连续变量,比如自动驾驶汽车方向盘的角度,那么就是求积分。
小结
总结一下,一共有两种价值函数,分别是:
- 动作价值函数:与Policy函数、动作和状态有关,它是的条件期望,这里的是个随机变量,它等于未来所有奖励的加权求和。求期望的操作会把所有变量都消除,只留下和这两个变量。函数可以告诉我们,在使用Policy ,如果处在状态s时,做出动作是否明智,即其给动作打分。
- 状态价值函数:是用积分把中的动作A消掉,得到的函数只与Policy 和状态s有关,如果使用Policy函数,可以评价当前状态是好是坏。还能用来评价Policy函数的好坏,如果下面这个期望越大,证明越好。
使用强化学习打游戏
有两种方式利用AI控制Agent打游戏:
- 学习Policy函数
- 学习最优动作价值函数
OpenAI Gym是最经典的强化学习游戏平台,有以下几类任务:
- 经典控制问题:如移动小车保持杆子竖直;
- Atari Games:如消除砖块;
- 连续控制问题:如控制蚂蚁走路;
CartPole问题举例
首先,需要按照Gym的官方文档安装Gym这个库,之后,通过下面的代码可以导入和新建一个CartPole游戏。之后,使用下面的代码可以进行这个游戏。
总结
本节课介绍了强化学习中的基本概念,和使用Gym库来进行强化学习实验。