一、把机器学习按照学习方式分类:
监督式学习、无监督式学习、半监督式学习、强化学习。
二、预备知识
随机变量:用大写字母表示,取值取决于某个随机事件的结果。
随机事件的结果:用小写字母表示,表示对随机变量的的观测值。
概率密度函数:是一个取值在[0,1]区间的函数,反映了随机变量等于某个值的概率。
三、强化学习基本概念
以下内容总结自B站:深度强化学习(Deep Reinforcement Learning)_哔哩哔哩_bilibili
以超级玛丽游戏为例,介绍强化学习基本概念(有些不太严谨,但是能快速入门):
1、Agent(智能体):
会做动作的主体,例如:超级玛丽游戏里的马里奥。
2、Environment(环境):
超级玛丽游戏程序。
3、State(状态
):
超级玛丽游戏的一帧画面。
4、Action(动作
):
马里奥做的动作,比如:向上跳,前进,后退。
5、Policy(策略
)
控制Agent做动作。
策略:
,是一个概率密度函数;
策略 定义为:
,表示给定状态s,做出动作a的概率。
例如:,表示在状态s下,马里奥向左走、向右走、向上跳的概率分别是0.2,0.1,0.7.
强化学习可以就学策略,得到了策略
,就能控制Agent的动作(控制马里奥打赢游戏)了。
注意:策略是一个概率密度函数。在给定状态s时,Agent的动作应该是从所有可能的动作中依据
这个概率密度函数随机抽样出来的(即具有随机性),而不能把策略
设为某个固定值,设为固定值在双方博弈时肯定输(想象石头剪刀布的例子,固定出布肯定输)。
Reward(奖励
):
Agent做出一个动作,环境就会给一个奖励(需要自己定义,如何定义奖励见仁见智)。
例如:马里奥吃到一个金币,奖励R=+1;赢得游戏,奖励R=+10000;被敌人打死,奖励R=-10000;什么也没发生,奖励R=0.
强化学习的目标是奖励的总和尽量大。
State transition(状态转移
):
每当Agent做一个动作,状态就会变化(马里奥向上跳一下,屏幕就发生了变化)。
状态转移的定义:,是一个条件概率密度函数,表示在状态s做出动作a的条件下,状态变化为s'的概率。状态转移是随机的,因为是环境(游戏程序)决定了下一个状态是什么,而Agent并不知道状态转移函数具体是什么。
例如:马里奥向上跳了一下,此时敌人向左移动的概率是0.8,向右移动的概率是0.2. 但我们不知道这个0.8和0.2的概率分布,只有环境自己知道,因此状态转移具有随机性。
强化学习中随机性的两个来源:
(1)动作具有随机性,每次Agent做的动作是依据策略随机抽样决定的;
(2)状态具有随机性,下一个状态总是环境根据状态转移函数随机抽样得到的。
用AI玩游戏的简单过程:
观察到一帧画面(state s1)→ 做动作a1→观察到一帧画面(state s2)和奖励r1 → 做动作 a2 →……
(state, action, reward) 轨迹:s1, a1, r1, s2, a2, r2, ...
回报(Return
)
Return(回报 ):也叫cumulative future reward(未来奖励的累计),表示t时刻开始未来执行一组动作后能够获得的奖励之和。
是折扣因子,取[0,1]之间。未来的奖励不确定,所以需要在未来奖励上打个折扣。
在任意时刻,
值依赖于
和
,
和
分别是从策略函数
和状态转移函数
抽样得到的,因此
是随机的,从而
也是随机的。
给定状态,随机变量回报
依赖于以下随机变量(t时刻及之后的所有动作,以及
时刻及之后的所有状态):
Agent的目标就是使折扣回报的值越大越好。
Action-value function(动作价值函数
):
基于策略的动作价值函数记为:
,表示
时刻状态
下做动作
之后能获得的回报的期望。
这里本来是和
都相关,A和S都是随机变量,其值需要分别从策略
和状态转移函数
随机抽样获得,但通过求期望可以把t时刻之后的动作和状态都去掉,因此
只依赖于策略
,状态
和动作
。 策略
不同,则期望值不同 。
动作价值函数的现实意义:如果用策略
,我们能知道在状态
下做动作
是否明智,即
会对动作空间中的每一个动作
打分。如果有了
,Agent就能根据
对动作的评价做决策,选择得分最高的动作。
用不同的策略函数,会得到不同的
。
下面尝试把中的
去掉:对
求关于
的最大值:
Optimal action-value function(最优动作价值函数![Q^* (s, a)](https://i-blog.csdnimg.cn/blog_migrate/74998cf76a6327b59d050a91e056f66d.gif)
):
,表示在状态
下,做
能得到最好的回报。
最优动作价值函数的现实意义: 在状态下,会对动作空间中的每一个动作
打分,选取最高分对应的动作
即可。
State-value function(状态价值函数
):
基于策略对当前状态
打分,用于评价当前状态是好是坏。
也能评价策略
的好坏。
状态价值函数只跟策略和t时刻的状态
有关,将动作a作为随机变量A,求关于A的期望就能把它消掉。具体做法:先用动作空间中做每个动作的概率乘以它对应的价值,然后把乘积的结果相加。
四、AI如何控制Agent的动作?
两种途径:
- 得到一个好的策略函数
,每观测到一个状态
,就根据概率密度函数
随机抽样一个动作
:
.
- 得到一个最优动作价值函数
, 每观测到一个状态
,就选择使状态价值函数值最大的动作
:
.
学习的几种思路:
- 得到一个好的策略函数
,对应的强化学习方法为:Policy-based learning(策略学习),使用神经网络Policy network来近似
,使用策略梯度(policy gradient),通过梯度上升来学习神经网络的参数。
- 得到一个最优动作价值函数
, 对应的强化学习方法为:Value-based learning(价值学习),使用神经网络Deep Q network(DQN)来近似学习
,使用时间差分(TD:temporal different)算法来学习神经网络的参数。
- Actor-critic method:Policy network + Value network.