做100个垂直网站,怎么做可以使网站跳转,网站的风格,wordpress 图片 主题 52文 | 游凯超源 | THUML引言在深度学习时代#xff0c;神经网络的参数量越来越大#xff0c;从头开始训练(train from scratch)的成本也越来越大。幸运的是#xff0c;在计算机视觉、自然语言处理等人工智能应用的主要领域#xff0c;人们能够采用迁移学习的预训练-微调范式… 文 | 游凯超源 | THUML引言在深度学习时代神经网络的参数量越来越大从头开始训练(train from scratch)的成本也越来越大。幸运的是在计算机视觉、自然语言处理等人工智能应用的主要领域人们能够采用迁移学习的预训练-微调范式来有效降低训练成本。迁移学习使得深度神经网络以预训练模型的形式走进千家万户不用上千块TPU我们也能够使用BERT、EfficientNet等大型模型。如今对于深度学习框架来说丰富的预训练模型库已经是标配了(例如TensorFlow Hub, Torchvision Models)。在一些研究领域(比如2020年非常热门的自监督学习)研究成果最终也是以预训练模型的方式呈现给社区。在深度学习社区里一些热门领域已经积累了成百上千个预训练模型。面对众多预训练模型我们在进行迁移时该用哪一个好呢这个重要问题很少有人研究因此人们目前只好使用一些简单粗暴的办法:使用常见的预训练模型(例如ResNet50)使用预训练指标(例如ImageNet准确率)高的模型如果想要准确地选择最好的预训练模型我们需要把每一个候选模型都做一遍微调。因为微调涉及到模型训练时间至少几个小时起步。有些预训练模型的微调还需要进行超参数搜索想要决定一个预训练模型的迁移效果就需要将近50个小时针对这一问题我们进行了深入探究提出了一种名为LogME的方法。它能极大地加速预训练模型选择的过程将衡量单个预训练模型的时间从50个小时减少到一分钟疯狂提速三千倍目前该论文已被ICML2021接受。论文标题LogME: Practical Assessment of Pre-trained Models for Transfer Learning论文链接https://arxiv.org/abs/2102.11005GitHub链接https://github.com/thuml/LogME问题描述预训练模型选择问题就是针对用户给定的数据集从预训练模型库中选择一个最适合的预训练模型用于迁移学习。其流程可以简单概括为下图核心就是要对每一个预训练模型进行迁移性评估(Transferability Assessment)简单来说就是为每个模型打分然后选择出打分最高的预训练模型。▲预训练模型选择问题最直接的打分方法就是将预训练模型在给定数据集上进行调参、微调将最终的准确率或者其它衡量指标作为预训练模型的分数。我们将这种方法称为ground-truth方法它的选择效果无疑是最好的总是能选出最合适的预训练模型。然而它的时间开销太大(每个预训练模型需要50小时)因此无法实用。一个好的打分标准需要在保持与ground-truth打分的高度相关性的同时尽可能降低时间开销才能满足实际使用的要求。除了ground-truth方法之外目前还有两种打分方法(LEEP和NCE)但是它们的使用范围非常有限只能用于有监督预训练模型迁移到分类任务的场景如下表所示而我们提出的LogME则能够胜任几乎所有常见的场景覆盖了视觉、NLP、分类、回归、有监督预训练模型、无监督预训练模型等方向。▲应用场景比较LogME能胜任几乎所有常见场景LogME方法LogME的优越性能来自于以下三个方面(1)无须梯度计算;(2)无须超参数调优;(3)算法实现优化。下面围绕这三个方面对LogME进行具体介绍。为了加速预训练模型选择我们仅将预训练模型视作特征提取器避免更新预训练模型。这样只需要将预训练模型在给定数据集上前向传播一遍就可以得到特征和标注。于是这个问题就转化成了如何衡量特征和标注之间的关系也就是说这些特征能够多大程度上用于预测这些标注。为此我们采用一般性的统计方法用概率密度来衡量特征与标注的关系。考虑到微调一般就是在预训练模型的特征提取层之上再加一个线性层所以我们用一个线性层来建模特征与标注的关系。说到这里很多人会想到一种直观的方法是通过Logistic Regression或者Linear Regression得到最优权重然后使用似然函数作为打分标准。但是这样容易导致过拟合问题而且这些方法也有很多超参数需要选择这使得它们的时间开销很大且效果不好。我们选用的是统计学中的证据(evidence,也叫marginalized likelihood)来衡量特征与标注的关系。它不使用某个特定的的值而是使用的分布来得到边缘化似然的值。它相当于取遍了所有可能的值能够更加准确地反映特征与标注的关系不会有过拟合的问题。其中与分别由超参数和决定但是它们不需要grid search可以通过最大化evidence来直接求解。于是我们就得到了对数最大证据(Log Maximum Evidence, 缩写LogME)标准来作为预训练模型选择的依据。具体数学细节不在这里赘述感兴趣的读者可以阅读底部的论文。算法的具体细节在下图中给出了。注意虽然LogME计算过程中将预训练模型视作特征提取器但是LogME可以用于衡量被用于迁移学习(微调)的性能。▲LogME算法具体流程值得一提的是LogME算法涉及到很多矩阵分解、求逆、相乘操作因此一不小心就容易使得算法的复杂度很高(例如上图第9行粗糙的实现方式)。我们在深入研究该算法后发现很多矩阵运算的开销可以通过巧妙的计算优化手段大大降低因此将计算流程优化为上图第10行整体的计算复杂度降低了一个阶从四次方降低为三次方(见下表)使得该算法在数秒内就能处理常见情况。▲优化前后复杂度对比n是数据量D是特征维度K是类别数目实验在实验部分我们用合成数据、真实数据等多种方式方式测试了LogME在17个数据集、14个预训练模型上的效果LogME在这么多数据集、预训练模型上都表现得很好展现了它优异的性能。合成数据首先让我们看看LogME给出的打分标准与人的主观感觉是否一致。我们为分类问题和回归问题分别设计了一个toy实验使用生成数据来测量LogME的值。从下图中可以看出不管是分类任务还是回归任务当特征质量越来越差时LogME的值也越来越低说明LogME可以很好地衡量特征与标注的关系从而作为预训练模型选择的标准。▲特征质量越来越差时LogME也越来越低。接下来我们用LogME来进行预训练模型选择。我们使用若干个常用预训练模型通过耗时的微调过程得到它们的迁移性指标然后衡量LogME与迁移性指标的相关性。相关性指标为加权肯达尔系数它的取值范围是。相关系数为意味着如果LogME认为预训练模型比好那么确实比好的概率是。也就是说越大越好。有监督预训练模型迁移到分类数据集我们将10个常用预训练模型迁移到9个常见分类数据集中发现LogME与微调准确率有很高的相关性(见下图)显著优于之前的LEEP和NCE方法。在这几个数据集中LogME的相关系数至少有0.5大部分情况下有0.7或者0.8也就意味着使用LogME进行预训练模型选择的准确率高达85%或者90%。▲有监督预训练模型迁移到分类数据集值得注意的是之前的LEEP和NCE方法只能用于这一种场景。接下来的实验(回归任务、无监督预训练模型、NLP模型及任务)只有LogME能处理。有监督预训练模型迁移到回归数据集我们也做了回归任务相关的实验可以看到LogME与MSE有明显的负相关性而MSE是越低越好LogME是越大越好结果符合预期。▲有监督预训练模型迁移到回归数据集无监督预训练模型在2020年视觉领域的重要进展之一就是无监督预训练模型。因此我们也尝试了使用LogME来判断无监督预训练模型的质量。从下图的结果来看不论是分类任务(Aircraft)还是回归任务(dSprites)LogME都能准确衡量无监督预训练模型的质量。▲使用LogME来衡量无监督预训练模型自然语言处理任务LogME并不局限于视觉模型与任务我们还测试了它对NLP预训练模型的评价能力。可以看到在五个任务上LogME完美地预测了四个预训练模型的表现的相对大小在另外两个任务上的表现也不错。![LogME衡量NLP预训练模型]时间加速LogME方法不仅效果好更难得的是它所需要的时间非常短可以快速评价预训练模型。如果将直接微调的时间作为基准LogME只需要0.31‰的时间(注意不是百分号是千分号)也就是说加速了3000倍而之前的方法如LEEP和NCE虽然耗时更少但是效果很差适用范围也很有限完全不如我们的LogME方法。▲各种方法耗时比较LogME加速3000倍值得注意的是像LogME这种根据概率公式计算的方法一般效果更好但是耗时也更高。事实上如果我们采用简单粗暴的实现评估一个模型就需要八百多秒。正是有了精心优化的版本我们才能够既有概率方法的优越效果又有简单高效的实现。展望因为它的准确、快速、实用性我们相信LogME除了能够用作预训练模型选择之外还能够在其它领域有所作为。例如在无监督预训练中评估一次预训练模型就需要在整个ImageNet数据集上进行linear protocol evaluation整个过程需要几个小时。若采用LogME则只需要一分钟不到因此可以在训练过程中将LogME作为early stopping的准则。后台回复关键词【入群】加入卖萌屋NLP/IR/Rec与求职讨论群后台回复关键词【顶会】获取ACL、CIKM等各大顶会论文集