论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing

Muffin 论文

  • 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。
  • API 库覆盖低,因为各个 API 都是在各种具体场景下使用。

Muffin首先生成DAG作为结构信息,然后利用一种贪婪的层选择算法来生成层信息。通过这种方式,Muffin能够生成多样化的DL模型。为了进行差异性测试,Muffin在模型训练阶段执行数据跟踪分析。特别是,Muffin从不同的训练阶段(即正向计算(FC)、损失计算(LC)和反向计算(BC))收集数据跟踪。然后,它根据一套提出的指标来检测不同库之间的不一致性,这些指标衡量连续层的输出变化。

借鉴 NAS 生成模版,生成 chain structure with skips、cell-based structure(structure information),同时确保生成的 DAG,只有一个入度为 0 的顶点作为输入层,只有一个出度为 0 的顶点作为输出层,没有孤立点。在逐个实例化时,考虑输入数量限制、输入/输出形状限制,并且为了增加拓扑多样性,设计了基于适应度比例选择的方法。 s = 1 c + 1 p = s ∑ k = 1 r s k s=\frac{1}{c+1} \quad p=\frac{s}{\sum_{k=1}^rs_k} s=c+11p=∑k=1rsks

同一层输出差异: D ( X , Y ) = m a x m ( ∣ x m − y m ∣ ) D(X,Y)=max_m(|x_m-y_m|) D(X,Y)=maxm(∣xm−ym∣)

  • 正向计算:比较当前层 l i l_i li 的输出与它的前驱层 l p l_p lp 的输出差异: I n c _ F C = { l i , i ∈ [ 1 , n ] ∣ ( D ( O j i , O k i ) > t ) ∧ ( D ( O j p , O k p ) < ϵ , p ∈ P ( i ) ) } Inc\{FC}=\{l{i},i\in[1,n]\mid(D(O_{j}^{i},O_{k}^{i})>t)\wedge(D(O_{j}^{p},O_{k}^{p})<\epsilon,p\in P(i))\} Inc_FC={li,i∈[1,n]∣(D(Oji,Oki)>t)∧(D(Ojp,Okp)<ϵ,p∈P(i))} 切比雪夫距离定义为两个张量在任何坐标维度上的最大差异。这种距离度量方法可以避免因张量形状不同而导致的比较问题。
  • 损失函数:比较损失函数的输出和梯度值的差异: I n c _ L C = { L ∣ ( ( ∣ L O j − L O k ∣ > t ) ∨ ( ∣ L G j − L G k ∣ > t ) ) ∧ ( D ( O j n , O k n ) < ϵ ) } Inc\_{LC}=\{L\mid((|LO_j-LO_k|>t)\lor(|LG_j-LG_k|>t))\wedge(D(O_j^n,O_k^n)<\epsilon)\} Inc_LC={L∣((∣LOj−LOk∣>t)∨(∣LGj−LGk∣>t))∧(D(Ojn,Okn)<ϵ)}
  • 反向传播:比较每一层的梯度值差异: I n c _ B C = { l i , i ∈ [ 1 , n ] ∣ ( D ( G j i , G k i ) > t ) ∧ ( D ( G j s , G k s ) < ϵ , s ∈ P ( i ) ) } Inc\{BC}=\{l{i},i\in[1,n]\mid(D(G_{j}^{i},G_{k}^{i})>t)\wedge(D(G_{j}^{s},G_{k}^{s})<\epsilon,s\in P(i))\} Inc_BC={li,i∈[1,n]∣(D(Gji,Gki)>t)∧(D(Gjs,Gks)<ϵ,s∈P(i))}

虽然这种方式产生了巨大的模型拓扑多样性,但从微观层面而言,Structure内的多样性是匮乏的。

参数:

  1. MAXc:用于控制模型结构的大小,具体来说是控制模型中层的最大数量。
  2. MAXv:同样用于控制模型结构的大小,具体来说是控制模型中每个层的最大输入维度。
  3. t:用于不一致性检测的阈值。在比较不同库的输出差异时,如果差异大于这个阈值,则认为存在不一致性。
  4. ε:另一个用于不一致性检测的阈值,通常是一个很小的值,用于判断差异是否足够小以至于可以认为是正常的浮点数偏差。

实验



相关推荐
武汉唯众智创2 小时前
网络安全实训室建设方案全攻略
网络·安全·web安全·网络安全·网络安全实训室·网络安全实验室
不是吧这都有重名2 小时前
[论文阅读]VGGFace2: A dataset for recognising faces across pose and age
论文阅读
宝山哥哥5 小时前
网络信息安全学习笔记1----------网络信息安全概述
网络·笔记·学习·安全·网络安全
FL16238631295 小时前
如何使用目标检测深度学习框架yolov8训练钢管管道表面缺陷VOC+YOLO格式1159张3类别的检测数据集步骤和流程
深度学习·yolo·目标检测
Jamence5 小时前
多模态大语言模型arxiv论文略读(151)
论文阅读·人工智能·语言模型·自然语言处理·论文笔记
网安INF6 小时前
深度学习中批标准化与神经网络调优
人工智能·深度学习·神经网络·机器学习
逼子格6 小时前
逻辑门电路Multisim电路仿真汇总——硬件工程师笔记
笔记·硬件工程师·multisim·电路仿真·逻辑门·硬件工程师学习·电路图
@Hwang6 小时前
【ESP32-IDF笔记】09-UART配置和使用
笔记·esp32·uart·esp32s3·esp32-idf
霖007 小时前
C++学习笔记三
运维·开发语言·c++·笔记·学习·fpga开发
归去_来兮7 小时前
Transformer模型原理概述
人工智能·深度学习·transformer