浅谈增强学习

浅谈增强学习这篇文章就是浅谈一下机器学习领域下的增强学习。为什么博文的题目为浅谈,因为笔者对机器学习的认知比较浅。我分享一个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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • TextMate 激活成功教程

    TextMate 激活成功教程网上google来两个方法,如下:(目的还只是个人学习只用,如果今后用于商业目的,一定支持正版)方法1:关于TextMate的注册这个号称TheMissingEditorfor Mac OSX的编辑器我就不介绍了,我就说说如何注册吧。第一种方法:花39欧元第二种方法:UninstallfirstandInstalagain,justopenthe TextMate unix

    2022年7月13日
    12
  • 传统蓝牙HCI流控(HCI flow control)

    传统蓝牙HCI流控(HCI flow control)一.声明本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下:第一篇:蓝牙综合介绍,主要介绍蓝牙的一些概念,产生背景,发展轨迹,市面蓝牙介绍,以及蓝牙开发板介绍。第二篇:Transport层介绍,主要介绍蓝牙协议栈跟蓝牙芯片之前的硬件传输协议,比如基于UART的H4,H5,BCSP,基于USB的H2等第三篇:传统蓝牙controller介绍,主要介绍传统蓝牙芯片的介绍,包括射频层(RF),基带层(baseband),链路管理层(LMP)等第四篇:传统蓝牙host介绍,主

    2022年6月6日
    91
  • 年轻的采访可以学到很多东西

    年轻的采访可以学到很多东西

    2022年1月10日
    40
  • 微服务 数据同步_微服务session共享怎么实现

    微服务 数据同步_微服务session共享怎么实现微服务之数据同步Porter

    2022年4月21日
    103
  • elasticsearch 简书_elasticsearch用法

    elasticsearch 简书_elasticsearch用法 版权声明:本文为博主原创文章,欢迎转载,转载时请注明出处。欢迎留言讨论,大数据讨论qq群201011292 https://blog.csdn.net/Dante_003/article/details/76890218 </div> …

    2022年4月20日
    39
  • csleep函数_sleep函数如何停止

    csleep函数_sleep函数如何停止C++Sleep函数。Sleep函数的S是大写!!!!今天,我们来讲一下C++中的Sleep函数,它的作用是让程序暂停一会。

    2025年6月20日
    1

发表回复

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

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