前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >增强式学习核心算法:基于策略的梯度下降法

增强式学习核心算法:基于策略的梯度下降法

作者头像
望月从良
发布2019-06-12 20:53:03
4710
发布2019-06-12 20:53:03
举报
文章被收录于专栏:Coding迪斯尼Coding迪斯尼

上一节我们介绍了什么叫增强式学习,它的模型值得我们印刻在脑海里:

我们要打造一个Agent,也就是智能机器人,它运作在一个给定环境中。它每次与环境互动时都有给定种选择,同时它可以获得当前环境的状态,Agent如果在有限种选择中选择了“正确”的选择,那么环境就会给它一个正回馈,如果做出了错误选择 ,环境就会给它负反馈。

问题在于Agent如何根据当前环境状况让自己做出的选择以最大概率获得正回馈呢?这就是增强式学习的核心所在,我们必须给Agent一套原则或算法,让它懂得如何根据当前环境的变化做选择,而且这套算法要能够不断进化,随着算法运行得越多,算法能根据环境的回馈不断调整自己,然后算法能抽取出从当前环境状况找到最佳选择的规律。

我们注意到增强式学习与以往神经网络不同之处。以前的神经网络要想提升准确率,一个前提就是不断增加输入数据量。而增强式学习不同,它不需要输入更多数据,它只要增加与环境互动的次数,从互动结果中直接学习,不需要额外数据是增强式学习强大之处。

本节我们研究一种叫基于策略的学习法。假设在一个模拟环境中,Agent有5种选择,如果它没有学习能力,那么无论环境如何变化,它都只会在5种选择中随意选择一种。假设一次episode需要agent作出100次选择,那么我们预计每种选择大概有20次。当然20只是预测值,在具体一次episode中,某种选择肯定不是恰好20次。我们用下面代码模拟一下类似情况:

代码语言:javascript
复制
import  numpy as np
counts = {1: 0, 2: 0, 3: 0, 4: 0, 5: 0}
for i in range(100):
    choice = np.random.choice([1, 2, 3, 4, 5])
    counts[choice] += 1
print(counts)

运行代码会发现,每一种选择都不可能正好是20次,当如果把上面代码运行多次,那么每种选择的次数评价起来会是20次左右。接下来我们进行一种简单的环境模拟,我们模拟两个agent从1到5中选择,每人选择100次然后加总,最后结果大的获胜:

代码语言:javascript
复制
def  simulate_game(policy):
    player_1_choices = {1: 0, 2: 0, 3: 0, 4: 0, 5: 0}
    player_1_total = 0
    player_2_choices = {1: 0, 2: 0, 3: 0, 4: 0, 5: 0}
    player_2_total = 0
    for i in range(100):
        player_1_choice = np.random.choice([1,2,3,4,5], p = policy)
        player_1_choices[player_1_choice] += 1
        player_1_total += player_1_choice
        player_2_choice = np.random.choice([1,2,3,4,5], p = policy)
        player_2_choices[player_2_choice] += 1
        player_2_total += player_2_choice
    if player_1_total > player_2_total:
        winner_choices = player_1_choices
        loser_choices = player_2_choices
    else:
        winner_choices = player_2_choices
        loser_choices = player_1_choices
    return (winner_choices, loser_choices)

policy = [0.2, 0.2, 0.2, 0.2, 0.2]
print(simulate_game(policy))

多运行几次上面代码就会看到,winner就是能多次挑选到大数值的player,例如我运行后结果如下: ({1: 21, 2: 14, 3: 19, 4: 26, 5: 20}, {1: 20, 2: 25, 3: 21, 4: 18, 5: 16}) 不难理解在这样的环境里,选1是坏选择,选5才是好选择。如果代码中的Player拥有学习能力的话,它就能从反馈中发现每种选择的好坏,例如它会发现自己选择1多的时候负反馈也多,选5多的时候正反馈也多,于是它就会主动增加选择5的几率。

代码中的player可以基于如下政策调整比率。首先随机选择,然后根据结果调整。如果一次模拟下来发现自己的选择得到了胜利,那么它下次就就增加本次选择中选取次数最多的那个数值,如果失败了,它下次就减少选取次数最多的那个数值,如此反复足够多后,player就会不自觉的多选择5少选择1,这就是基于政策的学习算法核心所在。

上面展示的学习算法还不足以应用到围棋这么复杂的情景。首先上面模拟中player并没有根据环境的当前状态去做选择,同时如何对“环境”进行分析是一个非常棘手的问题。在围棋中所谓“环境”就是棋盘上棋子的分布,如何把棋盘布局与落子方式关联起来就需要使用神经网络进行计算。

我们已经知道,在神经网络中,我们通过修改连接链路的权重来改进网络的输出结果,链路的修改方法就是梯度下降法。以前我们总是修改权重,使得网络的输出与给定结果尽可能的接近,现在不一样,我们要在给定策略条件下,通过分析当前棋盘情况去修改链路权重,这种做法就叫基于政策的梯度下降法。

接下来我们将通过代码的方式,逐步实现整个AlphaGo系统,在模块实现时我们会突出相应的学习算法,很多抽象或难理解的概念无法用语言来表述清楚,但是落实到代码上时反而能变得具体和生动,从而更好理解,因此对计算机技术而言,实践永远是最好的学习方法!

更多详细内容请点击阅读原文链接

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-04,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 Coding迪斯尼 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云小微
腾讯云小微,是一套腾讯云的智能服务系统,也是一个智能服务开放平台,接入小微的硬件可以快速具备听觉和视觉感知能力,帮助智能硬件厂商实现语音人机互动和音视频服务能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com