强化学习的场景
智能系统从环境到行为映射的学习,以使奖励信号(强化信号)函数值最大。如果Agent的某个行为策略导致环境正的奖赏(强化信号),那么Agent以后产生这个行为策略的趋势便会加强
有一个 agent ,他在一个环境中,行一个行为,这个行为改变了环境的值,agent 得到一个对应的奖励。强化学习要做的就是去学习那些能得到正面反馈最大化的行为。
比如说,在下围棋的时候,落一个子,然后棋盘的环境发生了改变,如果最后赢了这盘棋就会得到奖励1,如果输了就会得到奖励-1。但是有一比较明显的问题是,在下棋的过程中是没有办法判断出谁输谁赢的,所以中间的奖励都是0,这样也就说明奖励这件事情是比较稀疏的。
强化学习与有监督学习的差异
有监督学习仿佛是在跟着一个老师进行学习,看到什么样的棋盘决定下一个子要落在什么样的位置;而强化学习是随便下,经过若干步之后,最终达到胜利,是通过下棋的经验进行学习。
Alpha Go 使用有监督学习和强化学习相结合的方法,首先用有监督学习训练出模型,再让两个模型对质。
强化学习的应用
1、搭建聊天机器人
具体的方法是让两个聊天机器人自主聊天,然后人通过规则来判断两个机器人之间的聊天是否够好,如果够好就给予奖励,如果不够好就给予负的奖励,如下图所示
2、其他应用
交互式检索、直升飞机飞行、驾驶、文本生成等…
用强化学习来玩游戏(说明强化学习的一个例子)
强化学习玩的游戏是“太空入侵者”(Space invader),游戏的规则如下图所示
我们可以看到在上图中,左右移动的过程中是没有奖励产生的,只有在开火打死外星人的时候才会有奖励产生。
下面是一个训练过程
1、实现的难点
困难之处主要出现在两点,回报延迟和探索。
回报延迟主要体现在两点上,首先在这个游戏中仅仅可以通过开火可以得到回报,但是实际上移动到相对应的位置对于得到回报同样是很重要的。其次,有的时候并不是得到回报就是好的,有的时候将自己的某一路堵死反而可以获得更大的胜利。
探索是指除了目前可以做的,还可以做什么要进行进一步的探索,比如说不击杀小怪兽而击杀大怪兽可以获得更高的回报。
2、强化学习方法
在这里是两种方法的结合,一种方法是 Policy-based(基于策略的),另一种方法是 Value-based(基于值的)。其中 Policy-based 主要用于学习得到一个动作,而 Value-based 主要是用于学习以判断规则来判断现在学习的好不好。
3、基于策略的方法
基于策略的方法可以分为这三个步骤
其中的第一个部分是我们需要得到的函数,具体来讲是产生动作的函数,在这里我们是用神经网络来产生一个动作
神经网络的输入是一个向量或者说矩阵,在这里是游戏中的图像,神经网络的输出是采取着三种动作的概率。可以使用直接取其中概率值最大的动作的方法,但是一种更好的方法是按概率选取动作,这样可以避免每一次取出的动作都是相同的。那么为什么要使用神经网络来产生动作,而不是使用查表的方法产生动作呢?原因在于在测试的过程中,即使给定一张在训练过程中从来都没有见过的图像,通过神经网络仍然可以得到一个输出,但是查表的方法就不可以。
基于策略的方法的第二个部分:评价函数的好坏,对于一个神经网络,它的好坏如下图所示
我们通过网络得到一个输出,之后与我们标签相对比,计算损失函数,使损失函数最小。具体的过程如下图所示
在给定参数的时候执行的一系列动作记作
π
θ
(
s
)
π_θ(s)
πθ(s) 是在参数为
θ
θ
θ 的网络下产生动作
s
s
s ,而
R
ˉ
θ
\bar{R}_θ
Rˉθ 是评价函数有多好的指标。我们所采取的一系列动作如上,在状态
s
1
s_1
s1,采取动作
a
1
a_1
a1,得到回报
r
1
r_1
r1,达到状态
s
2
s_2
s2。我们这一系列的动作得到的回报加在一起获得总的回报,但是我们不能直接采用这个回报最为评价函数的指标,因为打游戏是一个随机的过程,即使在每一次遇到相同的关卡或者画面,所采取的动作也是不同的,所以这个时候就要计算若干次回报的平均值。即:
但是
τ
τ
τ 的可能有很多种,我们没有办法像公式中那样对于所有的
τ
τ
τ 进行求和,只能通过取样计算再求均值的方法进行代替。
基于策略的方法的第三个步骤是找到最优的函数,我们需要找到一组参数使得所得到的回报最大,其中回报 R ˉ θ \bar{R}_θ Rˉθ 的计算公式如上,这个时候假设 θ θ θ 中的参数网络的 权重和偏置值,在这里我们采用梯度上升的方法,而不是使用梯度下降的方法。
那么求取梯度的方法是这样的:
经过化简,得到计算梯度的公式
如果在某一轮中执行某一个操作,并且整体的回报是正的,那么这个时候就增加这个参数,如果是负的就减小这个参数。在这里我们使用的是某一次强化学习的过程中获得的总回报,并不是执行某一个动作之后的立即回报,因为如果是立即回报的话,模型就只会 fire 而不会做其它动作了。