谈谈实现小样本学习的两条路径
小样本学习是当下机器学习界的一个核心课题。大数据是当下深度学习的咽喉,面临收集成本昂贵,甚至根本无法采集的弊端, 小样本学习的实践价值不言而喻。对于众多产业来说, 真正能够收集到大量样本的是极少数情况,比如人脸识别,互联网上的文本等。而更广大的行业, 数据本身收集就很难,一些隐私伦理等障碍难以跨越,比收集数据更难的还有标注,大数据支撑的机器学习基本使用无望。所谓小样本学习,就是使用远小于深度学习所需要的数据样本量, 达到接近甚至超越大数据深度学习的效果,也即是小样本学习的本质就是学习的效果与数据比值的提升, 或者说单位数据产生的模型收益增大了 。与之高度相关的课题其实是迁移学习, 元学习, 提高模型泛化性能, 这些方法, 本质是在不对数据使用量进行限定的情况下, 如何让同一模型用到更广泛的数据分布和更多的任务, 因此它们是一颗硬币的两面。多一分泛化能力,就少一点数据成本。那么, 小样本学习究竟有没有可能?这个问题其实是细思恐极。因为这个命题就像永动机一样, 似乎违反了能量守恒。不应该是有多少数据, 有多少模型效果吗?这里事实上一被忽略的盲点是先验知识, 二被忽略的是盲点是数据利用效率。如果没有任何先验知识, 当然是有多少数据有多少模型。然而, 如果先验知识是充足的, 那么其实可以数据不足, 知识来凑。另一条路则是提高单位数据的使用效率, 如果每个数据对模型的改进都是有效的,远离随机游走。
也就是说, 实现小样本学习的方法, 主要是 1, 如何让给定模型具备相关任务的先验知识, 2, 如何让每个数据产生的学习效果更加一步到位。关于1,其实这也是人类可以小样本学习的关键,所以我们就从人的认知力说,首先谈谈概念的学习和使用有关1的方法, 事实上很多, 我觉得如果让对它们进行分类,就要对先验知识的理解和表示进行分层。比先验知识更好的一个词是世界模型, 因为世界模型蕴含了不同层次的知识, 而且知识和知识不是孤立的, 而是存在因果联系的一个网络,也就是它对应一个被理解的世界,而不是死记硬背的词条。这个世界模型里的知识是有层次的。站在最底层的是一些特别基本的先验,而高层的对应更加具体的知识。 对于比较根本的先验, 通常对应真实物理世界的常识,有一些常识熟悉到我们已经忽略到了它们的存在。比如时间,空间,运动,因果本身。这些先验往往对应我们在婴儿期就掌握的一种从进化,发育,和早期探索得来的知识,通常被称为intuitive physics。这些先验一旦被利用,将大大减少需要的样本数。比如卷积就是抓住了空间平移这一类先验。虽然卷积的学习速度依然是缓慢的,但是相比一个全连接网络已经好太多。
另一类先验更为具体, 对应长期记忆中的基本概念的细胞,比如不同的颜色,老人儿童动物植物的区分, 这些是组成事物最根本的概念,比比刚说的intuitive physics 要具体, 但是相当于特定领域的知识,它们依然是非常基本的。这些先验的掌握, 会在特定的问题上大大减少需要的数据量。其中一类非常重要的概念, 是关于关系的假定, 比如加减法, 位置的相对关系, 关于概念比较等,有了这些关系, 基本概念可以组合成复杂概念, 这样对于新的复杂概念的学习可能仅仅需要几个样本。关于关系的常识里对时间预测特别重要的是因果关系, 和刚刚说的因果概念本身, 这里指的是各个领域里更为具体的因果常识,比如水往地处流, 有了这些关系先验, 对未发生的事情的预测需要的数据样本将大大减少,就好比掌握了基本物理定律的人很容易预测各类运动。然后我们来看看基本能力人的复杂能力无疑是由各种基本能力组成的, 比如我们经常做的那些智商测试事实上是在测试我们的基本能力, 如记忆能力, 想像力, 推理能力。有的人具有很好的视觉工作记忆,看过一个东西过目不忘, 也有的人对数字敏感这是基本能力的不同。这些基本能力对应我们不同的脑区的一种素质, 这些脑区的组合成就了具有综合能力的人,使我们学习新的任务非常迅速。从这两个角度看,小数据学习这件事压根不存的,是构建在“进化” 这个低效的大数据学习基础上筛选出来的各种基本概念或能力上的。但是,一旦有了这些先验和概念,我们的大脑就可以根据基本概念和关系,构成新的概念, 新的概念和旧的概念连成网络,预测感官世界的改变,最终构成世界模型的本体, 也构成人脑很快可以根据一两个数据来学习的基础。一句话说,就是人的学习建立在人脑的模型之树上, 里面的知识有的是我们意识到的, 有的我们甚至意识不到。我们没有哪一个学习是孤立的从零开始的训练。我们再来看机器学习,当下机器学习所使用的知识还极少真正用到了人类世界模型的本体, 而是跟多的是领域依赖的零碎的先验。它们的存储形式也可以根据不同的方法分为知识图谱那种显式的符号化的知识, 和隐藏在网络权重里分布式存储的隐式知识, 甚至也有存储在贝叶斯条件概率中的统计知识。这些知识的获取方法, 已经构成了小样本学习的基础, 我们就来看看其中的一些范式:通过构建先验的范式1, 基于预训练的范式Transfer learning 已经基础成为图像处理领域的范式,这一类模型往往基于一个大规模的公共数据集训练一个基础网络(backbone), 在未来的需要迁移的数据集在finetune一个classifier。经过ImageNet预训练的ResNet 50 可以作为各类视觉任务的基础网络(backbone)也是广为人知, 只要所学习的数据离ImageNet包含的类型不是那么远这个方法都有保证。事实上这就是小样本学习的最基本方法。更为突出的则是自然语言处理领域的Bert和GPT-3, 它们不仅使用了所有可以找到了所有可能的网络文本作为预训练的素材,而且其网络参数的巨大和框架的表达力使得它们成为所有下游自然语言处理任务的超级基础, 在此基础上, 模型在很多类任务上实现了zero-shot or one-shot 学习。Transfer learning是否可以减少训练数据本质取决于:1, 训练backbone的大数据集和最终需要小数据学习的特定数据集的差距。2, backbone 到底掌握了多少解决不同领域问题的基础知识。 在无法量化1和2的时候,这个效果就有点炼金术的感觉。值得一提的是,当下的因果推断给出了对这一问题定量的一定依据。因为backbone里掌握的知识如果越接近下游任务的因, 则transfer Learning的效果会更好。当下开始慢慢进入主流的一个迁移学习范式,是所谓的自监督学习,被lecun这类大牛认定为深度学习的救赎。这类学习范式通常免除了数据收集的魔咒就是标注。比如我们的摄像头每天无时无刻的看着这个世界的变化,它没有标注。我们的网络无时无刻的记录着没啥意义的网络文本和图片, 这些数据被收集下来, 却无法被利用。自监督的方法就打开了一扇大门把这些数据里隐含的结构性信息给挖掘出来。这个学习的通常范式是把这些原始数据的一部分遮盖住, 让机器猜测被遮盖的部分, 或者把数据分段,用过去一段的数据预测下一段的数据,机器猜测和预测的过程就会学习到一个生成模型, 学到视频或自然语言背后的结构性信息。 另一类崛起的范式是contrasive learning,对比性学习,比如在一个图片里抠出一小块,放到一大堆图片里让机器发掘是哪个图片里出来的, 这本质有点像聚类, 让机器充分的去比较相同或比较不同,最终发现图片里的结构信息。这两种范式都可以在认知科学里找到一定对应,尤其是第一种, 和生物的预测性编码息息相关,有兴趣的同学可以关注贝叶斯大脑。经过这一类预训练的模型通常在后续任务里样本需求大大下降。
基于Metric的元学习范式
学到生成模型的模型的元学习范式
基于优化的元学习范式3, 模块化系统
模块化的系统,可以通过模块的复用或组合迅速的实现小样本学习。我本人在ICLR2020的网络, 通过先预训练不同认知功能的模块(比如认知地图,或者事件记忆),实现了在新环境里快速学习导航任务的泛化能力。基础模块的学习本身其实可以看做是一个元学习的方法,因此可以看做是2的一种特殊情况。许铁的文章IMPLEMENTING INDUCTIVE BIAS FOR DIFFERENT NAVIGATION TASKS THROUGH DIVERSE RNN ATTRRACTORS , ICLR 2020训练Agent 智能体通过其RNN动力学掌握对不同环境侧面的认知能力, 包括对空间位置和事件的认知和记忆能力, 从而导致Agent在各种不同导航任务中的不同性能, 最终组合这些网络模块,使得agent可以用少量样本在新环境达到极高性能。
多任务设置
从预训练的不同网络中筛选出来组合4, 记忆系统深度强化学习是一个需要特别大数据样本的学习范式。本质上, 我们需要在大量经验的基础上获得Q value。相比之下, 人类可以一招被蛇咬,十年怕井绳,说明只需要被蛇咬一次,就可以学到对同类事物的价值泛化(绳子 近似 蛇 等于 危险)。这种能力的获得是因为人具备情景记忆的能力。大量的经历被抽取到海马中, 使得人能够从相似的经历中抽象出一些共同的模型,在新的事件出现的时候, 通过做比较的方法, 来得到一个Q函数, 从而快速的学习,所谓以史为镜,可以明得失。例如:Continual and Multi-task Reinforcement Learning With Shared Episodic Memory ,通过提高数据利用效率的范式-
5 改善优化方法事实上另一种小样本学习的方法是如何提高每个样本的使用效率。这就不得不提提当下深度学习速度慢的一大根源,就是随机梯度下降法, 随机梯度下降, 本质上是利用梯度函数, 在非凸的复杂曲面上摸索寻找最优参数。一个小批量数据进来, 对整个目标的优化是非常有限的。但是在传统机器学习里, 有很多学习方法可以更充分的利用每个数据, 比如recursive least square这样的直接求最优解的方法,或者SVM这种通过对偶空间得到的优化方法。甚至生物学习的基本方法Hebbian learning ,也有比深度学习当下的随机梯度下降法更高的数据利用率。在hebbian learning中,不同刺激引起的神经元先后放电会加强两者的联系,从而可以直接把两个不同的信号联系起来。因此, 如何改善学习方法也是实现小样本学习的重要途径。在优化方面,一个小数据学习的致命杀手是灾难性遗忘, 也就是当模型需要连续的学习一些改变, 比如先识别1,2,3 ,再识别4,5,6, 学过1,2,3的网络往往很快就忘记了4,5,6,这无疑降低了数据利用率。有一些优化的方法可以有效的缓解这一问题 ,其中有些还用到了脑启发的算法。比如最近余山老师的文章。蓄水池训练有效利用了神经网络内在的动力学事实上 , 对所有网络权重进行一个简单的梯度下降正好显现了我们对神经网络数学本质的无知。比如一些研究显示, 如果需要控制一个RNN网络的功能, 其实真正需要改变的权重数量是很少的。这些研究来自对梯度下降的RNN进行理论研究的团队。虽然整个RNN 的隐层网络的参数等于神经元的数量的平方,但是并不是改变所有这些参数都有意义。生物大脑的网络连接synapse每时每刻都在进行着微小的随机扰动, 但是我们的日常认知功能却从来都十分稳定,这说明决定一个网络功能的可能不是网络权重大小的具体值。一个被称为low rank pertubation的理论指出, 控制这样一个巨大的神经元数量平方级参量的网络,只需要控制一组和神经元数量成线性的向量即可, 这组向量叠加在整个随机网络之上,就可以让网络表现出各种不同的认知功能。Linking Connectivity, Dynamics, and Computations in Low-Rank Recurrent Neural Networks这些工作指出的一种可能性,是我们当下的学习训练方法类似于前牛顿时代的工匠雕砌, 虽然也可以做的出罗马的大斗兽场,却是一种效率低的多的方法 。如果发现了真正的牛顿力学,这一切都是轻而易举的。
更多阅读谈谈元学习的技术实现框架
非线性动力学特辑 - 低维到高维的联通者
贝叶斯大脑
论文速递:通过模拟大脑-解决深度学习中的灾难性遗忘
xmsjfsina2020-11-21 20:06:59
小样本学习: 实践价值重大 ★大数据: 收集成本昂贵;根本无法采集;数据标注更难. ★方法: 1.数据不够, 知识来凑,为模型提供先验知识;2.让数据的学习效果更加有效,远离随机游走. 一.构建先验的范式: 基于预训练;基于元学习;模块化运用;记忆泛化法;改善优化法. 二.减少模型的参数: 把握网络整体; 发现控制参量.
0.0智能=学习知识,使用知识,思考2020-11-21 21:15:09
控制变量法,做假设,再实验验证。 科学研究怎么做实验的,机器学习深度学习就应该怎么做。 而不是拿着梯度下降,反向传播不放。 啥时候网络学会概率论会数学逻辑,开始大胆假设,实验数据验证 通用人工智能才成功。 我学知识,用知识,研究知识,所以我存在。 功能:学知识,用知识,研究知识的个体整体,就是我就是智能。 功能一样的事物就是同一事物。
xmsjfsina2020-11-21 20:16:10
[强][奋斗]小样本学习: 实践价值重大 ★大数据: 成本昂贵; 无法采集; 标注更难. ★基本方法: 1.知识凑数, 提供先验知识; 2.提升效果, 远离随机游走. ★主要途径: 1.构建先验范式: 预训练;元学习;模块化运用;记忆泛化法;改善优化法. 2.减少模型参数:把握网络整体;发现控制参量.
陶静2020-11-21 18:14:45
再记录一下:知识图谱可以类比显性的知识体系,参数和权重类比隐形的知识。人很多的判断也是靠潜意识多维度来判断,如果仅靠知识图谱来学习效率就很低。
陶静2020-11-21 17:14:44
谢谢老铁 Contrastive learning确实是第一次看到