狗都能看懂的Reinforcement Learning简介

news2025/5/15 4:58:00

文章目录

    • 一、什么是强化学习
    • 二、强化学习的应用

一、什么是强化学习

RL

强化学习的流程可以用上面这张图来说明:智能体(Agent)对环境进行观测,然后根据观测结果(Observation / State)采取相应的动作(Action),动作作用于环境(Environment)之后,环境就会产生相应的变化,这样智能体就可以再一次得到新的观测结果,同时环境也会给智能体一个反馈(Reward)表明这个动作是好的还是不好的。强化学习就是想办法找到一个策略能够最大化总的反馈(Total reward)。

比较成功的应用,如:AlphaGo,下围棋时,它的Observation就是棋盘的情况,根据棋局的形式采取一个Action下一步棋。然后根据Environment的反馈情况,得到一个Reward和新的Observation,再进行下一次的分析和动作。

chess

通过上述围棋的例子,我们不难发现,Environment是由系统本身决定的,Observation本质上也只是通过某种转换由Environment变动过来的,在这个例子中,可以是一个视觉神经网络,将棋局转换成数学矩阵。同时,有一个好的**Agent(策略生成)**也很重要,它决定了实际的Action,在没有深度学习之前,用过一些类似于表格的形式,根据局势进行查表,决定怎么下一步怎么走。这种方式本质上也是一种有监督学习。但围棋这个数学组合很难穷举,但有了Reinforcement Learning就不同了,通过一个通用的神经网络来分析形势。这也是Supervised Learning和Reinforcement Learning的差异。

sl vs rl

而Reward这个变量就比较特殊,虽然也是和Environment有关系,但也是由人为定义的一些规则来决定的,比如围住了对方的棋子,得1分;被围住得-1分,没有棋子数量变动为0分。所以如何从一个定义好的Reward规则也很重要。这里的Reward设定也有它的弊端,即得分为0的情况是比较常见的,得分或扣分的情况是比较少见的,所以它的Reward是比较稀疏。

chess problem

二、强化学习的应用

chatbot-train

Supervised Learning的方法在某些问题也不适用,比如在聊天机器人(Chatbot)训练时,上一个人的提问,没有完全对应的答案。

在这里插入图片描述

而利用Reinforcement Learning的思想,虽然对话没有像围棋一样有明确的得分Reward规则,但我们可以train两个Chatbot互相对话,人为定义一个规则:“通过查看对话记录,来评判是好是坏”

chatbot rule

还有一个比较常见的应用:电子游戏,OpenAI也有对应的python游戏环境,可以用于强化学习的训练。

video game

比如上述的Video Game就来自于gym。左上角是分数,中间是需要打击的目标,玩家可以左右移动,开火。转换到RL中就是三个Action。

alien

gym中的游戏Environment已经转换成矩阵给到用户,可以直接给到Agent,得到Action。像这个游戏中击杀一个外星人,可以得到5分。当采取一个Action之后,Environment也会发生变化(通常都是随机的),这样我们又进入了下个Action生成的阶段。

alien end

当游戏进行了N次这样的循环之后,当采取了某次Action- α T \alpha_T αT之后,游戏进入了终止状态,这时候得到了一个总的Reward。那么这一整个游戏过程,我们称为episode,通常我们以一个episode和它对应总的Reward为一个训练数据。为什么这么做呢?

difficulties

这里就要回到我们上面提到Reward设计的弊端了,有时候Reward的规则往往会导致Agent没法得到即时的奖励,但这又是无法避免的。在现实生活中,这种问题比较常见,比如下棋中,短期的诱敌牺牲可能为后期的胜利做铺垫。所以Reward的delay是很常见的,所以我们在训练的时候也需要将这种情况考虑进去。

其次Agent作为一个小白,如果仅以即时奖励为优化目标,那么在alien游戏中,它只有开火才能得分,那么训出来的Agent就只会开火。

以上内容为李宏毅老师课程中的总结。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1882537.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++中的类型转换操作符:static_cast reinterpret_cast const_cast dynamic_cast

目录​​​​​​​ C语言中的类型转换 C中的类型转换 C中的类型转换操作符 static_cast reinterpret_cast const_cast volatile关键字 赋值兼容 dynamic_cast C语言中的类型转换 基本概念:赋值运算符左右两侧类型不同,或形参与实参类型不匹配…

LayerSkip:加速大模型推理的端到端解决方案

大模型(LLMs)在多种应用中表现出色,但其高昂的计算和内存需求导致部署成本昂贵,尤其是在GPU服务器上。现有加速方案在部署到普通GPU时往往会导致准确性显著下降,而将大模型(LLMs)进一步加速以部…

Pycharm的终端(Terminal)中切换到当前项目所在的虚拟环境

1.在Pycharm最下端点击终端/Terminal, 2.点击终端窗口最上端最右边的∨, 3.点击Command Prompt,切换环境, 可以看到现在环境已经由默认的PS(Window PowerShell)切换为项目所使用的虚拟环境。 4.更近一步,如果想让Pycharm默认显示…

单电源RS-232收发器UM3221E/UM3222E/UM3232E

一般描述 UM3232 TSSOP16封装外观和丝印 UM3221E/UM3222E/UM3232E 系列是 3.3V 供电的 RS-232 收发器,适用于便携式或手持式应用。UM3221E 有一个驱动器/一个接收器,而 UM3222E/UM3232E 有两个驱动器/两个接收器。该器件具有低功耗、高数据速率能力和增强…

2008-2022年款哈弗维修手册和电路图线路图接线图资料更新

经过整理,2005-2022年款长城哈弗全系列已经更新至汽修帮手资料库内,覆盖市面上99%车型,包括维修手册、电路图、新车特征、车身钣金维修数据、全车拆装、扭力、发动机大修、发动机正时、保养、电路图、针脚定义、模块传感器、保险丝盒图解对照…

JavaScript数组对象 , 正则对象 , String对象以及自定义对象介绍

1. Array数组对象 数组对象是使用单独的变量名来存储一系列的值。 1.1创建一个数组 创建一个数组,有三种方法。 【1】常规方式: let 数组名 new Array();【2】简洁方式: 推荐使用 let 数组名 new Array(数值1,数值2,...);【3】字面:在js中创建数组使用中括号…

同城跑腿帮买帮取

同城跑腿:便捷生活新选择 🚀 快速送达,同城跑腿让生活更便捷 在快节奏的现代生活中,时间成为了最宝贵的资源。当我们忙于工作、学习或家庭琐事时,常常会面临一些琐碎却紧急的需求,比如急需送一份文件、取一…

Soul探索未来智能互动模式,人机交互重塑社交元宇宙体验

在当今快速发展的科技领域中,人机交互已成为一个备受关注的话题。随着人工智能和机器学习技术的不断进步,人们与计算机和智能设备之间的互动方式正在发生翻天覆地的变化。这种交互不止局限于键盘和鼠标,更涵盖了语音识别、手势控制、虚拟现实等多种形式。人机交互的创新不仅提高…

使用 c# + vue 制作 DevExpress 报表

theme: smartblue 一、下载 DevExpress 下载地址: https://docs.devexpress.com/XtraReports/400128/product-information/devexpress-reporting-installer 二、创建报表 选择你要放置的文件夹,依次选择 “Add”, “New Item...” 第一次显示时可能没有详…

1993Springboot智能旅游系统idea开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 springboot智能旅游系统是一套完善的信息系统,结合springboot框架和bootstrap完成本系统,对理解JSP java编程开发语言有帮助系统采用springboot框架(MVC模式开发) 旅游线路 推荐 采用(蚁群算法&#x…

三坐标测量机:柔性生产制造中的高精度测量解决方案

柔性生产制造是制造业的核心竞争力之一。它强调生产线的灵活性和适应性,以满足市场对产品多样化和个性化的需求。在当今快速变化的工业环境中,随着消费者对产品个性化和定制化需求的增加,柔性生产制造和三坐标测量机的结合,为智能…

服务器数据恢复—EVA存储RAID管理信息丢失的数据恢复案例

意外断电导致raid硬件损坏或者riad管理信息丢失等raid模块损坏而导致数据丢失的情况非常普遍。正常情况下,磁盘阵列一旦创建完成就不会再对管理模块中的信息进行更改,但是raid管理模块中的信息属于可修改信息,一次或多次的意外断电可能会导致…

猫头虎 Gemma和Gemini模型的区别是什么?

猫头虎 🐯 Gemma和Gemini模型的区别是什么? 摘要📘 在这篇文章中,我们将深入探讨Gemma和Gemini这两个由Google开发的AI模型。我们会对比它们的参数规模、计算资源需求和集成难度,帮助大家了解这两者之间的主要区别。…

Spring两大核心思想 IoC和AoP

目录 ✨ 一、什么是IoC 1、定义 🎊 2、IoC思想 🎊 3、优势 🎊 4、对象的管理 🎊 存对象:Component 取对象:AutoWired ✨二、什么是DI 1、定义 🎊 2、IoC和DI的关系🎊 可…

广东行政职业学院数据智能订单班开班暨上进双创工作室签约仪式圆满结束

为响应教育领域数字化与智能化浪潮这一变革,给学生提供更好的教育资源和实践机会,6月27日,“泰迪广东行政职业学院数据智能订单班开班仪式暨上进双创工作室签约授牌”在广东行政职业学院举行。广东行政职业学院智慧政务学院(电子信…

JAVA里的object类

public static String toString(Object o) // 获取对象的字符串表现形式 public static boolean equals(Object a, Object b) // 比较两个对象是否相等 public static boolean isNull(Object obj) // 判断对象是否为null pu…

数据库断言-数据库连接池

原因:现在的代码是单线程,如果遇到大并发的话就会崩溃,数据库查询就查不过来 措施:需要建立数据库连接池,可以设置连接池的数量 什么是大并发:很多客户端在idea写的程序和数据库建立连接 步骤&#xff1…

Python处理异常用操作介绍

Python中的异常处理主要用于捕获和处理程序运行过程中出现的错误。 在编写Python程序时,我们经常会遇到各种错误,如语法错误、运行时错误等。为了确保程序的稳定性和健壮性,我们需要对可能出现的错误进行捕获和处理。本文将介绍Python中常用的…

css美化滚动条样式

效果展示 实现 滚动条宽,高度 /* 整体滚动条 */ ::-webkit-scrollbar {width: 10px; }/* 滚动条轨道 */ ::-webkit-scrollbar-track {background-color: #ffffff;border-radius: 6px; }/* 滚动条滑块 */ ::-webkit-scrollbar-thumb {background-color: #888;borde…

伺服阀放大器配套稳压电源

稳压电源是为伺服阀放大器配套的电源。该稳压电源在开关电源基础上采用了多项先进技术进行设计,输出直流电压稳压精度高、纹波系数小、可靠性好。稳压电源也适用于其他各种伺服控制系统的配套电源。输入(180~240VAC 50Hz),输出&am…