CN112119410A - 用于用覆盖引导模糊测试调试神经网络的***和方法 - Google Patents
用于用覆盖引导模糊测试调试神经网络的***和方法 Download PDFInfo
- Publication number
- CN112119410A CN112119410A CN201980032675.5A CN201980032675A CN112119410A CN 112119410 A CN112119410 A CN 112119410A CN 201980032675 A CN201980032675 A CN 201980032675A CN 112119410 A CN112119410 A CN 112119410A
- Authority
- CN
- China
- Prior art keywords
- inputs
- neural network
- input
- mutated
- computing devices
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/10—Interfaces, programming languages or software development kits, e.g. for simulating neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/366—Software debugging using diagnostics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/01—Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Biomedical Technology (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本公开提供了用于调试神经网络的***和方法。在一个示例中,提供了一种计算机实现的方法,该方法包括由一个或多个计算设备从输入语料库获得一个或多个输入。该方法还包括由所述一个或多个计算设备对所述一个或多个输入进行变异并将一个或多个变异的输入提供给神经网络;作为神经网络处理所述一个或多个变异的输入的结果而由所述一个或多个计算设备获得覆盖阵列的集合;由所述一个或多个计算设备至少部分地基于覆盖阵列的集合来确定所述一个或多个变异的输入是否提供新的覆盖;并且在确定所述一个或多个变异的输入提供新的覆盖后,将所述一个或多个变异的输入添加到输入语料库。
Description
本申请基于具有2018年5月18日的提交日的美国临时申请第62/673,751号并要求其权益,该临时申请出于所有目的通过引用整体并入本文。
技术领域
本公开一般而言涉及机器学习模型。更具体而言,本公开涉及发现神经网络中的不期望的行为。
背景技术
机器学习模型(诸如神经网络)的使用在解决传统上对于计算***来说是困难的各种任务中变得越来越重要。但是,机器学习模型一般难以解释和调试。随着像神经网络这样的机器学习模型变得越来越普遍,变得更加期望在“现实世界”中实现神经网络之前测试神经网络以发现缺陷和/或其它不期望的行为。
发明内容
本公开的实施例的方面和优点将在下面的描述中部分地阐述,或者可以从描述中获悉,或者可以通过实施例的实践而获知。
本公开的一个示例方面针对调试神经网络。该方法可以包括由一个或多个计算设备从输入语料库获得一个或多个输入。该方法还可以包括由一个或多个计算设备对一个或多个输入进行变异(mutate)。该方法还可以包括由一个或多个计算设备向神经网络提供一个或多个变异的输入。该方法还可以包括作为神经网络处理一个或多个变异的输入的结果而由一个或多个计算设备获得覆盖阵列(coverage array)的集合,该覆盖阵列的集合描述在由神经网络处理一个或多个变异的输入期间是否激活了神经网络的一个或多个神经元。该方法还可以包括由一个或多个计算设备至少部分地基于覆盖阵列的集合来确定一个或多个变异的输入是否提供新的覆盖。该方法还可以包括在确定一个或多个变异的输入提供新的覆盖后,由一个或多个计算设备将一个或多个变异的输入添加到输入语料库。
在一些实施方式中,该方法还可以包括作为神经网络处理一个或多个变异的输入的结果而由一个或多个计算设备获得元数据阵列的集合,所述元数据阵列的集合描述与神经网络处理一个或多个变异的输入的执行相关联的元数据;由一个或多个计算设备至少部分地基于元数据阵列的集合来确定是否满足目标函数;并且在确定满足目标函数后,由一个或多个计算设备将一个或多个变异的输入添加到测试用例的列表。
在一些实施方式中,该方法还可以包括其中由一个或多个计算设备至少部分地基于覆盖阵列的集合来确定一个或多个变异的输入是否提供新的覆盖包括:由一个或多个计算设备至少部分地基于覆盖阵列的集合来生成激活向量;由一个或多个计算设备执行近似最近邻算法以识别先前的激活向量;由一个或多个计算设备确定激活向量和由近似最近邻算法识别出的先前激活向量之间的距离;并且由一个或多个计算设备将该距离与阈值距离进行比较;其中,当该距离大于阈值距离时,一个或多个变异的输入提供新的覆盖。
在一些实施方式中,从输入语料库获得一个或多个输入可以包括使用统一随机选择来从输入语料库选择一个或多个输入。
在一些实施方式中,从输入语料库获得一个或多个输入可以包括使用的启发式从输入语料库选择一个或多个输入,其中p(ck,t)给出在时间t选择输入语料库元素ck的概率,其中tk是元素ck被添加到输入语料库的时间。
在一些实施方式中,对一个或多个输入进行变异可以包括将具有用户可配置的方差的白噪声添加到一个或多个输入。
在一些实施方式中,对一个或多个输入进行变异可以包括将具有用户可配置的方差的白噪声添加到一个或多个输入,其中变异的输入与变异的输入从其起源(descended)的原始输入之间的差被约束为具有用户可配置的L∞范数。
在一些实施方式中,确定一个或多个变异的输入是否提供新的覆盖可以包括确定神经网络是否已经达到其先前未达到的新状态。
在一些实施方式中,确定神经网络是否已经达到其先前未达到的新状态可以包括确定激活向量是否近似接近先前的激活向量。
在一些实施方式中,确定是否满足目标函数可以包括确定神经网络是否已经达到期望的状态。
在一些实施方式中,期望的状态可以是神经网络的错误状态。
本公开的另一个示例方面针对一种计算设备。该计算设备可以包括一个或多个处理器以及一个或多个非暂态计算机可读介质,该介质存储指令,该指令在由一个或多个处理器执行时使计算设备执行操作。指令在被执行时可以使计算设备从输入语料库获得一个或多个输入。指令在被执行时还可以使计算设备对一个或多个输入进行变异。指令在被执行时还可以使计算设备向神经网络提供一个或多个变异的输入。指令在被执行时还可以使计算设备作为神经网络处理一个或多个变异的输入的结果而获得覆盖阵列的集合,该覆盖阵列的集合描述在由神经网络处理一个或多个变异的输入期间是否激活了神经网络的一个或多个神经元。指令在被执行时还可以使计算设备至少部分地基于覆盖阵列的集合来确定一个或多个变异的输入是否提供新的覆盖。指令在被执行时还可以使计算设备在确定一个或多个变异的输入提供新的覆盖后将一个或多个变异的输入添加到输入语料库。
在一些实施方式中,计算设备还可以包括指令,该指令在被执行时使计算设备作为神经网络处理一个或多个变异的输入的结果而获得元数据阵列的集合,该元数据阵列的集合描述与神经网络处理一个或多个变异的输入的执行相关联的元数据;至少部分地基于元数据阵列的集合来确定是否满足目标函数;并且在确定满足目标函数后,将一个或多个变异的输入添加到测试用例的列表。
在一些实施方式中,计算设备还可以包括指令,该指令在被执行时使计算设备从种子语料库获得输入语料库,该种子语料库包含输入的至少一个集合。
本公开的另一个示例方面针对一个或多个非暂态计算机可读介质,其存储指令,该指令在由计算***的一个或多个处理器执行时使计算***执行操作。该操作包括从输入语料库获得一个或多个输入。该操作还包括对一个或多个输入进行变异。该操作还包括向神经网络提供一个或多个变异的输入。该操作还包括作为神经网络处理一个或多个变异的输入的结果而获得覆盖阵列的集合,该覆盖阵列的集合描述在由神经网络处理一个或多个变异的输入期间是否激活了神经网络的一个或多个神经元。该操作还包括至少部分地基于覆盖阵列的集合来确定一个或多个变异的输入是否提供新的覆盖。该操作还包括在确定一个或多个变异的输入提供新的覆盖后将一个或多个变异的输入添加到输入语料库。
在一些实施方式中,一个或多个非暂态计算机可读介质可以存储指令,该指令在由计算***的一个或多个处理器执行时使计算***作为神经网络处理一个或多个变异的输入的结果而获得元数据阵列的集合,该元数据阵列的集合描述与神经网络处理一个或多个变异的输入的执行相关联的元数据;至少部分地基于元数据阵列的集合来确定是否满足目标函数;并且确定满足目标函数后,将一个或多个变异的输入添加到测试用例的列表。
在一些实施方式中,一种用于调试神经网络的计算机实现的方法可以包括由一个或多个计算设备从输入语料库获得一个或多个输入;由一个或多个计算设备对一个或多个输入进行变异;由一个或多个计算设备向神经网络提供一个或多个变异的输入;作为神经网络处理一个或多个变异的输入的结果而由一个或多个计算设备获得元数据阵列的集合,该元数据阵列的集合描述与神经网络处理一个或多个变异的输入的执行相关联的元数据;由一个或多个计算设备至少部分地基于元数据阵列的集合来确定是否满足目标函数;并且在确定满足目标函数后,由一个或多个计算设备将一个或多个变异的输入添加到测试用例的列表。
在一些实施方式中,计算机实现的方法还可以包括由一个或多个计算设备向神经网络提供输入语料库的一个或多个变异的输入;并且作为神经网络处理一个或多个变异的输入的结果而由一个或多个计算设备获得覆盖阵列的集合,该覆盖阵列的集合描述在由神经网络处理一个或多个变异的输入期间是否激活了神经网络的一个或多个神经元。
在一些实施方式中,计算机实现的方法还可以包括由一个或多个计算设备至少部分地基于覆盖阵列的集合来确定一个或多个变异的输入是否提供新的覆盖;并且在确定一个或多个变异的输入提供新的覆盖后,由一个或多个计算设备将一个或多个变异的输入添加到输入语料库。
在一些实施方式中,一种用于调试神经网络的计算机实现的方法可以包括由一个或多个计算设备向神经网络提供输入语料库的一个或多个变异的输入;并且作为神经网络处理一个或多个变异的输入的结果而由一个或多个计算设备获得元数据阵列的集合,该元数据阵列的集合描述与神经网络处理一个或多个变异的输入的执行相关联的元数据。
在一些实施方式中,计算机实现的方法还可以包括由一个或多个计算设备至少部分地基于元数据阵列的集合来确定是否满足目标函数;并且在确定满足目标函数后,由一个或多个计算设备将一个或多个变异的输入添加到测试用例的列表。
神经网络可以被配置为接收任何种类的数字数据输入,并基于输入生成任何种类的分数、分类或回归输出。
例如,如果神经网络的输入是图像或已从图像中提取出的特征,那么神经网络针对给定图像生成的输出可以是针对对象类别的集合中的每个类别的分数,每个分数表示该图像包含属于该类别的对象的图像的估计可能性。
作为另一个示例,如果神经网络的输入是互联网资源(例如,网页)、文档或文档的部分或从互联网资源、文档或文档的部分中提取出的特征,那么由神经网络针对给定的互联网资源、文档或文档的部分生成的输出可以是针对主题的集合中的每个主题的分数,每个分数表示互联网资源、文档或文档部分是关于该主题的估计可能性。
作为另一个示例,如果神经网络的输入是特定广告的印象上下文的特征,那么由神经网络生成的输出可以是表示该特定广告将被点击的估计可能性的分数。
作为另一个示例,如果神经网络的输入是针对用户的个性化推荐的特征,例如,表征推荐的上下文的特征,例如,表征用户先前采取的动作的特征,那么由神经网络生成的输出可以是针对内容项的集合中的每个内容项的分数,每个分数表示用户将对被推荐的内容项做出有利响应的估计可能性。
作为另一个示例,如果神经网络的输入是一种语言的文本序列,那么由神经网络生成的输出可以是另一种语言的文本段集合中的每个文本段的分数,每个分数表示另一种语言的该文本段是将输入文本正确翻译成另一种语言的估计可能性。
作为另一个示例,如果神经网络的输入是表示讲话发音的序列,那么由神经网络生成的输出可以是针对文本段集合中的每个文本段的分数,每个分数表示该文本段是发音的正确转录的估计可能性。
附图说明
在说明书中阐述了针对本领域普通技术人员的实施例的详细讨论,该说明书参考了附图,在附图中:
图1描绘了根据本公开的示例实施例的可以与机器学习模型一起使用的示例计算***的框图。
图2描绘了根据本公开的示例实施例的示例覆盖引导模糊测试(coverage guidedfuzzing)***的框图。
图3描绘了根据本公开的示例实施例的用于执行神经网络调试的示例操作的流程图。
在多个附图上重复的附图标记旨在识别各种实施方式中的相同特征。
具体实施方式
概述
一般而言,本公开针对机器学习模型,诸如神经网络。特别地,本公开的***和方法可以提供例如在部署神经网络之前测试神经网络以发现缺陷(bug)和/或其它不期望行为。根据本公开的一个方面,覆盖引导模糊测试可以应用于神经网络,以允许对神经网络进行调试。例如,在一些实施方式中,覆盖引导模糊测试可以应用于神经网络,以提供在经训练的神经网络中发现数值错误、生成神经网络和那些网络的量化版本之间的不合(disagreement)、显现模型(例如,字符级语言模型等)中的不期望行为等。
出于各种原因,机器学习模型可能难以调试或解释,从以正式术语指定用户希望了解模型的哪些方面的概念困难,到获得对正式指定的问题的答案的统计和计算困难。神经网络可能是特别难以调试的,因为即使是关于它们的相对简单的正式问题回答起来也是计算昂贵的,而且因为神经网络的软件实施方式可能显著偏离理论模型。
一般而言,覆盖引导模糊测试提供维护输入语料库,该输入语料库包括正在考虑的程序的输入。根据某个变异规程对那些输入进行随机改变,并且当变异的输入运用(exercise)新的覆盖时(例如,使得代码以与先前看到的不同的方式执行等),变异的输入被添加到输入语料库。
本公开的***和方法提供将输入的随机变异输入到神经网络,其中变异由覆盖度量(coverage metric)朝着满足用户指定的约束的目标引导。根据本公开的一方面,可以通过分析神经网络覆盖图的激活向量来测量覆盖。例如,在一些实施方式中,可以基于神经网络是否已经导致神经网络先前未达到的状态来确定新的覆盖,使得新的覆盖有助于在调试中提供增量的进度。
作为一个示例,可以使用快速近似最近邻算法(fast approximate nearestneighbor algorithms)来确定神经网络“激活”的两个集合是否有意义地彼此不同。即使当神经网络的基础实施方式未使用许多依赖数据的分支时,这也提供了为神经网络产生有用的结果的覆盖度量。例如,在一些实施方式中,可以存储和检查与每个输入相关联的激活(或它们的某个子集),以通过使用近似最近邻算法以查看在预先指定的距离内是否存在任何其它激活的集合来确定在给定输入上覆盖是否已增加。
根据本公开的一个方面,在一些实施方式中,神经网络的覆盖引导模糊测试可以以包含用于计算图的输入的至少一个集合的种子语料库开始。可以将输入限制到在某种意义上是有效神经网络输入的那些输入。例如,如果输入是图像,那么可以将输入限制到具有正确尺寸和形状并且与所考虑的数据集的输入像素位于相同间隔中的那些输入。作为另一个示例,如果输入是字符的序列,那么可以将输入限制到从训练集中提取出的词汇表中的字符。
给定这个种子语料库,直到指示停止或满足某个其它停止标准之前,神经网络调试***可以根据某种启发式(例如,统一随机选择(uniform random selection)、某个定义的概率启发式等)从输入语料库中选择元素。给定这个输入,神经网络调试***可以对那个输入执行某种修改。例如,修改可以像仅翻转图像中输入像素的符号一样简单。附加地或可替代地,它还可以被限制为遵循对语料库元素随时间进行的总修改的某种约束。然后可以将变异的输入馈送到神经网络。在一些实施方式中,可以从神经网络中提取两个事物:可以从中计算实际覆盖的覆盖阵列的集合,以及可以从中计算目标函数的结果的元数据阵列的集合。例如,覆盖阵列可以描述神经网络的哪些神经元在输入的处理期间被激活,并且因此可以被称为或用于生成“激活向量”。作为另一个示例,元数据阵列可以描述行为、输出、结果、预测、后果、定时、统计信息、运行时间、存储器消耗、处理器使用和/或与神经网络的执行相关联以处理输入的其它元数据。一旦计算出覆盖和/或目标,并且如果变异的输入运用新的覆盖,那么就可以将其添加到语料库,和/或如果变异的输入使目标函数得到满足,那么就可以将其添加到测试用例的列表。
例如,可以使用目标函数来评估是否已经达到某个特定状态(例如,错误状态等)。可以将目标函数应用于元数据阵列,并且可以标记导致满足目标的输入。神经网络调试***可以基于覆盖阵列来确定由变异的输入提供的覆盖是否是新的覆盖(例如,神经网络是否已经达到其先前未达到的状态等)。例如,在一些实施方式中,当接收到新的激活向量时,可以确定其最近邻(例如,通过执行近似最近邻算法)并检查最近邻有多远(例如,以欧几里得距离为单位)。如果距离大于某个定义的量,那么可以将该输入添加到语料库。
在一些实施方式中,输入变异可以作为批来执行,并且该批输入可以被馈送到计算图。然后可以在一批输出阵列上检查覆盖和目标函数。
现在将详细参考实施例,在附图中示出了其一个或多个示例。通过实施例的解释的方式来提供每个示例而不限制本公开。实际上,对于本领域技术人员将显而易见的是,在不脱离本公开的范围或精神的情况下,可以对实施例进行各种修改和变化。例如,作为一个实施例的一部分示出或描述的特征可以与另一个实施例一起使用以产生又一个实施例。因此,意图是本公开的各方面覆盖这样的修改和变化。
示例设备和***
图1描绘了根据本公开的示例实施例的提供对机器学习的使用的示例计算***100的框图。***100包括通过网络180通信地耦合的用户计算设备102、服务器计算***130和训练计算***150。
用户计算设备102可以是任何类型的计算设备,诸如例如个人计算设备(例如,膝上型计算机或台式计算机)、移动计算设备(例如,智能电话或平板电脑)、游戏控制台或控制器、可穿戴计算设备、嵌入式计算设备或任何其它类型的计算设备。
用户计算设备102包括一个或多个处理器112和存储器114。一个或多个处理器112可以是任何合适的处理设备(例如,处理器核、微处理器、ASIC、FPGA、控制器、微控制器等),并且可以是一个处理器或可操作地连接的多个处理器。存储器114可以包括一个或多个非暂态计算机可读存储介质,诸如RAM、ROM、EEPROM、EPROM、闪存设备、磁盘等,以及它们的组合。存储器114可以存储由处理器112执行以使用户计算设备102执行操作的指令118和数据116。
在一些实施方式中,用户计算设备102可以存储或包括一个或多个机器学习模型120。例如,机器学习模型120可以是或可以以其它方式包括各种机器学习模型,诸如神经网络(例如,深度神经网络)或其它类型的机器学习模型,包括非线性模型和/或线性模型。神经网络可以包括前馈神经网络、循环神经网络(例如,长短期记忆循环神经网络)、卷积神经网络或其它形式的神经网络。
在一些实施方式中,可以通过网络180从服务器计算***130接收一个或多个机器学习模型120、将其存储在用户计算设备存储器114中,然后由一个或多个处理器112使用或以其它方式实现。在一些实施方式中,用户计算设备102可以实现单个机器学习模型120的多个并行实例。
附加地或可替代地,一个或多个机器学习模型140可以被包括在根据客户端-服务器关系与用户计算设备102通信的服务器计算***130中或者以其他方式由其存储和实现。例如,机器学习模型140可以由服务器计算***140实现为基于云的服务的一部分。因此,可以在用户计算设备102处存储和实现一个或多个模型120,和/或可以在服务器计算***130处存储和实现一个或多个模型140。
用户计算设备102还可以包括接收用户输入的一个或多个用户输入组件122。例如,用户输入组件122可以是对用户输入对象(例如,手指或手写笔)的触摸敏感的触敏组件(例如,触敏显示屏或触摸板)。触敏组件可以用来实现虚拟键盘。其它示例用户输入组件包括麦克风、传统键盘或用户可以通过其提供用户输入的其它手段。
服务器计算***130包括一个或多个处理器132和存储器134。一个或多个处理器132可以是任何合适的处理设备(例如,处理器核、微处理器、ASIC、FPGA、控制器、微控制器等),并且可以是一个处理器或可操作地连接的多个处理器。存储器134可以包括一个或多个非暂态计算机可读存储介质,诸如RAM、ROM、EEPROM、EPROM、闪存设备、磁盘等,以及它们的组合。存储器134可以存储由处理器132执行以使服务器计算***130执行操作的指令138和数据136。
在一些实施方式中,服务器计算***130包括一个或多个服务器计算设备或以其它方式由其实现。在服务器计算***130包括多个服务器计算设备的情况下,这样的服务器计算设备可以根据顺序计算体系架构、并行计算体系架构或其某种组合来操作。
如上所述,服务器计算***130可以存储或以其它方式包括一个或多个机器学习模型140。例如,模型140可以是或可以以其它方式包括各种机器学习模型。示例机器学习模型包括神经网络或其它多层非线性模型。示例神经网络包括前馈神经网络、深度神经网络、循环神经网络和卷积神经网络。
在一些实施方式中,服务器计算***130还可以包括神经网络调试***142,诸如本文关于图2描述的。例如,神经网络调试***142可以提供使用输入的语料库来执行覆盖引导模糊测试,例如,以提供对神经网络的测试,诸如以发现针对罕见输入可能发生的错误。
用户计算设备102和/或服务器计算***130可以经由与通过网络180通信地耦合的训练计算***150的交互来训练模型120和/或140。训练计算***150可以与服务器计算***130分离,或者可以是服务器计算***130的一部分。
训练计算***150包括一个或多个处理器152和存储器154。一个或多个处理器152可以是任何合适的处理设备(例如,处理器核、微处理器、ASIC、FPGA、控制器、微控制器等),并且可以是一个处理器或可操作地连接的多个处理器。存储器154可以包括一个或多个非暂态计算机可读存储介质,诸如RAM、ROM、EEPROM、EPROM、闪存设备、磁盘等,以及它们的组合。存储器154可以存储由处理器152执行以使训练计算***150执行操作的指令158和数据156。在一些实施方式中,训练计算***150包括一个或多个服务器计算设备或以其它方式由其实现。
训练计算***150可以包括模型训练器160,该模型训练器160使用各种训练或学习技术(诸如例如错误的反向传播)来训练存储在用户计算设备102和/或服务器计算***130处的机器学习模型120和/或140。在一些实施方式中,执行错误的反向传播可以包括通过时间的截断反向传播。模型训练器160可以执行多种泛化技术(例如,权重衰减、丢弃等),以提高正被训练的模型的泛化能力。特别地,模型训练器160可以基于训练数据162的集合来训练机器学习模型120和/或140。
在一些实施方式中,如果用户已经提供了同意,那么可以由用户计算设备102来提供训练示例。因此,在这样的实施方式中,提供给用户计算设备102的模型120可以由训练计算***150在从用户计算设备102接收的特定于用户的数据上进行训练。在一些情况下,这个过程可以被称为使模型个性化。
模型训练器160包括用于提供期望功能的计算机逻辑。模型训练器160可以以控制通用处理器的硬件、固件和/或软件来实现。例如,在一些实施方式中,模型训练器160包括存储在存储设备上、加载到存储器中并由一个或多个处理器执行的程序文件。在其它实施方式中,模型训练器160包括计算机可执行指令的一个或多个集合,这些指令存储在诸如RAM硬盘或光学或磁性介质的有形的计算机可读存储介质中。
网络180可以是任何类型的通信网络,诸如局域网(例如,内联网)、广域网(例如,互联网)或其某种组合,并且可以包括任何数量的有线或无线链路。一般而言,可以使用各种通信协议(例如,TCP/IP、HTTP、SMTP、FTP)、编码或格式(例如,HTML、XML)和/或保护方案(例如,VPN、安全HTTP、SSL)经由任何类型的有线和/或无线连接来携带通过网络180的通信。
图1图示了可以被用于实现本公开的一个示例计算***。也可以使用其它计算***。例如,在一些实施方式中,用户计算设备102可以包括模型训练器160和训练数据集162。在这样的实施方式中,模型120可以在用户计算设备102处被本地训练和使用。在一些这样的实施方式中,用户计算设备102可以实现模型训练器160以基于特定于用户的数据来使模型120个性化。
示例调试***布置
图2描绘了根据本公开的示例实施例的使用覆盖引导模糊测试的示例神经网络调试***200的框图。在一些实施方式中,神经网络调试***200可以提供使用输入的语料库执行覆盖引导模糊测试,例如以提供对神经网络的测试,诸如以发现针对罕见输入可能发生的错误。神经网络调试***200可以允许通过覆盖度量来引导对语料库输入的变异(例如,根据某个变异规程对输入进行随机改变,并且当变异的输入运用新的覆盖时将变异的输入添加到输入语料库)以朝着满足用户指定的约束的目标迈进。作为示例,可以通过分析神经网络覆盖图的激活向量来测量覆盖。例如,在一些实施方式中,可以基于神经网络是否已经导致神经网络先前未达到的状态来确定新的覆盖,使得新的覆盖有助于在神经网络模型的调试中提供增量的进度。例如,在一些实施方式中,覆盖引导模糊测试可以应用于神经网络,以提供发现经训练的神经网络中的数值错误、生成神经网络与那些网络的量化版本之间的不合、显现模型中的不期望行为等。
如图2中所示,神经网络调试***200可以包括覆盖引导模糊测试器202和种子语料库220(例如,包含用于计算图的输入的至少一个集合),它可以向覆盖引导模糊测试器202提供初始的输入集合以测试神经网络。
覆盖引导模糊测试器202可以从种子语料库220获得(例如,选择)输入的集合以提供输入语料库204,该输入语料库204可以包括种子语料库220中包括的输入的全部或某个子集。在一些实施方式中,可以将输入限制到某种类型的有效神经网络输入(例如,具有正确尺寸和形状的图像、从训练集中提取的词汇表中的字符等)。在一些实施方式中,种子语料库220可以由用户供应和/或可以从可用的种子语料库的集合中选择。输入可以是文本输入、图像输入、音频数据输入、传感器数据输入和/或各种其它类型的输入。
覆盖引导模糊测试器202可以包括输入选择器206,其可以从输入语料库204中选择(一个或多个)输入,以在覆盖引导模糊测试的特定迭代期间使用。例如,在一些实施方式中,输入选择器206可以朝着选择最近被添加到输入语料库204的输入偏置。作为一个示例,输入选择器206可以使用统一随机选择来选择输入。例如,在一些实施方式中,输入选择器206可以使用诸如的启发式来选择输入,其中p(ck,t)给出在时间t选择输入语料库元素ck的概率,其中tk是元素ck被添加到输入语料库的时间。这背后的直觉是,最近采样的输入在变异时更有可能产生有用的新的覆盖,但是这种优势随着时间的流逝而减弱,因此可以作为输入的年龄的函数来选择输入。
输入选择器206可以将选择的(一个或多个)输入提供给变异器208。变异器208可以在将输入提供给神经网络之前将修改(例如,变异)应用于选择的(一个或多个)输入。例如,在一些实施方式中,变异器208可以将具有用户可配置的方差的白噪声添加到(一个或多个)输入(例如,图像输入等)。作为另一个示例,在一些实施方式中,变异器208可以将具有用户可配置的方差的白噪声添加到一个或多个输入(例如,图像输入等),其中变异的输入与变异的输入从其起源的原始输入之间的差被约束为具有用户可配置的L∞范数。这种类型的受约束的变异可以对于发现满足某个目标函数但仍合理地与用作种子的原始输入具有相同“类别”的输入有用。在一些实施方式中,可以在变异之后剪切(clip)图像,以使其与用于训练正被调试的神经网络的输入处于同一范围内。
作为另一个示例,在一些实施方式中,诸如对于文本字符串输入,可以随机地统一执行操作的集合中的一个操作,包括诸如在随机位置删除字符、在随机位置添加字符、在随机位置替换随机字符等操作。
输入选择器206包括用于提供期望功能的计算机逻辑。输入选择器206可以以控制通用处理器的硬件、固件和/或软件来实现。例如,在一些实施方式中,输入选择器206包括存储在存储设备上、加载到存储器中并且由一个或多个处理器执行的程序文件。在其它实施方式中,输入选择器206包括计算机可执行指令的一个或多个集合,这些指令存储在诸如RAM硬盘或光学或磁性介质的有形计算机可读存储介质中。
然后,变异器208可以将(一个或多个)变异的输入提供给神经网络210。神经网络210可以提供输出,该输出可以包括可以为其计算覆盖的覆盖阵列的集合,以及可以从中计算目标函数的结果的元数据阵列的集合(例如,与和提供的(一个或多个)输入相关联的特定迭代相关联的数据等)。例如,当将变异的输入馈送到计算图中时,覆盖阵列和元数据阵列都作为输出返回。
变异器208包括用于提供期望功能的计算机逻辑。变异器208可以以控制通用处理器的硬件、固件和/或软件来实现。例如,在一些实施方式中,变异器208包括存储在存储设备上、加载到存储器中并由一个或多个处理器执行的程序文件。在其它实施方式中,变异器208包括计算机可执行指令的一个或多个集合,这些指令存储在诸如RAM硬盘或光学或磁性介质的有形的计算机可读存储介质中。
目标函数212可以基于(一个或多个)元数据阵列来评估神经网络是否已经达到某个特定状态,例如,可以被认为是错误的状态。错误状态可以包括不正确的预测、大于最大执行时间的执行时间、大于最大处理器使用率的处理器使用率、神经网络执行失败,和/或其它错误或不期望的行为或性能的其它存在。在一些实施方式中,目标函数212可以由用户指定和/或从可用目标函数的集合中选择。一般而言,用于评估神经网络是否已经达到某个特定状态的目标函数212可以与用于训练神经网络的某个其它目标函数或损失函数分离并且不同。如果满足目标函数212,那么可以标记提供给神经网络的(一个或多个)变异的输入,诸如将其添加到测试用例的列表(例如,用于将来的调试等)。作为示例,当将变异的输入馈送到计算图中并且将元数据阵列作为输出返回时,将目标函数应用于元数据阵列并标记使得满足目标函数的任何变异的输入。
覆盖分析器214可以基于(一个或多个)覆盖阵列来确定由(一个或多个)变异的输入提供的覆盖是否是新的覆盖(例如,神经网络是否已达到先前未达到的状态等)。例如,在一些实施方式中,覆盖分析器214可以基于激活向量是否近似接近先前的激活向量来确定是否提供了新的覆盖。如果覆盖分析器214确定(一个或多个)变异的输入提供新的覆盖,那么可以将(一个或多个)变异的输入添加到输入语料库204,例如,以在调试等的将来迭代中用作(一个或多个)输入。例如,可以为新的激活向量计算近似最近邻,并进行检查以确定最近邻距激活向量的欧几里得距离有多远。如果该距离大于某个定义的量(例如,它可以是用户可配置的超参数、随时间适应的自适应超参数和/或随时间改变的动态超参数,例如,根据预定的时间表),那么可以将输入添加到语料库。在一些实施方式中,覆盖引导模糊测试器202可以继续选择、变异和分析包括在输入语料库204中的输入,直到被指示停止和/或满足某个其它停止标准为止。
覆盖分析器214包括用于提供期望功能的计算机逻辑。覆盖分析器214可以以控制通用处理器的硬件、固件和/或软件来实现。例如,在一些实施方式中,覆盖分析器214包括存储在存储设备上、加载到存储器中并由一个或多个处理器执行的程序文件。在其它实施方式中,覆盖分析器214包括计算机可执行指令的一个或多个集合,这些指令存储在诸如RAM硬盘或光学或磁性介质的有形的计算机可读存储介质中。
覆盖阵列和/或相关联的激活向量可以描述在输入的处理期间是否激活了神经网络的一些或所有神经元。作为一个示例,覆盖阵列和/或相关联的激活向量可以被限制为仅描述是否激活了神经网络的分对数(logit)和/或分对数之前的网络的一层的神经元。
在一些实施方式中,***200可以被应用(例如,并行地)到两个或更多个不同的(但是潜在地相关的)模型以识别模型之间的不合。例如,两个或更多个不同的模型可以是基本模型的两个或更多个不同版本,诸如基本模型和基本模型的量化版本。为了识别不合,可以将相同的输入(例如,变异的输入)提供给两个或更多个不同的模型,并且可以分析两个或更多个不同的模型的两个或更多个不同的输出(例如,根据目标函数212和/或覆盖分析器214)以检测不合或以其它方式测量输出中的分歧。
示例方法
图3描绘了根据本公开的示例实施例的用于执行神经网络调试的示例操作的流程图。虽然为了说明和讨论的目的,图3描绘了以特定次序执行的步骤,但是本公开的方法不限于特定示出的次序或布置。在不脱离本公开的范围的情况下,可以以各种方式省略、重新布置、组合和/或适应方法300的各个步骤。
在302处,计算***可以例如从包括输入的一个或多个集合的种子语料库获得输入语料库。例如,种子语料库可以包含用于计算图的输入的至少一个集合。可以将输入限制到在某种意义上是有效神经网络输入的那些输入。例如,如果输入是图像,那么可以将输入限制到具有正确尺寸和形状并且与所考虑的数据集的输入像素位于相同间隔内的那些输入。作为另一个示例,如果输入是字符的序列,那么可以将输入限制到从训练集中提取出的词汇表中的字符。
在304处,计算***可以从输入语料库中选择一个或多个输入,以用于调试神经网络。例如,计算***可以基于统一随机选择、基于一种或多种启发式(例如,给出在时间t选择输入语料库元素ck的概率,其中tk是元素ck被添加到输入语料库的时间等)等从输入语料库中选择一个或多个输入。
在306处,计算***可以在输入到神经网络之前通过对选择的(一个或多个)输入执行某种类型的变异来修改选择的(一个或多个)输入。例如,在一些实施方式中,计算***可以执行输入的简单修改,诸如翻转输入的符号。作为另一个示例,在一些实施方式中,计算***可以限制修改以遵循对语料库元素随时间进行的总修改的约束。
在308处,计算***将经修改的(一个或多个)输入馈送到要调试的神经网络。
在310处,作为神经网络处理一个或多个变异的输入的结果,计算***可以获得覆盖阵列的集合(例如,其描述在由神经网络处理一个或多个变异的输入期间是否激活了神经网络的一个或多个神经元),其可以被用于计算由经修改的(一个或多个)输入运用的实际覆盖。
在312处,计算***计算***可以确定是否(一个或多个)变异的输入至少部分地在(一个或多个)覆盖阵列上提供新的覆盖。例如,如果神经网络导致以前其未处于的状态,那么计算***可以确定提供了新的覆盖。如果(一个或多个)变异的输入提供了新的覆盖,那么操作将继续到314。如果(一个或多个)变异的输入没有提供新的覆盖,那么操作继续到322,在那里可以分析下一个输入。例如,在一些实施方式中,当接收到新的激活向量时,可以确定其最近邻并检查该最近邻在欧几里得距离中有多远。如果该距离大于某个定义的量,那么可以将输入添加到语料库。
在314处,计算***可以将(一个或多个)变异的输入添加到输入语料库。
在316处,作为神经网络处理一个或多个变异的输入的结果,计算***可以提取元数据阵列的集合(例如,其描述与神经网络处理一个或多个变异的输入的执行相关联的元数据)以用于计算目标函数。
在318处,计算***可以至少部分地基于(一个或多个)元数据阵列来确定是否满足目标函数。例如,目标函数可以评估神经网络是否已经达到特定状态,诸如被视为错误的状态。例如,目标函数可以被应用于元数据阵列,并且可以标记使得目标被满足的输入。如果满足目标函数,那么操作继续到320。如果不满足目标函数,那么操作继续到322。
在320处,计算***可以将变异的输入添加到测试用例的列表。
附加公开
本文讨论的技术参考服务器、数据库、软件应用和其它基于计算机的***,以及采取的动作和发送到此类***和从此类***发送的信息。基于计算机的***的固有灵活性允许在组件之间和之中进行任务和功能的多种可能的配置、组合以及划分。例如,本文讨论的过程可以使用单个设备或组件或组合工作的多个设备或组件来实现。数据库和应用可以在单个***上实现,或者分布在多个***上。分布式组件可以顺序或并行地操作。
虽然已经关于本主题的各种具体示例实施例详细描述了本主题,但是每个示例都是通过解释的方式提供的,而不是限制本公开。本领域技术人员在获得对前述内容的理解后可以容易地产生此类实施例的变更、变化和等同物。因而,本主题公开不排除包括对本主题的此类修改、变化和/或添加,如对于本领域普通技术人员来说将是显而易见的。例如,作为一个实施例的一部分示出或描述的特征可以与另一个实施例一起使用,以产生又一个实施例。因此,意图是本公开覆盖此类变更、变化和等同物。
Claims (32)
1.一种用于调试神经网络的计算机实现的方法,所述方法包括:
由一个或多个计算设备从输入语料库获得一个或多个输入;
由所述一个或多个计算设备对所述一个或多个输入进行变异;
由所述一个或多个计算设备向神经网络提供一个或多个变异的输入;
作为神经网络处理所述一个或多个变异的输入的结果而由所述一个或多个计算设备获得覆盖阵列的集合,所述覆盖阵列的集合描述在由神经网络处理所述一个或多个变异的输入期间是否激活了神经网络的一个或多个神经元;
由所述一个或多个计算设备至少部分地基于覆盖阵列的集合来确定所述一个或多个变异的输入是否提供新的覆盖;以及
在确定所述一个或多个变异的输入提供新的覆盖后,由所述一个或多个计算设备将所述一个或多个变异的输入添加到输入语料库。
2.如权利要求1所述的方法,还包括:
作为神经网络处理所述一个或多个变异的输入的结果而由所述一个或多个计算设备获得元数据阵列的集合,所述元数据阵列的集合描述与神经网络处理所述一个或多个变异的输入的执行相关联的元数据;
由所述一个或多个计算设备至少部分地基于元数据阵列的集合来确定是否满足目标函数;以及
在确定满足目标函数后,由所述一个或多个计算设备将所述一个或多个变异的输入添加到测试用例的列表。
3.如权利要求1或2中的任一项所述的方法,其中,由所述一个或多个计算设备至少部分地基于覆盖阵列的集合来确定所述一个或多个变异的输入是否提供新的覆盖包括:
由所述一个或多个计算设备至少部分地基于覆盖阵列的集合来生成激活向量;
由所述一个或多个计算设备执行近似最近邻算法以识别先前的激活向量;
由所述一个或多个计算设备确定激活向量和由近似最近邻算法识别出的先前激活向量之间的距离;并且
由所述一个或多个计算设备将所述距离与阈值距离进行比较;
其中,当所述距离大于阈值距离时,所述一个或多个变异的输入提供新的覆盖。
4.如权利要求1至3中的任一项所述的方法,其中,从输入语料库获得一个或多个输入包括使用统一随机选择来从输入语料库选择所述一个或多个输入。
6.如权利要求1至5中的任一项所述的方法,其中,对所述一个或多个输入进行变异包括将具有用户可配置的方差的白噪声添加到所述一个或多个输入。
7.如权利要求1至6中的任一项所述的方法,其中,对所述一个或多个输入进行变异包括将具有用户可配置的方差的白噪声添加到所述一个或多个输入,其中,变异的输入与变异的输入从其起源的原始输入之间的差被约束为具有用户可配置的L∞范数。
8.如权利要求1至7中的任一项所述的方法,其中,确定所述一个或多个变异的输入是否提供新的覆盖包括确定神经网络是否已经达到其先前未达到的新状态。
9.如权利要求8所述的方法,其中,确定神经网络是否已经达到其先前未达到的新状态包括确定激活向量是否近似接近先前的激活向量。
10.如权利要求2和从属于其的任何权利要求所述的方法,其中,确定是否满足目标函数包括确定神经网络是否已经达到期望的状态。
11.如权利要求10所述的方法,其中,所述期望的状态是神经网络的错误状态。
12.一种计算设备,包括:
一个或多个处理器;以及
一个或多个非暂态计算机可读介质,所述一个或多个非暂态计算机可读介质存储指令,所述指令在由所述一个或多个处理器执行时使所述计算设备:
从输入语料库获得一个或多个输入;
对所述一个或多个输入进行变异;
向神经网络提供一个或多个变异的输入;
作为神经网络处理所述一个或多个变异的输入的结果而获得覆盖阵列的集合,所述覆盖阵列的集合描述在由神经网络处理所述一个或多个变异的输入期间是否激活了神经网络的一个或多个神经元;
至少部分地基于覆盖阵列的集合来确定所述一个或多个变异的输入是否提供新的覆盖;以及
在确定所述一个或多个变异的输入提供新的覆盖后,将所述一个或多个变异的输入添加到输入语料库。
13.如权利要求12所述的计算设备,其还包括指令,所述指令在被执行时使所述计算设备:
作为神经网络处理所述一个或多个变异的输入的结果而获得元数据阵列的集合,所述元数据阵列的集合描述与神经网络处理所述一个或多个变异的输入的执行相关联的元数据;
至少部分地基于元数据阵列的集合来确定是否满足目标函数;以及
在确定满足目标函数后,将所述一个或多个变异的输入添加到测试用例的列表。
14.如权利要求12或13中的任一项所述的计算设备,其还包括指令,所述指令在被执行时使所述计算设备:
从种子语料库获得输入语料库,所述种子语料库包含输入的至少一个集合。
15.如权利要求12至14中的任一项所述的计算设备,其中,从输入语料库获得一个或多个输入包括使用统一随机选择来从输入语料库选择所述一个或多个输入。
17.如权利要求12至16中的任一项所述的计算设备,其中,对所述一个或多个输入进行变异包括将具有用户可配置的方差的白噪声添加到所述一个或多个输入。
18.如权利要求12至17中的任一项所述的计算设备,其中,对所述一个或多个输入进行变异包括将具有用户可配置的方差的白噪声添加到所述一个或多个输入,其中,变异的输入与变异的输入从其起源的原始输入之间的差被约束为具有用户可配置的Linf范数。
19.如权利要求12至18中的任一项所述的计算设备,其中,确定所述一个或多个变异的输入是否提供新的覆盖包括确定神经网络是否已经达到其先前未达到的新状态。
20.如权利要求19所述的计算设备,其中,确定神经网络是否已经达到其先前未达到的新状态包括确定激活向量是否近似接近先前的激活向量。
21.如权利要求13和从属于其的任何权利要求所述的计算设备,其中,确定是否满足目标函数包括确定神经网络是否已经达到期望的状态。
22.如权利要求21所述的计算设备,其中,期望的状态是神经网络的错误状态。
23.一个或多个非暂态计算机可读介质,其存储指令,所述指令在由计算***的一个或多个处理器执行时使所述计算***执行操作,所述操作包括:
从输入语料库获得一个或多个输入;
对所述一个或多个输入进行变异;
向神经网络提供一个或多个变异的输入;
作为神经网络处理所述一个或多个变异的输入的结果而获得覆盖阵列的集合,所述覆盖阵列的集合描述在由神经网络处理所述一个或多个变异的输入期间是否激活了神经网络的一个或多个神经元;
至少部分地基于覆盖阵列的集合来确定所述一个或多个变异的输入是否提供新的覆盖;以及
在确定所述一个或多个变异的输入提供新的覆盖后,将所述一个或多个变异的输入添加到输入语料库。
24.如权利要求23所述的一个或多个非暂态计算机可读介质,其中,所述操作还包括:
作为神经网络处理所述一个或多个变异的输入的结果而获得元数据阵列的集合,所述元数据阵列的集合描述与神经网络处理所述一个或多个变异的输入的执行相关联的元数据;
至少部分地基于元数据阵列的集合来确定是否满足目标函数;以及
在确定满足目标函数后,将所述一个或多个变异的输入添加到测试用例的列表。
25.一种用于调试神经网络的计算机实现的方法,所述方法包括:
由一个或多个计算设备从输入语料库获得一个或多个输入;
由所述一个或多个计算设备对所述一个或多个输入进行变异;
由所述一个或多个计算设备向神经网络提供一个或多个变异的输入;
作为神经网络处理所述一个或多个变异的输入的结果而由所述一个或多个计算设备获得元数据阵列的集合,所述元数据阵列的集合描述与神经网络处理所述一个或多个变异的输入的执行相关联的元数据;
由所述一个或多个计算设备至少部分地基于元数据阵列的集合来确定是否满足目标函数;以及
在确定满足目标函数后,由所述一个或多个计算设备将所述一个或多个变异的输入添加到测试用例的列表。
26.一种用于调试神经网络的计算机实现的方法,所述方法包括:
由所述一个或多个计算设备向神经网络提供输入语料库的一个或多个变异的输入;以及
作为神经网络处理所述一个或多个变异的输入的结果而由所述一个或多个计算设备获得覆盖阵列的集合,所述覆盖阵列的集合描述在由神经网络处理所述一个或多个变异的输入期间是否激活了神经网络的一个或多个神经元。
27.如权利要求26所述的方法,还包括:
由所述一个或多个计算设备至少部分地基于覆盖阵列的集合来确定所述一个或多个变异的输入是否提供新的覆盖;以及
在确定所述一个或多个变异的输入提供新的覆盖后,由所述一个或多个计算设备将所述一个或多个变异的输入添加到输入语料库。
28.一种用于调试神经网络的计算机实现的方法,所述方法包括:
由所述一个或多个计算设备向神经网络提供输入语料库的一个或多个变异的输入;以及
作为神经网络处理所述一个或多个变异的输入的结果而由所述一个或多个计算设备获得元数据阵列的集合,所述元数据阵列的集合描述与神经网络处理所述一个或多个变异的输入的执行相关联的元数据。
29.如权利要求28所述的方法,还包括:
由所述一个或多个计算设备至少部分地基于元数据阵列的集合来确定是否满足目标函数;以及
在确定满足目标函数后,由所述一个或多个计算设备将所述一个或多个变异的输入添加到测试用例的列表。
30.一个或多个非暂态计算机可读介质,其存储指令,所述指令在由计算***的一个或多个处理器执行时使所述计算***执行操作,所述操作包括本文公开的任何实施例的一个或多个方面,或其变体。
31.一种被配置为执行操作的计算设备,所述操作包括本文公开的任何实施例的一个或多个方面,或其变体。
32.一种方法,包括本文公开的任何实施例的一个或多个方面,或其变体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862673751P | 2018-05-18 | 2018-05-18 | |
US62/673,751 | 2018-05-18 | ||
PCT/US2019/032913 WO2019222656A1 (en) | 2018-05-18 | 2019-05-17 | Systems and methods for debugging neural networks with coverage guided fuzzing |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112119410A true CN112119410A (zh) | 2020-12-22 |
Family
ID=66770589
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980032675.5A Pending CN112119410A (zh) | 2018-05-18 | 2019-05-17 | 用于用覆盖引导模糊测试调试神经网络的***和方法 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11080603B2 (zh) |
EP (1) | EP3782082A1 (zh) |
CN (1) | CN112119410A (zh) |
WO (1) | WO2019222656A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11768912B2 (en) * | 2019-07-12 | 2023-09-26 | International Business Machines Corporation | Performing multivariate time series prediction with three-dimensional transformations |
CN111026664B (zh) * | 2019-12-09 | 2020-12-22 | 遵义职业技术学院 | 基于ann的程序检测方法和检测***及应用 |
CN111897729B (zh) * | 2020-08-03 | 2022-08-19 | 北京理工大学 | 基于TensorFuzz的深度神经网络模糊测试框架和测试方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5819226A (en) * | 1992-09-08 | 1998-10-06 | Hnc Software Inc. | Fraud detection using predictive modeling |
US9727436B2 (en) * | 2008-01-02 | 2017-08-08 | International Business Machines Corporation | Adding a profiling agent to a virtual machine to permit performance and memory consumption analysis within unit tests |
US9612942B2 (en) * | 2010-11-18 | 2017-04-04 | International Business Machines Corporation | Verification of a computer program in respect to an unexpected response to an access request |
US8464219B1 (en) * | 2011-04-27 | 2013-06-11 | Spirent Communications, Inc. | Scalable control system for test execution and monitoring utilizing multiple processors |
US10831827B2 (en) * | 2016-04-01 | 2020-11-10 | International Business Machines Corporation | Automatic extraction of user mobility behaviors and interaction preferences using spatio-temporal data |
US9977729B1 (en) * | 2016-11-23 | 2018-05-22 | Google Llc | Testing applications with a defined input format |
US10983853B2 (en) * | 2017-03-31 | 2021-04-20 | Microsoft Technology Licensing, Llc | Machine learning for input fuzzing |
CN110462602B (zh) * | 2017-04-07 | 2024-04-02 | 英特尔公司 | 用于多处理器平台上的深度学习网络执行流水线的方法和装置 |
US10839291B2 (en) * | 2017-07-01 | 2020-11-17 | Intel Corporation | Hardened deep neural networks through training from adversarial misclassified data |
US11645493B2 (en) * | 2018-05-04 | 2023-05-09 | Microsoft Technology Licensing, Llc | Flow for quantized neural networks |
-
2019
- 2019-05-17 WO PCT/US2019/032913 patent/WO2019222656A1/en unknown
- 2019-05-17 EP EP19728824.4A patent/EP3782082A1/en active Pending
- 2019-05-17 US US16/415,693 patent/US11080603B2/en active Active
- 2019-05-17 CN CN201980032675.5A patent/CN112119410A/zh active Pending
-
2021
- 2021-08-03 US US17/392,937 patent/US20210365797A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
EP3782082A1 (en) | 2021-02-24 |
US20190354870A1 (en) | 2019-11-21 |
US20210365797A1 (en) | 2021-11-25 |
US11080603B2 (en) | 2021-08-03 |
WO2019222656A1 (en) | 2019-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11544536B2 (en) | Hybrid neural architecture search | |
US12020134B2 (en) | Debugging correctness issues in training machine learning models | |
EP3711000B1 (en) | Regularized neural network architecture search | |
CN111046152B (zh) | Faq问答对自动构建方法、装置、计算机设备及存储介质 | |
Dangeti | Statistics for machine learning | |
US20210256390A1 (en) | Computationally efficient neural network architecture search | |
US20190354810A1 (en) | Active learning to reduce noise in labels | |
Hodnett et al. | R Deep Learning Essentials: A step-by-step guide to building deep learning models using TensorFlow, Keras, and MXNet | |
EP3596663B1 (en) | Neural network system | |
US20210232929A1 (en) | Neural architecture search | |
US10936807B1 (en) | Systems and methods for displaying effects of code changes | |
EP3602419B1 (en) | Neural network optimizer search | |
CN110520871A (zh) | 训练机器学习模型 | |
US20210365797A1 (en) | Systems and Methods for Debugging Neural Networks with Coverage Guided Fuzzing | |
US11062229B1 (en) | Training latent variable machine learning models using multi-sample objectives | |
CN116432184A (zh) | 基于语义分析和双向编码表征的恶意软件检测方法 | |
Sadia et al. | Bayesian change-point modeling with segmented ARMA model | |
Hodnett et al. | Deep Learning with R for Beginners: Design neural network models in R 3.5 using TensorFlow, Keras, and MXNet | |
Culp et al. | On adaptive regularization methods in boosting | |
US20240070456A1 (en) | Corrective Reward Optimization for Sequential Labeling | |
CN117290856B (zh) | 基于软件自动化测试技术的智能测试管理*** | |
US11687799B1 (en) | Integrated machine learning and rules platform for improved accuracy and root cause analysis | |
CN117151247B (zh) | 机器学习任务建模的方法、装置、计算机设备和存储介质 | |
US20240104429A1 (en) | Model-Agnostic System for Automatic Investigation of the Impact of New Features on Performance of Machine Learning Models | |
WO2024138177A1 (en) | Recurrent interface networks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |