
1256
Journal of Software 软件学报 Vol.31, No.5, May 2020
development, DNN defines a data-driv en programming p aradigm, i .e., developers only d esign th e stru cture of networks and th e inner logic
is reflected by wei ghts which are learned dur ing training. Traditional software testing methods cannot be applied to DNN directly. Driven
by the emerging demand, more and more research works have focused on testing of DNN, including proposing new testing evaluation
criteria, generation of test cases, etc. This study provides a thorough survey on testing DNN, which summarizes 92 works from related
fields. These works are systematically reviewed from three perspectives, i.e., DNN testing metrics, test input generation, and test oracle.
Existing achievements are introduced in terms of i mage processing, speech processing, and natural language processing. The datasets and
tools used in DNN testing are surveyed and finally the thoughts on potential future research directions are summarized on DNN testing,
which, hopefully, will provide references for researchers interested in the related directions.
Key words: deep neural network; test coverage; test case generation
随着大数据和人工智能时代的到来,深度学习(deep learning,简称 DL ) 技术得以迅猛的发展,逐渐成为人工
智能领域的关键技术.深度学习多采用由神经元互连构成的深度前馈神经网络,经过输入层、隐藏层、激活函
数、输出层等,最终将神经元的输入映射到输出端.深度学习研究的浪潮始于 2006 年,Hinton 等人
[1]
发表了首篇
关于深层网络的论文,标志着神经网络进入深度网络阶段.卷积神经网络(convolutional neural networks,简称
CNN)和循环神经网络(recurrent neural network,简称 RNN)是深度神经网络(deep neural networks,简称 DNN)的
两种典型网络结构.CNN 使用卷积核提取图片特征,既解决学习的参数量过大的问题,又能很好挖掘局部特征,
因此常被应用于图像处理应用.RNN 的特点则是能对时间序列上的变化进行建模,能够处理具有时序信息的数
据,主要应用于语音处理、自然语言处理等领域.为了解决高识别率、实时性等具体需求,以 RNN 或 CNN 结构
作为基础的、更为复杂的深度网络结构陆续被提出,例如长短期记忆网络(long short-term memory,简称 LSTM)、
AlexNet 等.深度神经网络在解决人工智能中的一系列难题方面发挥了重要作用,在许多重要的应用中取得了
显著的成功.在计算机视觉领域,深度学习技术极大地促进了图像分类、图像分割、目标识别以及图像风格迁
移等方向的发展;在语音视频领域,深度学习对语音识别领域也产生了很大的影响,端对端的深度学习语音系统
的应用,使得语音识别错误率取得大幅度的降低;在自然语言处理方面,深度学习技术已经被成功应用于文本挖
掘、情感分析、机器翻译等方向;深度学习显著促进了强化学习领域地发展,基于深度学习技术的多智能体能
够完美执行游戏对战等任务;深度学习也在其他科学领域表现出良好地应用性,包括基于深度学习的癌细胞识
别技术、农业土壤监测技术、广告精准投放技术、金融欺诈识别、信用评价以及自动驾驶汽车等.
随着其广泛应用,深度神经网络系统的质量问题也被重点关注.由于深度神经网络的结构复杂,数据中微小
的扰动,即便无法被人类发现,却可能造成深度神经网络做出错误的判断,进而输出错误的结果
.更进一
步,由于
深度神经网络越来越多地被部署在自动驾驶汽车系统、恶意软件检测系统以及飞机碰撞避免系统等安全攸关
领域,对这类 DNN 系统进行充分的测试并保证其质量至关重要.因此,迫切需要找到这些潜在的威胁来提高神
经网络的安全性,使之能够应用于更多安全性要求高的场景.现阶段,部分研究人员通过对传统软件测试方法进
行改进,生成适用于深度神经网络的测试用例,或者提出新的测试方法.同时,作为一种特殊的软件制品,深度学
习框架的测试也得到了部分研究组的关注.
目前 Huang 等人
[2]
、Zhang 等人
[3]
和 Xiang 等人
[4]
对已有的机器学习和 DNN 相关的测试和验证方面的研
究成果从不同方面进行了系统的总结.Huang 等人通过对近年来 DNN 测试相关论文整理和分析,重点从验证、
测试、对抗攻击和防御以及 DNN 可解释性这 4 个方面对 DNN 的安全性和可信任性进行了细致地总结.Zhang
等人从更广的机器学习测试角度入手,对机器学习测试流程、测试组成、测试属性以及应用场景等方面对现有
的研究成果进行梳理.Xiang 等人则对机器学习、自治系统和神经网络的形式化验证方法做出总结,并重点关注
安全相关领域中系统的形式化验证技术.本文则主要关注深度神经网络测试相关的内容,充分调研深度神经网
络测试的相关研究,关注在测试深度神经网络时,如何衡量网络的稳定性和测试充分程度,如何生成有效的数据
用于测试,如何判断神经网络的输出是否符合预期,当前深度神经网络的测试已经在哪些领域被应用等方面,试
图从测试度量指标、测试输入生成、测试预言、测试应用和评测数据集等方面系统梳理深度神经网络测试的
相关工作,并对深度神经网络测试的未来给出展望,以此为该领域的研究人员提供一份参考.
本文所提及的深度神经网络研究框架如图 1 所示:测试度量指标包含测试覆盖指标和鲁棒性指标,测试覆
评论