《机器学习》学习笔记(二十三)—初探强化学习

强化学习的场景

智能系统从环境到行为映射的学习,以使奖励信号(强化信号)函数值最大。如果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 而不会做其它动作了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值