涵盖内容
-
学会如何把生活中具体问题来强化学习来描述
-
介绍强化学习的核心内容
-
经典条件反射
-
操作条件反射
-
Qlearning
-
DTlearning
-
更新中
-
大脑中的强化学习算法
-
不能不提的 AlphaGo 的实践
-
实例在游戏中强化学习的应用
-
实例在无人驾驶中应用强化学习
导读
在开始之前我们先介绍一些出现在分享中术语,很好地理解这些术语帮助您更好理解分享内容
-
Agent 是学习主体也就是机器,通过观察环境,观察到就是环境具体的 state ,也就是当前的环境一个快照。AlphaGo 就是 Agent。
-
Environment 环境,这个是 Agent 无法控制,也可以理解为 Agent 的对手,Agent 不断通过跟环境进行抗争来进行学习从而战胜环境。
-
State 就是环境的一个快照,也就是 Agent 所观察到的。
-
Action 是 Agent 根据当前 state 为了获得更高 reward 采取行动
-
Reward 是在某个 state 给予 Agent 反馈,也就是奖罚。
-
Policy 是函数输入 state 输出一个 Action,通常用<mi style="margin: 0px; padding: 0px;">π </mi>来表示,这是一个重点内容。
什么是强化学习
一切的学习都是为了解决一个问题,因为问题存在我们才会通过学习找到解决方法。强化学习和我们之前谈到深度学习 CNN 也好,RNN 也好是所有不同的。这里没有训练的数据集,没有通过监督告诉机器什么是好的,什么是不好的。一切都需机器熟悉环境来学习什么是好的,什么是不好的。
有人夸张地说人工智能就是 AI = RL + DL 强化学习加上深度学习。从现在来看这并不夸张。
image什么是强化学习?我们需要理解好一个基础的概念,帮助我们更好理解深度学习,以及这里概念(术语)之间的关系。然后学习根据 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
image-
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
image
在小路部分,相比老路是一段比较耗时,所谓 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 等于一个较大的数,就表示我们只在乎明天,小米就是关注未来而华为更看重今天。对于我们普通人我们更关注当前,虽然也注重未来,但是相比于当前,未来显得更加重要。
image其实我们看数据,凭借直觉走小路然后上高速并不是什么不好选择,根据后面高速路的时间我们会选择小路,所以我们对小路感觉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. ]
网友评论