涵盖内容
学会如何把生活中具体问题来强化学习来描述
介绍强化学习的核心内容
经典条件反射
操作条件反射
Qlearning
DTlearning
更新中
大脑中的强化学习算法
不能不提的 AlphaGo 的实践
实例在游戏中强化学习的应用
实例在无人驾驶中应用强化学习
导读
在开始之前我们先介绍一些出现在分享中术语,很好地理解这些术语帮助您更好理解分享内容
Agent 是学习主体也就是机器,通过观察环境,观察到就是环境具体的 state ,也就是当前的环境一个快照。AlphaGo 就是 Agent。
Environment 环境,这个是 Agent 无法控制,也可以理解为 Agent 的对手,Agent 不断通过跟环境进行抗争来进行学习从而战胜环境。
State 就是环境的一个快照,也就是 Agent 所观察到的。
Action 是 Agent 根据当前 state 为了获得更高 reward 采取行动
Reward 是在某个 state 给予 Agent 反馈,也就是奖罚。
Policy 是函数输入 state 输出一个 Action,通常用
π 来表示,这是一个重点内容。
什么是强化学习
一切的学习都是为了解决一个问题,因为问题存在我们才会通过学习找到解决方法。强化学习和我们之前谈到深度学习 CNN 也好,RNN 也好是所有不同的。这里没有训练的数据集,没有通过监督告诉机器什么是好的,什么是不好的。一切都需机器熟悉环境来学习什么是好的,什么是不好的。
有人夸张地说人工智能就是 AI = RL + DL 强化学习加上深度学习。从现在来看这并不夸张。
什么是强化学习?我们需要理解好一个基础的概念,帮助我们更好理解深度学习,以及这里概念(术语)之间的关系。然后学习根据 state 采取一定行动 action,然后环境根据 action 和当下 state 给学习者 Agent 一个 reword,也就是环境在当前状态下给 Agent 的 action 的一个反馈,这个反馈可能是奖励也可能惩罚。强化学习就要不断更新策略来得到更好 reward,也就是得到更多奖励。
经典条件反射
经典条件反射又称巴甫洛夫条件反射,简单就是一摇铃就给 dog 食物,这样当摇铃即使没有喂 dog 食物,狗也会流口水(这里流口水表示 dog 开心也就是得到 reward)。也就是通过 dog 通过反射方式在摇铃和事物建立关系。
State 表示状态例如,也就是一个一个片段,dog 和摇铃就是一个状态,需要花一些心事理解
Value 就是表示 us 和 cs 间关系的强弱,这个关系强弱是 dog 建立的,所以是主观。
-
reward 表示 dog 对状态反应,也就是 dog 在这种 state 下是否开心。
state(s) value(v) reward(r) 铃,食物 馋 v(铃) >0 好事 CS US 期望 结果 |
CS(Conditioned stimuli state) 摇铃 state 就是 dog 并不了解的,也就是不是天生会有好感的状态
US(Unconditioned stimuli State) 食物就是 US 是 dog 天生就对其有好感的条件刺激
在这里 state 和 reward 是客观的条件,value 是主观的,可以改变的,这里铃并没有 Reward,因为 dog 不会天生对摇铃有任何感觉。需要定义 value 是通过学习可以改变 Value。我们不断通过摇铃给 dog 食物来更新 value 值。value 表示 US 和 CS 之前关系的强弱。value 是 dog 将食物和铃建立关系,所以是主观的东西。
RW(Rescorla-Wagner) Model
cs us 为是或否
A 为学习速率,有关 A 为学习速率应该小于 1 大于 0
解释一下这个公式吧,这里V(cs)表示对于摇铃的值,默认为 0 因为 dog 对摇铃没有什么感觉,而 V(us) 给事物的值却是 1 表示 dog 喜欢事物,一看到食就会流口水。A 表示学习速率这里取值应该为 0 到 1 之间,也大说明 dog 学习越快,如果为 1 表示 dog 听见一次摇铃给食物后就学会了摇铃会给食物。这显然不对的。这个公式并不难而且很好理解,简单解释一下,V(cs)默认为 0 当摇铃和给食物同时出现 1 * 学习率(例如 0.2) 就会更新 V(cs) 为 0.2 下一次就会更新 0.36 。
操作性条件反射
在经典条件反射中 dog 并不需要做任何动作 Action 就可以得到奖励,我们现在进一步思考一下,例如我们都看过马戏团表演,给 dog 数字卡片,如果 dog 能够根据主人或观众说出数字找到对的卡片便可以得到奖赏。这一次 dog 在给卡片的状态下,做出选择正确 action 会根据 action state 得到 reward。
state(s) | action(a) | reward(r) |
---|---|---|
1 -10 数字卡片 | 选卡片 | 食物 |
CS US | 期望 | 结果 |
介绍一些基本概念,我们分析一下问题找出那些客观条件那些是主观条件
客观(环境) state action reward 定义 reward episode temporal discount
episode 表示一个回合
temporal discount 表示时间,表示我们训练对时间敏感度,例如下快棋,如果落子时间过长会得到扣分
主观 state value, action value, policy
policy 表示如何主观地选择 action
下面我们研究一个问题,通过问题来学习。上班问题,我们上班总是走一条常规的路开车上班,不过现在有了新的选择通过上外环来避开早高峰来上班,不过在上高速前我们还是需要经过一条小路。我们需要通过评估新路来确定是否以后开车上新路来上班
这里我们通过尝试走新路,然后通过将新路按小路和高速划分为两个 state 分别为 state1 和 state2 通常我们会用取平均值来求解这个问题,我们这里用 numpy 来解决问题。
t1 表示每一次通过小路相对于老路同等距离的多花时间,- 号表示多耗的时间
t2 表示每一次在高速路相对于老快的时间
t1 = np.array([-5,-8,-2,-3])
s1 小路平均值 -4.5
在小路部分,相比老路是一段比较耗时,所谓 V 为负值
v1 = 0
我们的到值 -3.3125
[-2.5, -5.25, -3.625, -3.3125]
接下来我们评估新路高速部分的值。
v2 = 0
这里得到新路高速部分 V 值为 4.5
[3.0, 6.0, 7.0, 4.5]
其实我们通常会将小路和高速两端结合在一起进行考虑,因为我们对于小路感受 V 也会受到下一个状态 V 值的影响。
的取值范围,如果 gamma 等于 0 表示我们对未来毫不关心,如果 gamma 等于一个较大的数,就表示我们只在乎明天,小米就是关注未来而华为更看重今天。对于我们普通人我们更关注当前,虽然也注重未来,但是相比于当前,未来显得更加重要。
其实我们看数据,凭借直觉走小路然后上高速并不是什么不好选择,根据后面高速路的时间我们会选择小路,所以我们对小路感觉V(s)是受到下一个 state 影响,所以需要考虑当前 state 的 V(s‘)也需要考虑进去。
代码示例
import pandas as pd
def next_s(s):
next_s 返回下一个 state
这一部分代码表示相对客观,next_s 会返回下一个 state,我们这里问题小路和高速公路的问题,按路段将 state 分为 2 个 state ,state1 表示小路而 state2 表示高速路。当 s 为 0 表示 state1 作为输入那么他的下一个 state 就是 1 表示高速,如果输入是 1 表示高速返回 -1 表示这一轮结束。
reward 表示实际耗时,也就是得到奖赏
state1(小路)耗时比较老路比较多所以 reward 是不好的值,这里用负数表示,相反高速路相对较好返回较大值表示。
A = .5
V = np.zeros(3)
[-0.92000671 2.628065 0. ]