Test-Time Training with Self-Supervision for Generalization under Distribution Shifts 论文阅读报告

前言

因为最近都在看TTT相关的文章,所以继续看,这篇的来源是之前看的论文的(放一下链接:https://proceedings.mlr.press/v119/sun20b/sun20b.pdf )

正文

刚看完开头,没想到是在CV领域的一篇论文,果然这种结构其实都是可以通用的吗,虽然和llm没关系但是还是继续看,反正我时间很多(大概

动机

作者是怎么想到这个办法的?为什么会想到这个办法,或许这个问题有时候连作者本人都回答不了,但是我还是会很好奇的揣测一下。我在下面尝试推测一下:

  1. 从绪论部分看的话,作者也是想要解决模型的泛化不强问题

Supervised learning remains notoriously weak at generalization under distribution shifts. Unless training and test data are drawn from the same distribution, even seemingly minor differences turn out to defeat state-of-the-art models (Recht et al., 2018).

( 真是一个永恒的问题),但是从理论上来说,一个模型的泛化能力再强,碰到训练集里从未出现的玩意之后还是难办,所以作者没有继续跟着前人的步伐,试图通过拓扑结构或训练期间可用的测试分布数据来预测训练和测试分布之间的差异,而是另辟蹊径,想到了直接在测试的时候,根据新的数据来更新参数,
2. 但是问题又来了,这个时候更新,没有标签怎么办? 作者就用了自监督训练的办法来解决这个问题,所以接下来要找一个办法进行快速的自监督学习。
3. 然后作者找到了一个很简单的办法(将每个输入图像旋转 90 度的倍数并预测其角度的任务 (Gidaris et al., 2018)。)用这个办法能实现自监督训练。如果多个测试样本以批次到达,可以使用整个批次进行测试时训练。如果样本以在线流的形式到达,可以通过保持参数状态来获得进一步的改进。(显然,这两种数据的数据方式也让作者在之后的流程中开发出了两种TTT办法)
4. 但是如果要全参数重新训练调整的话,是不是效率太低了,可以不可以用一个辅助模型,只更新部分参数就好?这样的话,可以极大的提升效率(我能想到例子就是大模型的lora网络)(这个部分是我猜的)
5. 好像整体的思路都跑通了,那具体怎么来操作呢?那就是我下面章节要说的。

具体流程

其实我不打算讲太多,只想提几个我认为重要的点,毕竟这篇文章主要还是给我自己看的(
就像上面我说的,作者的思路其实很清晰,但是每一步的实现会有一些细节的操作要提一下:

  1. 自监督学习部分其实没有啥要提的,我感觉这个方法真挺有意思的:

In this paper, we choose the rotation prediction task (Gidaris et al., 2018), which has been demonstrated to be simple and effective at feature learning for convolutional neural networks. The task simply rotates
x in the image plane by one of 0, 90, 180 and 270 degrees and have the model predict the angle of rotation as a fourway classification problem.

可以说符合我对于简单但是好用办法的想象

  1. 然后是训练部分,这里其实要提一点:作者提到了联合训练和预测时训练,
    这里面联合训练 (Joint Training) 是指在训练阶段,主模型和辅助模型同时进行训练,共享部分参数。
    而预测时训练 (Test-Time Training) 则是指在预测阶段,利用单个未标记测试样本进行自监督学习,更新共享的特征提取器参数,然后再进行预测。
  • 两者之间的关系:
    联合训练为预测时训练提供了基础,使其能够利用共享的特征提取器进行快 速学习。
    预测时训练则进一步提高了模型在分布偏移情况下的泛化能力,使其能够适应不同的测试分布。
  • 总结:
    联合训练和预测时训练是 Test-Time Training 方法的两个重要组成部分,它们相互配合,共同提高了模型的泛化能力。
  1. 然后是作者还提出了两种TTT模式:TTT 和 TTT-Online ,是两种训练方式
  • TTT (Test-Time Training):标准版本,对于每个测试样本,使用辅助模型对其进行自监督学习,更新共享的特征提取器参数,然后使用更新后的参数进行预测。
  • TTT-Online (Online Test-Time Training):在线版本,对于每个新的测试样本,使用上一次更新后的参数作为初始参数,进行自监督学习,更新共享的特征提取器参数,然后使用更新后的参数进行预测。这种模式允许模型在测试阶段持续学习,并根据新的测试样本不断调整其参数。
    两种模式的区别:
  • TTT: 每个测试样本都会独立地进行自监督学习和预测,参数更新后的结果不会影响后续测试样本。
  • TTT-Online: 每个测试样本的参数更新都会基于上一次更新后的参数,这意味着模型会持续学习并积累经验,从而更好地适应分布偏移。
    适用场景:
  • TTT: 适用于测试样本是独立同分布的情况,例如在标准的图像分类任务中。
  • TTT-Online: 适用于测试样本不是独立同分布的情况,例如在视频帧识别任务中,后续帧可能受到先前帧的影响。

我学到了什么

看这篇论文非常快,作者逻辑很清晰,公式很好理解,方法很明晰,当然也可能是因为结果部分占比比较多而我又跳着看这个(因为结果的各类比较对我来说没有什么作用

总之看完之后,我感觉我的收获就是对TTT理解更多了一些,TTT本质就是在测试阶段想要使用自监督学习来进行部分参数的调整来应对不在训练集的问题,所以在llm中,用的就是lora来当作辅助模型这个部分来更新参数,我感觉这个操作现在在我看来是一个更加顺理成章的操作了。

同时看完这篇文章之后我还更加理解了一个问题,就是辅助网络要经历两次训练,一次是跟着主模型训练,一次是推测时训练,也就是上面提到的联合训练和预测时训练,这样操作的话不仅是提升了辅助网络的泛化能力,还因为辅助模型会生成自监督任务,所以能够为主模型提供额外的监督信号

因为在联合训练中,使用相同的训练数据同时训练主模型和辅助模型。在训练过程中,主模型的损失函数和辅助模型的损失函数会进行加权求和,并用于计算所有参数的梯度

这有助于防止主模型在训练数据上过拟合,从而提高模型在测试数据上的性能。
但是需要注意,在联合训练过程中,两个模型的训练任务时不一样的,主任务是图像分类,辅助任务是图像旋转预测,这是辅助模型能为主模型提供额外的监督信号的原因。

后记

这次的文章结构又变了,我感觉还是会继续变,随着我看的论文越来越多,我记录的东西的深度和广度一定是会变化的,我想记录的,对我来说有用的东西肯定也是会变化的,这很正常。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值