攻击下泄漏隐私信息!GPT-2:当时我害怕极了

前段时间有篇论文讲如何从语言模型中抽取知识图谱,今天就看到了一篇论文题目说要 从语言模型中抽取训练数据

我带着好奇打开了论文,结果被一众知名机构亮瞎了双眼,来一起感受下:

怀着敬畏的心看完了摘要,原来是探讨GPT-2中信息泄漏的,作者直接从GPT-2中榨出了个人隐私,还有手机号的那种:

不由得有些心疼GPT-2,小小年纪,就因为记忆力太过强悍而被这么多大佬逼问。

Anyway,打是疼骂是爱,信息泄漏的问题还是要好好研究一下,真要是拿用户的私人对话数据精调,生成结果带有别人的隐私可就凉了。

那么,下面rumor就带大家看看作者是如何从GPT-2中抽取数据的~

论文题目:Extracting Training Data from Large Language Models
论文地址:https://arxiv.org/abs/2012.07805

Eidetic Memory

Eidetic Memory可以翻译成过目不忘,抽出哪些query才能证明模型有过目不忘的能力呢?作者先进行了定义:当我们根据prefix生成一段句子s后,去评估s在训练样本中出现的次数,越少就说明模型记忆能力越强。

评估流程

明确了定义之后,就要去抽出符合条件的样本进行证实。作者攻击GPT-2的整体流程如下图,先用模型生成候选样本,再根据指标排序选出可能是硬记的句子,之后通过搜索结果是否完全匹配进行验证。

下面详细介绍下每步的策略。

生成候选样本

作者使用了3个策略,用每个策略生成200,000个256长度的样本:

  1. Top-n:输入起始字符,基于Top-k的解码策略生成。但这种方法的结果有很多重复,作者又提出了两个改进策略提示多样性

  2. Temperature:在计算softmax预测下一个token时,增加超参数temperature让置信度更加平滑。为了提示多样性,在产生前20个token时将 t 从10逐渐降到 1,这样可以保证模型后续对结果的自信

  3. Internet:参考GPT2训练语料的收集,对Common Crawl进行清洗,并随机选取5-10个token作为prefix生成结果

候选样本排序

对于上述策略生成的结果,采用以下六种策略选取要评估的句子:

  1. Perplexity:计算样本的perplexity,研究分数低的样本。但单纯计算困惑度的话,某些子串重复多次的困惑度也很低,于是作者又提出了以下5个metric,帮助结果筛选

  2. Small:计算大模型和小模型的log困惑度的比例。小模型的记忆力差,去算大模型硬记的句子肯定很困惑,所以用不相关的语料训练一个更小的语言模型,过滤掉在GPT2和小语言模型上似然都很高的样本

  3. Medium:计算大模型和中模型的log困惑度的比例

  4. zlib:用zlib entropy作为辅助指标(用zlib压缩文本后的大小),可以去掉重复的子串

  5. Lowercase:将句子转小写后再计算一次困惑度,计算原困惑度与小写困惑度的比例。因为硬记下来的大小写是固定的,换了之后困惑度会大幅变化

  6. Window:GPT-2在50个token的滑动窗口上的最小困惑度。因为在生成的文本中,可能是被硬记住的(低困惑度)和其他的(高困惑度)混在一起

评估

上述生成-选择的策略一共有3×6=18种,每个策略作者选择了100个候选。再通过trigram的重合度进行去重。

之后四个作者会分别借助搜索引擎,对1800个样本进行评估,如果能搜到完全匹配的结果就说明该样本是GPT2硬记的,最后将这些样本跟GPT-2的作者进行确认。

最终在1800个候选中发现了604个被死记硬背的样本。

对604个样本的分类如下:

对比不同策略,可以发现从Internet取prefix的结果普遍更好。且困惑度这个指标不太可信:

作者之后也尝试了提取更长的样本, 最长提取到了1450行的代码片段

减少LM的信息泄漏

那么,怎样才能减少信息泄漏呢?作者提供了以下策略:

  1. 差分隐私(Differential Privacy),通过增加噪声让输出结果随机化。但这样会降低模型精度,同时这个算法需要一些label,适配到web数据需要进行改动

  2. 处理训练语料,去除敏感信息;段落去重

  3. 用现有的方法及时检查模型的隐私等级

总结

作者通过很简单的方法,证实了语言模型虽然没有过拟合,但也会对某些数据死记硬背,并且有隐私泄漏的风险。同时越大的模型记住的数据越多(1.5B参数的GPT-2比124M的GPT-2多记了18倍数据)。

模型的隐私数据泄漏、性别种族歧视问题其实一直都是存在的,但大多数使用者只看到了模型管用的一面,在应用中确实没有注意到这些风险。这次大佬们也是给大家敲响了一次警钟,毕竟生成模型的结果还是很不可控的,之后在训练时一定要注意语料中的这些问题,与君共勉。

由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。 星标具体步骤为:

(1)点击页面 最上方”AINLP” ,进入公众号主页。

(2)点击 右上角的小点点 ,在弹出页面点击“ 设为星标 ”,就可以啦。

感谢支持,比心

欢迎加入AINLP技术交流群

进群请添加AINLP小助手微信 AINLPer(id: ainlper),备注 NLP技术交流

推荐阅读

这个NLP工具,玩得根本停不下来

征稿启示| 200元稿费+5000DBC(价值20个小时GPU算力)

完结撒花!李宏毅老师深度学习与人类语言处理课程视频及课件(附下载)

从数据到模型,你可能需要1篇详实的pytorch踩坑指南

如何让Bert在finetune小数据集时更“稳”一点

模型压缩实践系列之——bert-of-theseus,一个非常亲民的bert压缩方法

文本自动摘要任务的“不完全”心得总结番外篇——submodular函数优化

Node2Vec 论文+代码笔记

模型压缩实践收尾篇——模型蒸馏以及其他一些技巧实践小结

中文命名实体识别工具(NER)哪家强?

学自然语言处理,其实更应该学好英语

斯坦福大学NLP组Python深度学习自然语言处理工具Stanza试用

关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。

阅读至此了,分享、点赞、在看三选一吧:pray:

AINLP
我还没有学会写个人说明!
下一篇

Java项目连接数据库Mysql报错create connection SQLException

你也可能喜欢

评论已经被关闭。

插入图片