当前位置:网站首页>Hinton2022年RobotBrains访谈记录
Hinton2022年RobotBrains访谈记录
2022-08-03 19:52:00 【tzc_fly】
整体访谈内容很多,本篇记录了两个有哲学意义的方面,可以帮助我们站在Hinton的角度理解 当今的对比学习 以及 在有噪声的标签下学习。
Part1:睡眠与学习
为什么你只记得醒来前一分钟的梦,这个思考启发了对比学习(对比学习的一个特点是可以更容易学习到数据的真实隐含信息)
睡眠有一些有趣的地方,似乎生物都需要睡觉,如果人不睡觉,行为会很古怪,精神会错乱,Hinton认为,也许睡眠也应该是计算过程中的一部分,毕竟睡眠对人是具有重要功能的。
目前生信专家的研究表示,睡眠是为了巩固记忆:从海马体下载东西到大脑皮层。但Hinton对睡眠有另一层看法,Hinton认为睡眠是学习的负向阶段。其实现在在对比学习中又出现了这种说法,有两个来自同一图像的patches,我们试着让它们有相似的表示,而两个来自不同图像的patches,我们试着让它们的表示足够不同,一旦它们不同,我们不会进一步让他们不同,但我们会阻止它们更相似,这就是对比学习的原理。
在对比学习中,我们可以把正向阶段和负向阶段分开,我们可以做很多正向对的例子,然后紧跟负向对的例子,这形成一个管道,当我们醒着的时候,我们试着让事物变得相似,当我们睡着时,我们试着让事物变得不同。因此,Hinton 认为也许睡眠的功能是对反向例子中的一些信息进行遗忘。
额外需要多说的一点,为什么对比学习需要负样本,我们有一个网络,我们想要优化一些目标函数,比如优化关于表征的东西。神经网络内部的问题是,你可能会在输入中得到各种相关性,这些相关性与真实数据无关,它们是由于网络的连接(网络中的权重)引起的。如果两个神经元都在看同一个像素,它们就会有相关性,但这不能告诉我们任何关于数据的信息。问题是,我们如何学习,提取关于真实数据而不是关于网络连接结构的信息,方法就是给它提供正向例子,并在其中找到负向例子没有的东西。
Part2:在有噪声的标签下学习
Nips2018:Co-teaching
Paper:Co-teaching: Robust Training of Deep Neural Networks with Extremely Noisy Labels
标签带噪声的深度学习具有很大的挑战性,由于深度模型的容量非常大,以至于可以在训练时迟早记住这些带噪声的标签。关于深度神经网络记忆效应的研究表明,网络首先会记住干净标签的训练数据,然后记住带噪声标签的训练数据。因此,有人提出了一种新的深度学习范式,称为“co-teaching”,用于抵抗标签中的噪声。
噪声标签是真实标签破坏后的状态,因此它们不可避免地会降低模型的鲁棒性,尤其是深度神经网络。不幸的是,噪声标签在现实世界中无处不在。
另外,现在有研究表明深度学习模型的学习过程是这样的:它们可以先记住简单样本,并随着训练而逐渐拟合困难样本。当存在噪声标签时,深度学习模型最终会记住这些错误给定的标签,这导致了较差的泛化性能。这种现象不会随着训练优化(Adagrad或Adam)或网络架构(MLP,Alexnet和Inception)的选择而变化。
Co-teaching的想法是同时训练两个网络,在当前batch中,每个网络选择损失小的样本作为有用的知识,并将这些有用的知识传到另一个网络进行训练。具体来说,我们需要维护两个网络f和g,当面对一个batch时,我们先让f在这个batch上选择一部分损失小的样本。样本的数量由 R ( T ) R(T) R(T)控制, T T T是当前epoch,用这些样本训练网络g,然后g再将损失小的样本传给f进行训练。重复这个过程 N N N次。
样本数量 R ( T ) R(T) R(T)的控制:直观而言,当标签正确时样本的损失才会小。因此,如果我们仅使用每个小批量数据中损失小的样本来训练我们的分类器,那么它应该能够抵抗噪声标签。
但是,这要求分类器足够可靠才能保证损失小的样本确实干净。深度网络的“记忆”效应可以帮助我们解决这个问题。也就是说,在噪声数据集上,即使存在噪声标签,深层网络也会在开始时学习干净简单的模式。因此,他们能够在训练开始时使用他们的损失值过滤掉带噪声的样本。然而,问题在于随着不断的训练,它们最终会过拟合噪声标签。为了解决这个问题,我们希望在开始时的batch中保留更多样本,即 R ( T ) R(T) R(T)很大。然后,我们逐渐增加丢弃率,即 R ( T ) R(T) R(T)变小,这样我们就可以在网络记忆它们之前保持干净的样本并丢弃那些带噪声样本。需要两个网络并交叉更新参数:直观而言,不同的分类器可以生成不同的决策边界,具有不同的学习能力。当学生检查自己的试卷时,他们很难找到错误,因为他们对答案有一些个人偏见。幸运的是,他们可以要求同伴们查看他们的试卷。进而更容易找到潜在的错误。总而言之,来自一个网络的错误不会直接转回本身。
CVPR2020:Noisy student
Paper:Self-Training With Noisy Student Improves ImageNet Classification
首先,我们基于有标签图像,使用标准交叉熵损失训练一个教师模型。然后,我们使用教师模型在无标签的图像上生成伪标签,伪标签可以是软的(连续分布),也可以是硬的(独热分布)。然后,我们基于上述有标签和伪标签图像,使用标准交叉熵损失训练一个学生模型。最后,我们迭代这个过程,将学生模型作为新的教师模型,以生成新的伪标签并训练新的学生模型。
学生的表现会超越老师?
Hinton说他做过这样的实验:MNIST是一个标准的数字数据集,我们可以用错误的标签来替换训练数据中正确的标签,得到一个新的数据集,其中的标签有20%的正确率和80%的错误率。问题是:你能从这个数据集中学习吗?学习的效果如何?答案是,使用teacher-student框架,你可以学习到95%的正确率。
teacher模型有80%的错误率,而student模型有95%的正确率,所以学生比老师要好很多。这看起来非常不合理,但实际上,也许是因为teacher倾向于学习硬分布,这要求teacher强烈拟合到数据集分布上,但student学习的分布是soft的,一定程度上弱化了对于噪声标签的拟合要求。
最后,Hinton幽默地用一个玩笑来反映这个现象:老师的学生总会超越老师;
补充内容:PU Learning
现实生活许多例子只有正样本和大量未标记样本,这是因为获取负类样本较为困难、负类数据太过多样化。PU Learning(Positive-unlabeled learning)是半监督学习的一个研究方向,指在只有正类和无标记数据的情况下,训练二分类器。
目前有两种解决方法:
- 启发式地从未标注样本里找到可靠的负样本,以此训练二分类器,该方法问题是分类效果严重依赖先验知识。
- 将未标注样本作为负样本训练分类器,但由于这种设计,负样本中可能含有正样本,错误的标签指定会影响模型学习。
边栏推荐
- 622 设计循环队列——Leetcode天天刷【循环队列,数组模拟,双指针】(2022.8.2)
- ECCV2022 | 用于视频问题回答的视频图Transformer
- Statistical machine learning 】 【 linear regression model
- C中的数据存储
- Postgresql snapshot optimization Globalvis new system analysis (performance greatly enhanced)
- Solidity智能合约开发 — 4.1-合约创建和函数修饰器
- Golang死信队列的使用
- 详解AST抽象语法树
- Execute the mysql script file in the docker mysql container and solve the garbled characters
- Detailed demonstration pytorch framework implementations old photo repair (GPU)
猜你喜欢
随机推荐
友宏医疗与Actxa签署Pre-M Diabetes TM 战略合作协议
Golang死信队列的使用
友宏医疗与Actxa签署Pre-M Diabetes TM 战略合作协议
epoll + 线程池 + 前后置服务器分离
glide set gif start stop
C中的数据存储
小马智行起诉擎天智卡:索赔6000万 彭军称要斗争到底
钱江摩托某型号产品ECU货不对版 消费者知情权应如何保障?
「游戏建模干货」建模大师几步操作,学习经典,赶紧脑补一下吧
The addition and subtraction of the score of the force deduction brush question (a daily question 7/27)
dpkg强制安装软件
1-php学习笔记之数据类型
Shell编程之循环语句
力扣刷题之爬楼梯(7/30)
网络协议-TCP、UDP区别及TCP三次握手、四次挥手
按需视觉识别:愿景和初步方案
pg_memory_barrier_impl in Postgresql and C's volatile
面试突击:什么是粘包和半包?怎么解决?
傅里叶变换(深入浅出)
MySQL 主从,6 分钟带你掌握!