-
CNN原理CNN,又称卷积神经网络,是深度学习中重要的一个分支。CNN在很多领域都表现优异,精度和速度比传统计算学习算法高很多。特别是在计算机视觉领域,CNN是解决图像分类、图像检索、物体检测和语义分割的主流模型。1. 卷积如图1所示,图中的X和O无论怎么旋转或者缩放,人眼其实还是很容易识别出X和O。图1但是计算机不同,它看到的其实是一个个的像素阵列,如图2。如何对像素的阵列进行特征的提取其实就是卷积神经网络要干的事情。图2再看图3,我们发现X即使进行了旋转,但是绿、橙、紫框标记的区域在两张图中还是一致的,某种程度上,这其实就是X的特征。图3因此可以将这三个特征的区间提取出来,就形成了三个卷积核,如图4所示。图4既然有了卷积核,那么卷积核是如何进行卷积操作的呢?其实很简单,可以看一下图5,卷积核其实就是拿着这个矩阵在图片的矩阵上一点点的平移,就像扫地一样。每扫到一处地方就可以进行卷积的运算,计算方法很简单,如图5所示,左上角的卷积核扫到绿色框的位置,则卷积核矩阵的数字就和扫到的位置的矩阵的数字一一对应相乘然后相加,最后取一个均值,该值就是卷积核提取的特征。图5卷积核提取的所有的特征组成了一个长和宽变小的矩阵,这个矩阵又称为feature map,如图6。使用不同的卷积核也就能提取出不同的feature map。所以可以想象的是,如果不断的进行卷积操作,那么图片的矩阵会逐步地长宽减少,厚度增加。图6可以看到卷积操作通过卷积核是可以分别提取到图片的特征的,但是如何提前知道卷积核呢?像上文的例子,很容易可以找到3个卷积核,但是假如是人脸识别这样成千上万个特征的图片,就没办法提前知道什么是合适的卷积核。其实也没必要知道,因为选择什么样的卷积核,完全可以通过训练不断优化。初始时只需要随机设置一些卷积核,通过训练,模型其实自己可以学习到合适的卷积核,这也是卷积神经网络模型强大的地方。
-
KNN算法之训练样本不平衡情况若正负样本处于不平衡状态,运用投票决策的KNN算法判断输入样本的所属类别:结果显示输入样本为绿色类 。原因是红色类的个数远远小于绿色样本,导致出现的分类错误 。(1)若分类决策选择限定半径最近邻法,即以输入样本为圆心,最大半径R的圆内选择出现次数最多的类做为输入样本的类 。如下图,黑色样本的分类结果正确。(2)投票法是默认每个样本的权重相等,我们假定权重与距离成反比,即距离越大,对结果的影响越小,那么该样本的权重也越小,反之,权重则越大,根据权重对输入样本进行分类 。这种思想与adaBoost算法相似,分类性能好的弱分类器给予一个大的权重 。分类过程:(1)、选择与输入样本距离X0最近的K个训练样本Xi(i = 1,2,...,K),d(X0,Xi)表示输入样本和训练样本的距离。 (2)、根据距离与样本成反比的性质将距离转化成权重Wi,Wi表示输入样本X0与训练样本Xi的权重。(3)、我们累加每一类的样本权重,并认为该权重占所有权重和的比例是该类的生成概率,概率最大的类就是输入样本的分类结果。假设目标是二分类{C1,C2},表达式:若,则分类结果为C1类,反之C2类。回归过程:(1)(2)步骤与分类过程一直,第(3)步使用如下表达式得到回归值:其中,y为输出结果,f(xi)为最近邻样本的值。若权重相同的话,则输出结果为K个训练样本的平均值。用权重思想重新对上例进行分类,可得输入样本为红色类。
-
KNN算法之暴力实现方法暴力搜索(brute-force search)是线性扫描输入实例与每一个训练实例的距离并选择前k个最近邻的样本来多数表决,算法简单,但是当训练集或特征维度很大时,计算非常耗时,故这种暴力实现原理是不可行的 。4. KNN算法之kd树实现方法kd树是一种对k维空间中的实例点进行存储以便对其进行快速检索的树形数据结构,构造kd树相当于不断用垂直于坐标轴的超平面将k维空间进行划分,构成一系列的K维超矩形区域,kd树省去了对大部分数据的搜索,大大的较少了计算量。kd树的KNN算法实现包括三部分:kd树的构建,kd树的搜索和kd树的分类。1. 构建kd树kd树实质是二叉树,其划分思想与cart树一致,即切分使样本复杂度降低最多的特征。kd树认为特征方差越大,则该特征的复杂度亦越大,优先对该特征进行切分 ,切分点是所有实例在该特征的中位数。重复该切分步骤,直到切分后无样本则终止切分,终止时的样本为叶节点。【例】给定一个二维空间的数据集:构造kd树的步骤:(1)、数据集在维度和的方差分别为6.9和5.3,因此首先从维度进行切分。(2)、 数据集在维度的中位数是7,以平面=7将空间分为左右两个矩形。(3)、分别对左右两个矩形的样本在维度的中位数进行切分。(4)、重复步骤(2)(3),直到无样本,该节点为叶子节点。如下图,绿色为叶子节点 ,红色为节点和根节点。2. KD树搜索(1)、搜索路径从根节点到叶节点,在KD树里面找到包含目标点的叶子节点。(2)、搜索路径从叶节点到根节点,找到距离目标点最近的样本实例点。过程不再复述,具体方法请参考李航博士《统计学习方法》。3. KD树预测每一次搜寻与输入样本最近的样本节点,然后忽略该节点,重复同样步骤K次,找到与输入样本最近邻的K个样本 ,投票法确定输出结果。
-
KNN算法三要素K值的选择、距离度量和分类决策规则是K近邻算法的三个基本要素。当三个要素确定后,对于任何一个新的输入实例,它所属的Y值也确定了,本节介绍了三要素的含义。1. 分类决**策规则**KNN算法一般是用多数表决方法,即由输入实例的K个邻近的多数类决定输入实例的类。这种思想也是经验风险最小化的结果。训练样本为(xi , yi)。当输入实例为 x,标记为c,是输入实例x的k近邻训练样本集。我们定义训练误差率是K近邻训练样本标记与输入标记不一致的比例,误差率表示为:因此,要使误差率最小化即经验风险最小,就要使(2.1)式右端的最大,即K近邻的标记值尽可能的与输入标记一致,所以多数表决规则等价于经验风险最小化。2. K值的选择:K取值较小时,模型复杂度高,训练误差会减小,泛化能力减弱;K取值较大时,模型复杂度低,训练误差会增大,泛化能力有一定的提高。KNN模型的复杂度可以通过对噪声的容忍度来理解,若模型对噪声很敏感,则模型的复杂度高;反之,模型的复杂度低。为了更好理解模型复杂度的含义,我们取一个极端,分析K=1和K="样本数"的模型复杂度。由上图可知,K=1时,模型输出的结果受噪声的影响很大。由上图可知,样本数等于7,当K=7时,不管输入数据的噪声有多大,输出结果都是绿色类,模型对噪声极不敏感,但是模型太过简单,包含的信息太少,也是不可取的。通过上面两种极端的K选取结果可知,K值选择应适中,K值一般小于20,建议采用交叉验证的方法选取合适的K值。3. 距离度量KNN算法用距离来度量两个样本间的相似度,常用的距离表示方法:(1)、欧式距离(2)、曼哈顿距离(3)、闵可夫斯基距离可以看出,欧式距离是闵可夫斯基距离在p=2时的特例,而曼哈顿距离是p=1时的特例 。文章来源于机器学习算法那些事 ,作者石头
-
1. KNN算法原理KNN算法是选择与输入样本在特征空间内最近邻的k个训练样本并根据一定的决策规则,给出输出结果 。决策规则:分类任务:输出结果为k个训练样本中占大多数的类 。回归任务:输出结果为k个训练样本值的平均值 。如下图的分类任务,输出结果为w1类 。KNN算法优缺点优点:1)算法简单,理论成熟,可用于分类和回归。2)对异常值不敏感。3)可用于非线性分类。4)比较适用于容量较大的训练数据,容量较小的训练数据则很容易出现误分类情况。5)KNN算法原理是根据邻域的K个样本来确定输出类别,因此对于不同类的样本集有交叉或重叠较多的待分样本集来说,KNN方法较其他方法更为合适。缺点:1)时间复杂度和空间复杂度高。2)训练样本不平衡,对稀有类别的预测准确率低。3)相比决策树模型,KNN模型可解释性不强。文章来源于机器学习算法那些事 ,作者石头
-
作为基础特征提取器,视觉骨干(vision backbone)是计算机视觉领域的基础研究课题。得益于卓越的特征提取性能,CNN 成为过去十年中不可或缺的研究课题。在 AlexNet 重新开启深度学习十年之后,通过使用更深的网络、更高效的架构、更强的多尺度能力,社区已取得多项突破以获得更强大的视觉骨干和注意力机制。由于平移不变性和共享滑动窗口策略,CNN 对于具有任意大小输入的各种视觉任务是有效的。更先进的视觉骨干网络通常会在各种任务中带来显著性能提升,包括图像分类、对象检测、语义分割和姿势估计。同时,选择性注意力是处理视觉中复杂搜索组合的重要机制。注意力机制可以看作是基于输入特征的自适应选择过程。自从提出完全注意力网络以来,自注意力模型(即 Transformer)迅速成为了 NLP 领域的主导架构。近年来,Dosovitskiy 等人提出 ViT,它将 transformer 骨干引入计算机视觉,并在图像分类任务上优于 CNN。得益于强大的建模能力,基于 transformer 的视觉骨干迅速占领了各种任务的排行榜,包括对象检测和语义分割等。尽管自注意力机制最初是为 NLP 任务而设计的,但近来已经席卷了计算机视觉领域。然而,图像的 2D 特性为在计算机视觉中应用自注意力带来了三个挑战:将图像视为一维序列会忽略它们的二维结构;二次复杂度对于高分辨率图像来说太昂贵了;只捕捉空间适应性而忽略通道适应性。近日,来自清华大学胡事民团队和南开大学程明明团队提出了一种新型大核注意力(large kernel attention,LKA)模块,在避免上述问题的同时实现了自注意力中的自适应和长距离相关性。该研究还进一步提出了一种基于 LKA 的新型神经网络,命名为视觉注意力网络(VAN)。在图像分类、目标检测、语义分割、实例分割等广泛的实验中,VAN 的性能优于 SOTA 视觉 transformer 和卷积神经网络。论文一作为清华大学计算机系博士生国孟昊,主要研究方向为计算机视觉、计算机图形学、深度学习。他也是计图的开发者之一,曾在国际会议 / 期刊 ICLR/IPMI/CVMJ 上发表论文。胡事民,清华大学计算机科学与技术系教授,主要从事计算机图形学、智能信息处理和系统软件等方面的研究。研制并开源了第一个我国高校自主的深度学习框架——计图(Jittor),计图是一个完全动态编译(Just-in-time),基于元算子融合和统一计算图的深度学习框架。计图支持 30 多种的骨干网络,并且开源了多个模型库:对抗生成网络、图像语义分割、检测与实例分割、点云分类、可微渲染等。程明明,南开大学教授,计算机系主任,他的主要研究方向是计算机视觉和计算机图形学,他发表的论文谷歌引用 2 万余次,单篇最高引用 4000 余次。方法大核注意力注意力机制可以看作是一个自适应选择的过程,它可以根据输入特征选择鉴别特征并自动忽略噪声响应。注意力机制的关键步骤是生成注意力图,指出不同点的重要性。因此需要了解各点之间的关系。有两种众所周知的方法可以在不同点之间建立关系。第一种是采用自注意力机制来捕获长距离依赖。第二种是使用大核卷积来建立相关性并产生注意力图,这种方式还是有明显的弊端的,大核卷积带来了大量的计算开销和参数。为了克服上述缺点并利用自注意力和大核卷积的优点,该研究提出分解大核卷积操作来捕获长距离关系。如下图 2 所示,大核卷积可以分为三个部分:空间局部卷积(depth-wise 卷积)、空间长距离卷积(depth-wise 空洞卷积)和通道卷积(1×1 卷积)。视觉注意力网络(VAN) VAN 具有简单的层次结构,包括四个阶段,并逐步降低输出空间分辨率,即 H/4 × W/4 、H/8 × W/8 、H/16 × W/16 和 H /32 × W/32 。其中,H 和 W 代表输入图像的高度和宽度。随着分辨率的降低,输出通道的数量也在增加。输出通道 C_i 的变化如.该研究首先对输入进行下采样,并使用步幅数来控制下采样率。该研究通过定量和定性实验来证明 VAN 的有效性。其中,在 ImageNet-1K 图像分类数据集、COCO 目标检测数据集和 ADE20K 语义分割数据集上进行了定量实验,并在 ImageNet 验证集上使用 Grad-CAM 来可视化类激活映射(CAM)。该研究首先用消融实验证明 LKA 的每个组成部分都是至关重要的。为了快速获得实验结果,该研究选择 VAN-Tiny 作为基线模型通过以上分析,研究者发现 LKA 可以利用局部信息,捕捉长距离依赖,在通道和空间维度上都具有适应性。此外,实验结果证明 LKA 的所有组成部分都有助于完成识别任务。虽然标准卷积可以充分利用局部语境信息,但它忽略了长距离依赖和适应性。而自注意力虽然可以捕获长距离依赖,且在空间维度上具有适应性,但它忽略了局部信息和在通道维度上的适应性。研究者还将 VAN 与现有方法进行了比较,包括 MLP、CNN 和 ViT,结果如下表 5 所示。在相似的参数和计算成本下,VAN 优于常见的 CNN(ResNet、ResNeXt、ConvNeXt 等)、ViT(DeiT、PVT 和 Swin-Transformer 等)和 MLP(MLP -Mixer、ResMLP、gMLP 等)。可视化类激活映射(CAM)是一种可视化鉴别区域(注意力图)的流行工具。该研究采用 Grad-CAM 来可视化 ImageNet 验证集上由 VAN-Base 模型生成的注意力。下图 4 的结果表明,VAN-Base 可以清晰地聚焦在目标对象上,可视化直观地证明了 VAN 的有效性。
-
深度神经网络是由多个单层非线性网络叠加而成的,常见的单层网络按照编码解码情况分为3类:只包含编码器部分、只包含解码器部分、既有编码器部分也有解码器部分。编码器提供从输入到隐含特征空间的自底向上的映射,解码器以重建结果尽可能接近原始输入为目标将隐含特征映射到输入空间。 人的视觉系统对信息的处理是分级的。从低级的提取边缘特征到形状(或者目标等),再到更高层的目标、目标的行为等,即底层特征组合成了高层特征,由低到高的特征表示越来越抽象。深度学习借鉴的这个过程就是建模的过程。 深度神经网络可以分为3类,前馈深度网络(feed-forwarddeep networks, FFDN),由多个编码器层叠加而成,如多层感知机(multi-layer perceptrons, MLP)、卷积神经网络(convolutionalneural networks, CNN)等。反馈深度网络(feed-back deep networks, FBDN),由多个解码器层叠加而成,如反卷积网络(deconvolutionalnetworks, DN)、层次稀疏编码网络(hierarchical sparse coding, HSC)等。双向深度网络(bi-directionaldeep networks, BDDN),通过叠加多个编码器层和解码器层构成(每层可能是单独的编码过程或解码过程,也可能既包含编码过程也包含解码过程),如深度玻尔兹曼机(deep Boltzmann machines, DBM)、深度信念网络(deep beliefnetworks, DBN)、栈式自编码器(stacked auto-encoders, SAE)等。深度神经网络是由多个单层非线性网络叠加而成的,常见的单层网络按照编码解码情况分为3类:只包含编码器部分、只包含解码器部分、既有编码器部分也有解码器部分。编码器提供从输入到隐含特征空间的自底向上的映射,解码器以重建结果尽可能接近原始输入为目标将隐含特征映射到输入空间。
-
Dropout启发其他以随机方法训练指数量级的共享权重的集成。DropConnect是Dropout的一个特殊情况,其中一个标量权重和单个隐藏单元状态之间的每个乘积被认为是可以丢弃的一个单元 (Wan et al., 2013)。随机池化是构造卷积神经网络集成的一种随机池化的形式 (见第 9.3 节),其中每个卷积网络参与每个特征图的不同空间位置。目前为止,Dropout仍然是最广泛使用的隐式集成方法。一个关于Dropout的重要见解是,通过随机行为训练网络并平均多个随机决定进行预测,实现了一种参数共享的Bagging形式。早些时候,我们将Dropout描述为通过包括或排除单元形成模型集成的Bagging。然而,这种参数共享策略不一定要基于包括和排除。原则上,任何一种随机的修改都是可接受的。在实践中,我们必须选择让神经网络能够学习对抗的修改类型。在理想情况下,我们也应该使用可以快速近似推断的模型族。我们可以认为由向量 µ 参数化的任何形式的修改,是对 µ 所有可能的值训练 p(y | x, µ) 的集成。注意,这里不要求 µ 具有有限数量的值。例如, µ 可以是实值。Srivastava et al. (2014) 表明,权重乘以 µ ∼ N (1, I) 比基于二值掩码Dropout表现得更好。由于 E[µ] = 1,标准网络自动实现集成的近似推断,而不需要权重比例推断规则。
-
作者:机器之心编译要使神经网络能够更好地记忆数据,它们需要的参数比想象的要多得多。传统上,只要参数的数量大于要满足的方程数量,我们就可以使用参数化模型来进行数据插值。但在深度学习中,一个令人困惑的现象是,模型训练使用的参数数量比这个经典理论所建议的要多得多。深度学习中经常会出现各种大型的神经网络,神经网络是执行类人任务的领先 AI 系统。随着它们参数的增多,神经网络已经可以执行各种任务。按照数学的理论,神经网络无需很大就能执行任务,例如在直线 y=2x 中,确定这条直线无需很多参数。但是,现代神经网络的规模通常远远超出预测的要求,这种情况被称为过度参数化。在去年 12 月入选 NeurIPS 的一篇论文《A Universal Law of Robustness via Isoperimetry》中,来自微软研究院的 Sébastien Bubeck 和斯坦福大学的 Mark Sellke 为神经网络扩展成功背后的奥秘提供了新的解释。他们表明,神经网络必须比传统预期规模要大得多,才能避免某些基本问题。这一发现为一个持续了几十年的问题提供了一般性见解。论文链接:https://arxiv.org/abs/2105.12806Mark Sellke 和 Sébastien Bubeck 瑞士洛桑联邦理工学院的 Lenka Zdeborová 表示:他们的研究触及了计算机科学的核心。神经网络规模的标准来自对其如何记忆数据的分析。但要了解数据记忆,我们必须首先了解网络的作用。神经网络中一项常见的任务是识别图像中的目标。为了创建这种网络,研究人员首先需要提供数据图像及其标注,然后对其进行训练以学习相关参数,之后模型能正确识别图像中的目标。换句话说,训练使网络记住数据。更值得注意的是,一旦网络记住了足够多的训练数据,它还能够以不同程度的准确率预测它从未见过的目标,这一过程称为泛化。网络的大小决定了它可以记住多少。这可以通过图形来理解,想象一下,将两个数据点放在 xy 平面上。你可以将这两个点与由两个参数描述的线连接起来。如果知道了这条线的一个点坐标以及一个原始数据点的 x 坐标,我们只需查看这条线(或使用参数)就可以计算出相应的 y 坐标。因为这条线已经记住了这两个数据点。神经网络的原理与此类似。例如,图像由成百上千个值描述 —— 每个像素是一个值。这些值在数学上等价于高维空间中一个点的坐标,坐标的数量称为维度。一个古老的数学结果表明,要将 n 个数据点与曲线拟合,则需要一个具有 n 个参数的函数。当神经网络在 1980 年代首次作为一种有影响的力量出现时,研究者的想法与此相同,他们认为对于神经网络来说,应该只需要 n 个参数来拟合 n 个数据点 —— 无论数据的维度如何。德克萨斯大学奥斯汀分校的 Alex Dimakis 表示:「现在的研究改变了,我们经常创建参数数量超过训练样本数量的神经网络。这意味着相关研究文献书籍必须重写。」Bubeck 和 Sellke 并没有打算重写任何东西。他们正在研究神经网络缺乏的另一种特性,称为稳健性(robustness),即网络处理微小变化的能力。例如,一个稳健性较差的网络可能已经学会了识别长颈鹿,但它会将一个几乎没有修改过的图片错误地标记为沙鼠,这就是网络稳健性带来的影响。 2019 年,当 Bubeck 及其同事意识到该问题与网络规模有关时,他们正在寻求证明有关该问题的定理。新研究表明过度参数化对于网络的稳健性是必要的。他们通过将数据点与曲线拟合所需的参数来做到这一点,该曲线具有与稳健性等效的数学属性:平滑度。为了看到这一点,再次想象平面中的一条曲线,其中 x 坐标代表单个像素的颜色,y 坐标代表图像标签。由于曲线是平滑的,如果你稍微修改像素的颜色,沿着曲线移动一小段距离,相应的预测只会发生很小的变化。另一方面,对于极度锯齿状的曲线,x 坐标(颜色)的微小变化会导致 y 坐标(图像标签)发生剧烈变化,原本识别为长颈鹿的图像可以变成沙鼠。Bubeck 和 Sellke 的研究表明,平滑拟合高维数据点不仅需要 n 个参数,还需要 n × d 个参数,其中 d 是输入的维度(例如,784 表示 784 像素的图像)。换句话说,如果你想让神经网络稳健地记住它的训练数据,过度参数化不仅有帮助 —— 而是绝对有效。证明依赖于一个关于高维几何的奇特事实 —— 即放置在球体表面上的随机分布的点,几乎都彼此相距一个完整的直径。点与点之间的大间隔意味着用一条平滑曲线拟合它们需要许多额外的参数。耶鲁大学的 Amin Karbasi 表示,「这个证明非常基础 —— 不需要繁重的数学运算,它说明了一些非常普遍的东西。」该结果提供了一种新方法来理解为什么扩大神经网络规模的简单策略如此有效。与此同时,其他研究揭示了过度参数化带来帮助的更多原因,例如它可以提高训练过程的效率,以及网络的泛化能力。虽然我们现在知道过度参数化对于稳健性是必要的,但尚不清楚稳健性对其他事物的必要性。通过将其与过度参数化联系起来,新的证据似乎表明稳健性可能比想象的更加重要,是一个可以带来许多好处的关键因素。「稳健性似乎是泛化的先决条件,」Bubeck 说到。「如果你有一个系统,你只是稍微扰乱它,然后它就失控了,这会是怎样的系统?这是不可接受的,这是一个非常基础和基本的要求。」责任编辑:张燕妮 来源: 机器之心
-
源代码:https://arxiv.org/pdf/2112.08782.pdf 一、前言 交通标志检测对于无人驾驶系统来说是一项具有挑战性的任务,特别是对于多尺度目标的检测和检测的实时性问题。在交通标志检测过程中,目标的尺度变化很大,会对检测精度产生一定的影响。 特征金字塔被广泛用于解决这个问题,但它可能会破坏不同尺度交通标志的特征一致性。而且,在实际应用中,常用的方法很难在保证检测实时性的同时提高多尺度交通标志的检测精度。 在今天分享中,研究者提出了一种改进的特征金字塔模型,命名为AF-FPN,它利用自适应注意力模块(AAM)和特征增强模块(FEM)来减少特征图生成过程中的信息丢失并增强表示能力的特征金字塔。将YOLOv5中原有的特征金字塔网络替换为AF-FPN,在保证实时检测的前提下提高了YOLOv5网络对多尺度目标的检测性能。此外,提出了一种新的自动学习数据增强方法来丰富数据集并提高模型的鲁棒性,使其更适合实际场景。在Tsinghua-Tencent 100K (TT100K) 数据集上的大量实验结果证明了与几种最先进的方法相比所提出的方法的有效性和优越性。 二、背景 交通标志识别系统化是自动驾驶中最重要的一部分,怎样去提升交通标志检测和识别技术的精度和实时性能,这个也是现在当技术实际落地时需要解决的重要问题。传统的CNN通常需要大量的参数和浮点运算 (FLOP) 以达到准确性令人满意的效果,例如ResNet-50有大约2560万个参数和需要4.1B FLOPs来处理大小为224×224的图像。然而,移动设备(例如智能手机和自动驾驶汽车)有限的内存和计算资源不能用于大型网络的部署和推理。作为一个one-stage检测器,使用YOLOv5是由于具有计算量小、速度快的优点。三、新框架详细分析 The improved YOLOv5s network framework作为当前YOLO系列中的最新框架,卓越的YOLOv5其灵活性使其便于快速在车辆硬件方面进行部署。YOLOv5包含四个模型,分别是YOLOv5s、YOLOv5m、YOLOv5l和YOLOv5x。YOLOv5s是YOLO系列最小的模型,更适合部署在车载移动硬件平台,由于其内存大小为14.10M,但识别精度达不到准确、高效识别的要求,尤其是用于识别小规模目标。YOLOv5的基本框架可以分为四个部分:input、backbone、neck和prediction。Input部分通过数据增强来丰富数据集,它具有对硬件设备要求低,计算量成本低。但是它会导致数据集中原来的小目标变小,从而导致数据集的恶化,降低模型的泛化性能。Backbone部分主要由CSP模块组成,它们通过CSPDarknet53执行特征提取。FPN和PANet用于聚合Neck现阶段的图像特征。最后,网络通过Prediction进行目标预测和输出。研究者引入AF-FPN和自动学习数据增强来解决模型大小和识别精度不兼容的问题,进一步提高模型的识别性能。将原有的FPN结构替换为AF-FPN,以提高识别多尺度目标的能力,并在识别速度和准确率之间做出有效的权衡。此外,研究者去除原始网络中的mosaic augmentation,并根据自动学习数据增强策略使用最佳数据增强方法来丰富数据集并提高训练效果。改进后的YOLOv5s网络结构如下图所示。AF-FPN structureAF-FPN在传统特征金字塔网络的基础上,增加了自适应注意力模块(AAM)和特征增强模块(FEM)。前一部分由于减少了特征通道,减少了在高层特征图中上下文信息的丢失;后一部分增强了特征金字塔的表示并加快了推理速度,同时实现了最先进的性能。AF-FPN的结构如下图所示。AAM的具体结构如下图所示,作为自适应注意力模块的输入,C5的大小为S=h×w。它首先通过自适应池化层获得不同尺度(β1×S,β2×S,β3×S)的上下文特征。然后每个上下文特征经过1×1卷积,得到相同的通道维度256。使用双线性插值将它们上采样到S的尺度,用于后续融合。空间注意力机制通过一个Concat层将三个上下文特征的通道合并,然后特征图依次通过1×1卷积层、ReLU激活层、3×3卷积层和sigmoid激活层生成对应的空间权重。生成的权重图和合并通道后的特征图进行Hadamard乘积运算,分离后加入到输入特征图M5中,将上下文特征聚合到M6中。最终的特征图具有丰富的多尺度上下文信息,在一定程度上缓解了由于通道数减少而造成的信息丢失。FEM主要利用空洞卷积根据检测到的交通标志的不同尺度自适应学习每个特征图中不同的感受野,从而提高多尺度目标检测和识别的准确性。如上图所示,它可以分为两个部分:多分支卷积层和多分支池化层。多分支卷积层用于通过空洞卷积为输入特征图提供不同大小的感受野。并且平均池化层用于融合来自三个分支感受野的交通信息,以提高多尺度预测的准确性。Data Augmentation数据增强我就简单描述下,具体如下示例:四、实验结果及可视化Size distribution of sign instances from the TT100K在TT100K数据集上与其他模型的性能比较 每种方法对19种交通标志的漏检率比较移动设备部署及通过摄像头拍摄的检测实例
-
# -*- coding=UTF-8 -*- import tensorflow as tf # 输入数据 import input_data mnist = input_data.read_data_sets("/tmp/data/", one_hot=True) # 定义网络超参数 learning_rate = 0.001 training_iters = 200000 batch_size = 64 display_step = 20 # 定义网络参数 n_input = 784 # 输入的维度 n_classes = 10 # 标签的维度 dropout = 0.8 # Dropout 的概率 # 占位符输入 x = tf.placeholder(tf.types.float32, [None, n_input]) y = tf.placeholder(tf.types.float32, [None, n_classes]) keep_prob = tf.placeholder(tf.types.float32) # 卷积操作 def conv2d(name, l_input, w, b): return tf.nn.relu(tf.nn.bias_add( tf.nn.conv2d(l_input, w, strides=[1, 1, 1, 1], padding='SAME'),b) , name=name) # 最大下采样操作 def max_pool(name, l_input, k): return tf.nn.max_pool(l_input, ksize=[1, k, k, 1], strides=[1, k, k, 1], padding='SAME', name=name) # 归一化操作 def norm(name, l_input, lsize=4): return tf.nn.lrn(l_input, lsize, bias=1.0, alpha=0.001 / 9.0, beta=0.75, name=name) # 定义整个网络 def alex_net(_X, _weights, _biases, _dropout): _X = tf.reshape(_X, shape=[-1, 28, 28, 1]) # 向量转为矩阵 # 卷积层 conv1 = conv2d('conv1', _X, _weights['wc1'], _biases['bc1']) # 下采样层 pool1 = max_pool('pool1', conv1, k=2) # 归一化层 norm1 = norm('norm1', pool1, lsize=4) # Dropout norm1 = tf.nn.dropout(norm1, _dropout) # 卷积 conv2 = conv2d('conv2', norm1, _weights['wc2'], _biases['bc2']) # 下采样 pool2 = max_pool('pool2', conv2, k=2) # 归一化 norm2 = norm('norm2', pool2, lsize=4) # Dropout norm2 = tf.nn.dropout(norm2, _dropout) # 卷积 conv3 = conv2d('conv3', norm2, _weights['wc3'], _biases['bc3']) # 下采样 pool3 = max_pool('pool3', conv3, k=2) # 归一化 norm3 = norm('norm3', pool3, lsize=4) # Dropout norm3 = tf.nn.dropout(norm3, _dropout) # 全连接层,先把特征图转为向量 dense1 = tf.reshape(norm3, [-1, _weights['wd1'].get_shape().as_list()[0]]) dense1 = tf.nn.relu(tf.matmul(dense1, _weights['wd1']) + _biases['bd1'], name='fc1') # 全连接层 dense2 = tf.nn.relu(tf.matmul(dense1, _weights['wd2']) + _biases['bd2'], name='fc2') # Relu activation # 网络输出层 out = tf.matmul(dense2, _weights['out']) + _biases['out'] return out # 存储所有的网络参数 weights = { 'wc1': tf.Variable(tf.random_normal([3, 3, 1, 64])), 'wc2': tf.Variable(tf.random_normal([3, 3, 64, 128])), 'wc3': tf.Variable(tf.random_normal([3, 3, 128, 256])), 'wd1': tf.Variable(tf.random_normal([4*4*256, 1024])), 'wd2': tf.Variable(tf.random_normal([1024, 1024])), 'out': tf.Variable(tf.random_normal([1024, 10])) } biases = { 'bc1': tf.Variable(tf.random_normal([64])), 'bc2': tf.Variable(tf.random_normal([128])), 'bc3': tf.Variable(tf.random_normal([256])), 'bd1': tf.Variable(tf.random_normal([1024])), 'bd2': tf.Variable(tf.random_normal([1024])), 'out': tf.Variable(tf.random_normal([n_classes])) } # 构建模型 pred = alex_net(x, weights, biases, keep_prob) # 定义损失函数和学习步骤 cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(pred, y)) optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(cost) # 测试网络 correct_pred = tf.equal(tf.argmax(pred,1), tf.argmax(y,1)) accuracy = tf.reduce_mean(tf.cast(correct_pred, tf.float32)) # 初始化所有的共享变量 init = tf.initialize_all_variables() # 开启一个训练 with tf.Session() as sess: sess.run(init) step = 1 # Keep training until reach max iterations while step * batch_size < training_iters: batch_xs, batch_ys = mnist.train.next_batch(batch_size) # 获取批数据 sess.run(optimizer, feed_dict={x: batch_xs, y: batch_ys, keep_prob: dropout}) if step % display_step == 0: # 计算精度 acc = sess.run(accuracy, feed_dict={x: batch_xs, y: batch_ys, keep_prob: 1.}) # 计算损失值 loss = sess.run(cost, feed_dict={x: batch_xs, y: batch_ys, keep_prob: 1.}) print "Iter " + str(step*batch_size) + ", Minibatch Loss= " + "{:.6f}".format(loss) + ", Training Accuracy= " + "{:.5f}".format(acc) step += 1 print "Optimization Finished!" # 计算测试精度 print "Testing Accuracy:", sess.run(accuracy, feed_dict={x: mnist.test.images[:256], y: mnist.test.labels[:256], keep_prob: 1.})
-
自回归模型(AR)的滤波器技术在检测局部⻮轮⻮故障⽅⾯优于传统使⽤的残差分析技术。现有的AR滤波器技术性能良好,但基于⾃相关测量,对可⽤于区分噪声和脉冲的相位关系不敏感。最小熵反卷积技术可以通过信号的⾼阶统计 (HOS) 特性,特别是峰度,利⽤相位信息来增强检测新出现的轮⻮故障的能力。H. Endo*和R.B. Randall的实验结果验证了AR和MED 联合滤波技术在检测⻮轮剥落和⻮⻆裂纹⽅⾯的优越性能。AR和MED滤波技术的齿轮故障诊断实验从新南威尔士大学的齿轮试验台测量的振动信号用于比较AR和MED过滤器与原始AR过滤器在检测齿轮齿故障方面的有效性。其中考虑了四组单位⽐正⻮轮(32×32⻮):三组具有不同尺⼨⻮⽚剥落的钢⻮轮和一对带有⼈⼯切割⻮圆⻆裂纹(TFC)的塑料⻮轮。带有种⼦故障的⻮轮如图1所⽰,故障的尺⼨在表1中给出。⻮轮箱上的振动(加速度)信号是在⻮轮以168rpm 的恒定速度运行时测量的。图1. 种子⻮轮故障。 (a) Sp25%,(b) Sp50%,(c) Sp100% 和 (d) TFC(塑料⻮轮) 表1 轮齿故障尺寸1.⻮轮剥落图2显⽰了带有剥落的⻮轮的AR滤波器和ARMED的未处理信号和残差。这些信号是在以168 rpm轴速和负载67 Nm的⻮轮运行时测量的扭矩。信号的相应功率谱如图3所⽰。注意:在图2和3中,(a)、(b) 和 (c) 列分别对应于未处理的信号、AR残差和ARMED 输出。第 1、2 、3 行分别对应损坏类型:剥落25%、剥落50%和剥落100%。图2.信号⽐较(⻮轮剥落)图3.功率谱⽐较(⻮轮剥落)在图2(a1)-(a3)中未处理的信号中看不到剥落的影响。在图2(b1)-(b3)的AR滤波器的残差中,由于⼤剥落 (Sp100%) 导致的每⻮轮一次旋转脉冲变得可⻅,但较⼩剥落的症状,如Sp25%和Sp50%是不清楚的(图2(a1) 和 (a2))。图2(c1)-(c3)所⽰的ARMED结果清楚地证明了MED滤波器在增强剥落脉冲⽅⾯的有效性。以前在AR残差中未检测到的较⼩剥落(Sp25%和Sp50%)的脉冲在ARMED结果中清晰可⻅。图2中的信号频谱如图3所⽰。在功率谱的平坦幅度中观察到AR和MED滤波器的“⽩化”效应。一般来说,ARMED结果的光谱看起来⽐AR残差的光谱更平坦。AR残差的频谱在2000 Hz左右开始滚降,因为AR滤波器在准确捕获⾼频区域的特征⽅⾯变得不那么有效,这会导致⽆效的逆滤波,从⽽导致滚降效应。2.齿脚裂纹图4显⽰了带TFC的AR和ARMED滤波器的未处理信号和残差,它们的功率谱如图5所⽰。在图4(c1)-(c5)中可以看出,ARMED结果中故障信号的峰度随着扭矩的⼤⼩⽽增加。注意:在图4和5中,(a)、(b) 和 (c) 列分别对应于未处理的信号、AR残差和ARMED输出。第1-5行对应于施加在⻮轮上的不同负载⽔平:分别为10、15、20、25 和 30 Nm。图4.信号⽐较(不同负载的 TFC)图5.功率谱⽐较(不同负载的 TFC)在未处理信号中未检测到的 TFC 的影响(图4(a1)-(a5))在AR的残差中可⻅(图4(b1)-(b5)),并且故障脉冲进一步增强(图4(c1)-(c5))。虽然TFC的影响可以在AR和ARMED的输出中识别出来,但故障脉冲的清晰度在ARMED结果中明显更好,这也反映在信号的峰度上。结论通过针对⻮轮剥落和齿脚裂纹实验,研究了MED增强局部⻮轮⻮故障的脉冲样效应的峰度的能力。MED已被证明可以补充现有的AR过滤技术,以提⾼其检测⻮轮⻮故障的能力。AR和MED的组合滤波技术在检测剥落和齿脚裂纹方面显示出显著的改进。 参考文献:[1]. H. Endo*, R.B. Randall, Enhancement of autoregressive model based gear tooth fault detection technique by the use of minimum entropy deconvolution filter.
-
AlexNet模型AlexNet中包含了几个比较新的技术点,也首次在CNN中成功应用了ReLU、Dropout和LRN等Trick。同时AlexNet也使用了GPU进行运算加速。AlexNet将LeNet的思想发扬光大,把CNN的基本原理应用到了很深很宽的网络中。AlexNet主要使用到的新技术点如下:(1)成功使用ReLU作为CNN的激活函数,并验证其效果在较深的网络超过了Sigmoid,成功解决了Sigmoid在网络较深时的梯度弥散问题。虽然ReLU激活函数在很久之前就被提出了,但是直到AlexNet的出现才将其发扬光大。(2)训练时使用Dropout随机忽略一部分神经元,以避免模型过拟合。Dropout虽有单独的论文论述,但是AlexNet将其实用化,通过实践证实了它的效果。在AlexNet中主要是最后几个全连接层使用了Dropout。(3)在CNN中使用重叠的最大池化。此前CNN中普遍使用平均池化,AlexNet全部使用最大池化,避免平均池化的模糊化效果。并且AlexNet中提出让步长比池化核的尺寸小,这样池化层的输出之间会有重叠和覆盖,提升了特征的丰富性。(4)提出了LRN层,对局部神经元的活动创建竞争机制,使得其中响应比较大的值变得相对更大,并抑制其他反馈较小的神经元,增强了模型的泛化能力。(5)使用CUDA加速深度卷积网络的训练,利用GPU强大的并行计算能力,处理神经网络训练时大量的矩阵运算。AlexNet使用了两块GTX 580 GPU进行训练,单个GTX 580只有3GB显存,这限制了可训练的网络的最大规模。因此作者将AlexNet分布在两个GPU上,在每个GPU的显存中储存一半的神经元的参数。因为GPU之间通信方便,可以互相访问显存,而不需要通过主机内存,所以同时使用多块GPU也是非常高效的。同时,AlexNet的设计让GPU之间的通信只在网络的某些层进行,控制了通信的性能损耗。 (6)数据增强,随机地从256*256的原始图像中截取224*224大小的区域(以及水平翻转的镜像),相当于增加了2*(256-224)^2=2048倍的数据量。如果没有数据增强,仅靠原始的数据量,参数众多的CNN会陷入过拟合中,使用了数据增强后可以大大减轻过拟合,提升泛化能力。进行预测时,则是取图片的四个角加中间共5个位置,并进行左右翻转,一共获得10张图片,对他们进行预测并对10次结果求均值。同时,AlexNet论文中提到了会对图像的RGB数据进行PCA处理,并对主成分做一个标准差为0.1的高斯扰动,增加一些噪声,这个Trick可以让错误率再下降1%。
-
简介最小熵反褶积(MED)方法被广泛应用于机械故障检测领域,最早由Wiggins提出,之后被Sawalhi于2007年应用到滚动轴承故障诊断中,是一种自适应的滤波方法,主要目的是通过寻找一个最优反卷积器突出信号的大的脉冲,因此通常使用**峭度**(Kurtosis)作为计算的终止条件,用于判断机械的冲击故障。原理对于滚动轴承的故障诊断问题,假设信号采集模型为y(n)=h(n)∗x(n)+e(n)可以看出主要假设采集系统满足的是**卷积**模型而不是线性模型,其中x(n)为轴承振动的信号,h(n)为系统的传递函数,e(n)是系统噪声。先不考虑e(n),MED的目的是寻找一个反褶积器也可以叫逆滤波器w(n)将y(n)恢复出真实的振动信号x(n),即x(n)=w(n)∗y(n)Wiggins采用序列x^(n)的范数衡量熵的大小,并把其作为目标函数求解的最优结果,即这就是峭度的形式,当此范数为最大值时获得的逆滤波器w(n)为最优解,具体的推导过程可见(二)。算法MED算法一共分为五步仿真过程使用的工具包是Matlab论坛的Minimum Entropy Deconvolution Multipack,函数为med2d,输入信号是一个正弦信号上叠加很多脉冲波,使用MED方法可以有效检测出脉冲波。使用代码如下:n = 0:999; x = [sin(n/30) + 0.2*(mod(n,21)==0)]; % Run for 100 iterations, 30 sample FIR filter [y_final f_final kurt] = med2d(x’,30,100,[],’valid’,1);下图是输入信号和使用MED方法反卷积完的结果。可以看出能够提取脉冲部分,进而可以对脉冲频率进一步分析。30阶滤波器为学习次数图为可见6次迭代就达到峭度最大值即最优解的形式。小结本章主要对最小熵反卷积算法进行描述和实践验证。参考文献[1] Ralph A Wiggins. Minimum entropy deconvolution.Geoexploration, 16(1-2):21–35, 1978.[2] 王晗,何刘.最小熵解卷积法轮对轴承故障诊断[J].中国测试,2016,42(01):114-120.本文转载于:http://cyrusblog.cn/index.php/2020/10/24/%E6%BB%A4%E6%B3%A2%E4%B9%8B%E6%9C%80%E5%B0%8F%E7%86%B5%E5%8F%8D%E8%A4%B6%E7%A7%AFmed%E4%B8%80/
-
这周我们简单介绍一个高效分子优化的方法。该工作由UIUC的Jimeng Sun组合MIT的Connor Coley组合作完成,对应的文章题目是Differentiable Scaffolding Tree for Molecule Optimization[1],被2022年ICLR接受,主要的代码和数据发布在https://github.com/futianfan/DST。思路:基于梯度的分子优化分子的可微分骨架树类梯度上升的优化算法优化效果测试由可微性得到的可解释性思路:基于梯度的分子优化在药物发现中,分子优化,即找到具有理想性质的分子结构,是核心的一步。由于化学结构的复杂性,传统上我们只能依赖于一些启发式的组合优化算法,如遗传算法、树搜索等。最近深度学习的发展确实提供了一些新的思路,但目前大部分依赖图生成算法的分子优化都是通过图神经网络(graph neural network, GNN)来显式地生成一个分子,然后优化目标函数,通过反向传播梯度来更新GNN参数,使得网络生成具有优化性质的分子。例如在增强学习(reinforcement learning, RL)中目标函数是根据反馈(reward)定义的;在深度生成模型(deep generative model, DGM)中基于和目标分子的广义距离定义。但这些算法普遍优化能力不够强,尤其没有考虑oracle的成本,许多算法需要调用数十万甚至百万次oracle才能得到较好的结果,而这在实际分子设计过程中显然是不现实的。我们知道,数值优化的核心就是在一个点估计其指向极值点的方向,而这一方向一般可以通过梯度估计。那我们是否可以估计一个分子的性质相对于结构的梯度,通过这个梯度估计方向进而优化一个分子?在Alan Aspuru-Guzik组的Deep Molecular Dreaming[2]一文中作者利用分子的字符串(SELFIES)表示实现了这一点:将分子看做每个位置字符的分布概率,通过一个一维卷积神经网络(convolutional neural network, CNN)学习其性质,得到可微的性质预测器,进而估计分子的梯度,但是效果并不好。而在本文中,作者通过提出分子的可微分骨架树(Differentiable Scaffolding Tree, DST)这一概念,使得分子直接在结构层面上可微,进而构建了一个高效的优化算法。与其他生成模型不同,作者先预训练(pre-train)了一个以骨架树(ST)为输入的GNN来预测性质(标量)。然后在优化过程中固定GNN参数,每步迭代里首先构造分子相应的DST,通过前向传播用GNN来预测性质,然后优化目标性质并通过反向传播梯度来更新DST里的参数,进而优化分子结构。分子的可微分骨架树首先我们明确本文关注从头分子优化(de novo molecule optimization),即以一个优化算法在一个隐式定义的小分子空间上找到性质较好的分子。而分子性质由一个Oracle给出,即给定一个分子,输出相对应的性质,可以看作一个黑盒函数(black box function of molecules),例如衡量一个分子的类药性的QED。为了使分子在图结构层面上可微,首先需要扩展分子图的概念。另外为了避免生成环的中间步骤可能带来的不必要的麻烦,作者选择在优化过程中用骨架树(scaffolding tree, ST)来表示分子,其节点定义为一个基本单位(substructure),包含了常见的原子和单环(详见原文附录Figure 5)。我们可以用节点的类别矩阵(node indicator matrix)和节点之间的链接矩阵(adjacency matrix)表示一个骨架树。其中类别矩阵每一行是一个one-hot向量,代表了该节点是哪一个基本单位,而链接矩阵中的每一个元素都是binary的数字,指示每一对节点之间是否连接。构造可微分骨架树(DST)的核心是将节点的类别和连接看做可学习的0到1的概率分布,而非0或1的binary code。其中为了实现连接可微性的自洽,作者提出了与连接等价的权重向量(node weight vector),通过一个节点的权重表示其存在与否,并通过权重构造连接矩阵,将连接与否的问题变成了该节点是否存在的问题:从骨架树得到可微分骨架树的方法如下所示:首先将分子结构抽象为骨架树, 然后将骨架树中每个结点连接上一个拓展节点(expansion node)。每一个叶结点和拓展结点的权重和类别是可学习的(learnable)。其中节点类别是一个softmax的输出,保证和为1。结点权重是一个sigmoid的输出,保证在0-1之间。类梯度上升的优化算法为了进行优化,作者首先预先训练(pre-train)了一个GNN来做性质预测,其输入是一个分子的可微分骨架树,输出是目标的性质(标量),即。为了平衡不同权重节点的贡献,作者在GNN中使用了加权平均的read-out方法:其中代表第回迭代之后的节点特征(node embedding)的第行,代表第个节点的权重,代表全连接网络。整个算法是一个迭代式优化。在单步迭代中,给定输入分子的DST,得到了可微的性质预测替代后,可以通过任意梯度优化算法(文中使用了Adam)解来得到优化后的DST。在得到优化后的DST后,根据其优化后的权重和类别,作者设计了如下三种在对应骨架树上的操作:(1)删除(SHRINK)叶结点权重小时,意味着该节点对性质提升没有帮助,或者说该节点的存在对性质提升有负面影响,所以在对应骨架树上删除该节点。(2)拓展(EXPAND)拓展节点权重大时,意味着该节点的存在对性质提升帮助是正向的,所以在对应骨架树上加上一个新的结点。该节点的类别也从对应softmax输出值中选择。(3)替换(REPLACE)若一个节点权重改变不大,但类别改变较大时,不删除也不拓展,但是在优化后的分布中重新采样一个substructure(softmax输出中值比较大的)。根据更新后的DST采样其中一个操作,得到对应的骨架树作为下一轮迭代的输入,如此我们迭代地优化分子。在每一轮迭代内DST的维数是固定的,由输入分子决定,因此一轮迭代只能得到和原分子相差最多一个节点的分子。但在多轮迭代优化过程中,每一轮的输入都是上一轮的输出,因此相应的DST维度也会变化,使得生成分子的大小只受限于优化迭代次数。在得到优化后的骨架树后,作者枚举对应的所有可能的分子图,用oracle测量每一个分子。为了有更好的优化效果,并兼具输出分子的多样性,作者每次优化时同时优化多条轨迹,并在其中使用determinantal point process(DPP)来选择保留的分子。即在每一部枚举出对应的多个可能的分子图之后,不是单纯根据性质好坏,而额外考虑了相似性矩阵的行列式,即选择最大化下式的一批分子:其中是subset 这批分子的性质分数的对角矩阵,而则是这批分子的相似性矩阵。可以注意到单纯依据的行列式挑选就是greedy的top-k选择。而相似矩阵的行列式的最大化则鼓励subset内的diversity的增加(可以考虑一个的例子,对角线为1,非对角为彼此之间的相似度)。如此我们便得到了一个完整的优化算法。优化效果测试作者首先衡量主要的优化效果,包含了单目标优化和多目标优化(同时优化多个性质)。为了能够有比较全面的对比,所有算法选择了分数最高的100个分子衡量其:新颖性(Nov):生成分子不在训练集(如果有)中的比例;多样性(Div):生成分子的多样性,衡量对化学空间的探索能力;目标性质的平均优化结果(APS);Oracle调用的次数(#oracle):我们关注有限的oracle调用的情况下的表现,因为oracle调用的数量是衡量一个算法效率的重要指标;由于DST和一些其他算法的一部分oracle调用可以离线完成(比如利用已有的标注数据),另一部分必须线上完成,所以#oracle是A+B的形式,A为线下调用,B为线上调用。从实验结果上看,直接运用了梯度信息的DST优化效率最高,说明了由DST估计的梯度的可靠性。深度生成模型(LigGPT)由于其本身并不是一个迭代优化算法,表现并不好。增强学习方法(GCPN/MolDQN)虽然在无限oracle调用的情况下能够得到一些较好的结果,但是不出所料在限制oracle调用的情况下表现相对不好。而以传统的组合优化方法为基础的算法(如GA+D,MARS)表现相对还是更好。为了更系统地比较算法效率,作者测试了算法的oracle efficiency,即不同方法在不同oracle调用次数下的优化性能。结果如下:Oracle efficiency测试结果。其中DST-rand为DST的ablation study,即同样设定下每步随机选择骨架树上的操作。横轴为oracle调用数量,纵轴为top-100个分子的平均性质(越高越好)。DST在三个任务上都取得了最好的效果,其他结论也和第一个实验类似。由可微性得到的可解释性作者另外展示了由DST带来的分子性质的可解释性。通过观察当前DST对各个结点权重和梯度,我们可以看到不同的结点对性质提升的影响,进而分析不同基团、亚结构对性质的影响。分子可解释性实例。
上滑加载中