自动给神经网络找bug,Google发布TensorFuzz

简介: DEBUG,是程序员永无止境的日常。给神经网络捉虫,更是比普通程序难得多:绝大部分bug都不会导致神经网络崩溃、报错,只能让它训练了没效果,默默地不收敛。

DEBUG,是程序员永无止境的日常。给神经网络捉虫,更是比普通程序难得多:

绝大部分bug都不会导致神经网络崩溃、报错,只能让它训练了没效果,默默地不收敛。

能不能把炼丹师们从无休止无希望的debug工作中拯救出来?两位谷歌大脑研究员Augustus Odena和Ian Goodfellow说,好像能。


image

他们推出了一种自动为神经网络做软件测试的方法:TensorFuzz。它非常擅长自动发现那些只有少数某些输入会引发的错误。

比如说,它能在已训练的神经网络里发现数值误差,生成神经网络和其量化版本之间的分歧,发现字符级语言模型中的不良行为。

这种方法说新也不新,它来源于传统编程技艺中的一种测试手段:覆盖引导的模糊测试,英语叫coverage-guided fuzzing,简称CGF。

模糊测试,就是通过向目标系统提供非预期的输入并监视异常结果,来发现软件漏洞。也就是说,用随机坏数据(也称做 fuzz)攻击一个程序,然后等着观察哪里遭到了破坏。

而所谓“覆盖引导”的模糊测试,是指在进行模糊测试时,尽量最大化程序的代码覆盖率,测试尽可能多的代码分支。

AFL、libFuzzer都是比较常见的模糊测试工具。

当然传统的方法,不能直接用于神经网络。把CGF搬到神经网络上,不能像在传统的测试中那样简单地去计算分支覆盖率。为此,深度学习的研究者们提出了不少计算覆盖率的新方法,来计算神经元覆盖率、神经元边界覆盖率等等。

两位谷歌大牛提出,应该存储与输入相关联的激活,通过用近似最近邻算法来检查这些输入有没有导致覆盖率的增加,

粗略地说,TensorFuzz是通过查看计算图的“激活”来测量覆盖率。整体架构如下图所示,左边是模糊测试的程序图,标明了数据如何流动;右边以算法形式描述了模糊测试过程的主循环。

image

说一下实验结果。

1、CGF可以在训练好的神经网络中有效发现数值误差

由于神经网络使用浮点数学,因此无论是在训练还是评估时,都很容易受到数值问题的影像。众所周知,这些问题很难调试。而CGF可以帮助我们专注于找到导致NaN值的输入。

2、CGF揭示了模型和其量化版本之间的分歧

量化是一种存储神经网络权重的方法,本质上是使用较少的数值表示来执行神经网络的计算。量化是降低神经网络计算成本或尺寸的流行方法。但是一定要避免量化之后,显著降低模型的准确性。

CGF可以在数据周围的小区域内快速找到许多错误,在测试的案例中,70%的情况下模糊器能够产生分歧。另外,在给定相同突变的情况下,随机搜索没有找到新的错误。

3、CGF揭示了字符级语言模型中的不良行为

作者运行了TensorFuzz和随机搜索进行测试,测试目的有两个,一是模型不应该连续多次重复相同的词,而是不应该输出黑名单上的词。

测试进行24小时后,TensorFuzz和随机搜索都生成了连续重复的词。此外,TensorFuzz生成了十个黑名单词汇中的六个,而随机搜索只有一个。

大概就酱。

总之,作者为神经网络引入CGF的概念,并且在论文中描述了如何实现。上面的三个实验结果,证明了TensorFuzz的实际适用性。

image

Goodfellow说,他希望TensorFuzz能成为包括机器学习在内复杂软件的基础回归测试。例如在新版本发布前,模糊搜索新旧版本之间的差异。

论文传送门在此:

https://arxiv.org/abs/1807.10875

image

Abstract

Machine learning models are notoriously difficult to interpret and debug. This is particularly true of neural networks. In this work, we introduce automated software testing techniques for neural networks that are well-suited to discovering errors which occur only for rare inputs. Specifically, we develop coverage-guided fuzzing (CGF) methods for neural networks. In CGF, random mutations of inputs to a neural network are guided by a coverage metric toward the goal of satisfying user-specified constraints. We describe how fast approximate nearest neighbor algorithms can provide this coverage metric. We then discuss the application of CGF to the following goals: finding numerical errors in trained neural networks, generating disagreements between neural networks and quantized versions of those networks, and surfacing undesirable behavior in character level language models. Finally, we release an open source library called TensorFuzz that implements the described techniques.

作者还说了,TensorFuzz是一个开源库。 不过嘛,目前两位研究人员还没放出地址,为期应该不远了~

原文发布时间为:2018-08-01
本文来自云栖社区合作伙伴“量子位”,了解相关信息可以关注“量子位”。

相关文章
|
机器学习/深度学习 存储 自然语言处理
Google的神经网络表格处理模型TabNet介绍
Google的神经网络表格处理模型TabNet介绍
620 0
Google的神经网络表格处理模型TabNet介绍
|
机器学习/深度学习 存储 知识图谱
GNN入门必看!Google Research教你如何从毛坯开始搭建sota 图神经网络(下)
图神经网络近几年的发展十分火热,主要原因还是图能够表示连通关系,例如知识图谱等更贴切现实应用!Google Research最近发了一篇博客,从零开始教学GNN的发展路程,不熟悉的同学可以查缺补漏啦!
158 0
GNN入门必看!Google Research教你如何从毛坯开始搭建sota 图神经网络(下)
|
机器学习/深度学习 存储 自然语言处理
GNN入门必看!Google Research教你如何从毛坯开始搭建sota 图神经网络(上)
图神经网络近几年的发展十分火热,主要原因还是图能够表示连通关系,例如知识图谱等更贴切现实应用!Google Research最近发了一篇博客,从零开始教学GNN的发展路程,不熟悉的同学可以查缺补漏啦!
231 0
GNN入门必看!Google Research教你如何从毛坯开始搭建sota 图神经网络(上)
|
机器学习/深度学习 存储 人工智能
Google AI与Deepmind强强联合,推出新工具加速神经网络稀疏化进程
优化神经网络的一个方法是稀疏化,然而,受到支持不足和工具缺乏的限制,该技术在生产中的使用仍然受限。为了解决这一问题,近日,Google联合Deepmind开发出了在TensorFlow Lite和XNNPACK ML中的新特性和工具库。
217 0
Google AI与Deepmind强强联合,推出新工具加速神经网络稀疏化进程
|
机器学习/深度学习 人工智能 自然语言处理
谷歌神经网络翻译系统发布后,我们和Google Brain的工程师聊了聊
9 月 27 日,谷歌在 arXiv.org 上发表论文《Google`s Neural Machine Translation System: Bridging the Gap between Human and Machine Translation》介绍谷歌的神经网络翻译系统(GNMT)后,「机器之心」第一时间进行了详细的解读和报道,重磅 | 谷歌翻译整合神经网络:机器翻译实现颠覆性突破(附论文)。
235 0
|
机器学习/深度学习 人工智能 安全
AI 开年翻车事件:训练神经网络除 bug ,结果它把整个库删了……
这件听起来很荒谬的事情,真实在美国「大众点评」Yelp 上发生了。
467 0
|
机器学习/深度学习 人工智能 算法
Google惊人研究:一组图片,就能强迫神经网络执行其他任务
还记得那些把熊猫认成猩猩、把乌龟认成枪、把枪认成直升机的算法吗? 它们遭遇的,是一个名为“对抗攻击(adversarial attacks)”的敌人。这个敌人每次出现,都能让图像识别算法不知所措。 现在,更丧心病狂的来了。
1649 0
|
2月前
|
数据可视化 定位技术 Sentinel
如何用Google Earth Engine快速、大量下载遥感影像数据?
【2月更文挑战第9天】本文介绍在谷歌地球引擎(Google Earth Engine,GEE)中,批量下载指定时间范围、空间范围的遥感影像数据(包括Landsat、Sentinel等)的方法~
494 0
如何用Google Earth Engine快速、大量下载遥感影像数据?
|
2月前
|
编解码 人工智能 算法
Google Earth Engine——促进森林温室气体报告的全球时间序列数据集
Google Earth Engine——促进森林温室气体报告的全球时间序列数据集
24 0
|
2月前
|
编解码 人工智能 数据库
Google Earth Engine(GEE)——全球道路盘查项目全球道路数据库
Google Earth Engine(GEE)——全球道路盘查项目全球道路数据库
43 0

热门文章

最新文章