深度学习测试-DeepXplore
(一)为什么研究深度学习的测试方法
深度学习应用广泛
Deep Learning system目前很火,已经应用于多个领域,包括图像识别、语音识别,同时自动驾驶及流氓软件的检测等问题上也已经开始使用。
深度学习并不鲁棒
对抗攻击:
图像经过针对深度学习模型的对抗攻击,对图片增加噪点,合成出新的图像。该图像人眼识别没有改变,却使得深度学习模型产生了错误的行为。
在安全性要求极强的领域中,如自动驾驶问题,并不鲁棒的模型可能会导致无法承受的后果,所以迫切需要对DL system有效的测试方法,来验证DL system是否鲁棒。
(二)DeepXplore
启示(idea)
传统软件需要充分的测试来保证其鲁棒性,同样深度学习系统也需要测试。
在测试传统软件时,代码覆盖率(即:测试案例执行代码语句占所有语句的百分比)是衡量系统测试充分性的重要指标。
将这一思想映射到深度学习系统中:测试集执行深度学习系统的占比,作为衡量深度学习系统测试充分性的重要指标。
DeepXplore的贡献
(1)神经元覆盖率:Neuron Coverage
深度学习系统第一个白盒测试标准,用来评估一组测试集所执行的逻辑量。
(2)生成新输入集(可以触发深度学习系统不同的逻辑)
建立联合优化问题,利用梯度来进行求解,最终生成新的输入集。联合优化问题有两个目标:最大化神经元覆盖率,最大化差异行为(differential behaviors)。
(3)新输入集自动打label
训练多个DNN,输入input后,多个DNN进行投票。
(4)新输入集再训