
如果想观看相关视频可以在西瓜视频(账号zidea)或者哔哩哔哩(账号zidea2015)找到我发布视频解说,注意头像和简书使用头像一致。
Deepmind 自从在围棋战胜了围棋世界冠军之后就开始着手让 AI 来玩更复杂游戏 starcraft。我想大家可能和一样对于 AI 能够玩游戏的项目是如何实现的非常感兴趣。兴趣归兴趣如果要实现一个这样项目还是具有挑战性,不过不管有多难,我们还是从基础做起一步一步。

概率基础知识
首先在开始之前简单地回归一下可能在本次分享中用到一些概率知识。
随机变量以及分布函数
首先函数自变量可以从实数扩展到例如自变量为两点,输出两点距离。用大写字母表示随机变量,而用小写来表示观测值。事件用于语言来描述样本集合,这些样本具有一定属性才聚集在一起
概率密度函数(PDF)
PDF 是 Probability Density Function 的缩写,表示随机变量某一个确定值出现的可能性,也就是我们熟悉的 PDF。


期望
对于连续分布的期望
对于离散分布的期望
随机抽样
随机采样就是调查对象总体中每个部分都有同等被抽中的可能,是一种完全依照机会均等的原则进行的抽样调查,被称为是一种等概率。
术语


状态(State)
所谓状态就是观测到游戏画面的每一帧,也就是从环境中可以观察到内容,或者理解环境让我们观察到的东西。

Action
动作就是智能体(接下来会介绍什么是智能体),根据当前状态给出的反应。随后我们会看到
Agent
智能体,在不同强化学习任务中 Agent 就是动作(Action)的发起者,坦克大战游戏中的 Agent 就是坦克,在无人驾驶中 Agent 就变为 🚗。
Policy
首先 Policy 是一个函数,如果是函数,那么就需要有输入和输出,在 Policy 函数中,输入 State 而输出是 Agent 执行 Action 的概率分布,从而可见即使相同的输入 State , Policy 也可能输出不同的 Action,而不是某一个确定的 Action。
在数学上 Policy 函数表示为
从上面公式我们不难发现强化学习主要就是学习这个 Policy 函数,只要有了这个 Policy 函数,输入一个状态后,Policy 就会做一个随机抽样来采取动作,这里做随机抽样是为来避免对手通猜透机器,找到规律,所以 Policy 策略是随机。
reward
用 来表示奖励,就是根据动作和状态给出一个分数,这个分数可以理解为奖励,如何设计奖励这个一点非常重要,设计好的奖励会事倍功半。
- 击毁敌方坦克会的一定奖励
- 如果鹰巢被敌方攻破,就会损失很多奖励
状态转移(state transition)
根据当前动作和上一个状态我们会得到新的状态,
有关状态转移我们隐马尔可夫链分享以图解方式已经说很清楚,那么状态转移是由环境决定的,游戏中的环境就是系统。

Agent 和 Environment 的交互
接下来我们来看一看 Agent 是如何环境交互的

强化学习的随机性
-
Policy 根据 state 给出了 Action 随机
017.png
- Enviroment 根据 Action 和 state 给出下一个状态是随机的


- Policy 根据
给出
- Enviroment 根据
给出
和
- Policy 继续根据
给出
迭代重复上面的步骤形成一条路径
回报(Return)
我们来对比奖励来说回报,回报是以当前时刻起向后一系列动作得到状态的奖励的累加,一直将奖励累积加到游戏结束最后一个奖励。
- 有关
和
之间差异,他们奖励的价值会随着时间而其价值会降低,这个问题我们来举一个例子来简单说明一下,由于未来的奖励没有当下奖励更有价值,所以可以加了一个 discounted 来进行调整,也就是折扣回报这里
表示
那么添加了 的回报也就是折扣回报,如下
还需要说明一下折扣率 是一个超参数,需要认为来设置,
的设置会对强化学习有所影响。当某一个时刻结束了,
也就计算得到小写
因为
依赖的奖励是一个随机变量,所以
也是随机变量。
我们知道 Policy 生成 而环境根据当前状态和动作给出下一个状态
也就是
,那么当前奖励
是与当前
和动作
有关。
那么对于 就与未来所有时刻
和
都有关系了
上面介绍什么是回报,对回报有了一定了解。我们就可以开始介绍什么是价值函数,价值函数是用来衡量某一状态或动作状态的好坏的,即对智能体来说是否值得选择某一状态或在某一状态下执行某一动作。
动作价值函数(Value)
是一个随机变量,依赖未来所有的动作和状态,
在 t 时刻并不知道,
可以对 求期望,把里面的随机性都用积分积掉,例如虽然我们不知道下一个时刻会发生什么,例如投掷硬币,我们不知道下一个时刻会是正面还是背面,不过我们知道出现正面或者背面的概率都是 0.5 假设上面朝上我们将随机变量 X 记做 1 反面记做 0 那么期望就是
,同样的道理对
随机变量求期望就可以得到一个数,即
除了 和
其他随机变量都被积分积掉,求出的
就是动作价值函数,
状态价值函数
意义为基于 时刻的状态
能获得的未来回报(Return)的期望
- 将动作看作随机变量 A 通过积分将其积掉
-
只与
和
函数有关
-
可以告诉我们当前的状态好不好
网友评论