最近完成了一篇很满意的paper。整个过程不仅愉快而难忘,而且真正做到了“学术影响力和行业产出”。我相信这篇文章将改变差分隐私(DP)深度学习的范式。因为这次经历太“巧合”了(过程充满巧合,结论极其巧妙),想和同学们分享一下自己的经历,从观察-->构思-->论证-->理论-->大规模实验的完整过程。在本文中,我将尽量保持轻量化,不涉及太多技术细节。论文地址:arxiv.org/abs/2206.07136与论文顺序不同。有时论文故意把结论放在开头以吸引读者,或者先介绍简化的定理,把完整的定理放在附录中;而在这篇文章中,我想把我的经历按时间顺序记下来(也就是流水账),比如写下自己走过的弯路,研究中遇到的意外情况,供有过经历的同学参考。刚刚走上科研之路。1.文献阅读的起源是斯坦福的一篇论文,现在已经收录在ICLR中:论文地址:https://arxiv.org/abs/2110.05679文章写的很好。总结起来,主要有三个贡献:1.在NLP任务中,DP模型的准确率非常高,鼓励了隐私在语言模型中的应用。(相比之下,CV中的DP会造成非常大的准确率恶化,比如CIFAR10目前在DP限制下不进行预训练准确率只有80%,不考虑DP也能轻松达到95%;ImageNet最好的DP准确率在timewaslessthan50%.)2.在语言模型上,模型越大,性能越好。比如GPT2,从4亿参数到8亿参数,性能有了明显的提升,也取得了很多SOTA。(但在CV和推荐系统中,很多情况下,较大模型的表现会很差,甚至接近于随机猜测。比如CIFAR10的DP最佳准确率之前是四层CNN得到的,不是ResNet。)NLP任务中的DP模型越大性能越好[Xuechenetal.2021]3.在多个任务上获得SOTA的超参数是一致的:裁剪阈值要设置得足够小,学习率需要更大。(之前的所有文章都是针对一个task调整一个clippingthreshold,费时费力,从来没有像这个clippingthreshold=0.1跑遍所有task,性能还是那么好。)以上总结是我读完这篇论文后立即明白了什么。括号里的内容不是本文的内容,而是之前很多阅读的印象。这有赖于长期的阅读积累和快速联想比较的高度概括能力。其实,很多同学在刚开始写文章的时候,难点在于阅读一篇文章时只能看到一篇文章的内容,无法对整个领域的知识点形成网络和联想。一方面是因为刚入门的同学阅读不够,还没有掌握足够的知识点。尤其是长期拿老师做题,不独立提出的学生更是如此。另一方面,虽然阅读量足够了,但时不时总结一下,导致信息没有凝结成知识,或者知识没有串联起来。这里补充一下DP深度学习的背景知识,暂时跳过DP的定义,不影响阅读。所谓DP深度学习,其实从算法上来说就是多了两步:per-sample梯度裁剪和高斯噪声加法;也就是说,只要你按照这两步处理梯度(处理后的梯度称为私有梯度),那么你想怎么用优化器,SGD/Adam都可以用。至于最终算法的隐私性如何,这是另一个子领域的问题,称为隐私会计理论。这个领域比较成熟,需要扎实的理论基础。由于本文侧重于优化,这里不再赘述。g_i是数据点的梯度(每个样本的梯度),R是裁剪阈值,sigma是噪声乘数。其中Clip称为裁剪函数,和常规的梯度裁剪一样,如果梯度长于R,则裁剪到R,小于R则不移动。比如隐私深度学习的开创性工作(Abadi,Martin,etal."Deeplearningwithdifferentialprivacy.")中所有使用裁剪函数的论文目前都使用SGD的DP版本,也被称为Abadi的裁剪:图片。但这完全没有必要。遵循第一条原则,从隐私会计理论出发,其实裁剪函数只需要满足Clip(g_i)*g_i的模小于等于R即可。换句话说,阿巴迪的裁剪只是一个函数满足这个条件,但绝不是唯一的。2.切入点一篇文章有??很多闪光点,但不是所有的都能被我利用。我必须结合自己的需求和特长来判断最大的贡献是什么。本文的前两个贡献实际上是非常经验主义的,很难深入挖掘。最后一个贡献非常有趣。仔细看了超参数的ablationstudy,发现一个原作者没有发现的点:当clippingthreshold足够小时,clippingthreshold(也就是clippingnormC,上式中和R为一个变量)没有影响。垂直方向,C=0.1、0.4、1.6对DP-Adam没有影响[Xuechenetal.2021]。这引起了我的兴趣,我觉得这背后一定有什么原因。于是手写了他们以前的DP-Adam,看看为什么,其实很简单:如果R足够小,裁剪其实就等同于归一化!简单地代入私有梯度(1.1),就可以将R与裁剪部分和噪声部分分开:而Adam的形式使得R同时出现在梯度和自适应步骤中。一旦分子和分母抵消,R就不是了,顶层会议就会有idea!m和v都依赖梯度,同时用私有梯度代替,得到DP-AdamW。这么简单的代入证明了我的第一个定理:在DP-AdamW中,足够小的clippingthresholds是等价的,不需要调整参数。毫无疑问,这是一个巧妙而有趣的观察结果,但它没有足够的意义让我需要考虑这个观察结果在实践中有何用处。其实这意味着DP训练减少了一个数量级的参数调整工作:假设学习率和R各调整为5个值(如上图所示),需要测试25个组合找到最佳超参数。现在只需要将学习率调整为5种可能,调参效率提高了数倍。这是一个非常有价值的行业痛点。idea够high,数学够简洁,一个好idea初具雏形。3.如果简单的扩展只针对Adam/AdamW建立,这个工作的局限性还是太大了,所以我很快扩展到AdamW和其他自适应优化器,比如AdaGrad。事实上,对于所有的自适应优化器,都可以证明裁剪阈值会被抵消,这样就不需要调整参数,大大增加了定理的丰富性。这里还有一个有趣的小细节。众所周知,具有权重衰减的Adam与A??damW不同。后者使用解耦权重衰减。ICLRAdam有两种方法可以增加这种差异的权重衰减。这种区别也存在于DP优化器中。同样是Adam,如果使用decoupledweightdecay,缩放R不会影响weightdecay的大小,但是如果使用普通的weightdecay,扩大2倍R就相当于减少2次weightdecay。第四,还有其他聪明的同学可能发现了,我一直在强调自适应优化器。为什么不说新元?答案是我写完DP自适应优化器的理论后,Google立马出一篇DP-SGDusedinCVarticle也做了ablationstudy,但是规则和Adam上发现的完全不一样,给我留了一个对角线印象。对于DP-SGD和R足够小,将lr增加10倍等于10xR[https://arxiv.org/abs/2201.12328]。看到这篇文章的时候很激动,因为又是一篇证明smallclippingthreshold效果的论文。在科学界,一个接一个的巧合背后往往隐藏着规律。简单替换一下,发现SGD比Adam好分析,(1.3)可以近似为:显然可以再提出R,结合学习率,从理论上证明了Google的观察。“具体来说,当裁剪范数减少k倍时,学习率应该增加k倍以保持相似的精度。”可惜谷歌只看到了现象,并没有上升到理论的高度。这里还有一个巧合,就是他们在上图中同时画了两个尺度的消融研究,只有左边的尺度能看到对角线,光看右边没有结论...因为没有自适应步长,SGD并没有像Adam那样忽略R,而是将R视为学习率的一部分,所以不需要单独调整。反正学习率是需要一起调整的。然后把SGD的理论扩展到momentum,Pytorch支持的优化器都分析完了。5.从直觉到严谨有创新点,但严格来说,阿巴迪的裁剪只是近似归一化,不能等同,所以无法对收敛进行定论分析。根据哆啦A梦钢铁侠军团的原理,我直接将normalization命名为新的per-samplegradientclippingfunction,取代了整个领域已经使用了6年的Abadiclipping。这是我的第二个创新。经过刚才的证明,新的裁剪并没有严格要求R,所以称为自动裁剪(AUTO-V;V为vanilla)。由于形式和阿巴迪的剪裁不一样,准确度上会有差异,我的剪裁可能有劣势。所以我需要编写代码来测试我的新方法,而这只需要更改一行代码(毕竟只是放图片)。实际上,在DPper-samplegradientclipping方向上主要有3种clippingfunctions。除了Abadi的剪裁,我还提出了两个建议。一个是全局裁剪,一个是这个自动裁剪。在之前的工作中,我已经知道了如何在各种流行的库中更改裁剪,并将修改方法放在文末的附录中。经过我的测试,我发现在斯坦福的文章中,GPT2在整个训练过程中剪切了所有迭代和所有每个样本的梯度。也就是说,至少在这一次实验中,阿巴迪的裁剪完全等同于自动裁剪。虽然后来的实验确实输给了SOTA,但这已经说明我的新方法有足够的价值:一个不需要调整裁剪阈值的裁剪函数,有时也不会牺牲精度。六、回归抽象思维Stanford的文章有两种语言模型实验,一种是GPT2作为模型的生成任务,一种是RoBERTa作为模型的分类任务。虽然自动裁剪在生成任务上相当于阿巴迪的裁剪,但是分类任务的准确率总是差几个点。由于我自己的学术习惯,此时我不会改变数据集,选择我们的优势实验发表,更不会增加tricks(比如数据增强和魔术模型修改)。我想在完全公平的比较中做出尽可能最好的非水分效果,只比较每个样本的梯度裁剪。事实上,在与合作者的讨论中,我们发现纯归一化和阿巴迪的裁剪比梯度信息被完全丢弃,也就是说,对于自动裁剪,无论原始梯度有多大,裁剪总是一样大为R,而Abadi为小于R的梯度保留了大小信息。基于这个想法,我们做了一个很小但非常巧妙的变化,称为AUTO-S裁剪(S代表稳定)。结合R和学习率后,就变成了一张简单的图。可以发现这个小的(一般设置为0.01,其实可以设置为其他正数,非常稳健)可以保留梯度大小的信息:基于这个算法,只改了一行,斯坦福代码重新运行,得到6个NLP数据集的SOTA。AUTO-S在E2E生成任务以及SST2/MNLI/QNLI/QQP分类任务上优于所有其他裁剪函数。7.做一个通用的算法,Stanford的文章的一个局限是它只关注NLP,而巧合的是在Google刷完ImageNet的DPSOTA两个月后,Google的子公司DeepMind在CV上发表了一篇DP的精彩文章,直接把ImageNet的准确率从48%提升到84%!论文地址:https://arxiv.org/abs/2204.13650在这篇文章中,我第一次去看optimizer和clippingthreshold的选择,直到翻到附录中的这张图:DP-SGDonImageNet的SOTA还需要裁剪阈值足够小。小裁剪阈值仍然效果最好!有了三篇支持自动剪辑的优质文章,我已经有了强大的动力,也越来越确信自己的作品一定会非常出色。巧合的是,DeepMind的这篇文章也是一个没有理论的纯实验,这也让他们几乎意识到理论上他们可以不需要R。事实上,他们真的非常接近我的想法,他们甚至发现R是可以提取出来和学习率融合(有兴趣的同学可以看看他们的公式(2)和(3))。但是阿巴迪剪裁的惯性实在是太大了……就算他们有规律,也不会再往前走了。DeepMind还发现小裁剪阈值效果最好,但不明白为什么。受到这项新工作的启发,我开始做CV实验,让我的算法可以被所有DP研究人员使用,而不是NLP做一种方法,CV做另一种方法。一个好的算法应该是通用的、易用的,并且已经证明自动裁剪在CV数据集上也可以做到SOTA。8、理论是骨,实验是翼综观以上所有论文,很明显SOTA提升明显,工程效果满满,但理论一片空白。当我完成所有实验时,这项工作的贡献已经超过了一个顶级会议的要求:我大大简化了经验小裁剪阈值对DP-SGD和DP-Adam产生的参数影响;提出了一种新的裁剪函数,不牺牲计算效率、隐私性,也不需要调整参数;较小的γ修复了Abadi的裁剪和归一化对梯度大小信息的破坏;足够的NLP和CV实验已经达到SOTA精度。我还不满意。没有理论支持的优化器仍然无法对深度学习做出实质性贡献。每年顶会上提出几十个新的优化器,第二年全部扫进旧论文堆。还有一些是Pytorch官方支持的,工业界实际使用的。为此,我和我的合作者又花了两个月的时间进行自动DP-SGD收敛分析。过程艰辛,但最后的证明却简化到了极致。结论也很简单:量化表示batchsize、learningrate、modelsize、samplesize等变量对收敛的影响,符合所有已知的DP训练行为。特别地,我们证明了虽然DP-SGD收敛速度比标准SGD慢,但如果迭代趋于无穷大,收敛速度是一个数量级。这为私有计算提供了信心:DP模型收敛,迟来但肯定会收敛。9、一场车祸……终于,写了7个月的文章写完了,没想到巧合还在继续。5月提交NeurIPS,6月14日完成内部修改,发布到arXiv。结果,6月27日,微软亚洲研究院(MSRA)发表了一篇让我们崩溃的文章。建议的裁剪与我们的自动裁剪完全相同:它与我们的AUTO-S完全相同。仔细一看,连收敛证明都差不多。而我们两拨人并没有相遇,可以说是横跨太平洋的机缘巧合。这里稍微说说两篇文章的区别:另一篇文章更偏理论,比如对AbadiDP-SGD的收敛性进行了补充分析(我只证明了automaticclipping,就是他们文章中的DP-NSGD,也许我不知道如何修复它DP-SGD);使用的假设也有所不同;而我们的实验更多更大(十几个数据集),阿巴迪的裁剪和归一化的等价关系更明确地建立起来,比如定理1和2解释为什么R不需要调整参数。既然是同时期的作品,很高兴有志同道合,可以互补的人共同推广这个算法,让全社会早日相信这个结果,受益从中。当然,私心的我也提醒自己,下一篇会加速的!10.小结回顾这篇文章的创作过程,从出发点来说,基本功肯定是前提,还有一个重要的前提是我一直对调参这个痛点耿耿于怀。是久旱,读对文章才能遇甘露。至于过程,核心在于数学和理论观察的习惯。在这项工作中,代码的实现能力并不是最重要的。我将写另一篇专栏,重点介绍另一篇硬核代码作品;最后的收敛分析还要看合作者和我自己的无能。好在吃好饭还不晚,我们继续吧!作者简介布志奇毕业于英国剑桥大学,获得学士和博士学位。来自宾夕法尼亚大学。他目前是亚马逊AWSAI的高级研究科学家。研究方向为差分隐私与深度学习,关注优化算法与大规模计算。
