适合初学者的神经网络理论到实践(4): 打破概念束缚:强化学习是个啥?

本文主要是介绍适合初学者的神经网络理论到实践(4): 打破概念束缚:强化学习是个啥?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

适合初学者的神经网络理论到实践(3):打破概念束缚:强化学习是个啥?

注意:强化学习有很多概念,不要一开始被这些概念束缚了。首先得知道强化学习大致是什么,再看这些概念就会恍然大悟。 本文的思路就是先介绍我对强化学习的理解。然后介绍强化学习中的一些概念。最后是强化学习实践。

打破概念束缚:强化学习是个啥?

答:强化学习就是受到动物从生活中学习技能的思想启发的一种智能算法;那么怎么启发的呢?动物学习技能的过程就是不断尝试各种行为,最后总结经验,然后以后遇到相同情况直接用以往的经验就可以。强化学习就是这么做的。“不断猜测,检验,再猜测,再检验,直到找到达成目标的经验”这个过程就是强化学习。它学习的经验叫做模型。学习到了这些经验后以后就不用猜测了,直接用经验就可以。强化学习“学到”的经验是什么:“在某个状态下,做哪个行为,得到的奖励最大”,经验这是一个列表是一本教科书。

总结:强化学习的输出结果是找到解决某个问题的经验。强化学习的过程是不断乱尝试,并记录所处的状态和行为,找到某个状态下奖励最大的行为

为何要用强化学习?( 知道为什么才是打破概念束缚的关键)

答:因为智能体不知道哪些行为可以产生奖励,也不知道什么时候会来奖励。这些经验都是要从环境中学习所得到。

似懂非懂?没关系有个模糊的是那么回事的印象就可以。看下面的例子就懂了。

举个例子:在高中生物书上有个“ 巴甫洛夫的狗”这个实验。 就是巴甫洛夫每次给它狗喂食的时候都会摇铃铛,然后这条狗慢慢学到了“摇铃铛=有东西吃”这个经验。然后学到这个经验后,只要“摇铃铛”它就会流口水。强化学习就是受到这种启发而发明的算法。
从“巴甫洛夫的狗”看强化学习几个概念

强化学习思想很简单,7个词够了:

  • 智能体、目标、环境、观察、状态、行动、奖励

不要慌。接下来用例子来解释着7个东西是什么。 我们用“巴甫洛夫的狗”这个实验解释下这强化学习这个六个要素。

  1. 智能体首先这条狗它是一个智能体(Agent)
  2. 目标它的目标(Goal)是吃饭。
  3. 环境环境就是字面意思,它在的这个地方发生的一切都属于环境里面的东西。
  4. 观察然后,它各种看和听什么现象和食物相关。这个过程叫做观察
  5. 状态观察到的内容叫做状态(state)。这里的状态是:有没有饭吃、有没有人说话、有没有脚步声、有没有铃声。
  6. 行为然后它根据这些观察会作出一些动作,如:“摇尾巴,流口水等等”。这个叫做行为(action)。行为是根据观察内容(状态)而作出的。 这里可能的行为是(前半部分是状态,后半部分是行为):
  • 听到脚步声——摇尾巴
  • 听到铃声——流口水
  • 听到脚步声——流口水
  • 看到天黑了——汪汪汪叫

7. 奖励 在这里,奖励是作出的行为有没有饭吃。

    • 听到脚步声——摇尾巴——没饭吃
    • 听到铃声——流口水——饭吃
    • 听到脚步声——流口水——没饭吃
    • 看到天黑了——汪汪汪叫——没饭吃

从“巴甫洛夫的狗”分析强化学习执行过程

现在,我想你隐隐约约应该看出动物怎么学习的了。就是“不断猜测,检验,再猜测,再检验”,检验唯一标准是有没有达成目标。

但是怎么理性科学的看待这个问题呢?答:“不断猜测,检验,再猜测,再检验,直到找到达成目标的经验”这个过程就是强化学习。它学习的经验叫做模型。学习到了这些经验后以后就不用猜测了,直接用经验就可以。强化学习“学到”的经验是什么:“在某个状态下,做哪个行为,得到的奖励最大”,这是一个列表清单。

为何“狗”要不断尝试呢?

  • 因为它不知道哪些行为可以产生奖励,也不知道什么时候会来奖励。这些都是要从环境中学习所得到。

 

@Ai酱

 ,如果对你有帮助欢迎 赞赏、点赞、收藏、he关注 

@Ai酱

后续计划:

  • 强化学习入门:Q-Learning(Q学习)算法

相关文章:

适合初学者的神经网络理论到实践(1):单个神经元+随机梯度下降学习逻辑与规则

适合初学者的神经网络理论到实践(2):理解并实现反向传播及验证神经网络是否正确

Ai酱:概率统计与机器学习神经网络的联系?

答主姐姐开的零食新店活动季,康师傅桶面一箱装批发价,拼多多店铺“晓臻食品”,可零售可批发

转载于:https://www.cnblogs.com/ailitao/p/11047307.html

这篇关于适合初学者的神经网络理论到实践(4): 打破概念束缚:强化学习是个啥?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/588439

相关文章

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

golang内存对齐的项目实践

《golang内存对齐的项目实践》本文主要介绍了golang内存对齐的项目实践,内存对齐不仅有助于提高内存访问效率,还确保了与硬件接口的兼容性,是Go语言编程中不可忽视的重要优化手段,下面就来介绍一下... 目录一、结构体中的字段顺序与内存对齐二、内存对齐的原理与规则三、调整结构体字段顺序优化内存对齐四、内

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

C++实现封装的顺序表的操作与实践

《C++实现封装的顺序表的操作与实践》在程序设计中,顺序表是一种常见的线性数据结构,通常用于存储具有固定顺序的元素,与链表不同,顺序表中的元素是连续存储的,因此访问速度较快,但插入和删除操作的效率可能... 目录一、顺序表的基本概念二、顺序表类的设计1. 顺序表类的成员变量2. 构造函数和析构函数三、顺序表

python实现简易SSL的项目实践

《python实现简易SSL的项目实践》本文主要介绍了python实现简易SSL的项目实践,包括CA.py、server.py和client.py三个模块,文中通过示例代码介绍的非常详细,对大家的学习... 目录运行环境运行前准备程序实现与流程说明运行截图代码CA.pyclient.pyserver.py参

使用C++实现单链表的操作与实践

《使用C++实现单链表的操作与实践》在程序设计中,链表是一种常见的数据结构,特别是在动态数据管理、频繁插入和删除元素的场景中,链表相比于数组,具有更高的灵活性和高效性,尤其是在需要频繁修改数据结构的应... 目录一、单链表的基本概念二、单链表类的设计1. 节点的定义2. 链表的类定义三、单链表的操作实现四、

Spring Boot统一异常拦截实践指南(最新推荐)

《SpringBoot统一异常拦截实践指南(最新推荐)》本文介绍了SpringBoot中统一异常处理的重要性及实现方案,包括使用`@ControllerAdvice`和`@ExceptionHand... 目录Spring Boot统一异常拦截实践指南一、为什么需要统一异常处理二、核心实现方案1. 基础组件

SpringBoot项目中Maven剔除无用Jar引用的最佳实践

《SpringBoot项目中Maven剔除无用Jar引用的最佳实践》在SpringBoot项目开发中,Maven是最常用的构建工具之一,通过Maven,我们可以轻松地管理项目所需的依赖,而,... 目录1、引言2、Maven 依赖管理的基础概念2.1 什么是 Maven 依赖2.2 Maven 的依赖传递机

Oracle查询优化之高效实现仅查询前10条记录的方法与实践

《Oracle查询优化之高效实现仅查询前10条记录的方法与实践》:本文主要介绍Oracle查询优化之高效实现仅查询前10条记录的相关资料,包括使用ROWNUM、ROW_NUMBER()函数、FET... 目录1. 使用 ROWNUM 查询2. 使用 ROW_NUMBER() 函数3. 使用 FETCH FI

在C#中获取端口号与系统信息的高效实践

《在C#中获取端口号与系统信息的高效实践》在现代软件开发中,尤其是系统管理、运维、监控和性能优化等场景中,了解计算机硬件和网络的状态至关重要,C#作为一种广泛应用的编程语言,提供了丰富的API来帮助开... 目录引言1. 获取端口号信息1.1 获取活动的 TCP 和 UDP 连接说明:应用场景:2. 获取硬