2018年8月1日星期三

杀死量子推荐算法:18岁华裔少年推翻量子加速最强证据

安妮 夏乙 发自 凹非寺量子位 出品 | 公众号 QbitAI

量子计算能为机器学习大幅加速?

不好意思,这件事的最佳证据:量子推荐系统,已被华盛顿大学准博士生Ewin Tang"杀死"。

他在量子计算的启发下,开发了一种在传统计算机上运行的推荐算法,与以前的推荐系统相比能实现指数级加速,媲美量子推荐算法。

"这曾是量子加速的最强例证之一,现在它已经不复存在。"

打破量子计算优越性的Ewin,秋天即将去华盛顿大学读博的Ewin,不是你的同龄人。

他今年,只有18岁。

17岁的艰巨作业

2017年春天,17岁的少年Ewin正在德克萨斯大学奥斯汀读大三。

他选了一门深奥的课程:量子信息。这门课的老师,是德克萨斯大学奥斯汀分校量子信息中心主任斯科特·阿伦森(Scott Aaronson)教授。

阿伦森老师曾在MIT任教9年,2016年秋天加入UT奥斯汀。这位37岁的教授,在学术界称得上青年才俊。

他看着少年,不知道是不是看见了自己17岁的影子,觉得这位少年天赋异禀,决定带着他做点研究。

于是,一堆课题摆在了少年面前。最后,他不大情愿地选了推荐算法。

而"不情愿"的理由,与14岁上大学、"天赋异禀"的学霸人设很不搭。少年接受Quanta Magazine采访时说:"犹豫,是因为我看起来感觉它好像很难,但这已经是他给我的课题里最简单的了。"

推荐算法,可能是机器学习技术应用中群众基础最好的一个。它早已经被某宝某条某音乐等各种App大规模应用,每天为几亿人推荐着新闻、商品、歌曲。

如此司空见惯,为什么学霸少年会觉得难?

课是量子信息,导师是量子信息中心主任,这个推荐算法课题,研究的自然是它和量子计算的交叉。

推荐算法之于量子信息,约等于灯泡之于电力。

一直以来,量子计算机最深入人心的特征是计算能力强悍,而它究竟能用来干什么,就超出了群众的认知范畴。

大家都说,它擅长分解庞大的数字,对加密解密有着巨大的作用。但如果仅仅是密码学,与传统计算机能完成的任务相比就未免太狭窄了。更何况,要真正用量子计算攻克密码,还要等个10年左右。

当下真能证明量子计算优越性的问题,寥寥无几而且局限在非常狭窄的细分任务上。

直到2016年,一篇论文:Quantum Recommendation Systems,也就是量子推荐系统,终于在一个大众关心的问题上,证明了量子计算的优越性

论文地址:

https://ift.tt/2vti23j

论文作者,是法国科学研究中心(CNRS)高级研究员Iordanis Kerenidis和南洋理工大学的Anupam Prakash。

阿伦森教授把他们的算法称为KP算法,还说它堪称量子计算能为真实世界中的机器学习提供指数级加速的最强证据之一。

推荐系统就像一个用户×产品构成的偏好矩阵。对于传统的算法来说,矩阵中所有的偏好信息要用到,而KP算法,用一种叫做"量子相位估计"的方法从中抽样。与众多传统算法相比,速度呈"指数级提升"。

Kerenidis说,据他所知这是第一次有机器学习和大数据领域的例子,证明了量子计算机可以完成传统计算机上不可能的任务。

少年要研究的东西,就和这个KP算法有关。

从不可能到可能

2017年秋天,Ewin的研究作为本科毕业论文开工了。

一开始,少年和阿伦森老师一样,一心相信传统推荐算法不可能达到量子推荐系统的速度。

可是,他的想法逐渐在改变。

论文截稿时间已近,他对老师说:我认为快速的传统算法,是存在的,KP算法中的量子相位估计,能找到替代品。

有想法还不够。少年证明了可以用传统算法来替代量子相位估计,从一个用户偏好矩阵中随机采样,形成一个小矩阵。

在传统的计算机上,同样可以做出像KP算法一样快的推荐系统。

和两位前辈一样,少年的算法的运行时间也是用户和产品的多重对数。也就是说,计算时间随着特征的对数而缩放。在推荐系统中,"特征"就是用户和等着推荐的产品。

经过自己反复计算,阿伦森老师反复检查,两人反复讨论,他的最终成果出炉了。这篇35页的论文题为A quantum-inspired classical algorithm for recommendation systems,一个量子计算启发的推荐系统传统算法,前不久在arXiv上公开了。

论文地址:

https://ift.tt/2NSlcGb

少年宣告,与传统计算机上的算法,也就是他自己刚刚开发的这个相比,KP算法实际上并不能带来指数级加速。

量子加速的最强证据之一,被推翻了。

阿伦森老师参加加州大学伯克利分校的量子计算workshop时,还带上了Ewin,让他根据这篇论文做了非正式的演讲。众多量子计算大牛都在场,包括打造了量子推荐系统的Kerenidis和Prakash。

这就像是一场高规格的论文答辩会。少年做了两场演讲,和诸位观众唇枪舌剑问答4小时。最终,大家终于达成共识:算法正确,"答辩"通过。

QuantaMagazine还说,这篇论文后来还正式投递到了某期刊或者会议,正在进行同行评审,等待发表。

阿伦森老师在自己的博客上,把这篇论文称为"a striking new result",惊人的新成果。

他说,唐同学杀死了(KP算法的)量子加速

但是,无论是阿伦森,还是少年,都不想给量子计算泼冷水。少年的论文标题恰恰强调了"量子计算启发的",阿伦森老师也说,如果没有KP的量子算法,也不会有唐同学的这项成果。

18岁的准博士生

骄人的研究背后的作者Ewin Tang,是今年秋天即将入学华盛顿大学的博士生。

没错,18岁的博士生。

在我们刚刚高中毕业暑期狂欢的时候,大神已经准备下个月的读博项目了?

是的,而且是一路开挂——

根据德克萨斯大学阿灵顿分校(UT阿灵顿)的校报报道,小学阶段,少年一路连跳。12岁时,Ewin实现了"质的跳跃",成为校园里最年轻的学生,主修数学和计算机科学了。

这还不是他第一次接触大学课程,自10岁时开始第一次上大学课程以来,他已经接触了微积分和微分方程在内的高数知识,且这些课程的GPA均为4.0。还是10岁,当少年的SAT考试拿到1920的高分时,学校决定给他提前入学的机会。

当大部分同龄孩子还在小学数学习题中无法自拔时,少年已经师从著名量子计算专家阿伦森教授,钻研起高数和量子信息学,还受到了"unusually talented"的赞誉。

14岁的Ewin,在大学期间,还发表了三篇……论文。

是谁启发了幼年的Ewin学大学课程的?秉持着"神童的父母多半也很厉害"的传统信仰,量子位找寻到了少年的家庭信息。果然——

据2012年UT阿灵顿的古老报道中记载,Ewin的父亲为UT阿灵顿的生物工程系教授唐力平(Liping Tang),成长于台湾,目前主要的研究方向为干细胞、组织工程、纳米技术、生物相容性等。

少年学习大学课程时,周一三五的部分时间在私立学校上课,参加足球、篮球、越野和科学奥林匹克竞赛等活动;另外一部分时间,他回去UTA上课。周二和周四,Ewin则到他父亲的纳米技术实验室兼职工作。此外,少年还在学习中文、钢琴和二胡。

神童的培养过程也有困扰,只不过唐力平最担心的不是儿子的学习,而是他的社交生活。"在学术上他表现很好,但我们希望他留在学校和他这个年龄的孩子一起生活,让身边的朋友与他同龄。"唐力平说。

真是甜蜜的苦恼呢~

围观群众惊呼

无论是在动漫还是电影里,"天才少年"总是人群中最受关注的那一个。现实中当然也不例外,Ewin已经引起了各大科技学术论坛中网友的关注,一天之中HackerNews上就堆积了200多条评论。

有唇枪舌剑的学术探讨,更多人对着少年在感慨。

一些"宝爸""宝妈"的关注点自然在"天才少年养成记"上。ID为nsxwolf的网友评论Ewin跳过了四到六年级让他印象深刻,疑惑这是Ewin的天赋还是父母的教育方法特别:

我应该对自己的孩子做些什么吗?孩子多大时才知道具有这种潜力。

好尖锐!也好让人want to know!

问题的跟评者各抒己见,有认为孩子拥有无忧无虑的童年和在同龄人中表现最佳往往不可兼得,顺气自然开心快乐就好。

也有网友觉得父母无需为孩子找方向,兴趣必须来自孩子,父母只需要提供适当帮助就好,强求不来。

有的网友认为,大家的评论和讨论太基于Ewin的年龄,甚至有些放错了重点:

为什么大家探讨的重点是Ewin的年龄还不是他的技能。当然他很年轻,但这也与所提出的实际工作无关。

当然,也有一些评论稳中带皮。ID为greg7mdp的hacker news网友感慨Ewin"生不逢时":"如果他几年前发现了这个算法,可能已经赢得了100万美元的Netflix大奖。"还给出了当年Netflix基于推荐算法举办影片评级大赛的地址~

One More Thing

历史总是相似的。

曾经,也有一位18岁的华人准博士生。18岁那年,一封乔治·华盛顿大学的博士offer发到了他的手中;23岁,他博士毕业。

那个人是张亚勤。

欢迎大家关注我们的专栏:量子位 - 知乎专栏

诚挚招聘

量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复"招聘"两个字。

量子位 QbitAI· 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态



via 量子位 - 知乎专栏 https://ift.tt/2O4eo7F
RSS Feed

RSS5

IFTTT

机器之心专访杨强教授:联邦迁移学习与金融领域的AI落地

7 月 21 日、22 日,由 KDD China 主办,西南交通大学和京东金融承办的 KDD Summer School 暨 KDD Pre-Conference,「交通大数据智能」论坛在成都举行,多位知名数据挖掘领域专家以及 KDD 2018 国际会议录用论文的作者介绍了自己的工作以及各自领域的进展。

在会上,我们采访了 KDD 中国主席杨强,与他聊了聊他在金融领域进行的 AI 落地的工作,包括「联邦学习」这个试图在保护数据隐私、满足合法合规要求的前提下继续进行机器学习的新方法。同时,作为 KDD 中国主席,他也分享了当下的迁移学习领域的新进展和他对本届 KDD 大会的展望。

联邦学习:数据合规应该是深度学习解决方案的一部分

机器之心:您如今在关注哪些 AI 的研究或应用方向?在您看来,机器学习领域有哪些新的趋势?

我现在关注的一个趋势是如何在保护数据隐私、满足合法合规要求的前提下继续进行机器学习,我们将这部分研究称为「联邦学习」(Federated Learning)。

开始联邦学习的契机是欧盟通过了「数据隐私保护条例」(General Data Protection Regulation,简称 GDPR)。GDPR 认定「个人数据神圣不可侵犯」,要求公司在使用数据前要先向用户声明模型的作用。这份条例的实行让许多大数据公司噤若寒蝉,不敢再互相交流数据了,这对于极度依赖数据的机器学习是一个巨大的挑战。

因此我们现在正在寻找比较正向的应对方法,思考如何把 GDPR 囊括在机器学习框架之内,而不是绕着它走。

联邦学习希望在不共享数据的前提下,利用双方的数据实现模型增长。

假设两家公司想要建立一个用户画像模型,其中部分用户是重合的。联邦学习的做法是,首先通过加密交换的手段,建立用户的识别符(identifier)并进行沟通,在加密状态下用减法找出共有的部分用户。因为关键用户信息并没有得到交换,交换的只是共有的识别符,因此这并不违反数据隐私保护条例。然后,双方将这部分数据提取出来,将各自拥有的同样用户的不同特征作为输入,迭代地进行训练模型、交换参数的过程。我们证明了给定模型参数,双方不能互相反推出对方拥有的、自己没有的特征,因此用户隐私仍然得到了保护。在不违反 GDPR 的情况下,双方的模型性能都得到了提高。

联邦学习相比于迁移学习的优点在于「无损失」。之前的迁移学习都是存在性能损失的,当模型从领域 A 迁移到领域 B,从模型中学到的一大部分关于 A 的知识全丢了,只有和 B 共享的一小部分保留下来,甚至会出现负迁移。然而联邦学习保证,两家公司的模型都比原来效果好。因此我们没有继续沿用迁移学习的名称,而是将其命名为「联邦学习」,意思是说,两家公司并没有联合成为一个「国家」,而是像不同的「州」一样,在一个「联邦政府」——进行信息与模型参数的加密交换的系统——的管理下,各自为政,同时获得成长。在联邦学习的基础上,我们还可以启发式地搭建迁移学习的能力。这样,在模型成长的基础上,做到举一反三的效果。这个总的模型叫做「联邦迁移学习」(Federated Transfer Learning)。

联邦学习是我们应对 GDPR 类事件的一个例子。在未来,我们面临的社会大众的要求和监管一定越来越严格,因此我们人工智能的从业者应该拥抱这些条例,将其内化为解决方案的一部分。如今机器学习最薄弱的环节其实并非算法结构不够丰富、准确率不够高,而是来自社会大众对人工智能的态度和制约。GDPR 不是个例,在未来,不同国家和地区的隐私保护条例会如雨后春笋般出现,在这样的背景之下,如果不作出改变和适应,机器学习的一个重要的假设:假设我们拥有足够多的数据,将不复成立。

因此我们希望机器学习学者除了关心算法的准确率、效率之外,也将思考的维度上升到管理与合规的角度。我们希望能带头建立金融领域协同建模的规范,让不同的企业受益于合规的联合建模链条,更乐于加入这个 AI 建模联邦,在遵守合规要求的同时享受数据福利,也让机器学习更健康地发展下去。

我近年关注的问题是 AI 的落地,因为如果 AI 一直不落地,大家都埋头写论文,那么这个泡沫最后就破了。

我个人选择在金融相关的领域来实现 AI 落地,其原因是金融提高效率的痛点很强烈。现在很多媒体给大家的一个印象是「所有的领域」都可以马上应用 AI,这我是不赞同的。在一些领域里,如今的 AI 反而会把优势变成劣势:例如 IBM Watson 在美国癌症医疗中心就因为数据缺失问题而导致诊断协助系统的失败。

我认为现在的情况是,并非所有领域都适合在当下尝试 AI,根据数据和场景的准备状态,有一些领域特别适合首先去尝试 AI,其中就包括金融。

此外,我希望总结出一套方法论,可以告诉人们,一个领域在什么时间段、满足哪些条件后,可以开始考虑使用 AI 了。

迁移学习:深度和对抗成为范式

机器之心:去年,您在机器之心的 GMIS 大会上提到了迁移学习的六个进展,分别是结构与内容分离、多层次的特征学习、多步迁移学习、学习「如何迁移」、迁移学习作为元学习以及数据生成式的迁移学习。在过去的一年多时间里,有哪些方向出现了令人瞩目的进展?

首先是层次感。这方面进展非常迅速。业界发现深度学习天然适合做迁移的学习,正是因为深度学习不同的层次负责编码不同的知识。

因此多层次的特征学习有很多种可行结构:一是多视角,让不同的输入分别进入不同的初始层,处理后共享一些中间层;另一种是利用对抗的结构,例如 GAN 和 DANN,筛出不同领域间可共享的特征。共享特征的意思是无法用这个特征区分两个领域。用对抗找出共享特征的意思是,让一个网络负责筛选出让对方区分不了的特征,让另一个网络负责根据特征区分两个领域,两个网络通过博弈达到平衡时,就自动找到了两个领域之间的重叠部分。

总的来说,对抗网络现在已经变成了迁移学习的一种已定式和系统了。

学习如何迁移方面,我们最近有一篇 ICML 2018 文章,Transfer learning by learning to transfer 讲的就是这个问题。这个文章的第一作者是魏颖博士。文章的主旨是,在我们积累了在很多领域进行学习的经验后,把领域间的迁移过程作为例子。例如在翻译问题上,从日语到中文是一个迁移,从日语到英文是另一次迁移。如果有 N 个领域,就会有 近 N*N 个例子。把迁移的例子做成训练集,就可以训练出一个自动的迁移规划器,它会告诉你如何迁移或是说迁移的方法论。来了一个新问题,迁移器可以告诉你应该挑那些迁移学习算法来用在这个问题上。

这个问题的输入是算法的参数和描述不同领域的参数,优化函数是所有样本的期望损失最低,学出来的迁移器既挑选模型,也学习参数。这个工作的主题是「学习如何学习」,和时下流行的 AutoML 有紧密的联系。今年,「第四范式公司」会在 NIPS 2018 上将举办首届 AutoML 大赛,也是给大家一次展示迁移学习能力的机会。

「学习如何学习」也不仅仅是计算机科学中的问题。在心理学领域,上世纪美国心理学家 Thorndike 就拿猴子做了一个实验,证明猴子是有迁移能力的。他让猴子解决一些不同的任务,解决好了就能拿到食物,解决不好就让他继续解决,一段时间后,猴子就学会了在新的领域里寻找特征,利用原有的经验解决新问题。因此 Thorndike 总结道:「智能就是迁移能力。」他将这个观点应用到教育学上,认为教育程度高,并不是考试分数高,而是学下一门课学得更快。

最后,结构与内容分离,换言之,就是要用尽可能少的例子来学尽可能多的事儿,这方面的内容仍然不是很多。但这其实并不是局限于迁移学习的一个讨论,而是人工智能整体试图解决的一个问题。

最近 Yann Lecun 的在 IJCAI2018 上的一个讲座让我觉得很有启发。Yann 也在思考为什么人只需要几个例子,而深度学习需要那么多例子。他的观点是,一个例子中的内容特别多,而用一个例子做一个任务,就等于把其他的内容浪费了,因此我们需要从一个样本中找出多个任务。比如说遮挡图片的一个特定部分,用没遮挡部分来猜遮挡的部分是一个任务。那么通过遮挡不同的部分,就可以用一个样本完成不同任务。Yann 描述的这个方法被业界称作「自监督学习」。

我觉得自监督学习可以和迁移学习结合来做的。因为一个样本毕竟还是有局限性,它的变化很小,统计性很差,但是如果和以前的经验能结合起来,例如从其他任务里迁移一个偏置项,可能就是解决小样本的一个方向。

机器之心:您如何对当前的迁移学习算法进行分类?原因是什么?

之前,我们通常将迁移学习分为三类。第一类是样本迁移,将可能对新领域有用的样本的权重加大。这一类方法非常经典,但是现在用得比较少。

第二种叫做特征迁移,特征空间的维度很高,如果我发现第一个领域里发现的重要特征能够覆盖新领域,那么我就把它迁移到新领域中去。迁移的部分可能是人工选出来的特征,这种方法在自然语言处理迁移中比较常见,也可以是一个特征提取器,这种方法在计算机视觉迁移中比较常见。

最后一种是参数迁移,迁移的范围与两个领域之间的距离有关。例如和图像相关的模型,越是靠下的层越通用,迁移能力越强,越是靠上的层越是特殊,迁移能力越弱。因此可以根据领域间距离定量地确定迁移的程度:如果两个领域相距很远,那么可以只迁移最下方的几层,如果两个领域很相似,则可以多迁移几层。此外还可以量化迁移后调节参数的时机:两个领域相距越远,参数调节就应该越早进行,两个领域相距越近,参数调节就可以越晚进行。

近年一个有意思的特征迁移案例是斯坦福大学为联合国做的「如何在卫星图片中标记贫穷的地区」。联合国在决定给每个地区分配的资助前,需要确定当地的贫穷程度。在过去,做法是派人去进行经济调查,而斯坦福大学试图用 跨越式迁移的方法来解决这个问题。研究人员首先对白天的卫星图片进行语义级别的分割,标出桥梁、建筑物等。然后以灯光明亮度代表富裕程度,通过白天和夜晚的图像比对,找出最富有的地区在白天有哪些可见的特征,比如游泳池。然后将游泳池视为富裕地区的显著特征后,再通过搜索游泳池周围经常出现特征,进行另一轮的代表性特征选择。逐步扩展下去,最后在识别贫富程度上达到和现场调查人员相近的准确率

这类非常具有社会意义的选题也是值得国内研究者思考和借鉴的,我们不应该只擅长刷 ImageNet 榜单。

除此之外,根据采用的模型结构还可以分成采用/不采用深度学习的。近年随着对抗生成网络在迁移学习中的应用越来越广泛,还有一种分法是根据是否利用对抗的方法进行分类。迁移学习中天然存在可以对抗的部分:希望算法在本领域准确性尽可能高,希望算法在两个领域间的差距尽可能小。把这两个限制条件同时作为目标,就形成了一个恰恰合适对抗生成网络做的事情。

KDD:连接工作与会议趋势

机器之心:作为 KDD 中国主席,能否分享下 KDD 中国的定位和任务,以及 KDD 大会的一些情况?

ACM SIGKDD 在中国的分会叫做 KDD China,这个学术社区的主旨是做好各项「连接」的工作,即连接学生和学者,连接公司和学校,以及连接学界和社会。本次 2018 的暑期学校分成三天(已于 2018 年 7 月 21-23 在成都的西南交通大学举行),分别是业界专家观点、学生 2018 KDD 工作展示,以及学界的「大牛」讲解如何写论文、如何做研究。旨在进行学生与业界领袖的连接,工业与学术界的连接,国内和国外的连接等一系列工作。现在看来效果还是非常不错的,会员已经超过了 1000 人,本次活动报名的会员/非会员也达到了场地的极限,达到三百多人。

而即将在伦敦召开的 KDD 2018,颁发的奖项包括:

  • Research Innovation Award,颁发给了芝加哥大学的刘兵教授,他率先开展了舆情分析方面的工作。

  • Distinguished Service Award,颁发给了清华大学的唐杰教授,他在 KDD 领域做了大量的突出的服务性工作,包括在 2012 年在北京举行的 KDD 所做的大量支持工作和建立著名的论文库系统 A-MINER 等的工作。

  • Test of Time Award,这个奖项颁发给发表在十年前的、产生了重大影响的文章。今年的获奖者是来自谷歌的 Yehuda Koren,获奖论文是关于推荐系统中的协同过滤问题。

在趋势方面,KDD 继续以信息网络的大数据为主题来研究,但 KDD 也在近几年开始举办以深度学习命名的一个 workshop,这也标志着深度学习也成为了 KDD 所接受的一类方法。

纵观 KDD 的历史,会发现发起者背景主要有二,一是来自工业界,比如曾经以 IBM 、微软等公司为代表一些领袖,二是学界的领军人物。切入角度是起始于数据仓库管理和关联规则等的分析;后来机器学习算法逐渐进入业界后,越来越多的机器学习学者也进入 KDD 界,而 KDD 一直保持有很高的工业界参与度以及对工业实际问题的敏感度。

如今 KDD 和机器学习的一些区别包括,KDD 是更多地以应用问题为导向的会议,很少有像强化学习等纯机器学习算法的论文;KDD 相比于机器学习更关心社交网络等信息网络数据,更关心「人」的参与建模,更在乎模型的可解释性、数据可视化、人对模型结论的理解等,而机器学习更关注自动化和端到端的建模。

]]> 原文: https://ift.tt/2KhWImW
RSS Feed

机器知心

IFTTT

2018 IEEE顶级编程语言交互排行榜发布:Python屠榜

今天,IEEE Spectrum 发布了第五届顶级编程语言交互排行榜:Python 卫冕成功,C++ 异军突起,雄踞第二,C 语言和 Java 则「退位让贤」,分据第三和第四。

榜单地址:https://ift.tt/2OwBLbd

IEEE 的榜单结合 9 个数据来源的 11 个衡量指标(去年的排行榜有 12 个指标,今年少了 Dice job 网站信息,因其关闭了 API),权衡并发布了 47 种语言的排行榜,少于去年的 48 种。该排行榜允许读者根据自己的喜好或需求设定权重,如语言趋势或员工最关注的语言等。读者可以查看 Trending、Jobs、Open 等不同维度的编程语言排行数据。

读者可以根据自己的喜好或需求设定权重。

2018 年 IEEE 顶级编程语言交互排行榜和 2017 年排行榜前十名对比图。

Python 的排名从 2016 年开始就持续上升,去年顺利登顶,仅以 0.3 分的优势超越第二名 C 语言险夺第一。而今年,Python 依然高居榜首,且与第二名拉开差距。但是,今年的第二却不再是 C 语言,而是 C++ 了。C++ 的异军突起,使得 C 语言和 Java 都不得不「退位让贤」,分别降至第三和第四(去年它们分别位至第二和第三)。

为什么 Python 会继续获得程序员的青睐呢?顶级编程语言中的另外两个变化可能会给出点提示。

首先,Python 现在被视为嵌入式语言。以前,编写嵌入式应用程序严重倾向于编译语言,以避免在处理能力和内存有限的机器上高速评估代码的溢出。摩尔定律虽已渐式微,但还未完全消退。很多现代微控制器已有足够的能力承载 Python 解释器。以这种方式使用 Python 的一个好处是,它在某些应用程序中,通过交互提示或动态重新加载脚本来操作附加硬件非常方便。涉足到一个新的领域,只会增长 Python 的人气。

Python 越来越受欢迎的另一个原因是 R 语言的热度下降。R 在 2016 年达到顶峰,排名第五,去年跌至第六,今年排名第七。R 是一种专门处理统计和大数据的语言。随着人们不断把对大型数据集的兴趣转向其在机器学习上的应用,且由于数据统计和机器学习中高质量 Python 库的出现,相比更专业的 R 语言,灵活的 Python 语言变得更有吸引力。

IEEE Spectrum 聚焦未来发展趋势,旨在衡量各项指标以找出发展迅速的语言,可以看到谷歌的 Go 已经从第 7 位上升到第 5 位。但名次上升最快的还是 Scala,从第 15 位上升到第 8 位。Scala 是为了改进 Java 而创建的,所以 Java 名次下降的部分原因可能是 Scala 的上升。

令人惊讶的是,ActionScript 的排名提升非常有限。去年它以 0.0 的排名垫底,几乎要被淘汰,但今年它以 1.6 分回到了倒数第二。Forth 是嵌入式世界的一匹老马,但是却拿了零蛋。这是作者个人最喜欢的语言之一,但如果明年它继续拿零分,就要被踢出排行榜了。

那么这一年中发展最快的编程语言又是哪些呢?和去年一样,Python 占据榜首,C++ 跃居第二,Java 和 C 排名位置各掉一名。

接下来,我们来看工作环境中编程语言的使用情况。Python 从去年的第三名跃居第一,Java 从第一名掉落至第三名,C 语言保持不变,而 C++ 依然势头强劲,评分增幅达 1.4。

而开源项目钟爱的编程语言排名如下:

前四名稳定不变,而去年的第五名 Swift 掉落至 22 名!

最后来看根据设计自由度衡量出的编程语言排名:

Python 仍然是第一名,Java 从去年的第二名跌至第四,JavaScript 排名未变,但所占比例由 17 年的 88.9 下跌至今年的 82.3。PHP 与 JavaScript 持平,较去年略有上升。

综合来看,Python 在各个榜单上均稳居第一,而 C++ 也不容小觑。

]]> 原文: https://ift.tt/2KgvSLL
RSS Feed

机器知心

IFTTT

旷视科技Oral论文解读:IoU-Net让目标检测用上定位置信度

目标检测涉及到目标分类和目标定位,但很多基于 CNN 的目标检测方法都存在分类置信度和定位置信度不匹配的问题。针对这一问题,一种称之为 IoU-Net 的目标检测新方法被提出,在基准方法的基础上实现了显著的提升。该论文已被将于当地时间 9 月 8-14 日在德国慕尼黑举办的 ECCV 2018 接收为口头报告。此外,该论文的三位并列一作是在旷视科技实习期间完成并提交的这篇论文。

论文:Acquisition of Localization Confidence for Accurate Object Detection

  • 论文地址:https://ift.tt/2M9aIBd

  • 代码地址:https://ift.tt/2LLABeo

摘要:现代基于 CNN 的目标检测器依靠边界框回归和非极大抑制(NMS)来定位目标,其对类别标签的预测概率可以天然反映每个框的分类置信度,然而对框的定位置信度却缺失了。这使得原本定位准确的边界框会在迭代回归的过程中偏离目标,又或甚至在 NMS 过程中受到抑制。研究者在本文中提出 IoU-Net,可学习预测每个检测得到的边界框和与之匹配的目标之间的 IoU 作为该框的定位置信度。利用这种定位置信度,检测器能确保定位更准确的边界框在 NMS 过程中被保留下来,从而改进了 NMS 过程。此外,将预测得到的 IoU 作为优化目标,一种基于优化的边界框修正方法也同时被提出。研究者在 MS-COCO 数据集上进行了大量实验,结果证明了 IoU-Net 的有效性,并且还表明其能够轻松地集成并提高包括 Faster R-CNN、FPN、Cascade R-CNN 等多种当前最佳的目标检测器。

1 引言

目标检测是很多下游视觉应用的前提基础,比如实例分割 [19,20]、人体骨架绘制 [27]、人脸识别 [26] 和高级目标推理 [30]。它结合了目标分类和目标定位两个任务。现代大多数目标检测器的框架是 two-stage [9,8,22,16,10],其中目标检测被定义为一个多任务学习问题:1)区分前景物体框与背景并为它们分配适当的类别标签;2)回归一组系数使得最大化检测框和目标框之间的交并比(IoU)或其它指标。最后,通过一个 NMS 过程移除冗余的边界框(对同一目标的重复检测)。

在这样的检测流程中,分类和定位被用不同的方法解决。具体来说,给定一个提议框(proposal),每个类别标签的概率可自然而然地用作该提议的「分类置信度」,而边界框回归模块却只是预测了针对该提议框的变换系数,以拟合目标物体的位置。换而言之,在这个流程缺失了「定位置信度」。

定位置信度的缺失带来了两个缺点。(1)首先,在抑制重复检测时,由于定位置信度的缺失,分类分数通常被用作给检测框排名的指标。在图 1(a) 中,研究者展示了一组案例,其中有更高分类置信度的检测框却与其对应的目标物体有更小的重叠。就像 Gresham 著名的「劣币驱逐良币」理论一样,分类置信度和定位准确度之间的不匹配可能会导致定位更准确的边界框在 NMS 过程中反而被更不准确的边界框抑制了。(2)其次,缺乏定位置信度使得被广泛使用的边界框回归方法缺少可解释性或可预测性。举个例子,之前的研究 [3] 报告了迭代式边界框回归的非单调性。也就是说,如果多次应用边界框回归,可能有损输入边界框的定位效果(见图 1(b))。

 图 1:由缺乏定位置信度所造成的两个缺点的图示。这些示例选自 MS-COCO minival [17]。(a)分类置信度和定位准确度不对齐的示例。黄框表示真实目标框,红框和绿框都是 FPN [16] 所得到的检测结果。定位置信度是由研究者提出的 IoU-Net 计算得到的。使用分类置信度作为排名指标,会导致定位更准确的边界框(绿框)在传统的 NMS 流程被错误地删去。2.1 节提供了定量分析。(b)在迭代式边界框回归中非单调定位的示例。2.2 节提供了定量分析。

研究者在这篇论文中引入了 IoU-Net,其能预测检测到的边界框和它们对应的真实目标框之间的 IoU,使得该网络能像其分类模块一样,对检测框的定位精确程度有所掌握。这种简单的预测 IoU 值能为研究者提供前述问题的新解决方案:

1.IoU 是定位准确度的一个天然标准。研究者可以使用预测得到的 IoU 替代分类置信度作为 NMS 中的排名依据。这种技术被称为 IoU 引导式 NMS(IoU-guided NMS),可消除由误导性的分类置信度所造成的抑制错误。

2. 研究者提出了一种基于优化的边界框修正流程,可与传统的基于回归的边界框修正方法分庭抗礼。在推理期间,预测得到的 IoU 可用作优化目标,也可作为定位置信度的可解释性指示量。研究者提出的精准 RoI 池化层(Precise RoI Pooling layer)让研究者可通过梯度上升求解 IoU 优化。研究者表明,相比于基于回归的方法,基于优化的边界框修正方法在实验中能实现定位准确度的单调提升。这种方法完全兼容并可整合进各种不同的基于 CNN 的检测器 [16,3,10]。

边界框修正示例:上行是传统方法的结果,下行是本文提出方法的结果。

2 深入目标定位

2.1 分类准确度和定位准确度不匹配

图 2:边界框与其对应目标框的 IoU 与分类/定位置信度之间的关系。对那些与目标框的 IoU 高于 0.5 的检测框,其 Pearson 相关系数为 (a) 0.217 和 (b) 0.617。(a)分类置信度表示了一个边界框的类别,但不能被解读成定位准确度。(b)为了解决这个问题,研究者提出了 IoU-Net 来预测每个检测到的边界框的定位置信度,即其与对应的目标框的 IoU。

图 3:经过 NMS 之后得到的正例边界框的数量,根据它们与对应的目标框之间的 IoU 分组。在传统 NMS 中(蓝色条形图),定位准确的边界框中有很大一部分会被错误抑制,这是由分类置信度和定位准确度之间的不匹配造成的,而 IoU 引导式 NMS(黄色条形图)则能保留定位更准确的边界框。

2.2 非单调边界框回归

图 4:基于优化的与基于回归的 BBox 优化。(a)在 FPN 中比较。当迭代式地应用回归时,检测结果的 AP(平均精度)首先会提升,但会在之后的迭代中快速降低。(b)在 Cascade R-CNN 中比较。迭代 0、1、2 表示 Cascade R-CNN 中的第 1、2、3 个回归阶段。在多轮回归之后,AP 稍有下降,而基于优化的方法则进一步将 AP 提高了 0.8%。

3 IoU-Net

为了定量地分析 IoU 预测的有效性,研究者首先在 3.1 节提出了用于训练 IoU 预测器的方法。在 3.2 和 3.3 节,研究者分别展示了如何将 IoU 预测器用于 NMS 和边界框修正的方法。最后在 3.4 节,研究者将 IoU 预测器整合进了 FPN [16] 等现有的目标检测器中。

3.1 学习预测 IoU

图 5:研究者提出的 IoU-Net 的完整架构,详见 3.4 节。输入图像首先输入一个 FPN 骨干网络。然后 IoU 预测器读取这个 FPN 骨干网络的输出特征。研究者用 PrRoI 池化层替代了 RoI 池化层,详见 3.3 节。这个 IoU 预测器与 R-CNN 分支有相似的结果。虚线框内的模块能构成一个单独的 IoU-Net。

3.2 IoU 引导式 NMS

算法 1:IoU 引导式 NMS。在这个算法中,分类置信度和定位置信度是解开的(disentangled)。研究者使用定位置信度(预测得到的 IoU)来给所有被检测到的边界框排名,然后基于一个类似聚类的规则来更新分类置信度。

3.3 将边界框修正当作是一个优化过程

算法 2:基于优化的边界框修正

精准 RoI 池化(Precise RoI Pooling)

研究者引入了精准 RoI 池化(简写成:PrRoI 池化)来助力研究者的边界框修正。其没有任何坐标量化,而且在边界框坐标上有连续梯度。给定 RoI/PrRoI 池化前的特征图 F(比如,来自 ResNet-50 中的 Conv4),设 wi,j 是该特征图上一个离散位置 (i,j) 处的特征。使用双线性插值,这个离散的特征图可以被视为在任意连续坐标 (x,y) 处都是连续的:

其中,  是插值系数。然后将 RoI 的一个 bin 表示为 ,其中 (x_1,y_1) 和 (x_2,y_2) 分别是左上角和右下角的连续坐标。给定 bin 和特征图 F,研究者通过计算一个二阶积分来执行池化(比如平均池化):

为更便于理解,研究者在图 6 中可视化了 RoI 池化、RoI Align [10] 和研究者的 PrRoI 池化:在传统的 RoI 池化中,连续坐标首先需要被量化(quantization),以计算该 bin 中激活的和;为了消除量化误差,在 RoI Align 中,会采样该 bin 中 N=4 个连续点,表示成 (a_i,b_i),而池化就是在这些采样的点上执行的。RoI Align 中的 N 是预定义的,而且不能根据 bin 的大小进行调整;与此不同,研究者提出的 PrRoI 池化是直接基于连续特征图计算二阶积分。

图 6:RoI 池化、RoI Align 和 PrRoI 池化的图示

3.4 联合训练

这种 IoU 预测器可集成到标准的 FPN 流程中,以进行端到端的训练和推理。为了清楚说明,研究者将用于图像特征提取的 CNN 架构称为骨干(backbone),将应用于各个 RoI 的模块称为头(head)。

如图 5 所示,这个 IoU-Net 使用了 ResNet-FPN [16] 作为骨干网络,其架构是自上而下的,可构建特征金字塔(feature pyramid)。FPN 能根据 RoI 的特征的比例从这个特征金字塔的不同层级提取这些 RoI 的特征。其中原来的 RoI 池化层被换成了精准 RoI 池化层。至于该网络的头,这个 IoU 预测器根据来自骨干网络的同一视觉特征而与 R-CNN 分支(包括分类和边界框回归)并行工作。

研究者根据在 ImageNet [25] 上预训练的 ResNet 模型初始化了权重。所有新的层都使用了标准差为 0.01 或 0.001 的零均值高斯分布进行初始化。研究者使用了平滑 L1 损失来训练 IoU 预测器。IoU 预测器的训练数据是在一个训练批中的图像中单独生成的,详见 3.1 节。IoU 标签进行了归一化,因此其值分布在 [-1,1]。

输入图像的大小进行了调节,短边长度为 800 像素,长边长度最大为 1200 像素。分类和回归分支取来自 RPN 的每张图像 512 RoI。研究者使用了 16 的批大小进行训练。网络为 16 万次迭代进行了优化,学习率设置为 0.01,并在 12 万次迭代后减小 10 倍。研究者还为前 1 万次迭代设置了 0.004 的学习率以进行预热。研究者使用了 1e-4 的权重衰减和 0.9 的 momentum.

在推理过程中,研究者首先对初始坐标应用边界框回归。为了加快推理速度,研究者首先在所有检测到的边界框上应用 IoU 引导式 NMS。然后,使用基于优化的算法进一步改进 100 个有最高分类置信度的边界框。研究者设置步长为 λ=0.5,早停阈值为 Ω1=0.001,定位衰减容限 Ω2=−0.01,迭代次数 T=5。

4 实验

研究者在有 80 个类别的 MS-COCO 检测数据集 [17] 上进行了实验。遵照 [1,16],研究者在 8 万张训练图像和 3.5 万张验证图像的并集(trainval35k)上训练了模型,并在包含 5000 张验证图像的集合(minival)上评估了模型。为验证该方法,在 4.1 节和 4.2 节,研究者与目标检测器分开而训练了一个独立的 IoU-Net(没有 R-CNN 模块)。IoU-Net 助力的 IoU 引导式 NMS 和基于优化的边界框修正被应用在了检测结果上。

4.1 IoU 引导式 NMS

表 1 总结了不同 NMS 方法的表现。尽管 Soft-NMS 能保留更多边界框(其中没有真正的「抑制」),但 IoU 引导式 NMS 还能通过改善检测到的边界框的定位来提升结果。因此,在高 IoU 指标(比如 AP_90)上,IoU 引导式 NMS 显著优于基准方法。

表 1:IoU 引导式 NMS 与其它 NMS 方法的比较。通过保留定位准确的边界框,IoU 引导式 NMS 在具有高匹配 IoU 阈值的 AP(比如 AP_90)上的表现显著更优。

图 7:在匹配检测到的边界框与真实目标框的不同 IoU 阈值下,不同 NMS 方法的召回率曲线。研究者提供了 No-NMS(不抑制边界框)作为召回率曲线的上限。研究者提出的 IoU-NMS 有更高的召回率,并且在高 IoU 阈值(比如 0.8)下能有效收窄与上限的差距。

4.2 基于优化的边界框修正

研究者提出的基于优化的边界框修正与大多数基于 CNN 的目标检测器 [16,3,10] 都兼容,如表 2 所示。将这种边界框修正方法应用在原来的使用单独 IoU-Net 的流程之后还能通过更准确地定位目标而进一步提升表现。即使是对有三级边界框回归运算的 Cascade R-CNN,这种改进方法能进一步将 AP_90 提升 2.8%,将整体 AP 提升 0.8%。

表 2:基于优化的边界框修正能进一步提升多种基于 CNN 的目标检测器的表现。

4.3 联合优化

IoU-Net 可与目标检测框架一起并行地端到端优化。研究者发现,将 IoU 预测器添加到网络中有助于网络学习更具判别性的特征,这能分别将 ResNet50-FPN 和 ResNet101-FPN 的整体 AP 提升 0.6% 和 0.4%。IoU 引导式 NMS 和边界框修正还能进一步提升表现。研究者使用 ResNet101-FPN 得到了 40.6% 的 AP,相比而言基准为 38.5%,提升了 2.1%。表 4 给出了推理速度,表明 IoU-Net 可在计算成本承受范围之内实现检测水平的提升。

表 3:在 MS-COCO 上的最终实验结果。IoU-Net 表示嵌入 IoU 预测器的 ResNet-FPN。在这个 FPN 基准上,研究者实现了约 2% 的 AP 提升。

表 4:多种目标检测器在单个 TITAN X GPU 上得到的推理速度。这些模型都有一样的骨干网络 ResNet50-FPN。输入分辨率为 1200x800。所有超参数设置相同。

5 总结

本文提出一种用于准确目标定位的全新网络架构 IoU-Net。通过学习预测与对应真实目标的 IoU,IoU-Net 可检测到的边界框的「定位置信度」,实现一种 IoU 引导式 NMS 流程,从而防止定位更准确的边界框被抑制。IoU-Net 很直观,可轻松集成到多种不同的检测模型中,大幅提升定位准确度。MS-COCO 实验结果表明了该方法的有效性和实际应用潜力。

从学术研究的角度,本文指出现代检测流程中存在分类置信度和定位置信度不匹配的问题。更进一步,研究者将边界框修正问题重定义为一个全新的优化问题,并提出优于基于回归方法的解决方案。研究者希望这些新视角可以启迪未来的目标检测工作。

]]> 原文: https://ift.tt/2AsxOBx
RSS Feed

机器知心

IFTTT

谷歌大脑提出TensorFuzz,用机器学习debug神经网络

机器学习尤其是深度学习很难调试与修正,而最近谷歌大脑 Ian Goodfellow 等研究者发布了一个名为 TensorFuzz 的神经网络 Debug 开源库。他们将传统软件工程中由覆盖性引导的模糊方法引入到神经网络,并借助机器学习方法实现 Debug 过程。

神经网络正逐渐影响人类生活环境,包括医学诊断、自动驾驶、企业和司法决策过程、空中交通管制、以及电网控制。这些人类可以做到的事,神经网络也有可能做到。它可以拯救生命、为更多的人提供帮助。然而,在实现这些应用之前,我们首先需要确定神经网络到底是不是可靠的,因此它的修正和调试方法恰恰是我们现在所缺失的。

众所周知,由于各种原因,机器学习模型难以调试或解释,一是从概念上难以说明用户想要了解的模型信息,而且通过统计和计算也难以获得指定问题的答案。这个特性导致最近的机器学习出现「复现危机」,因为我们很难对不好调试的技术做出可靠的实验结论。

即使是与神经网络直接相关的简单问题也可能会有巨大的计算量,而且使用深度学习框架实现的神经网络也可能和理论模型相去甚远,所以神经网络非常难以调试。例如,ReluPlex 可以形式上地验证神经网络的一些特性,但由于计算成本太高,无法扩展到实际模型中。此外,ReluPlex 通过将 ReLU 网络描述为一个分段线性函数来进行分析,它使用一个矩阵乘法都为线性的理论模型。但实际上,由于浮点算法的存在,计算机上的矩阵乘法并非线性的,机器学习算法可以学习利用这种特性进行非线性运算。这并不是要批评 ReluPlex,而是想说明应该需要更多与软件直接交互地测试算法,以便更客观地测试因为深度学习框架而偏离理论的模型。

在 Ian Goodfellow 等人的这项研究中,他们使用传统软件工程已有的技术,即由覆盖性引导的模糊方法(coverage-guided fuzzing,CGF),并修正这种技术以用来测试神经网络。根据 Goodfellow 等研究者在原论文中所述,该项工作的主要贡献有以下几点:

  • 为神经网络引入 CGF 概念,并描述了快速近似最近邻算法如何以通用的方式检查覆盖性。

  • 为 CGF 技术构建了一个名为 TensorFuzz 的开源库。

  • 使用 TensorFuzz 可在已训练神经网络搜索数值问题、在神经网络和对应经量化处理的网络间生成不一致性度量、在字符级语言模型中表现的不良行为。

下图描述了整体的 Fuzzer 过程,它与普通计算机程序的 CGF 结构非常相似,只不过它不与经检测的计算机程序交互,而是与 TensorFlow 的静态计算图进行交互。


如上左图所示,Fuzzer 由 Seed 语料库开始,它为计算图提供至少一组输入。研究者将这些输入限制为有效的网络输入,例如对于图像输入,研究者可以限制输入数据有正确的图像尺寸和 RGB 通道数。在给定 Seed 语料库后,输入选择器将从输入语料库中选择不同的元素,例如输入选择器可以是以随机的方法选择输入。

给定有效的输入,Mutator 会对输入做一些修改,这种修改可能只是简单地翻转图像像素,同样也可以是在修改总量的某些约束下对图像进行修改。Mutator 输出的修改数据随后可以输入到神经网络中,TensorFuzz 需要从神经网络抽取出两种信息,即抽取一组元数据数组以计算目标函数,抽取一组覆盖性数组以计算实际覆盖性。计算覆盖性后,如果 Mutator 修改的数据需要执行覆盖,则将它添加到输入语料库中,如果计算的目标函数满足条件,则可以添加到测试案例列表中。

如上右图为 Fuzzer 主体过程的伪代码,在满足迭代数的情况下,从输入语料库中抽取样本为 parent,并使用 Mutate() 函数对该样本做修改以产生新的样本 data。样本 data 随后输入到神经网络,并通过 Fetch() 函数从该神经网络抽取覆盖性 cov 和元数据 meta 两个向量。接下来只需要通过 IsNewCoverage() 和 Objective() 两个函数判断 cov 和 meta 两个向量是不是满足条件,满足的话就能分别将 data 样本加入到输入语料库和测试案例列表。

以上只是 Fuzzer 主体过程的一般描述,Chooser、Mutator 以及 Fetcher 的具体结构与算法读者可详细查阅原论文。

论文:TensorFuzz: Debugging Neural Networks with Coverage-Guided Fuzzing

论文地址:https://ift.tt/2AstWAs

众所周知,机器学习模型的解释和调试非常困难,神经网络更是如此。在本文中,我们为神经网络引入了自动化软件测试技术,该技术非常适合发掘仅在少量输入下出现的错误。具体而言,我们为神经网络开发了由覆盖引导的模糊(coverage-guided fuzzing,CGF)方法。在 CGF 中,神经网络输入的随机变化由覆盖性度量(coverage metric)引导,以满足用户指定的约束。我们描述了快速近似最近邻算法如何为神经网络提供这种覆盖性度量方法,并讨论了 CGF 在以下目标中的应用:在已训练神经网络中搜索数值误差、在神经网络和对应经量化处理的网络间生成不一致性度量、在字符级语言模型中表现不良行为。最后,我们发布了一个名为 TensorFuzz 的开源库,它实现了本论文所描述的技术。

4 实验结果

我们简要展示了 CGF 技术的一些应用以证实它的通用性质。

4.1 CGF 可以高效地找到已训练神经网络的数值错误

由于神经网络使用浮点数运算,它们对于训练期间及评估过程中的数值错误很敏感。众所周知,这些问题是很难调试的,部分原因是它们可能仅由一小部分很少遇到的输入所触发。这正是 CGF 能发挥作用的一个案例。我们专注于寻找导致非数(not-a-number,NaN)值的输入。并总结出如下结论:

找出数值错误很重要。数值错误,尤其是那些导致 NaN 的数值错误,假如在现实应用中首次遇到这些错误,重要系统将做出严重的危险行为。CGF 可以用于在部署系统之前找到大量的错误,并减少错误在危险环境中造成的风险。

CGF 可以快速找到数值错误。通过 CGF,我们可以简单地添加检查数值选项到元数据中,并运行我们的 fuzzer。为了测试这个假设,我们训练了一个全连接神经网络来分类 MNIST[26] 数字。我们故意使用了一个实现效果比较差的交叉熵损失函数,以增加数值错误出现的可能性。我们用 100 的 mini-batch 大小训练了 35000 个迭代步,直到达到 98% 的验证准确率。然后我们检查到,不存在导致数值错误的 MNIST 数据集元素。尽管如此,TensorFuzz 却在多个随机初始化中快速找到了 NaN,如图 2 所示。

基于梯度的搜索技术可能无法帮助寻找数值错误。CGF 的一个潜在缺陷是,基于梯度的搜索技术可能比随机搜索技术更加高效。然而,我们并不清楚如何明确基于梯度搜索的目标。目前不存在度量模型的真值输出和 NaN 值相似性的直接方法。

随机搜索在寻找某些数值错误方面是极度低效的。为了证实随机搜索不够高效且覆盖引导对于提高效率很有必要,我们对比了随机搜索方法。我们实现了一个基线随机搜索算法,并用 10 个不同的随机初始化在语料库的 10 万个样本上运行了该算法。基线算法在所有实验中未找到一个非限定元素。

图 2:我们训练了一个包含某些不稳定数值运算的 MNIST 分类器。然后我们在 MNIST 数据集的随机种子上运行 fuzzer10 次。fuzzer 在每次运行中都找到了一个非限定元素。而随机搜索未能找到一个非限定元素。左图:运行过程中(共运行 10 次)fuzzer 的累积语料库大小。右图:由 fuzzer 找到的满足条件的图像示例。

4.2 CGF 解决模型和量化版本不一致的问题

量化(quantization)[18] 是一种神经网络权重被保存,且在执行神经网络计算的时候使用更少计算内存位数来表示数值的过程。量化常被用来减少神经网络的计算成本或大小。它还被广泛用于在手机的安卓神经网络 API 或 TFLite 上,以及在自定制机器学习硬件(例如谷歌的 Tensor Processing Unit[20])上运行神经网络推理。

寻找由量化导致的错误非常重要:当然,如果量化显著减少了模型准确率,那量化就没有什么意义了。给定一个量化模型,如果能检查出多少量化减少了准确率最好。

仅检查已有的数据只能找到很少的错误:作为基线实验,我们训练了一个使用 32 位浮点数的 MNIST 分类器(这一次没有故意引入数值错误)。然后把所有权重和激活值修剪为 16 位。之后,我们对比了 32 位和 16 位模型在 MNIST 测试集上的预测,没有找到任何不一致性。

CGF 可以快速在数据周围的小区域中找到很多错误:然后运行 fuzzer,变化限制在种子图像周围的半径为 0.4 的无限范数球中,其中仅使用了 32 位模型作为覆盖的激活值。我们将输入限制在种子图像附近,因为这些输入几乎都有明确的类别语义。模型的两个版本在域外的垃圾数据(没有真实类别)上出现不一致性并没有什么意义。通过这些设置,fuzzer 可以生成 70% 样本的不一致性。因此,CGF 允许我们寻找在测试时出现的真实错误,如图 3 所示。

随机搜索在给定和 CGF 相同的变化数量下无法找到新的错误:如 4.1 节所述,我们试验了一个基线随机搜索方法以表明覆盖引导在这种设置下特别有用。随机搜索基线在给定和 fuzzer 相同的变化数量下无法找到新的任何不一致性。

图 3:我们训练了一个 32 位浮点数的 MNIST 分类器,然后将对应的 TensorFlow 图修剪为 16 位浮点数图,原始的和修剪后的图都在 MNIST 测试集的全部 10000 个元素上执行相同的预测,但 fuzzer 可以找到大约 70% 的测试图像中半径为 0.4 的无穷范数球中的不一致性。左图:fuzzer 的累积语料库大小随运行次数(共 10 次)的变化。那些一路朝右的曲线对应失败的模糊化(fuzzing)运行。右图:由 fuzzer 找到的被 32 位和 16 位神经网络分类为不同类别的图像。

]]> 原文: https://ift.tt/2M50PV7
RSS Feed

机器知心

IFTTT

入职仅一年,套现5000多万后背刺马斯克搬走 Grok 核心代码库!-InfoQ 每周精要894期

「每周精要」 NO. 894 2025/09/06 头条 HEADLINE 入职仅一年,套现 5000 多万搬走 Grok 核心代码库! 业内专家:拥有菜谱不等于能做出同样的菜 精选 SELECTED AI 公司创始人现跑路迪拜! 80% 收入烧广告、假账骗投资人,微...