当前位置: 首页 > news >正文

深入理解强化学习——强化学习的历史:试错学习

分类目录:《深入理解强化学习》总目录


让我们现在回到另一条通向现代强化学习领域的主线上,它的核心则是试错学习思想。我们在这里只对要点做概述,《深入理解强化学习》系列后面的文章会更详细地讨论这个主题。根据美国心理学家R.S.woodworth的说法,试错学习思想可以追溯到19世纪50年代Alexander Bain对“摸索和实验”学习方法的讨论,可以更具体地追溯到1894年英国动物行为学家和心理学家Conway Lloyd Morgan使用这个术语来描述他对动物行为的观察实验。而也许第一个简洁明确地表达出试错学习的本质是学习原则的则是Edward Thorndike:

面对同样的情境时,动物可能产生不同的反应。在其他条件相同的情况下,如果某些反应伴随着或紧随其后能够引起动物自身的满意感,则这些反应将与情境联系得更加紧密。因此,当这种情境再次发生时,这些反应也更有可能再出现。而在其他条件相同的情况下,如果某些反应给动物带来了不适感,则这些反应与情境的联系将被减弱,所以当这种情境再次发生时,这些反应便越来越不容易再现。更大的满意度或更大的不适感,决定了更强化的或更弱化的联系。

Thorndike称之为“效应定律(Law of Effect)”,因为它描述了强化事件对选择行为倾向性的影响。后来,Thorndike修改了定律,更好地解释了动物学习的数据(比如奖励和惩罚之间的区别),但各种形式的定律在学习理论专家中也产生了大量争议。尽管如此,各种形式的效应定律被普遍认为是许多行为背后的基本原则。这是Clark HuII影响深远的学习理论的基础,也是B.F.Skinner实验方法的基础。

在动物学习领域,“强化”一词从Thorndike提出效应定律之后开始使用,最早出现在巴甫洛夫的条件反射著作的1927年英文译本中。巴甫洛夫认为“强化"就是动物行为模式的增强,它来源于动物受到增强剂的刺激后与另一刺激或反应形成的短暂关系。后来,一些心理学家扩展了“强化"一词的意义,也包括了弱化过程,同时它还适用于对刺激事件的忽略或终止。强化对行为的改变会在增强剂被撤回时仍有所保留,因此只吸引动物注意或激发其行为,而不产生持久变化的刺激物不被认为是一种增强剂。

试错学习思想在计算机中的应用最早出现于关于人工智能可能性的思考中。在1948年的报告中,图灵描述了一种“快乐一痛苦系统"的设计,它是根据效应定律运作的:

当达到没有预设动作的状态时,随机选择一些没有遇到过的数据,记录并试探性地应用这些数据。如果发生了痛苦刺激,停止所有动作试探。如果发生了愉悦刺激,则一直保持动作试探。

许多精巧的电子机械设备被制造出来演示试错学习。最早的应该是1933年由Thomas Ross制造的一台机器,它能够穿越迷宫且通过开关设置记住路线。在1951年,已经因为“机械乌龟"成名的W.Grey Walter又制造了能够简单学习的版本。1952年,Claude Shannon演示了一种名叫Theseus的迷宫老鼠,它利用试错法在迷宫中摸索,迷宫本身通过磁铁和继电器在地板上记录成功的路径。J.A.Deutsch描述了一个以他的类似于基于模型的强化学习的行为理论为基础的解迷宫机器。Marvin Minsky在他的博士论文中讨论了强化学习的计算方法,描述了他组装的一台基于模拟信号的机器,他称其为“随机神经模拟强化计算器",SNARCs(Stochastic Neural-AnalogReinforcement Calculators)模拟可修改的大脑突触连接。

构建电子机械学习机器的努力逐渐让位于使用数字计算机通过编程来进行各种类型的机器学习,其中一些也实现了试错学习。Farley和Clark描述了一种通过试错学习的神经网络学习机器的数字化仿真程序。但他们的兴趣很快就从试错学习转向推广性和模式识别,即从强化学习转向有监督学习。这时这些学习类型之间的关系开始出现混乱。许多研究人员认为自己在研究强化学习,但其实是在研究有监督学习。例如,像Rosenblatt和Widrow及Hoff这样的神经网络先驱们显然是被强化学习所激励的。虽然他们使用了“收益”和“惩罚"这样的语言,但他们所研究的系统是有监督的学习系统,适用于模式识别和感知学习。即使在今天,一些研究人员和教科书也在最小化或模糊化这些不同类型的学习范式的区别。例如,一些神经网络教科书使用“试错"一词来描述从训练样本中学习的网络。这种混淆可以理解,因为这些网络就是使用误差信息来更新连接的权重的,但是这忽略了在试错学习中的行为选择的基本特征是基于评估性反馈的,而这些反馈不基于正确的行为应该是什么。

这些困惑在一定程度上,使得对真正的试错学习的研究在20世纪60和70年代变得十分罕见,尽管也有一些例外。在20世纪60年代,“强化"和“强化学习"两个术语在工程文献中首次被用于描述试错学习的工程用途。特别有影响力的是Minsky的论文《走向人工智能》,他在论文中讨论了几个关于试错学习的问题,包括预测、期望,以及他所称的“复杂强化学习系统中的基础性的功劳分配问题":对于一项成功所涉及的许多项决策,你如何为每项决策分配功劳?我们在《深入理解强化学习》系列文章中讨论的所有方法在某种意义上都是为了解决这个问题。NIinsky的论文在今天也是值得一读的。

参考文献:
[1] 张伟楠, 沈键, 俞勇. 动手学强化学习[M]. 人民邮电出版社, 2022.
[2] Richard S. Sutton, Andrew G. Barto. 强化学习(第2版)[M]. 电子工业出版社, 2019
[3] Maxim Lapan. 深度强化学习实践(原书第2版)[M]. 北京华章图文信息有限公司, 2021
[4] 王琦, 杨毅远, 江季. Easy RL:强化学习教程 [M]. 人民邮电出版社, 2022

相关文章:

深入理解强化学习——强化学习的历史:试错学习

分类目录:《深入理解强化学习》总目录 让我们现在回到另一条通向现代强化学习领域的主线上,它的核心则是试错学习思想。我们在这里只对要点做概述,《深入理解强化学习》系列后面的文章会更详细地讨论这个主题。根据美国心理学家R.S.woodworth…...

分享一个用HTML、CSS和jQuery构建的漂亮的登录注册界面

作为一个前端开发人员,我们经常需要构建用户的登录和注册界面。一个漂亮、用户友好的登录注册界面对于提升用户体验和网站形象至关重要。以下我们使用HTML、CSS和jQuery来做一个漂亮的登录注册界面。 首先,我们需要创建一个html文档,定义登录…...

Java学习 习题 1.

一、 1.2. 3. 4. 5. 二、 1. 2. 3. 4. 5. 6. 7. 8....

第六节——Vue中的事件

一、定义事件 Vue 元素的事件处理和 DOM 元素的很相似,但是有一点语法上的不同 使用修饰符(v-on:的缩写)事件名的方式 给dom添加事件后面跟方法名,方法名可以直接加括号如click"add()"里面进行传参。对应的事件处理函…...

设置GridView单选

/// <summary> /// 设置GridView单选 /// </summary> /// <param name"view"></param> /// <param name"selectCaption"></param> public static void SetGridViewSingleSel…...

[Python从零到壹] 七十二.图像识别及经典案例篇之OpenGL入门及绘制基本图形和3D图

十月太忙,还是写一篇吧!祝大家1024节日快乐O(∩_∩)O 欢迎大家来到“Python从零到壹”,在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界。所有文章都将结合案例、代码和作者的经验讲解,真心想把自己近十年的编程经验分享给大家,希…...

论文-分布式-并发控制-Lamport逻辑时钟

目录 前言 逻辑时钟讲解 算法类比为面包店内取号 Lamport算法的时间戳原理 Lamport算法的5个原则 举例说明 算法实现 参考文献 前言 在并发系统中&#xff0c;同步与互斥是实现资源共享的关键Lamport面包店算法作为一种经典的解决并发问题的算法&#xff0c;它的实现原…...

长三角实现区块链电子医疗票据互联互通,蚂蚁链提供技术支持

10月25日&#xff0c;记者从浙江省财政厅发布的消息获悉&#xff0c;上海、浙江、江苏和安徽三省一市基于蚂蚁链实现区块链电子医疗票据互联互通&#xff0c;商业保险理赔作为首个规模化应用场景正式落地&#xff0c;蚂蚁保“安心赔”理赔服务率先接入。 今后&#xff0c;老百…...

Redis快速上手篇(三)(事务+Idea的连接和使用)

Redis事务 可以一次执行多个命令&#xff0c;本质是一组命令的集合。一个事务中的 所有命令都会序列化&#xff0c;按顺序地串行化执行而不会被其它命令插入&#xff0c;不许加塞。 单独的隔离的操作 官网说明 https://redis.io/docs/interact/transactions/ MULTI、EXEC、…...

Spring三级缓存解决循环依赖问题

文章目录 1. 三级缓存解决的问题场景2. 三级缓存的差异性3. 循环依赖时的处理流程4. 源码验证 1. 三级缓存解决的问题场景 循环依赖指的是在对象之间存在相互依赖关系&#xff0c;形成一个闭环&#xff0c;导致无法准确地完成对象的创建和初始化&#xff1b;当两个或多个对象彼…...

Unity 中使用波浪动画创建 UI 图像

如何使用 只需将此组件添加到画布中的空对象即可。强烈建议您将此对象放入其自己的画布/嵌套画布中&#xff0c;因为它会弄脏每一帧的画布并导致重新生成整个网格。 注意&#xff1a;不支持切片图像。 using System.Collections.Generic; using UnityEngine; using UnityEng…...

支付功能测试用例测试点?

支付功能测试用例测试点是指在测试支付功能时&#xff0c;需要关注和验证的各个方面。根据不同的支付场景和需求&#xff0c;支付功能测试用例测试点可能有所不同&#xff0c;但一般可以分为以下几类&#xff1a; 功能测试&#xff1a;主要检查支付功能是否符合设计和业务需求…...

HFS 快速搭建 http 服务器

HFS 是一个轻量级的HTTP 服务工具&#xff0c;3.0版本前进提供Windows平台安装包&#xff0c;3.0版本开提供Linux和macOS平台的安装包。 HFS更适合在局域网环境中搭建文件共享服务或者安装配置源服务器。 甲 非守护进程的方式运行 HFS &#xff08;Ubuntu 22.04&#xff09; 一…...

学生专用台灯怎么选?双十一专业学生护眼台灯推荐

台灯应该是很多家庭都会备上一盏的家用灯具&#xff0c;很多大人平时间看书、用电脑都会用上它&#xff0c;不过更多的可能还是给家中的小孩学习、阅读使用的。而且现在的孩子近视率如此之高&#xff0c;这让家长们不得不重视孩子的视力健康问题。那么孩子学习使用的台灯应该怎…...

Go 常用标准库之 fmt 介绍与基本使用

Go 常用标准库之 fmt 介绍与基本使用 文章目录 Go 常用标准库之 fmt 介绍与基本使用一、介绍二、向外输出2.1 Print 系列2.2 Fprint 系列2.3 Sprint 系列2.4 Errorf 系列 三、格式化占位符3.1 通用占位符3.2 布尔型3.3 整型3.4 浮点数与复数3.5 字符串和[]byte3.6 指针3.7 宽度…...

antv/x6 导出图片方法exportPNG

antv/x6 导出图片方法exportPNG antv/x6 版本如下&#xff1a; "antv/x6": "2.14.1","antv/x6-plugin-export": "2.1.6",在文件中导入 import { Graph, Shape, StringExt } from antv/x6 import { Export } from antv/x6-plugin-exp…...

Decomposed Meta-Learning for Few-Shot Named Entity Recognition

原文链接&#xff1a; https://aclanthology.org/2022.findings-acl.124.pdf ACL 2022 介绍 问题 目前基于span的跨度量学习&#xff08;metric learning&#xff09;的方法存在一些问题&#xff1a; 1&#xff09;由于是通过枚举来生成span&#xff0c;因此在解码的时候需要额…...

C++经典面试题:内存泄露是什么?如何排查?

1.内存泄露的定义&#xff1a;内存泄漏简单的说就是申请了⼀块内存空间&#xff0c;使⽤完毕后没有释放掉。 它的⼀般表现⽅式是程序运⾏时间越⻓&#xff0c;占⽤内存越多&#xff0c;最终⽤尽全部内存&#xff0c;整个系统崩溃。由程序申请的⼀块内存&#xff0c;且没有任何⼀…...

Hadoop+Hive+Spark+Hbase开发环境练习

1.练习一 1.数据准备 在hdfs上创建文件夹&#xff0c;上传csv文件 [rootkb129 ~]# hdfs dfs -mkdir -p /app/data/exam 查看csv文件行数 [rootkb129 ~]# hdfs dfs -cat /app/data/exam/meituan_waimai_meishi.csv | wc -l 2.分别使用 RDD和 Spark SQL 完成以下分析&#xf…...

使用Spring Boot限制在一分钟内某个IP只能访问10次

有些时候&#xff0c;为了防止我们上线的网站被攻击&#xff0c;或者被刷取流量&#xff0c;我们会对某一个ip进行限制处理&#xff0c;这篇文章&#xff0c;我们将通过Spring Boot编写一个小案例&#xff0c;来实现在一分钟内同一个IP只能访问10次&#xff0c;当然具体数值&am…...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M&#xff1a;百万&#xff08;Million&#xff09; B&#xff1a;十亿&#xff08;Billion&#xff09; 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的&#xff0c;但是一个参数所表示多少字节不一定&#xff0c;需要看这个参数以什么…...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...

基于TurtleBot3在Gazebo地图实现机器人远程控制

1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...

【JVM面试篇】高频八股汇总——类加载和类加载器

目录 1. 讲一下类加载过程&#xff1f; 2. Java创建对象的过程&#xff1f; 3. 对象的生命周期&#xff1f; 4. 类加载器有哪些&#xff1f; 5. 双亲委派模型的作用&#xff08;好处&#xff09;&#xff1f; 6. 讲一下类的加载和双亲委派原则&#xff1f; 7. 双亲委派模…...

淘宝扭蛋机小程序系统开发:打造互动性强的购物平台

淘宝扭蛋机小程序系统的开发&#xff0c;旨在打造一个互动性强的购物平台&#xff0c;让用户在购物的同时&#xff0c;能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机&#xff0c;实现旋转、抽拉等动作&#xff0c;增…...

ubuntu系统文件误删(/lib/x86_64-linux-gnu/libc.so.6)修复方案 [成功解决]

报错信息&#xff1a;libc.so.6: cannot open shared object file: No such file or directory&#xff1a; #ls, ln, sudo...命令都不能用 error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory重启后报错信息&…...

GAN模式奔溃的探讨论文综述(一)

简介 简介:今天带来一篇关于GAN的,对于模式奔溃的一个探讨的一个问题,帮助大家更好的解决训练中遇到的一个难题。 论文题目:An in-depth review and analysis of mode collapse in GAN 期刊:Machine Learning 链接:...

「Java基本语法」变量的使用

变量定义 变量是程序中存储数据的容器&#xff0c;用于保存可变的数据值。在Java中&#xff0c;变量必须先声明后使用&#xff0c;声明时需指定变量的数据类型和变量名。 语法 数据类型 变量名 [ 初始值]; 示例&#xff1a;声明与初始化 public class VariableDemo {publi…...

CppCon 2015 学习:Simple, Extensible Pattern Matching in C++14

什么是 Pattern Matching&#xff08;模式匹配&#xff09; ❝ 模式匹配就是一种“描述式”的写法&#xff0c;不需要你手动判断、提取数据&#xff0c;而是直接描述你希望的数据结构是什么样子&#xff0c;系统自动判断并提取。❞ 你给的定义拆解&#xff1a; ✴ Instead of …...