浅谈增强学习

浅谈增强学习这篇文章就是浅谈一下机器学习领域下的增强学习。为什么博文的题目为浅谈,因为笔者对机器学习的认知比较浅。我分享一个Q算法的C++代码,该例子体现了如何用Q算法学习迷宫寻路。读者可参考我上一篇转载博文给出的例子进行学习。

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

前言

这篇文章就是浅谈一下机器学习领域下的增强学习。为什么博文的题目为浅谈,因为笔者对机器学习的认知比较浅。

我在最后会分享一个Q算法的C++代码,该例子体现了如何用Q 算法学习迷宫寻路。读者可参考我上一篇转载博文给出的例子进行学习。


增强学习简介

增强学习,即有机体如何在环境给予的奖励或惩罚的刺激下,逐步形成对刺激的预期,产生能获得最大利益的习惯性行为。这个方法具有普适性,因此在其他许多领域都有研究。

就以下围棋为例,假设某个确定棋局下,该棋局记为S,AI下了一手棋之后,该手棋记为A,之后两方随机乱下,直到分出输赢,输了扣一分,赢了加一分。再次回到S棋局 ,AI再次下A手棋,之后两方随机乱下,直到分出输赢,输了扣一分,赢了加一分。如此往复,直到需要停止时再停止。最后统计出的分数即可认为在S棋局下,下A手棋的分数。关键词语是N多把,下的盘数越多输赢的分数结果就越可信,大数定律。

 比如某一确定棋局下AI下了一手必杀棋,那么之后两方随机乱下N多把后,必杀棋的分数是N,而其他普通棋必然小于N,而臭棋的分数往往小于0,必死棋的分数也就是-N。

AI在遇到某一确定棋局时,下棋时只要选择得分最高的一手棋即可,下棋时AI甚至无需思考。

epsilon  greed

补充一点内容,学习总是漫无方向,两方总是随机乱下也不见得是件好事。介绍一下epsilon greed. epsilon greed说起来比较简单,就是以epsilon 概率随机选取行动,以1- epsilon 概率选取目前已知最优的行动。以下围棋为例,就是当面临某一特定棋局S时,以epsilon 的概率随机的下一手棋,或以1- epsilon 的概率下一手当前积分最高的棋。

epsilon  贪心策略选择了那个行动,那个行动的分数就会被更新。这个策略体现出一种权衡,对于探索(学习)方向的权衡。也就是继续学习没有下过的棋,随机探索然后更新分值,还是继续深入研究哪些目前评估最好的棋,选取最佳然后更新分值,看看他是否更好。随着学习的不断深入,epsilon 的值可以变得越来越小,学习的方式从充分探索转为深入的专研。


AlphaGo也用增强学习

有一些人说AlphaGo 神经网络和增强学习的结合,AlphaGo也采用了上述思想。AlphaGo下了无数把之后,任意棋局下的最佳下法都已学会,自然不是人能搞定的了。。。

当然学几千万把对于围棋庞大的状态空间来说并不是不可战胜的。AlphaGo 还是输给了李世石一把的。


增强学习与其他学习的区别

依据训练方式的不同,机器学习可以分为有监督学习,无监督学习,增强学习,半监督学习。这篇文章就是浅谈一下增强学习,对于其他的学习读者可以自行了解。

增强学习和有监督训练的差别就体现出来了,没有人告诉AI在某一确定棋局下,哪一手棋是好棋,哪一手棋是坏棋,是AI不断的探索出到底哪一手棋是好棋,哪一手棋是坏棋。

对于有监督学习,不断地告诉AI这是好棋这是好棋,它才知道这是好棋。你必须先告诉计算机这是猫,这也是猫,那也是猫。。最后她才知道这是猫,以后才能认识出别的猫。

Q学习算法

继续谈增强学习,我知道的有两大类,一种是蒙特卡罗学习,一种是时序差分学习。

依旧套用围棋的例子,简单来讲蒙特卡罗学习是下完一盘棋之后,批处理更新一次分值。

时序差分学习是每下一步棋,就更新一次分值。理论上讲,时序差分学习更好一些,时间性能比较好,学习的比较快。


我上一篇转载博文介绍的Q算法,是一个时序差分算法。

Q算法 更新状态动作值函数的公式为:

Q(s,a):=Q(s,a)+α[r+γmaxaQ(s,a)Q(s,a)]   公式1

如果α 为1的话,那么公式可以改写为Q(state, action) = R(state, action) + γ* Max[Q(next state, all actions)]  公式2

公式1 中的s, a,s′  为公式2的state ,action,next state

接下来解释一下公式的各项的含义

Q(state,action)的含义为,在state下,做出action后,多次学习后统计出的累积收益,状态动作值函数。

在当前state 下,我们可以利用epsilon greed.选择一个action,对应于Q(state,action)的state和action。R(state,action)意思是在该state下做action立即得到的回报。

nextstate是指 state 下 做出 action后转换后的状态。 Max[Q(next state, all actions)]是指在nextstate下所有可行action中返回分数最高的分值。

这样通过不断的探索,Q(state,action)会逐渐的接近真实值。可以依据Q函数给出的提示选取行动。


下面的链接给出了Q-Learning-Algorithm的例子,有需要的读者可以下载代码自己玩一玩。

该示例代码,使用并扩展了上一篇的博文的例子 迷宫寻路例子

示例代码


参考链接:

http://burlap.cs.brown.edu/tutorials/cpl/p3.html#qlo   

http://mnemstudio.org/path-finding-q-learning-example-1.htm

https://studywolf.wordpress.com/2012/11/25/reinforcement-learning-q-learning-and-exploration/

https://en.wikipedia.org/wiki/Q-learning

转载请标明出处,谢谢


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/215922.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Springboot+Seata整合以及事务模式分析

    Springboot+Seata整合以及事务模式分析分布式事务一、分布式事务的组成部分事务参与者:对应的一个一个的微服务资源服务器:对应一个个微服务的数据库事务管理器:决策各个事务参与者的提交和回滚两阶段提交:准备阶段:向事务管理器向事务参与者发送预备请求,事务参与者在写本地的redo和undo日志,但是不提交,并且返回准备就绪的信息,最后提交的动作交给第二阶段来进行提交阶段:如果事务协调者收到失败或者超时的信息,直接给每个参与者发送回滚消息;否则提交消息,最后根据协调者的指令释放所有事务处理过程中使用的资源锁二、项目例子当前依赖,

    2026年1月22日
    3
  • dedecms 图集标签{dede:productimagelist} {dede:field name=’imgurls’}&nbs

    dedecms 图集标签{dede:productimagelist} {dede:field name=’imgurls’}&nbs

    2021年9月22日
    46
  • 白嫖 IObit 系列软件例如 IObit Uninstaller

    白嫖 IObit 系列软件例如 IObit Uninstaller一、下载version.dllhttps://wws.lanzous.com/iFhkhm0g3qh二、将它复制到安装目录三、看到Pro即成功使用注意:右下角管理注册码别点,否则会闪退,闪退重启程序一样正常使用

    2022年10月20日
    6
  • 概率公理化定义的理解

    概率公理化定义的理解由于自己研究生方向为计算机视觉,需要用到许多概率论方面相关的知识,出来混早晚是要还滴!由于本科概率论课不太适应老师的语调,大多数课都睡过去了。。。就连最基本的概率的公理化定义,都快大学毕业了,都一直没有理解,真是囧!赶紧恶补了下概率论,感觉对公理化定义有了一点新的认识,一方面写出来加深自己的记忆,一方面分享出来,供有同样疑问的同学看看,水平有限,如有错误也在所难免,恳请大家指出,然后我进行改正

    2022年8月31日
    5
  • DM8168 GPIO驱动与測试程序

    DM8168 GPIO驱动与測试程序

    2021年11月29日
    65
  • cholesky分解java代码,实数矩阵Cholesky分解算法的C++实现

    cholesky分解java代码,实数矩阵Cholesky分解算法的C++实现头文件 Copyright c 2008 2011ZhangMin M Zhang programisfre youcanredist ormodifyit undertheterm

    2025年8月3日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号