1、先提一篇有趣的:
定义了一门形式语言,可以用这门语言来编程解决一些小问题(比如排序之类的),以及把程序“翻译”成对应的 transformer 模型,还能用程序的调用深度来分析问题需要多少层 transformer 来建模。
2、一个优化器的小细节:
大意是说现在带动量的优化器和自适应学习率的优化器的 weight decay 实现还是有问题(包括 AdamW 修复的那个版本),它又修了一遍,然后 Adam + weight decay 的效果就跟 SGD 差不多了。
一更:
Optimization:
- STABLE WEIGHT DECAY REGULARIZATION:修复各种 momentum/adaptive 优化器 weight decay 的问题,修复之后的 AdamS 比其他各种 Adam 变体(包括 AdamW)都好,跟 SGD 泛化性能差不多
- Apollo: An Adaptive Parameter-wise Diagonal Quasi-Newton Method for Nonconvex Stochastic Optimization:一个模仿拟牛顿法的优化器,这是我第一次见到类似方法的优化器在大规模随机非凸优化上成功,从文章实验来看在 RNN 语言模型上效果拔群。但是这个优化器超参比较奇怪,在不同任务上差异很大。
- A CHAOS THEORY APPROACH TO UNDERSTAND NEURAL NETWORK OPTIMIZATION:提出了一个有效的方法来估计神经网络模型损失函数的 Hessian 矩阵的最大特征值 h0,并发现学习率 lr 在很大的一个范围内的时候,SGD 都会周游损失函数地貌里 h0=1/lr 的地方(除非学习率太小,损失函数曲率不可能无穷大),也就是说 SGD 会隐式地利用二阶信息。这也解释了 batch size/lr 和泛化性负相关的原因(在 batch size 不变的情况,当 lr 变大时,SGD 探索的地方曲率较小,会找到 flat minina,从而泛化较好)
- THE LARGE LEARNING RATE PHASE OF DEEP LEARNING:记 lambda_0 为模型初始化以后 Fisher 信息矩阵的最大特征值,如果模型是线性的,那么当学习率大于 2/lambda_0 时训练就会发散,但是对于非线性的神经网络来说可能结果会不一样。如果学习率小于 2/lambda_0,那么会进入懒惰区 lazy phase,模型几乎一直在一个线性区域里散步,仅仅收敛到初始点附近;而如果学习率大于 2/lambda_0 但小于某个最大临界值(理论推出来是 4/lambda_0,对 ReLU 网络实测大约是 12/lambda_0)时,模型处于弹射区 catapult phase,前几步 loss 越来越大,迭代的点越弹越远,直到找到一片更好的区域(即满足学习率 < 2/lambda_t )时又开始慢慢收敛,并且收敛到 flat minimum,达到最好的收敛效果。当然,如果初始学习率大于弹射的最大临界值,训练就发散了。
- RMSPROP CAN CONVERGE WITH PROPER HYPERPARAMETER:Reddi 在 2018 年构造过著名的 RMSProp/Adam 不收敛的例子,这篇文章说你把 beta2 这个超参数调大一点(更接近 1)就收敛了,RMSProp 关于 beta2 有个相变。
- SCHEDULED RESTART MOMENTUM FOR ACCELERATED STOCHASTIC GRADIENT DESCENT:每隔一段时间重启一下 Nesterov 加速动量,可以加速收敛、减小训练时的震荡,最终收敛效果也要好一些,在越深的模型上效果越明显(1k 层 ResNet)。
- DIRECTION MATTERS: ON THE IMPLICIT REGULARIZATION EFFECT OF STOCHASTIC GRADIENT DESCENT WITH MODERATE LEARNING RATE:以一个过参数化的线性回归问题为例(已知 GD 和 SGD 在该问题上都会收敛到范数最小的解),作者研究了 GD 和 SGD 在学习率中等的时候的优化路径(学习率很小的时候两者路径差不多,都是蜗牛爬),发现 GD 会沿着数据矩阵的特征值小的方向走,而 SGD 则沿着特征值大的方向走(论文里的图很直观)。这导致的结果是,假如采用早停, SGD 得到的模型更好(因为已经快收敛了),此外也解释了为什么学习率要随着批大小线性增加(这才能保证 SGD 训练时的方向偏好),以及当损失函数停止下降的时候为什么要用高学习率接着训练(损失不降是因为这时候 SGD 比较难拟合特征值大的方向;但是其实它在先拟合特征值小的方向,最终这会导致它在未来拟合特征值大的方向)。
- DYNAMIC OF STOCHASTIC GRADIENT DESCENT WITH STATE-DEPENDENT NOISE:认为随机梯度噪声与状态有关,服从幂律,并证明 SGD 从盆地逃出的平均逃逸时间是盆地高度的多项式,因此能够有效逃脱 sharp minina,倾向于停留在 flat minima。
- OPTIMIZATION VARIANCE: EXPLORING GENERALIZATION PROPERTIES OF DNNS:作者发现方差主导了 epoch-wise double descent 现象,而且跟测试误差的相关性很高。此外提出一个指标 Optimization Variance(取不同样本做一步梯度下降,模型预测值的方差。仅针对分类任务),可以在无需验证集的情况下,使用该指标指示早停。不过 OV 会出现双下降的原因还没搞清楚。
- A GENERAL FAMILY OF STOCHASTIC PROXIMAL GRADIENT METHODS FOR DEEP LEARNING:针对深度学习中常见的带有正则的损失函数,本文提出了一个通用随机近端梯度下降方法 PROXGEN,并具体给出了 Adam 的近端版本。作者用很多不同的 L_p (p=0, 1/2, 2/3, 1)正则项都做了实验,显示了本文方法的通用性和优越性。
- WIDE-MINIMA DENSITY HYPOTHESIS AND THE EXPLORE-EXPLOIT LEARNING RATE SCHEDULE:用实验验证 wide optima 比 narrow optima 更好,而且 wide optima 密度更低。提出 Knee Schedule,即先用高学习率学一阵儿,然后线性衰减到零。在很多模型(ResNet, BERT, ...)上都表现比较好。
- Flatness is a False Friend:一般认为模型泛化性是跟损失函数地貌的平坦性相关的(flat minima 泛化好,sharp minima 泛化差)。但作者给出了使用 L2 正则约束参数量级,结果导致模型收敛到泛化性更好的 sharp minima 的反例。作者说明,为了让训练损失趋于零,参数要跑到无穷远的地方,这时损失函数地貌更平坦,模型泛化性却没有限制参数量级的、收敛到 sharp minima 的模型好。泛化性和极值点附近损失函数地貌平坦性之间的关系还需要进一步被探索。但我感觉构造有些太刻意了,大部分情况下都不至于嘛。
NLP:
- Rethinking Positional Encoding in Language Pre-training:提出 TUPE(Transformers with Untied Positional Encoding),输入部分只用 word embedding,在 self-attention 引入位置信息(忽略 content 和 position 各自使用不同的变换矩阵计算注意力分数,去掉两者的交叉项,同时引入相对位置偏置)。此外单独处理 [CLS] 的 attention 信息,因为 [CLS] 需要提取全局信息,而其他词只需要提取局部信息。
- RETHINKING EMBEDDING COUPLING IN PRE-TRAINED LANGUAGE MODELS:很多预训练语言模型的输入和输出词向量是共享权重的(形状互为转置),但是在预训练-精调的新范式下,作者发现把这两个参数解耦会更好。输入词向量很多参数是冗余的,不如把这部分维度减小,多出来的参数预算放到模型层数或者输出词向量上。使用更大的输出词向量维度预训练可以减少模型对预训练任务的特化,增加模型的泛化性(哪怕精调时要把这个矩阵丢掉)。
- IOT: Instance-wise Layer Reordering for Transformer Structures:作者发现虽然重排 transformer 各个模块的顺序整体上对机器翻译性能影响不大,但是对具体的某个句子,不同模块顺序的模型翻译结果差的比较多。于是作者用一个分类器预测对于每个句子适合哪种顺序(用正则限制单个句子的预测结果接近 one-hot,训练集大量句子的平均结果接近均匀分布),然后用该顺序的模型去做翻译。最终效果能在测试集上涨一个 BLEU,但比较神奇的是这种方法居然跟模型集成是正交的,多个 IOT 模型集成以后还能涨点。
- NON-ITERATIVE PARALLEL TEXT GENERATION VIA GLANCING TRANSFORMER:一般的 NAT-NMT 需要迭代改进几次翻译结果,但这样的话并行解码速度快的优势就没了。本文提出在训练的时候可以自适应地掩掉一些词(模型先做一遍预测,此时不更新参数;知道哪些词预测不准以后,再盖住这些词,计算损失并进行梯度下降)。随着训练的进行,掩盖掉的词越来越多,有点儿课程学习的意思在,自适应地调整学习难度。同时被掩掉的词不是用 [MASK] token,而是用真正的目标词的 output embedding,相当于泄露了信息给模型,同时这会导致编码器和解码器之间的对齐更好。
- IS RETRIEVER MERELY AN APPROXIMATOR OF READER?:QA 中单塔模型(one-tower model, reader)是指把 question 和 document 拼在一起计算一个相似性得分,双塔模型(two-tower model, retriver)是指 question 或者 document 各自过一个模型得到一个 embedding,然后用 question embedding 在文档库里检索最相似的 document embedding,之后再进行后续操作。通常的观点认为双塔模型是对单塔模型在算力不足时的简化,但这篇文章认为他们两个作用是互补的,双塔模型擅长在大范围内检索相关文档,单塔模型擅长在小范围内精确区分困难样本的语义(在大范围内面对奇葩样本时单塔模型不够鲁棒)。此外,把单塔模型的知识蒸馏到双塔模型里效果会更好。
- BURT: BERT-INSPIRED UNIVERSAL REPRESENTATION FROM LEARNING MEANINGFUL SEGMENT:用 PMI 挖掘 n-gram,以此为单位生成 mask 来训练 BERT。类似于 whole word mask 或者 spanBERT 的思路吧,不过实验结果比这俩效果好一点。不过本文不是从头训练,而是用预训练好的 BERT 初始化接着训的(只有一张 1080Ti!真是佩服作者的勇气),语料大小为 380M 个中文字符,我觉得可信度没那么高。
- SEQUENCE-LEVEL FEATURES: HOW GRU AND LSTM CELLS CAPTURE N-GRAMS:用泰勒展开近似了 GRU/LSTM 里的门,然后发现近似以后的模型拿来训练学的也挺好的。展开以后每段时间都有一个对应的张量,作者认为这个张量对应了这一段时间的 sequence-level feature
- POLAR EMBEDDING:将概念嵌入极坐标系,以便建模层级关系(其实之前的双曲嵌入更好,不过极坐标嵌入更简单一些)。用了 Welsch loss function。
- UNSUPERVISED WORD ALIGNMENT VIA CROSSLINGUAL CONTRASTIVE LEARNING:一个新的双语词对齐工具,需要句级别的平行语料。比 FastAlign 精确,比 GIZA++ 快很多倍。
- EXPLORING VULNERABILITIES OF BERT-BASED APIS:服务商只提供 API 也可以偷模型。可以随便用什么数据做 query,得到 API 的输出,然后训练自己的模型,新模型跟原模型的准确率只差一点,而且对抗样本还能迁移。
Miscellaneous:
- THINKING LIKE TRANSFORMERS:提出了一个计算模型 Restricted Access Sequence Processing Language,可以很优雅地使用这门语言写程序(e.g.: 排序、绘制直方图等),并把程序翻译成相应的 Transformer 模型。有助于进一步理解 Transformer 模型,同时部分解释了 Sandwich Transformer 各个模块的排列顺序,以及一些魔改版 Transformer 在建模上的能力限制。
- MIMO:TRAINING INDEPENDENT SUBNETWORKS FOR ROBUST PREDICTION:给模型加多个输入映射和输出头,推断的时候把一个输入复制多份,然后各个头的预测结果平均一下。有点儿克服 softmax bottleneck 的味道。
- REDESIGNING THE CLASSIFICATION LAYER BY RANDOMIZING THE CLASS REPRESENTATION VECTORS:将 softmax 前面的矩阵随机初始化后就固定住,不参与训练(一般情况下这些参数也会参与训练,最终结果是相似的目标类别对应的向量也比较相似。很难说这是一件好事还是坏事,作者认为是坏事)。最终结果是固定这部分权重的模型更鲁棒(使用 A-Softmax 不做 scaling 也可以收敛,对噪声也容忍度更高),因为各个目标类别分得更开。
- THE UNREASONABLE EFFECTIVENESS OF THE CLASS REVERSED SAMPLING IN TAIL SAMPLE MEMORIZATION:类别不平衡问题很好解决,先正常训练,再训练快结束的时候按照类别分布的反比采样,让模型多记一下样本少的类别就好。
----- 2020.11.11 更新 -----
审稿意见出来了,这篇论文的分数是4,6,6,8。
除了四个reviewer外,还有一个public comment,来自Tianyuan Zhang,他写了一个非官方实现的代码,也把链接放在这里
https:// github.com/a1600012888/ clsa_pytorch
----- 原回答 -----
Contrastive Learning with Stronger Augmentations
没有细看论文,但是summary和实验结果直接吓到我了
summary:This paper presents a novel contrastive learning model that enables the use of stronger augmentations via distributional divergence minimization to achieve a new record of accuracy with vanishing performance gap to the fully supervised network.
实验结果:
超过了一众知名contrastive learning模型,包括SimCLR,MoCo,BYOL,而且直线逼近supervised model
等待后续审稿意见
平时很少上知乎,可是最近遇到了一个ICLR2021的投稿,名字直接就叫Bi-Real Net V2, (Bi-Real Net 是我们ECCV2018的工作,做Binary Neural Networks 的同学可能会听说过。) 除了盗用我们的名字之外,这篇文章的内容和我们最新的发表在 ECCV2020 上的工作 ReActNet 非常相近。他们 paper 中展示的最高结果65.5%,结构,训练方法和我们两个月前 open source 的 ReActNet (ECCV2020) 几乎完全一样,而且这个结果我们在的ReActNet paper里已经汇报过了。。。更重要的是,我们之前在loading weights的时候有个小bug, 我们在一周前刚修复,精度从65.5 提升到了65.9,而这篇论文的精度还停留在65.5, 这中间的微妙就不得而知了。
这篇论文几乎就是combine了我们之前的几篇论文,对于他人的research taste 我不宜多做评论,但是这种损害他人credits,来作为自己paper核心卖点的做法我真的无法苟同。。。
总之我看到这篇论文真的内心觉得挺不是滋味的。毕竟我们ReActNet (ECCV2020) 和 Bi-Real Net(ECCV2018) 都是经过了深思熟虑和实验才得到的。这篇论文的作者这样子拿上我们的结果,就把我们的credits占为己有会不会不太合适?By the way,我们最近会放一篇 official Bi-Real Net V2 出来,精度比这篇论文要高。
以下认真贴出我们的Bi-Real Net, ReActNet 和这篇文章的细节对比,希望知友们能有自己的评判。以下称这篇文章为 ‘该BNN投稿论文’
最后附上三篇文章的链接,大家可以自行判断。
ReActNet(ECCV2020) : https://arxiv.org/abs/2003.03488
Bi-Real Net (ECCV2018) : https://openaccess.thecvf.com/content_ECCV_2018/papers/zechun_liu_Bi-Real_Net_Enhancing_ECCV_2018_paper.pdf
‘该BNN投稿论文’ : https://openreview.net/forum?id=9wHe4F-lpp
这个optimizer的效果有些惊艳。。。还没太读懂,貌似不是魔改Adam的套路。
-------------------Update on 02/02/2021
才发现这篇paper最后被reject了。
-------------------Update on 06/10
算是把paper读了一遍,还有一些技术细节没完全明白,先说一下看懂的部分吧。
首先,这篇paper不是魔改Adam的套路,而是用的拟牛顿法,具体看公式(4)和(5)(paper写得很好,只需要基础的optimization基础就基本能看懂)。
作者试图解决拟牛顿法在nonconvex stochastic optimization上面的三个问题:
对于问题1,作者用一个对角矩阵来近似拟牛顿法里面的B矩阵。由于这个近似的约束太强,所以作者弱化了secant condition。(这里作者特别强调要每个参数独立计算)
对于问题2,除了之前常用的EMA外,作者引入了一个 Stepsize Bias Correction的机制。(这里就是我没太看懂的地方,貌似这样的好处是摆脱了B对于stepsize这个参数的依赖?)
对于问题3,作者的方法就很简单暴力。并没有像之前工作那样试读找到一个最优的正定矩阵B,这里作者直接取B的绝对值来作为最后更新的矩阵。因为B是对角阵,B的绝对值很好算。然后因为存在inflection point(曲率为0),因此对B的绝对值截取一个下限。比较神奇的是,这个下限的超参数后面证明是和learning rate耦合在一起,因此只需要调一个就可以,并没有增加调参的难度。
说下实验。首先感慨一下作者的GPU资源。对于ImageNet和NMT的实验,每个实验都是8个V100,而且每个实验跑5个random seed。。。(paper和代码已经放出来,作者貌似不是那几个大厂的)
Image Classfication。在CIFAR-10和ImageNet上面做了实验,具体结果看下面的图和表。
作者首先指出weight decay的强度对于收敛速度和分类结果的影响。而由于实现原因,weight decay真正的强度是由 lr * weight_decay 来决定的。因此作者强调要把weight decay的强度调到相似的比较才公平。从图1和表1看出来,Adam和RAdam当调整了weight decay后也能得到不错的accuracy,并不想之前报的差SGD很多(但是收敛速度也跟着降了很多)。这说明AdamW论文中声称的可以解藕 lr和weight decay的结论并不很成立(在附录里面作者详细分析了不同的weight decay的影响)。
Language Model。用的One Billion Words数据。模型是2-layer LSTM。Hidden Size是2048。
这个实验的结果也是我认为全篇最吓人的结果。Apollo比Adam和RAdam好了不止一点半点。。。个人感觉是不是说LSTM以前从没得到过好的优化?如果用这个优化器,那个LSTM有没有可能在一些任务上面反超Transformer?
NMT。用的Transformer-base在WMT4英德数据上做的实验,效果也很好。
总结:这个Apollo的优化器的效果实在惊艳,代码已经放出来了,有兴趣的可以去试试。作者并没有给出理论的收敛证明,不知道有没有优化的大佬能分析一下结果好的原因。之前也有一些拟牛顿法来做deep learning的,貌似效果都没超过SGD。
女王:求求题主放过我,我可不敢有什么政绩。。。
女王:求求题主放过我,我可不敢有什么政绩。。。
女王:求求题主放过我,我可不敢有什么政绩。。。