激活学习:一种挑战反向传播的生物启发算法

news2025/1/18 4:51:23

8823c49197b65f5fccb66198b1e63e3e.png

激活学习(activation learning)是一种生物启发的简单本地学习规则构建的前向无监督通用模型,它的核心是构建多层神经网络使得网络输出激活强度能反映输入的相对概率大小。并且,它在一些任务上达到并超过反向传播的表现。激活学习的概念由山东大学教授周洪超在arXiv上提交的一篇文章“Activation Learning by Local Competitions”中提出。

1

激活学习的思路

其实,很早之前我在加州理工学院读博士期间,尽管当时主要的研究方向是信息论编码和理论计算机,但是我的导师Jehoshua Bruck也是计算神经系统系的教授,所以跟很多搞信息研究的人一样我们经常闲聊的一个话题:怎么构建一个像大脑的机器。很长时间,我的一个执念是大脑是主要是以无监督学习的方式来工作的,而它背后的学习规则一定是一个简单的本地化规则,否则作为一个复杂的充满随机的生物学系统很难特别鲁棒。所以一个很明确的问题是: 我们是否可以设计一个很简单本地化的学习规则,这个规则很容易在神经元里实现,而且基于这个规则可以实现神经网络一层一层的自动的无监督学习。其实很多研究人员例如马毅老师的"第一原理"也有类似的思想。

那么怎么来设计一个好的本地化的学习规则? 我们的出发点就是从赫布规则(即同时激活的神经元的连接会加强)出发,因为赫布规则已经被大量的神经科学实验所证实,只是赫布规则具体的形式大家不是很清楚,或者简单的赫布规则根本不能保证不同神经元所表达的特征是不一样的。这里关键的一个因素就是神经元的竞争,通过竞争让不同的神经元表征不一样的特征。早在1985年,反向传播的提出者、认知科学的泰斗Rumelhart在提出反向传播的同期也提出了竞争学习的概念,就是让某一群或某一层的最强的一个神经元胜出并激活,他证明这种方法可以进行有效的学习。当然,因为反向传播在应用中的表现太好,这些非常有价值的研究就渐渐被大家所忽略了。有一天我看着刚出生的孩子的时候,忽然对这个问题又产生很强的兴趣,我坚信支配神经元学习的关键(全部)就是竞争。一个简单的物理图像就是当所有的神经元都在竞争激活并表达不同特征的时候,每一层的神经元就能够将最多的信息传递给下一层,而这个过程也就实现了无监督学习,这就是无监督学习的全部; 而且对于越经常遇到的输入,神经元的响应越强,输出的强度也就越强。这是激活学习最基本的思想。

431ff03eb6a3d0438719e105a241d956.png

激活学习的输出强度来衡量输入的典型性

因此我们对赫布规则进行了修改,使得它具备了本地神经元之间的竞争能力(连接的神经元之间能够相互竞争)。基于这样一个本地竞争学习规则,可以从数学上证明每一层的输出可以重构出每一层的输入,而且重构损失是最小的。这个重构能力也是Hinton多次提到的,如果一个网络具备逐层重构能力,那么它对于安全攻击就具有很好的安全性。进一步可以证明,这个重构损失跟主成分分析(PCA)的重构损失是一致的,所以它跟马毅老师提出的PCANet的有一定的联系,但是这里一个重要的不一样的是不同神经元的特征是非正交的,这保证即使少量的神经元停止工作对整个神经网络的影响不会特别大。更重要的一个结论是每一层网络的输出激活强度(输出的平方和)不会高于输入强度,而且对于越典型的输入其输出激活强度就越强。

e7667385a2525bdb1098db2a5954b415.png

激活学习的学习规则

如果我们将每一层神经网络看成一个激活强度的过滤器,它可以表示比较简单的输入概率分布;那么激活学习就是一个多层神经网络将多个激活强度过滤器串联起来,来表示非常复杂的概率分布。在激活学习中,网络的输出激活强度(平方和)用来估计输入的likelihood。为了保证激活强度在各层的可传递性,我们使用的非线性激活函数要保证它的输入和输出的强度是不变的。最终,我们可以训练一个激活学习神经网络,它可以直接估计输入的概率分布。因为整个训练的过程跟任何具体任务是无关的,它也是一个通用模型,可以用于各类学习任务。

2

激活学习的实验结果

1. 首先是分类任务,这时候激活学习网络的输入既包含图片又包含标签,预测分类的过程就是给定图片来推理标签使得整个网络的激活强度是最大的。受到认知科学实验的启发(J. L. McClelland, How Far Can You Go with Hebbian Learning, and When Does it Lead you Astray?), 正确信息的反馈在人类学习中起到很重要的作用。例如,人在学习某个东西的时候,如果识别错误,这时候如果能够纠正并告诉它正确的结果,可以明显提升它的学习效果。所以在激活学习中,我们引入了反馈并生成正样本和负样本, 正样本是图片和正确标签,负样本是图片和最差的错误标签,给正样本一个正的学习率,负样本一个负的学习率,可以明显提高学习的分类准确率。在MNIST上基于2层的全连接网络可以达到约1.36%的错误率,在CIFAR-10上3层的全连接网络可以达到约37%的错误率,基本上达到了跟反向传播差不多的性能。在CIFAR-10的实验中,我们发现全连接网络的学习收敛性和效果均不如本地连接网络,而且本地连接网络更接近于真实大脑中的神经元连接结构,当然对于更大的数据集和复杂的网络结构,激活学习目前还不能跟反向传播相比拟。

2. 在分类任务上,如果我们降低训练样本的数量,激活学习会得到明显优于反向传播的结果。例如给定600个MNIST训练样本,激活学习可以得到 9.74%的错误率,而反向传播(使用同样网络结构加一层线性分类器)只能得到约16.17%的错误率;此外,继续降低训练样本数量,在few-shot learning上激活学习也可以获得很好的效果。除了在小样本的优秀表现,激活学习在对抗外部噪音上表现也十分显眼,例如我们把MNIST测试图片的一部分覆盖掉或者在上面随机的画一些线,激活学习都取得了明显优于反向传播的识别能力(错误识别率大约能降低一半)。

3. 上面训练的同样的神经网络模型也可以用于图像的生成或补全。最直接的方式是使用sampling的方法,但是目前的sampling方法计算速度都比较慢。这里我们采用了梯度下降的方法来优化生成图片,使得它跟给定的类别标签组合能够让网络的激活强度最大化。实验表明这种方式生成的图片或者补全的图片可以达到不错的效果。为了提升生成图片的多样性,我们将网络中加入更多的随机来控制不同特征的表达。

4. 激活学习作为通用模型,可以用于图片分类和生成之外的其他任务。例如我们在接下来的工作里(Ding et al.) 将激活学习用于异常检测,并在real-world的数据集上取得了跟SOTA可以比拟的结果。这里激活学习的一个优势就是它不需要任何标签数据(异常数据),就可以学习输入数据的概率分布。如果给定一个输入,网络的输出激活强度小于某个阈值,那么说明输入可能是一个异常。这个说明基于简单本地规则的激活学习可以在一些场景下取得比反向传播更好的结果。此外,激活学习可能在时序预测上也具有非常吸引人的应用,例如可以更好的预测分布而不是具体的值。

3

关于激活学习的讨论

1. 激活学习是一个通用任务模型;如果给定一堆数据,我们完全不知道未来的任务是什么,这时候能学什么?我们的答案就是输入样本的概率分布,这就是激活学习要做的。

2. 激活学习可能会使用同一个模型统一监督学习、无监督学习和生成模型;例如,我们的输入数据没有标签就冻结标签部分的输入,如果有标签就跟标签一起输入。

3. 激活学习是一个新的学习范式。在传统的范式下,一部分数据作为输入,另一部分数据作为输出,所以如果我们有很多种类的数据并且有各种各样的推理需求,那么就需要很多很多模型,这个在大脑中是不切合实际的。而激活学习把所有的数据都作为一个模型的输入,不同数据间可以相互推理。

4. 激活学习可能会建立不同内容之间的关联,即associative memory,这是人类智能的关键之一。

4

激活学习的研究价值

1. AI算法层面,探索新的无监督学习AI技术和模型,能够成为反向传播技术补充,弥补反向传播的一些局限;探索通用任务模型,可能有助于通用人工智能的发展。

2. 神经科学的层面,帮助我们更好的理解神经元的可塑性、竞争、抑制、反馈以及associative memory。

3. 在AI硬件层面,我们在神经形态计算(neuromorphic computing)上展开过一些研究,我们发现随着网络规模最大,计算误差也会随之增大,解决这个问题的一个办法就是实现片上训练,而激活学习的本地训练特性使得它更容易实现片上训练,推动神经形态计算技术的研究和发展。

5

与Forward-Forward 算法的区别

Hinton的想法很有洞见,而且在很大程度上也影响了我们这些后来人的一些思考和工作。包括我们在内,很多人都相信大脑的工作机制一定跟反向传播是不一样的,如果我们想解决当前反向传播的一些局限性并进一步探索新的AI模型,那么很自然的会思考一个问题: 大脑是怎么学习的。很可惜,从神经科学的角度,我们对大脑的工作机制,尤其是从电路和算法的层面上是知之甚少的。费曼告诉我们,What I cannot create, I do not understand, 如果想要了解一个东西,最好的办法就是构建一个类似的东西,这是我们研究激活学习模型的一个驱动力 – 怎么构建一个尽可能接近大脑的方式又能够在性能上跟反向传播相比拟的模型。

回到主题, 看到Hinton写得Forward-Forward algorithm文章是朋友转发我,问我跟我们几个月之前放到arXiv的激活学习(activation learning) 工作有什么联系。从我个人理解上,Forward-Forward algorithm跟activation learning在很多的idea上是非常一致的,例如都是把每层神经元的输出平方和作为goodness (activation learning里叫typicality和likelihood, 基本上是一个意思), 都使用正样本和负样本对网络进行训练,甚至在训练CIFAR-10上使用的网络都基本一致,也都采用了本地连接。大家似乎从不同的角度得到一些类似的发现,activation learning是先提出了一个生物启发的很简单的一个本地化的神经元学习规则,然后基于这个学习规则从数学上证明,越是典型的输入它的每层的输出激活强度(输出平方和)就越强;而Forward-Forward Algorithm直接使用输出平方和作为每一层的goodness函数,然后再推导出学习规则,这里很佩服Hinton的直觉。对Forward-Forward有兴趣的伙伴可能会对activation learning也感兴趣,下面是论文和代价链接,请大家批评指正!

文章链接: 

https://arxiv.org/pdf/2209.13400.pdf

GitHub代码: 

https://github.com/DPSpace/activation_learning

最近将论文更新了一下,在discussions里简单的比较了一下Forward-Forward algorithm和activation learning的一些区别, 例如 (1) 如果将网络每一层看成激活强度的一过滤器, FF是将所有的过滤器加起来作为goodness, 而activation learning是将所有过滤器乘起来作为goodness, 在某种程度上前者可以看成activation learning的一阶近似。(2) 每层训练的local learning方法是不同的,在activation learning中每层的输出激活强度不会高于输入强度,因此如果低层不激活的话,高层也不会激活,跟大脑更类似;而FF中每层采用了归一化,输出激活可能很大,因此FF在估计概率的时候采用sigmoid。(3) Activation learning除了支持正负样本训练,也适用于只有正样本的场景,通过正样本的训练直接获得样本的统计概率分布,在一些应用例如异常检测是很用的,我们(Ding et al)使用activation learning非常简单的方法,就可以在real-world数据集上取得基于反向传播的SOTA性能。从分类任务上,activation learning的2层全连接神经网络可以在MNIST上可以达到1.36%的错误率,3层的本地连接网络可以在CIFAR-10上达到大约37%的错误率 (FF约为41%), 两者都基本上非常接近反向传播的错误率。在MNIST上,如果将训练数据减少,activation learning的错误率明显低于反向传播,在600个训练样本的时候,反向传播错误率是16.17%,  activation learning是9.74%的错误率。我们继续将测试图片进行覆盖或随机添加线进行干扰,在很大的范围内,activation learning的错误率只有反向传播的一半左右。Activation learning 训练的模型也是通用模型,同一训练模型可以用于各类学习任务,例如在实验中将之前训练的分类网络也可以用于图像生成和图像补全,并取得了不错的效果。当然跟FF类似,目前activation learning在大数据集和复杂网络结构的时候还无法跟反向传播比拟,而且训练速度更慢一些,也有大量的问题需要研究和解决。Activation learning是一个例子,通过及其简单的类似生物的本地规则可以前向构建无监督通用模型,并在一些任务上达到并超过反向传播的表现。

原文链接:

如何评价Activation Learning的AI模型-Hongchao Zhou的回答:

https://www.zhihu.com/question/574765137/answer/2816497134

如何评价Hinton提出的Forward-Forward方法?-Hongchao Zhou的回答:

https://www.zhihu.com/question/570153849/answer/2816469270

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

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

相关文章

C++11标准模板(STL)- 算法(std::adjacent_difference)

定义于头文件 <algorithm> 算法库提供大量用途的函数&#xff08;例如查找、排序、计数、操作&#xff09;&#xff0c;它们在元素范围上操作。注意范围定义为 [first, last) &#xff0c;其中 last 指代要查询或修改的最后元素的后一个元素。 计算范围内各相邻元素之间…

MyBatis 配置文件解析

MyBatis 的核心配置文件是 mybatis-config.xml。注意配置文件中节点的顺序有要求&#xff0c;必须按照下面的顺序填写节点信息&#xff1a; (properties,settings,typeAliases,typeHandlers,objectFactory,objectWrapperFactory,reflectorFactory,plugins,environments,databa…

Odoo丨如何在Odoo中修改HTML编辑工具栏?

文章目录一、前言二、渲染原理三、修改方法一、前言 在odoo中&#xff0c;当我们在页面上使用Html类型或者html的小组件的时候&#xff0c;页面渲染成如下格式&#xff0c;供用户编辑⬇ 上方有一些工具栏如背景颜色&#xff0c;字体颜色&#xff0c;字体大小&#xff0c;插入表…

【Linux04-进程概念下】不愧是操作系统,优美的设计!

前言 上期的分享让我们知道进程大概的模样&#xff0c;本期一样重要&#xff0c;能学到操作系统设计的优美&#xff0c;体会到前辈们的智慧。 #环境变量 是什么 OS提供&#xff0c;往往有特殊功能的全局变量&#xff08;/etc/profile.d是设置环境变量的目录&#xff09; [b…

React 入门:实战案例 Github搜索_axios发送请求

文章目录快速搭建 API 服务器在 Search 组件中实现 Axios 发送请求在 App 组件中管理 List 组件的用户列表状态在 List 组件中更新渲染用户列表数据优化完善完整源码最终效果&#xff1a;快速搭建 API 服务器 根据下面步骤来操作&#xff0c;就可以快速搭建一个符合本案例使用…

明年跨境电商外贸的新增量在哪里?来自专家的2个判断

明年跨境电商外贸的新增量在哪里&#xff1f;来自专家的2个判断2022年&#xff0c;外贸大环境不容易&#xff0c;外贸人也不容易。自2021年9月以来&#xff0c;海运费飙涨&#xff0c;库容一降再降。大批的货品滞留库存&#xff0c;部分卖家只好硬着头皮扛下来了高额的仓储费&a…

最佳实践 | 帮助您的游戏在斋月期间大放异彩

作者 / Google Play 游戏业务发展经理 Nimrod Levy世界各地的开发者都发现&#xff0c;在斋月期间&#xff0c;许多庆祝这个神圣月份的国家/地区的用户都会比平时更活跃。这是一个吸引穆斯林玩家的宝贵机会。斋月是伊斯兰历的第 9 个月。世界各地的穆斯林都会在这个月进行斋戒、…

RV1126笔记二十二:pt->onnx->rknn模型转换

若该文为原创文章,转载请注明原文出处。 一、介绍 实现的目标是,把RK提供的yolov5s.pt转成onnx,在把onnx转成rknn,部署到RV1126上面。 这里不训练模型,所以只要搭建好环境后,就可以直接运行测试。 这里只是提供一种转换的方法,有其他的方式,可以自行测试。 由于不…

立根铸魂 崛起数智时代 操作系统产业峰会2022即将启幕!

如今&#xff0c;数字经济成为全球经济增长的主引擎。基础软件是数字经济发展的基础&#xff0c;是制造强国、网络强国、数字中国建设的关键支撑。而基础软件中的操作系统&#xff0c;作为数字基础设施的底座&#xff0c;已经成为推动产业数字化、智能化发展的核心力量。 2022…

Codeforces Round #840 (Div. 2)

A. Absolute Maximization 题目链接&#xff1a;Problem - A - Codeforces 样例输入&#xff1a; 4 3 1 0 1 4 5 5 5 5 5 1 2 3 4 5 7 20 85 100 41 76 49 36样例输入&#xff1a; 1 0 7 125题意&#xff1a;给定一个长度为n的数组a[]&#xff0c;我们可以对这个数组中的数进…

VueJs中setup的使用(上)

前言在写组合式API代码时,首先接触到的是setup这个函数,在一些项目代码里,你会看到有的直接在script标签上添加setup标识,有的在选项式API方式里,以setup()函数,配置选项的方式出现在单文件组件里什么时候用setup()函数方式,什么时候不用,对于有些新手同学,有些困惑,以及它的一…

聚观早报 | 特斯拉上海工厂被曝停产;富士相机X-Pro 3已停产

今日要闻&#xff1a;特斯拉上海工厂被曝停产&#xff1b;富士相机X-Pro 3已停产&#xff1b;字节复活红果小说App&#xff1b;网易云音乐首份乐评报告发布&#xff1b;辛巴年货节单场带货超1400万单特斯拉上海工厂被曝停产 12 月 26 日消息&#xff0c;根据一份内部通知和两位…

十八、Docker可视化管理工具Portainer

1、概述 Portainer分两个版本 开源版本&#xff1a;Portainer Community Edition (CE) 和商业版本&#xff1a;Portainer 商业版 (BE)。 CE 拥有超过 50 万的普通用户&#xff0c;是一个功能强大的开源工具集&#xff0c;可让您轻松地在 Docker、Docker Swarm、Kubernetes 和…

SpingBoot常见注解区分

1、Mapper注解&#xff1a; 作用&#xff1a;在接口类上添加了Mapper&#xff0c;在编译之后会生成相应的接口实现类 添加位置&#xff1a;接口类上面 Mapper public interface UserMapper{/*** param username 用户名* param password 密码* param memberLevelId 会员级别* p…

【Pygame实战】俄罗斯方块 | 太好玩了~停不下来,这种版本(Turtle彩版)你肯定没玩过……(经典怀旧:无人不知的俄罗斯方块)

导语 警报警报&#xff01;听说CSDN游戏专区火了火了~竟然是因为各种形状的方块。 对&#xff01;各种游戏都快烂大街了&#xff0c;俄罗斯方块咋滴就不能火一把了&#xff1f; Python版俄罗斯方块 等你来战&#xff01; 所有文章完整的素材源码都在&#x1f447;&#x1f447;…

分库分表必知

概述 为啥要进行分库分表&#xff1f; 单表数据量太大&#xff0c;比如超过5000w行&#xff0c;查询时扫描的行太多&#xff0c;SQL效率低&#xff0c;CPU出现瓶颈 数据的切分就是通过某种特定的条件&#xff0c;将存放在同一个数据库或同一个表的数据分散存放到多个数据库&a…

干货 | 数字经济创新创业——网络安全

下文整理自清华大学大数据能力提升项目能力提升模块课程“Innovation & Entrepreneurship for Digital Economy”&#xff08;数字经济创新创业课程)的精彩内容。主讲嘉宾&#xff1a;Kris Singh: CEO at SRII, Palo Alto, CaliforniaVisiting Professor of Tsinghua Unive…

在 ArcGIS 中使用函数块给字段赋随机值 (指定范围内随机编号)

在 ArcMap 或 ArcGIS Pro 中通过使用字段计算器,给字段赋随机值。 通过字段计算器内置的 VB、Python 方法可以构建函数块表达式实现各种各样的赋值操作,下面我们来看看通过使用内置的 Python 函数块来实现随机赋值。 (也可以制作成工具箱哦,更加方便) ArcMap 生成随机值…

智能开关继电器-选型篇2

继电器在智能开关中承担着开通、关断的功能&#xff0c;是开关产品最根本的一项功能。这样一个关键的器件我们将分为两个篇章进行撰写&#xff1a;选型篇1、选型篇2、评估篇。其中选型篇1简述继电器的定义、分类&#xff0c;可参考《智能开关继电器-选型篇1》。选型篇2会在基于…

【TypeScript】类型声明文件的讲解与使用

目录 简介 文件类型 类型声明文件使用 简介 我们发现今天所有的JS应用都会引入许多第三方库来完成任务需求。这些第三方库无论是否是TS编写的最终都会编译成JS代码给开发者使用。我们知道TS提供了类型才有了代码提示和类型保护机制&#xff0c;但我们引入的第三方库都会有相…