• [技术干货] 华为云IEEE TPAMI论文解读:规则化可解释模型助力知识+AI融合
    受益于深度学习技术的突破,图像分类、物体检测等传统计算机视觉任务的精度也得到了大幅度的提升。但是由于深度学习模型的复杂性,目前关于深度学习的理论并不完善,这就导致了两大问题:第一,模型的工作机制对使用者来说并不透明,人们无法解释模型识别正确或错误的原因,因此也就无法从理论上证明模型在实际应用中是否能够达到好的效果,从而在一定程度上阻碍了模型在一些性命攸关的领域中应用(如医疗影像分析、自动驾驶等);第二,几乎完全基于数据驱动的方式学习模型参数,难以将人们长期以来总结形成的经验和知识融入模型,从而难以对模型学习过程施加有效的约束,使模型在小训练样本、零训练样本等真实条件下的精度远低于人类。人工智能领域顶级学术期刊 IEEE Transactions on Pattern Analysis and Machine Intelligence(即 IEEE TPAMI,影响因子 17.861)最近接收的论文《What is a Tabby? Interpretable Model Decisions by Learning Attribute-based Classification Criteria》中,华为云联合中科院计算所,针对上述两个问题提出了一种探索性的解决方案,通过利用物体类别之间存在的层级关系约束,自动学习从数据中抽取识别不同类别的规则,一方面对模型的预测过程进行解释,另一方面也提供了一条引入人工先验知识的可行途径。论文链接:https://ieeexplore.ieee.org/document/8907459首先,我们通过一组简单的例子来看一下分类学家是如何对动物进行分类的(来自维基百科):(1)「虎斑猫」是一种体表有条纹、斑点、线条、螺旋图案的「家猫」。(2)「家猫」是一种小型的、通常体表有皮毛的、肉食性的、被驯化的「猫科动物」;(3)「猫科动物」是一种具有伸缩自如的爪子、苗条但肌肉强健的躯体、灵活的前肢的「食肉动物」。从上边的例子可以看出来,分类学家在对动物进行分类的时候,采用了一种层级化的方式,在层级中,每个类别都被表示成「父类 + 一些特定属性」的形式,比如有条纹、有斑点、有线条、有螺旋,就是「虎斑猫」相比它的父类「家猫」出来的属性。实际上,如果对层级做一些压缩操作,每个类别都可以完全用一组特定属性来表示。以「虎斑猫」这个类别为例,经过一级压缩:「虎斑猫」是一种小型的、肉食性的、被驯化的、体表有带条纹、斑点、线条、螺旋图案皮毛的「猫科动物」。可以看到,经过一级压缩后,「虎斑猫」就可以通过「父类的父类 + 更多的属性」来表示了。更进一步,如果经过两级压缩:「虎斑猫」是一种小型的、肉食性的、被驯化的、具有伸缩自如的爪子、苗条但肌肉强健的躯体、灵活的前肢的、体表有带条纹、斑点、线条、螺旋图案皮毛的「食肉动物」。可以看到,经过两级压缩后,「虎斑猫」就可以通过「父类的父类的父类 + 更多更多的属性」来表示了。以此类推,如果一直将这个压缩的过程进行下去,「虎斑猫」就可以通过「动物 + 虎斑猫具有的全部属性」这种方式来表示了。对于其他动物来说,也是类似的,每种动物都可以表示为「动物 + 这种动物具有的全部属性」。由于每种动物的表示中都含有「动物」这个公共的组成部分,可以将每种动物的表示形式都简化为「这种动物具有的全部属性」。类似的,对于「植物」、「人造物」等等所有物体,都可以完全用一组属性来表示。因此,只要属性定义足够好,完全通过属性就可以准确地区分出来所有可能见到的类别,并且这种分类方式的可解释性非常好,也可以轻松地将新的人工先验知识引入进来。但是实际中,由于类别数量巨大、海量属性难以定义,不可能通过人工的方式对每个类别的属性进行定义。那么有什么方法可以在不对数据进行额外标注的情况下实现类似的分类方式呢?方法介绍事实上,上面的推理过程给我们提供了两点重要的洞察:第一,当属性足够多、足够好的时候,属性可以用来准确地区分不同的类别;第二,每个类别具有的属性数量一定比它的父类多。针对第一点洞察中对于属性数量和质量的要求,近期的研究 [1, 2, 3] 表明,以图像分类任务训练的深度学习模型可以自发地学习到一些具有语义的属性,因此通过这种方式,可以不再需要人工定义属性,仅通过算法自动学习的方式来得到足够多、足够好的属性;针对第二点洞察中对于类别间的约束关系的要求,可以将这样的类别间关系进行形式化,指导算法学习属性的过程,使学习到的属性满足约束条件。这样一来,就既解决了属性难定义、难标注的问题,又保留了基于属性进行分类的方案在高可解释性和便于引入人工先验知识方面的优势。具体来说,作者在提出的方法中设计了一个包含两条分支的模型,如图 2 所示。上边的分支以图像作为输入,主要作用是学习属性;下边的分支以层级结构作为输入,主要作用是对学习属性的过程施加约束:其中上边的分支使用常见的卷积神经网络 backbone,上边分支的输出是一个 1×D 维的「属性向量」,向量中的每一维表示一个属性,每一维的值则表示图像样本是否具有这个属性(0 表示样本不具有这个属性,大于 0 的值表示样本具有这个属性),同时当激活值大于 0 时,激活值的大小表示图像样本在这个属性上的强度;下边的分支按照类别间属性数量的约束关系,学习类别层级结构中每个类别的属性表示形式。在这里,令表示层级结构中所有 N 个类别的 D 维属性表示(维度与图像特征相同,是下边的分支需要学习的参数),表示第 i 个类别的第 k 个属性的值,含义与图像表示中的含义相同。将层级结构用有向无环图表示,如果在层级结构中,第 j 个类别是第 i 个类别的祖先节点的话,那么由于每个类别的属性数量多于他的祖先节点这一约束,和需要满足下列约束:训练时,损失函数的目标是要求两个分支的输出都能够正确的预测 D 维特征对应的最细粒度类别和对应的粗粒度类别。通过这种方式,上边的分支就可以学习到 D 个对于分类任务来说有用的属性,而下边的分支则可以保证这 D 个属性满足类别间属性数量关系的约束,从而可以对模型分类原理给出人类可以理解的解释。取得的效果论文中,作者在 CIFAR-100 和 ILSVRC 两个大规模的层级数据库上进行了实验,通过大量的实验验证了方案的有效性:1. 分类精度从实验结果来看,尽管论文提出的方法针对提高模型的可解释性和提高引入人工先验知识的便捷程度做了大量的设计,但是在分类精度上仍然达到了 SOTA 的水平,表明该方案在实际业务中具有实用价值。2. 属性学习效果定性展示结果方面,作者通过可视化的方式展示了模型学习到的属性,实验结果中针对每个属性,通过展示每个属性在数据集上响应值最大的 9 个图像块来表示属性,如图 3 所示。从图中看,模型学习到了大量不重复的、有意义的属性,并且既有比较简单的纹理、形状(dotted、round 等)属性,也有语义性更强的车轮、山等属性。图 3. 算法学习到的属性展示。(a)CIFAR-100 数据库上学习到的属性;(b)ILSVRC 数据库上学习到的属性。从定量评测的结果来看,在包含 1000 个类别的 ILSVRC 数据上,模型学习到了 2600 多个属性,远超基线模型(标准 ResNet-50 分类模型)的 2000 个属性;在去除重复属性(可能包含了同种属性的不同情况)后,论文方法学到的属性数量接近 140 个,多于基线模型的 120 余个不重复的属性。图 4. 模型学习到的属性数量的定量评估结果针对属性响应区域的可视化结果(图 5)也显示,模型学到的属性基本上是可靠的。图中响应最强的区域(红色部分)也正是和属性对应的区域。图 5. 属性响应区域可视化3. 规则学习结果和人工先验引入实验中,作者展示了模型下边的分支学习到的分类规则,将每个类别表示成「父类 + 特定属性组合」的形式,如图 6 所示。模型学习到的结果中包括:(1)「钟表」是一种圆形的、放射状的「家用电子设备」;(2)「猎豹」是一种有条纹、斑点的「猫科动物」;(3)「足球」是一种在白色背景上有黑色斑点的「球」。模型给出的解释规则基本符合人的认知,表明模型可以学到类似于分类学家定义的「父类 + 特定属性组合」形式的分类规则,可以对模型的分类原理给出人类可理解的解释。图 6. 模型学习到的解释规则展示。(a)CIFAR-100 数据库上学习到的解释规则;(b)ILSVRC 数据库上学习到的解释规则相比之下,现有方法 [4] 如果想要给出同样形式的解释结果,需要人工标注每个类别的属性表示,而这在大规模场景下显然是不现实的,作者在实验中也展示了相应的对比结果(表 1),从对比结果来看,论文中提出方法的适用范围显然更广泛。表 1. 与现有方法 [4] 对比有了上边这种人类可以理解的解释规则,就可以对模型进行定制化的调优,去除模型不应该利用的规则,补充模型没有学习到的规则:在 ILSVRC 数据的「救护车」和「猎豹」两个类别上尝试了去除模型学到的错误规则的方案,该方案在基本不影响其他类别识别效果的前提下,可以提升模型在「救护车」和「猎豹」两个类别上的识别精度;在同一个数据库的全部类别上,作者尝试了补充额外属性的方案,并得到了约 2 个百分点精度提升。上边两个实验表明,作者提出的方法虽然只是在深度模型引入人工先验方面做了一些初步的探索,但是已经验证了深度模型和人工先验知识结合的有效性,并且给出了一条基本可行的技术路线。结论可解释的深度学习模型,以及深度学习模型与人工先验的结合是当前学术界重点研究的前沿方向,对于提升深度学习模型的可靠性和泛化能力具有重要的意义。这次介绍的论文同时在这两个方向上迈出了坚实的一步:在可解释深度学习模型方面,相比于现有方法,不仅能够给出图像中的关键区域,还能给出规则化的解释,对使用者更友好,更符合人对于解释结果的期望;在引入人工先验知识方面,走通了一条基本可行的技术路线,希望能够对未来的研究者有所启发。参考文献[1] C. Huang, C. C. Loy, and X. Tang, “Unsupervised learning of discriminative attributes and visual representations,” in Computer Vision and Pattern Recognition (CVPR), 2016, pp. 5175–5184.[2] V. Escorcia, J. C. Niebles, and B. Ghanem, “On the relationship between visual attributes and convolutional networks,” in Computer Vision and Pattern Recognition (CVPR), 2015, pp. 1256–1264.[3] S. Vittayakorn, T. Umeda, K. Murasaki, K. Sudo, T. Okatani, and K. Yamaguchi, “Automatic attribute discovery with neural activations,” in European Conference on Computer Vision (ECCV), 2016, pp. 252–268.[4] S. J. Hwang and L. Sigal, “A unified semantic embedding: Relating taxonomies and attributes,” in Advances in Neural Information Processing Systems (NIPS), 2014, pp. 271–279.
  • [技术干货] 华为云IEEE TPAMI论文解读:规则化可解释模型助力知识+AI融合
    受益于深度学习技术的突破,图像分类、物体检测等传统计算机视觉任务的精度也得到了大幅度的提升。但是由于深度学习模型的复杂性,目前关于深度学习的理论并不完善,这就导致了两大问题:第一,模型的工作机制对使用者来说并不透明,人们无法解释模型识别正确或错误的原因,因此也就无法从理论上证明模型在实际应用中是否能够达到好的效果,从而在一定程度上阻碍了模型在一些性命攸关的领域中应用(如医疗影像分析、自动驾驶等);第二,几乎完全基于数据驱动的方式学习模型参数,难以将人们长期以来总结形成的经验和知识融入模型,从而难以对模型学习过程施加有效的约束,使模型在小训练样本、零训练样本等真实条件下的精度远低于人类。人工智能领域顶级学术期刊 IEEE Transactions on Pattern Analysis and Machine Intelligence(即 IEEE TPAMI,影响因子 17.861)最近接收的论文《What is a Tabby? Interpretable Model Decisions by Learning Attribute-based Classification Criteria》中,华为云联合中科院计算所,针对上述两个问题提出了一种探索性的解决方案,通过利用物体类别之间存在的层级关系约束,自动学习从数据中抽取识别不同类别的规则,一方面对模型的预测过程进行解释,另一方面也提供了一条引入人工先验知识的可行途径。论文链接:https://ieeexplore.ieee.org/document/8907459首先,我们通过一组简单的例子来看一下分类学家是如何对动物进行分类的(来自维基百科):(1)「虎斑猫」是一种体表有条纹、斑点、线条、螺旋图案的「家猫」。(2)「家猫」是一种小型的、通常体表有皮毛的、肉食性的、被驯化的「猫科动物」;(3)「猫科动物」是一种具有伸缩自如的爪子、苗条但肌肉强健的躯体、灵活的前肢的「食肉动物」。从上边的例子可以看出来,分类学家在对动物进行分类的时候,采用了一种层级化的方式,在层级中,每个类别都被表示成「父类 + 一些特定属性」的形式,比如有条纹、有斑点、有线条、有螺旋,就是「虎斑猫」相比它的父类「家猫」出来的属性。实际上,如果对层级做一些压缩操作,每个类别都可以完全用一组特定属性来表示。以「虎斑猫」这个类别为例,经过一级压缩:「虎斑猫」是一种小型的、肉食性的、被驯化的、体表有带条纹、斑点、线条、螺旋图案皮毛的「猫科动物」。可以看到,经过一级压缩后,「虎斑猫」就可以通过「父类的父类 + 更多的属性」来表示了。更进一步,如果经过两级压缩:「虎斑猫」是一种小型的、肉食性的、被驯化的、具有伸缩自如的爪子、苗条但肌肉强健的躯体、灵活的前肢的、体表有带条纹、斑点、线条、螺旋图案皮毛的「食肉动物」。可以看到,经过两级压缩后,「虎斑猫」就可以通过「父类的父类的父类 + 更多更多的属性」来表示了。以此类推,如果一直将这个压缩的过程进行下去,「虎斑猫」就可以通过「动物 + 虎斑猫具有的全部属性」这种方式来表示了。对于其他动物来说,也是类似的,每种动物都可以表示为「动物 + 这种动物具有的全部属性」。由于每种动物的表示中都含有「动物」这个公共的组成部分,可以将每种动物的表示形式都简化为「这种动物具有的全部属性」。类似的,对于「植物」、「人造物」等等所有物体,都可以完全用一组属性来表示。因此,只要属性定义足够好,完全通过属性就可以准确地区分出来所有可能见到的类别,并且这种分类方式的可解释性非常好,也可以轻松地将新的人工先验知识引入进来。但是实际中,由于类别数量巨大、海量属性难以定义,不可能通过人工的方式对每个类别的属性进行定义。那么有什么方法可以在不对数据进行额外标注的情况下实现类似的分类方式呢?方法介绍事实上,上面的推理过程给我们提供了两点重要的洞察:第一,当属性足够多、足够好的时候,属性可以用来准确地区分不同的类别;第二,每个类别具有的属性数量一定比它的父类多。针对第一点洞察中对于属性数量和质量的要求,近期的研究 [1, 2, 3] 表明,以图像分类任务训练的深度学习模型可以自发地学习到一些具有语义的属性,因此通过这种方式,可以不再需要人工定义属性,仅通过算法自动学习的方式来得到足够多、足够好的属性;针对第二点洞察中对于类别间的约束关系的要求,可以将这样的类别间关系进行形式化,指导算法学习属性的过程,使学习到的属性满足约束条件。这样一来,就既解决了属性难定义、难标注的问题,又保留了基于属性进行分类的方案在高可解释性和便于引入人工先验知识方面的优势。具体来说,作者在提出的方法中设计了一个包含两条分支的模型,如图 2 所示。上边的分支以图像作为输入,主要作用是学习属性;下边的分支以层级结构作为输入,主要作用是对学习属性的过程施加约束:其中上边的分支使用常见的卷积神经网络 backbone,上边分支的输出是一个 1×D 维的「属性向量」,向量中的每一维表示一个属性,每一维的值则表示图像样本是否具有这个属性(0 表示样本不具有这个属性,大于 0 的值表示样本具有这个属性),同时当激活值大于 0 时,激活值的大小表示图像样本在这个属性上的强度;下边的分支按照类别间属性数量的约束关系,学习类别层级结构中每个类别的属性表示形式。在这里,令表示层级结构中所有 N 个类别的 D 维属性表示(维度与图像特征相同,是下边的分支需要学习的参数),表示第 i 个类别的第 k 个属性的值,含义与图像表示中的含义相同。将层级结构用有向无环图表示,如果在层级结构中,第 j 个类别是第 i 个类别的祖先节点的话,那么由于每个类别的属性数量多于他的祖先节点这一约束,和需要满足下列约束:训练时,损失函数的目标是要求两个分支的输出都能够正确的预测 D 维特征对应的最细粒度类别和对应的粗粒度类别。通过这种方式,上边的分支就可以学习到 D 个对于分类任务来说有用的属性,而下边的分支则可以保证这 D 个属性满足类别间属性数量关系的约束,从而可以对模型分类原理给出人类可以理解的解释。取得的效果论文中,作者在 CIFAR-100 和 ILSVRC 两个大规模的层级数据库上进行了实验,通过大量的实验验证了方案的有效性:1. 分类精度从实验结果来看,尽管论文提出的方法针对提高模型的可解释性和提高引入人工先验知识的便捷程度做了大量的设计,但是在分类精度上仍然达到了 SOTA 的水平,表明该方案在实际业务中具有实用价值。2. 属性学习效果定性展示结果方面,作者通过可视化的方式展示了模型学习到的属性,实验结果中针对每个属性,通过展示每个属性在数据集上响应值最大的 9 个图像块来表示属性,如图 3 所示。从图中看,模型学习到了大量不重复的、有意义的属性,并且既有比较简单的纹理、形状(dotted、round 等)属性,也有语义性更强的车轮、山等属性。图 3. 算法学习到的属性展示。(a)CIFAR-100 数据库上学习到的属性;(b)ILSVRC 数据库上学习到的属性。从定量评测的结果来看,在包含 1000 个类别的 ILSVRC 数据上,模型学习到了 2600 多个属性,远超基线模型(标准 ResNet-50 分类模型)的 2000 个属性;在去除重复属性(可能包含了同种属性的不同情况)后,论文方法学到的属性数量接近 140 个,多于基线模型的 120 余个不重复的属性。图 4. 模型学习到的属性数量的定量评估结果针对属性响应区域的可视化结果(图 5)也显示,模型学到的属性基本上是可靠的。图中响应最强的区域(红色部分)也正是和属性对应的区域。图 5. 属性响应区域可视化3. 规则学习结果和人工先验引入实验中,作者展示了模型下边的分支学习到的分类规则,将每个类别表示成「父类 + 特定属性组合」的形式,如图 6 所示。模型学习到的结果中包括:(1)「钟表」是一种圆形的、放射状的「家用电子设备」;(2)「猎豹」是一种有条纹、斑点的「猫科动物」;(3)「足球」是一种在白色背景上有黑色斑点的「球」。模型给出的解释规则基本符合人的认知,表明模型可以学到类似于分类学家定义的「父类 + 特定属性组合」形式的分类规则,可以对模型的分类原理给出人类可理解的解释。图 6. 模型学习到的解释规则展示。(a)CIFAR-100 数据库上学习到的解释规则;(b)ILSVRC 数据库上学习到的解释规则相比之下,现有方法 [4] 如果想要给出同样形式的解释结果,需要人工标注每个类别的属性表示,而这在大规模场景下显然是不现实的,作者在实验中也展示了相应的对比结果(表 1),从对比结果来看,论文中提出方法的适用范围显然更广泛。表 1. 与现有方法 [4] 对比有了上边这种人类可以理解的解释规则,就可以对模型进行定制化的调优,去除模型不应该利用的规则,补充模型没有学习到的规则:在 ILSVRC 数据的「救护车」和「猎豹」两个类别上尝试了去除模型学到的错误规则的方案,该方案在基本不影响其他类别识别效果的前提下,可以提升模型在「救护车」和「猎豹」两个类别上的识别精度;在同一个数据库的全部类别上,作者尝试了补充额外属性的方案,并得到了约 2 个百分点精度提升。上边两个实验表明,作者提出的方法虽然只是在深度模型引入人工先验方面做了一些初步的探索,但是已经验证了深度模型和人工先验知识结合的有效性,并且给出了一条基本可行的技术路线。结论可解释的深度学习模型,以及深度学习模型与人工先验的结合是当前学术界重点研究的前沿方向,对于提升深度学习模型的可靠性和泛化能力具有重要的意义。这次介绍的论文同时在这两个方向上迈出了坚实的一步:在可解释深度学习模型方面,相比于现有方法,不仅能够给出图像中的关键区域,还能给出规则化的解释,对使用者更友好,更符合人对于解释结果的期望;在引入人工先验知识方面,走通了一条基本可行的技术路线,希望能够对未来的研究者有所启发。参考文献[1] C. Huang, C. C. Loy, and X. Tang, “Unsupervised learning of discriminative attributes and visual representations,” in Computer Vision and Pattern Recognition (CVPR), 2016, pp. 5175–5184.[2] V. Escorcia, J. C. Niebles, and B. Ghanem, “On the relationship between visual attributes and convolutional networks,” in Computer Vision and Pattern Recognition (CVPR), 2015, pp. 1256–1264.[3] S. Vittayakorn, T. Umeda, K. Murasaki, K. Sudo, T. Okatani, and K. Yamaguchi, “Automatic attribute discovery with neural activations,” in European Conference on Computer Vision (ECCV), 2016, pp. 252–268.[4] S. J. Hwang and L. Sigal, “A unified semantic embedding: Relating taxonomies and attributes,” in Advances in Neural Information Processing Systems (NIPS), 2014, pp. 271–279.
  • [交流吐槽] AI主播这个活动好啊!
    爱了爱了
  • [技术干货] 不用卷积,也能生成清晰图像,华人博士生首次尝试用两个Transformer构建一个GAN
    最近,CV 研究者对 transformer 产生了极大的兴趣并取得了不少突破。这表明,transformer 有可能成为计算机视觉任务(如分类、检测和分割)的强大通用模型。我们都很好奇:在计算机视觉领域,transformer 还能走多远?对于更加困难的视觉任务,比如生成对抗网络 (GAN),transformer 表现又如何?在这种好奇心的驱使下,德州大学奥斯汀分校的 Yifan Jiang、Zhangyang Wang,IBM Research 的 Shiyu Chang 等研究者进行了第一次试验性研究,构建了一个只使用纯 transformer 架构、完全没有卷积的 GAN,并将其命名为 TransGAN。与其它基于 transformer 的视觉模型相比,仅使用 transformer 构建 GAN 似乎更具挑战性,这是因为与分类等任务相比,真实图像生成的门槛更高,而且 GAN 训练本身具有较高的不稳定性。论文链接:https://arxiv.org/pdf/2102.07074.pdf代码链接:https://github.com/VITA-Group/TransGAN从结构上来看,TransGAN 包括两个部分:一个是内存友好的基于 transformer 的生成器,该生成器可以逐步提高特征分辨率,同时降低嵌入维数;另一个是基于 transformer 的 patch 级判别器。研究者还发现,TransGAN 显著受益于数据增强(超过标准的 GAN)、生成器的多任务协同训练策略和强调自然图像邻域平滑的局部初始化自注意力。这些发现表明,TransGAN 可以有效地扩展至更大的模型和具有更高分辨率的图像数据集。 实验结果表明,与当前基于卷积骨干的 SOTA GAN 相比,表现最佳的 TransGAN 实现了极具竞争力的性能。具体来说,TransGAN 在 STL-10 上的 IS 评分为 10.10,FID 为 25.32,实现了新的 SOTA。 该研究表明,对于卷积骨干以及许多专用模块的依赖可能不是 GAN 所必需的,纯 transformer 有足够的能力生成图像。 在该论文的相关讨论中,有读者调侃道,「attention is really becoming『all you need』.」不过,也有部分研究者表达了自己的担忧:在 transformer 席卷整个社区的大背景下,势单力薄的小实验室要怎么活下去?如果 transformer 真的成为社区「刚需」,如何提升这类架构的计算效率将成为一个棘手的研究问题。基于纯 Transformer 的 GAN作为基础块的 Transformer 编码器 研究者选择将 Transformer 编码器(Vaswani 等人,2017)作为基础块,并尽量进行最小程度的改变。编码器由两个部件组成,第一个部件由一个多头自注意力模块构造而成,第二个部件是具有 GELU 非线性的前馈 MLP(multiple-layer perceptron,多层感知器)。此外,研究者在两个部件之前均应用了层归一化(Ba 等人,2016)。两个部件也都使用了残差连接。内存友好的生成器NLP 中的 Transformer 将每个词作为输入(Devlin 等人,2018)。但是,如果以类似的方法通过堆叠 Transformer 编码器来逐像素地生成图像,则低分辨率图像(如 32×32)也可能导致长序列(1024)以及更高昂的自注意力开销。 所以,为了避免过高的开销,研究者受到了基于 CNN 的 GAN 中常见设计理念的启发,在多个阶段迭代地提升分辨率(Denton 等人,2015;Karras 等人,2017)。他们的策略是逐步增加输入序列,并降低嵌入维数。 如下图 1 左所示,研究者提出了包含多个阶段的内存友好、基于 Transformer 的生成器: 每个阶段堆叠了数个编码器块(默认为 5、2 和 2)。通过分段式设计,研究者逐步增加特征图分辨率,直到其达到目标分辨率 H_T×W_T。具体来说,该生成器以随机噪声作为其输入,并通过一个 MLP 将随机噪声传递给长度为 H×W×C 的向量。该向量又变形为分辨率为 H×W 的特征图(默认 H=W=8),每个点都是 C 维嵌入。然后,该特征图被视为长度为 64 的 C 维 token 序列,并与可学得的位置编码相结合。 与 BERT(Devlin 等人,2018)类似,该研究提出的 Transformer 编码器以嵌入 token 作为输入,并递归地计算每个 token 之间的匹配。为了合成分辨率更高的图像,研究者在每个阶段之后插入了一个由 reshaping 和 pixelshuffle 模块组成的上采样模块。 具体操作上,上采样模块首先将 1D 序列的 token 嵌入变形为 2D 特征图,然后采用 pixelshuffle 模块对 2D 特征图的分辨率进行上采样处理,并下采样嵌入维数,最终得到输出。然后,2D 特征图 X’_0 再次变形为嵌入 token 的 1D 序列,其中 token 数为 4HW,嵌入维数为 C/4。所以,在每个阶段,分辨率(H, W)提升到两倍,同时嵌入维数 C 减少至输入的四分之一。这一权衡(trade-off)策略缓和了内存和计算量需求的激增。研究者在多个阶段重复上述流程,直到分辨率达到(H_T , W_T )。然后,他们将嵌入维数投影到 3,并得到 RGB 图像。用于判别器的 tokenized 输入与那些需要准确合成每个像素的生成器不同,该研究提出的判别器只需要分辨真假图像即可。这使得研究者可以在语义上将输入图像 tokenize 为更粗糙的 patch level(Dosovitskiy 等人,2020)。 如上图 1 右所示,判别器以图像的 patch 作为输入。研究者将输入图像分解为 8 × 8 个 patch,其中每个 patch 可被视为一个「词」。然后,8 × 8 个 patch 通过一个线性 flatten 层转化为 token 嵌入的 1D 序列,其中 token 数 N = 8 × 8 = 64,嵌入维数为 C。再之后,研究者在 1D 序列的开头添加了可学得位置编码和一个 [cls] token。在通过 Transformer 编码器后,分类 head 只使用 [cls] token 来输出真假预测。 实验 CIFAR-10 上的结果 研究者在 CIFAR-10 数据集上对比了 TransGAN 和近来基于卷积的 GAN 的研究,结果如下表 5 所示: 如上表 5 所示,TransGAN 优于 AutoGAN (Gong 等人,2019) ,在 IS 评分方面也优于许多竞争者,如 SN-GAN (Miyato 等人, 2018)、improving MMDGAN (Wang 等人,2018a)、MGAN (Hoang 等人,2018)。TransGAN 仅次于 Progressive GAN 和 StyleGAN v2。对比 FID 结果,研究发现,TransGAN 甚至优于 Progressive GAN,而略低于 StyleGANv2 (Karras 等人,2020b)。在 CIFAR-10 上生成的可视化示例如下图 4 所示:STL-10 上的结果研究者将 TransGAN 应用于另一个流行的 48×48 分辨率的基准 STL-10。为了适应目标分辨率,该研究将第一阶段的输入特征图从(8×8)=64 增加到(12×12)=144,然后将提出的 TransGAN-XL 与自动搜索的 ConvNets 和手工制作的 ConvNets 进行了比较,结果下表 6 所示:与 CIFAR-10 上的结果不同,该研究发现,TransGAN 优于所有当前的模型,并在 IS 和 FID 得分方面达到新的 SOTA 性能。高分辨率生成由于 TransGAN 在标准基准 CIFAR-10 和 STL-10 上取得不错的性能,研究者将 TransGAN 用于更具挑战性的数据集 CelebA 64 × 64。 TransGAN-XL 的 FID 评分为 12.23,这表明 TransGAN-XL 可适用于高分辨率任务。可视化结果如图 4 所示。局限性虽然 TransGAN 已经取得了不错的成绩,但与最好的手工设计的 GAN 相比,它还有很大的改进空间。在论文的最后,作者指出了以下几个具体的改进方向:对 G 和 D 进行更加复杂的 tokenize 操作,如利用一些语义分组 (Wu et al., 2020)。使用代理任务(pretext task)预训练 Transformer,这样可能会改进该研究中现有的 MT-CT。更加强大的注意力形式,如 (Zhu 等人,2020)。更有效的自注意力形式 (Wang 等人,2020;Choromanski 等人,2020),这不仅有助于提升模型效率,还能节省内存开销,从而有助于生成分辨率更高的图像。作者简介本文一作 Yifan Jiang 是德州大学奥斯汀分校电子与计算机工程系的一年级博士生(此前在德克萨斯 A&M 大学学习过一年),本科毕业于华中科技大学,研究兴趣集中在计算机视觉、深度学习等方向。目前,Yifan Jiang 主要从事神经架构搜索、视频理解和高级表征学习领域的研究,师从德州大学奥斯汀分校电子与计算机工程系助理教授 Zhangyang Wang。 在本科期间,Yifan Jiang 曾在字节跳动 AI Lab 实习。今年夏天,他将进入 Google Research 实习。 一作主页:https://yifanjiang.net/ 参考链接:https://www.reddit.com/r/MachineLearning/comments/ll30kf/r_transgan_two_transformers_can_make_one_strong/ 本文转自: https://www.jiqizhixin.com/articles/2021-02-17
  • [技术干货] 【直播】华为网络AI学习赛2021-“KPI异常检测大赛”进阶指导及答疑
    一起学习吧!华为云NAIE学习赛,为广大AI爱好者提供学习资助!NAIE算法专家直播指导及答疑,做你坚实的学习后盾!直播时间:2021年02月24日 14:00——16:00直播回看链接:https://bbs.huaweicloud.com/live/dks_live/202102241400.html
  • [技术干货] 百余篇经典论文算法上线华为云AI Gallery,学AI就用ModelArts
    2020年8月28日,华为云AI院长峰会在杭州千岛湖举行,来自中国科学院、中国工程院的多位院士,以及清华大学、北京大学、浙江大学、上海交通大学、复旦大学、中国科技大、哈尔滨工业大学、南京大学、西安交通大学等国内40余家顶尖高校的人工智能学院与计算机学院院长、教授、专家出席了大会,峰会阵容堪称国内高校的“顶尖配置”。峰会上华为云发布了五大AI人才培养规划,其中“华为云AI十百千学术计划”之百篇经典论文复现截至目前已取得重大进展:华为云官方累计发布50余篇AI经典论文供参与者复现,涵盖了计算机视觉、迁移学习、自然语言处理多个领域,吸引了数十所知名高校学子报名参加论文复现,不仅覆盖了C9院校,也不乏博士后参与;共计百余篇经典论文算法上线华为云AI Gallery,供开发者学习和使用。百余篇AI经典论文算法已上线AI Gallery针对当前AI经典论文算法在开源社区上的代码质量参差不齐,很多代码不好用、难用、甚至用不了,以及一些论文作者不共享源代码,无法指导AI开发者可以更好的参考与探索的现状,华为云官方将一些经典而又常用的论文算法上线华为云一站式AI开发平台ModelArts,供广大AI开发者免费使用,降低开发者学习门槛;同时发起华为云AI经典论文复现活动,鼓励参与者基于ModelArts复现AI经典论文,并将复现的论文算法开放共享到ModelArts AI Gallery, 打造AI开发者学习社区,从而达到赋能AI开发者,让更多人来低门槛使用经典的算法目标。目前,已经有百余篇AI经典论文算法上线华为云AI Gallery,开发者可以了解算法介绍、查看代码,以及一键订阅算法,在ModelArts平台进行训练和推理。华为云ModelArts产品团队表示,将这些百余篇AI经典论文算法与现有教程结合,构建一整套由浅入深的“AI学习天梯”,帮助各行各业的开发者在人工智能领域“渐入佳境”。全方位支持AI经典论文复现为了让开发者更好地学习AI,华为云举办的AI经典论文复现活动,设置了百万级别奖金池,成功复现并通过验收即可获得奖金激励。每篇论文一支队伍复现,论文一经发布即引来各大知名高校学生参与,基于自身研究领域选择熟悉的论文。此外,为了帮助学生能顺利完成复现,活动中给报名学生们提供了全方位支持,包含ModelArts赋能和论文复现活动宣讲、提供充足的ModelArts算力、全周期指导和问题解答,整个活动受到了学生们的一致好评。代表性AI经典论文算法:图像分割-Fast-SCNN随着自动驾驶汽车的兴起,迫切需要一种能够实时处理输入的模型。目前已有一些先进的离线语义分割模型,但这些模型体积大,内存大,计算量大,Fast-SCNN: Fast Semantic Segmentation Network可以解决这些问题。它是一种针对高分辨率图像数据的实时语义分割模型,适用于低内存嵌入式设备上的高效计算。代表性AI经典论文算法:目标检测-TSD目前很多研究表明目标检测中的分类分支和定位分支存在较大的偏差,论文从sibling head改造入手,跳出常规的优化方向,提出TSD:Revisiting the Sibling Head in Object Detector方法解决混合任务带来的内在冲突,该方法可以灵活插入大多检测器中,帮助通用的检测器大幅度提升性能3%-5%,在COCO上,基于ResNet-101可以达到49.4的map,在SENet154上可以达到51.2。
  • [技术干货] 让GBDT和GNN结合起来:Criteo AI Lab提出全新架构BGNN
    作者:Sergei Ivanov等机器之心编译GBDT 和 GNN 方法各有各的优势,现在,来自法国、俄罗斯两家机构的研究者将二者的优势结合起来,探索使用 GBDT 模型处理图结构数据。论文地址:https://openreview.net/pdf?id=ebS5NUfoMKL图神经网络(GNN)已经在学习图结构方面取得了巨大成功,应用于分子设计、计算机视觉、组合优化、推荐系统等多个方面。该领域的进展依靠于规范的 GNN 架构的存在,该架构将原始输入数据有效地编码为表达型表征,从而在新的数据集和任务上获得高质量的结果。最近的一些研究主要集中于具有稀疏数据的 GNN 上,这些数据代表同质节点嵌入(例如 one-hot 编码的图统计)或者词袋表征。但是在许多情况下,具有详细信息和丰富语义的表格数据更为自然,现实世界的人工智能也更丰富。例如在社交网络中,每个人都有社会人口统计学特征(例如年龄、性别、毕业日期),这些特征在数据类型、规模和缺失值上有很大差异。带有表格数据图形的 GNN 的研究是缺少的,梯度提升决策树(GBDT)在具有此类异构数据的应用程序中占主导地位。 GBDT 非常适用于表格数据,因为它们具有以下特性: 能够有效地学习表格数据中常见的具有超平面边界的决策空间;非常适合处理基数高、值缺失且比例不同的变量;它们为决策树或通过事后分析阶段的集合提供定性解释;在实际应用中,对于大量数据,它们收敛速度更快。相反,GNN 的关键特征使它们同时考虑节点的邻域信息和节点特征来进行预测,这与 GBDT 不同,GBDT 需要额外的预处理分析才能为算法提供图摘要(例如通过无监督图嵌入)。此外,理论上已经证明,通过消息传递的 GNN 可以在其图输入上计算任何可由图灵机器计算的函数,即 GNN 是唯一在图上具有通用性的学习架构(近似化和可计算性)。此外,与基于树的方法相比,基于梯度的神经网络学习具有多种优势: GNN 中含有的关系归纳偏差减轻了手动设计捕获网络拓扑特征的需求;训练神经网络的端到端属性允许在依赖于应用程序的解决方案中将 GNN 进行多阶段或多组件集成;采用图网络的预训练表征丰富了迁移学习中的许多重要任务,例如无监督领域自适应、自监督学习和主动学习机制。显然,GBDT 和 GNN 方法都有着明显的优势,可以将二者的优势结合起来吗?此前所有尝试将梯度提升和神经网络结合起来的方法在计算上都很繁琐,没有考虑图结构化数据,并且缺乏 GNN 架构中包含的关系偏向。 本研究是第一个探索使用 GBDT 模型处理图结构数据的研究。在这篇论文中,研究者提出了一种针对含表格数据的图的新型学习架构 BGNN,该架构将 GBDT 对表格节点特征的学习与 GNN 相结合,从而利用图的拓扑优化预测。这使 BGNN 可以继承梯度提升方法(异构学习和可解释性)和图网络(表征学习和端到端训练)的优势。 总体而言,该研究的贡献有: 设计了一种新的通用体系架构,将 GBDT 和 GNN 组合为一个 pipeline;通过迭代添加适合 GNN 梯度更新的新树,该研究克服了 GBDT 的端到端训练的挑战,使得错误信号可从网络拓扑反向传播到 GBDT;研究者针对节点预测任务中的强基准对方法进行了广泛的评估,实验结果表明,在各种现实表格数据中,异构节点回归和节点分类任务的性能显著提高;由于训练过程中的损失收敛速度更快,该方法比其他 GNN SOTA 模型更有效。此外,学习到的表征在潜在空间中展现出可辨别的结构,这进一步证明了该方法的表达能力。方法介绍GBDT 和 GNN 的优化遵循不同的方法:GNN 的参数通过梯度下降进行优化,而 GBDT 则是迭代构建的,并且决策树在构建之后仍然保持固定(决策树基于特征空间的硬拆分,因此不可微分)。 一种简单的方法是仅在节点特征上训练 GBDT 模型,然后将得到的 GBDT 预测与原始输入一起用作 GNN 的新节点特征。在这种情况下,将通过图神经网络进一步完善 GBDT 对图不敏感的预测。这种方法(被称为 Res-GNN)已经可以提高某些任务的 GNN 性能,但 GBDT 模型将完全忽略图的结构,并可能会丢失图的描述性特征,从而向 GNN 提供不准确的输入数据。 相反,该研究提出对 GBDT 和 GNN 进行端到端的训练,称为 BGNN(Boost-GNN)。该研究首先应用 GBDT,然后再应用 GNN。但考虑到最终预测的质量,该研究对它们进行了优化,BGNN 的训练如图 1 所示。已经构建好的决策树由于其离散的结构而无法正确调整,因此该研究通过添加新的树来迭代地更新 GBDT 模型,使其近似于 GNN 损失函数。图 1:BGNN 的训练过程,计算每一个 epoch 的步数。下图算法 1 展示了 BGNN 模型的训练算法,它可用于半监督节点回归与分类这样的任意节点级别的预热问题。更多实验结果读者可以查看原论文。本文来源:https://mp.weixin.qq.com/s/wIUVN9L5nnBgR_JSXY9OfA
  • [技术干货] 【学习赛2021-硬盘异常检测】【总结分享】衍生变量与统计特征
    华为网络AI学习赛2021-硬盘异常检测华为网络AI学习赛2021-硬盘异常检测 衍生变量举个列子,高中物理中提到的公式 Vt = V0 + at(末速度 = 初速度 + 加速度*时间)序号V0at120210根据上表给出的数据,可以新增一列 Vt,计算公式是 Vt = V0 + at20 + 2*10 = 40序号V0atVt12021040数据集新增了Vt后,再去训练模型,看看是不是模型的预测精度会有些许提升呢? 添加衍生变量的应用应用在本次比赛中的话,知识背景(来自【赛题数据描述】)smart_x_raw:代表编号为x的smart指标从硬盘上采集到的数据的原始值。smart_x_normalized:代表编号为x的smart指标从raw值经过厂商内部处理后归一化的值slaine前辈用了smart_x_raw和smart_x_normalized,做了除法操作。结果bingo!推荐尝试! 统计特征平均值最大值最小值方差标准差偏度峰值最大值 - 平均值最大值 - 最小值平均值 - 最小值等等...... 添加统计特征的应用应用在本次比赛中的话(代码仅做参考):# 按序号分组,再求统计特征 tdgmax = train_data.groupby("serial_number").max() # 更改列名 tdgmax.rename(columns=lambda x:x+"_max", inplace=True) # 重置索引,为了下步的合并做准备 tdgmax.reset_index(inplace=True) tdgmax# 合并 train_data_new = pd.merge(train_data,tdgm)添加了许多有意义的统计特征后,再去训练模型,看看预测精度是否会提升呢? 学习资源和参考资料#网络约AI,有你更精彩#网络人工智能黑客松大赛二等奖方案分享一等奖方案分享【2021学习赛---硬盘异常检测】2月23号直播ppt【学习赛2021--硬盘异常检测】样例代码【学习赛2021--KPI异常检测】优秀选手usstroot直播baseline代码及ppt网络AI学习赛2021.硬盘异常检测,赛题解读 其他学习赛推荐华为网络AI学习赛2021-KPI异常检测华为网络AI学习赛2021-日志异常检测 备注感谢老师的教学与课件欢迎各位同学一起来交流比赛心得^_^比赛配备了较为丰富的学习资料,有助于新手平稳入门,推荐参赛
  • [技术干货] 【学习赛2021-硬盘异常检测】【总结分享】 Dataflow转DataFrame(pandas)与生成新的数据实例
    华为网络AI学习赛2021-硬盘异常检测华为网络AI学习赛2021-硬盘异常检测 Dataflow转DataFrame(pandas)与生成新的数据实例# 加载数据 dataset = 'DatasetService' #@param {"type":"string","label":"数据集","required":true,"asyncConfig":{"type":"dataset"},"hyperParamType":"inDataset"} dataset_entity = 'learning_training_data' #@param {"type":"string","label":"数据集实例","required":true,"asyncConfig":{"type":"data","params":{"dataset":{"key":"dataset"}}},"hyperParamType":"inData"} data_file_list = None #@param {"type":"raw","label":"数据文件列表","asyncConfig":{"type":"datafiles","params":{"dataset":{"key":"dataset"},"data":{"key":"dataset_entity"}}},"helpTip":"选择文件列表后,只读取列表中的文件并合并。各文件的列名需要完全相同。","advanced":true} data_file_type = None #@param {"type":"string","label":"数据文件格式","options":[{"text":"","value":"\\None"},{"text":"csv","value":"csv"},{"text":"其他","value":"other"}],"show":{"key":"data_file_list"},"helpTip":"选择CSV表示结构化数据,可调用to_pandas_dataframe方法转化为pandas的dataframe","advanced":true} attrs = {'is_time_series': False, 'time_column': None, 'time_format': None, 'id_column': None, "do_analysis": False} datareference = data_reference.get_data_reference(dataset, dataset_entity, file_list=data_file_list, file_type=data_file_type, attrs=attrs) #@global {"variableType":"datareference","label":"数据引用变量名","attrs":{"dataset":{"key":"dataset"},"dataset_entity":{"key":"dataset_entity"},"attrs":{"key":"attrs"}},"helpTip":"当存在多个数据引用时,可重命名数据引用对象的变量名以避免冲突","required":true,"advanced":true} dataflow = data_flow.create_data_flow(data_reference=datareference) #@global {"variableType":"dataflow","label":"操作流变量名","attrs":{"data_reference":{"variableType":"datareference"}},"helpTip":"当存在多个数据操作流时,可重命名操作流对象的变量名以避免冲突","required":true,"advanced":true} dataflow.show_head()type(dataflow) naie_cloud.feature_processing.data_flow.Dataflow# dataflow 转 pandas_dataframe train_data_df=dataflow.to_pandas_dataframe()type(train_data_df) pandas.core.frame.DataFrame# 对数据集进行修改,删除指定列标签的列。并更新原始数据 train_data_df.drop(['date_g'],axis=1,inplace=True)# pandas_dataframe 转 dataflow from naie.feature_processing import data_flow data_flow_new = data_flow.create_dataflow_from_df(train_data_df)type(data_flow_new) naie_cloud.feature_processing.data_flow.Dataflow# 生成数据实例 # dataset 和 dataset_entity 的命名要见名知意。能区分开另外两个比赛 #@param {"id":"create-dataset"} create_dataset_kwargs = { "dataset": "DiskDataSet", "dataset_entity": "Disk_20210226_1114" } current_dataflow = data_flow_new #@param {"id":"global.flow"} current_dataflow.write_as_dataset(**create_dataset_kwargs)加载数据,查看处理后的数据集#@param {"id":"data-references"} data_reference_kwargs = [ { "dataset": "DiskDataSet", "dataset_entity": "Disk_20210226_1114", "file_list": [ "data.csv" ], "file_type": "csv", "encoding": "utf-8", "enable_local_cache": False } ] data_references = [data_reference.get_data_reference(**kwargs) for kwargs in data_reference_kwargs] #@global {"id":"global.export_data_references"} display(data_references) dataflows = [data_flow.create_data_flow(data_reference=datareference) for datareference in data_references] dataflow = dataflows[0] 学习资源和参考资料【2021学习赛---硬盘异常检测】2月23号直播ppt【学习赛2021--硬盘异常检测】样例代码【学习赛2021--KPI异常检测】优秀选手usstroot直播baseline代码及ppt 其他学习赛推荐华为网络AI学习赛2021-KPI异常检测华为网络AI学习赛2021-日志异常检测 备注感谢老师的教学与课件欢迎各位同学一起来交流比赛心得^_^比赛配备了较为丰富的学习资料,有助于新手平稳入门,推荐参赛
  • [技术干货] 【学习赛2021-硬盘异常检测】【总结分享】特征工程 Filter(1) 唯一值 华为网络AI学习赛2021-硬盘异常检测
    华为网络AI学习赛2021-硬盘异常检测华为网络AI学习赛2021-硬盘异常检测 特征工程 Filter 唯一值# 此处省略导包和加载数据部分的代码 # dataflow -> pandas_dataframe train_data=dataflow.to_pandas_dataframe()# 查看每列中有多少中数值 # nunique(axis=0, dropna=True) -> pandas.core.series.Series method of pandas.core.frame.DataFrame instance # Count distinct observations over requested axis. # # Return Series with number of distinct observations. Can ignore NaN values. # https://blog.csdn.net/feizxiang3/article/details/93380525 train_data_nunique_dropnaTrue=train_data.nunique()# 算上NaN train_data_nunique_dropnaFalse = train_data.nunique(dropna=False)type(train_data.nunique()) pandas.core.series.Seriesi = 1 # 根据相同的index,查看 有无NaN的差异 # train_data_nunique_dropnaTrue.index 109列的列名 for index in train_data_nunique_dropnaTrue.index: print(i,str(index).ljust(30),train_data_nunique_dropnaTrue[index],train_data_nunique_dropnaFalse[index]) i = i+1# 挑选出 train_data_nunique.values 中是0的索引 # https://junchu.blog.csdn.net/article/details/88791935 index_list_dT = train_data_nunique_dropnaTrue[train_data_nunique_dropnaTrue.values == 0].index.tolist() print("list\n",index_list_dT) print("len\n",index_list_dT.__len__()) # 有56个特殊列index_list_dF = train_data_nunique_dropnaFalse[train_data_nunique_dropnaFalse.values == 1].index.tolist() print("list\n",index_list_dF) print("len\n",index_list_dF.__len__()) # 有58个特殊列,多了 model 和 capacity_bytes# 将两个List取并集 # https://www.cnblogs.com/kwzblog/p/14101262.html index_list = list(set(index_list_dF).union(set(index_list_dT))) print(index_list) print(index_list.__len__())# 删除index_list的列 # 删除的是 单值列 和 全NaN train_data_df.drop(index_list,axis=1,inplace=True)# 查看删除结果 train_data# 再次使用 nunique train_data_nunique_dropnaTrue = train_data.nunique(dropna=True) train_data_nunique_dropnaFalse = train_data.nunique(dropna=False)# 检查结果 i = 1 for index in train_data_nunique_dropnaTrue.index: print(i,str(index).ljust(30),train_data_nunique_dropnaTrue[index],train_data_nunique_dropnaFalse[index]) i = i+1注意,上图的输出结果中类似于 smart_XXX 1 2,是要多关注的。 学习资源和参考资料【2021学习赛---硬盘异常检测】2月23号直播ppt【学习赛2021--硬盘异常检测】样例代码【学习赛2021--KPI异常检测】优秀选手usstroot直播baseline代码及ppt网络AI学习赛2021.硬盘异常检测,赛题解读 其他学习赛推荐华为网络AI学习赛2021-KPI异常检测华为网络AI学习赛2021-日志异常检测 备注感谢老师的教学与课件欢迎各位同学一起来交流比赛心得^_^比赛配备了较为丰富的学习资料,有助于新手平稳入门,推荐参赛
  • [技术干货] 【学习赛2021-硬盘异常检测】【总结分享】特征工程 Filter(2) 方差 华为网络AI学习赛2021-硬盘异常检测
    华为网络AI学习赛2021-硬盘异常检测华为网络AI学习赛2021-硬盘异常检测 特征工程 Filter(2) 方差# 省略加载数据 # 省略转为 pandas_dataframe # 省略train_data_nunique_dropnaTrue=train_data.nunique() # 使用 describe查看每列的统计信息 # 有一些列很特殊的,其中一列如下图所示 i = 1 for col_name in train_data_nunique_dropnaTrue.index: print(i," ",col_name,"\n",train_data[col_name].describe(),"\n","------","\n") i = i+1# "date_g","serial_number" 不算标准差 # 查看其他列的标准差 # std=0 表示数据基本无波动 # 设置阈值 temp_std < 0.01 std_index_list = [] for col_name in train_data_nunique_dropnaTrue.index: if col_name not in ["date_g","serial_number"]: temp_std = train_data[col_name].std() if temp_std < 0.01: std_index_list.append(col_name) print(col_name,temp_std)# 查看列名和数量 print(std_index_list) print(len(std_index_list))# 删除std_index_list的列 # 删除的是 标准差过小,也就是数据波动太小的列 train_data.drop(std_index_list,axis=1,inplace=True)# 查看数据 train_data 学习资源和参考资料【2021学习赛---硬盘异常检测】2月23号直播ppt【学习赛2021--硬盘异常检测】样例代码【学习赛2021--KPI异常检测】优秀选手usstroot直播baseline代码及ppt网络AI学习赛2021.硬盘异常检测,赛题解读 其他学习赛推荐华为网络AI学习赛2021-KPI异常检测华为网络AI学习赛2021-日志异常检测 备注感谢老师的教学与课件欢迎各位同学一起来交流比赛心得^_^比赛配备了较为丰富的学习资料,有助于新手平稳入门,推荐参赛
  • [技术干货] 【学习赛2021-硬盘异常检测】【总结分享】特征工程 Filter(3) 相关系数 华为网络AI学习赛2021-硬盘异常检测
    华为网络AI学习赛2021-硬盘异常检测华为网络AI学习赛2021-硬盘异常检测 特征工程 Filter(3) 相关系数# 计算相关系数 train_data_df_corr = train_data.corr()import matplotlib.pyplot as plt import seaborn as sns# 设置大小 plt.subplots(figsize=(20, 20)) # 热力图 # annot=True 显示数值 sns.heatmap(train_data_df_corr.round(2),annot=True)# print(train_data_df_corr.index) # print(train_data_df_corr.columns) i = 1 # 输出相关系数大于0.95的行列索引值 # index = col , 相关系数为1 for index in train_data_df_corr.index: for col in train_data_df_corr.columns: corr_val = train_data_df_corr.loc[index,col] # 对称矩阵的处理 if index == col: break if (corr_val> 0.99) and index != col: print(i,"-",index,"-",col,"-",corr_val) i = i+1查阅比赛资料,补充知识 https://competition.huaweicloud.com/information/1000041370/circumstance# 经过个人的选取,是一次尝试,并非最完美的方案。 corr_index_col = ["smart_194_normalized","smart_194_raw","smart_198_normalized","smart_198_raw","smart_240_raw"] # 删除 corr_index_col 的列 # 相关系数过大的话,保留一列就好了 train_data_df.drop(corr_index_col,axis=1,inplace=True)# 查看数据 train_data# 设置大小 plt.subplots(figsize=(20, 20)) # 热力图 # annot=True 显示数值 # train_data.corr().round(2) 保留两位小数 sns.heatmap(train_data.corr().round(2),annot=True) # 这会再看的话,就会发现除了对角线外,就没有1了 学习资源和参考资料【2021学习赛---硬盘异常检测】2月23号直播ppt【学习赛2021--硬盘异常检测】样例代码【学习赛2021--KPI异常检测】优秀选手usstroot直播baseline代码及ppt网络AI学习赛2021.硬盘异常检测,赛题解读 其他学习赛推荐华为网络AI学习赛2021-KPI异常检测华为网络AI学习赛2021-日志异常检测 备注感谢老师的教学与课件欢迎各位同学一起来交流比赛心得^_^比赛配备了较为丰富的学习资料,有助于新手平稳入门,推荐参赛
  • [技术干货] 【学习赛2021-硬盘异常检测】【分享总结】Pandas 查看训练数据集的基本信息 华为网络AI学习赛2021-硬盘异常检测
    华为网络AI学习赛2021-硬盘异常检测 pandas 查看训练数据集的基本信息import os os.chdir("/home/ma-user/work/disk") import pandas as pd from naie.datasets import get_data_reference dr_train = get_data_reference("DatasetService", "learning_training_data", file_type='csv') train_data = dr_train.to_pandas_dataframe()# 查看前6行数据 train_data.head(n=6)# 查看训练数据集的大小 train_data.shape (558636, 109)# 查看训练数据集的行标签 train_data.index.values array([ 0, 1, 2, ..., 558633, 558634, 558635])# 查看训练数据集的列标签 # 转成list的话,可以使用 train_data.columns.values.tolist() train_data.columns.values array(['date_g', 'serial_number', 'model', 'capacity_bytes', 'failure', 'smart_1_normalized', 'smart_1_raw', 'smart_2_normalized', 'smart_2_raw', 'smart_3_normalized', 'smart_3_raw', 'smart_4_normalized', 'smart_4_raw', 'smart_5_normalized', 'smart_5_raw', 'smart_7_normalized', 'smart_7_raw', 'smart_8_normalized', 'smart_8_raw', 'smart_9_normalized', 'smart_9_raw', 'smart_10_normalized', 'smart_10_raw', 'smart_11_normalized', 'smart_11_raw', 'smart_12_normalized', 'smart_12_raw', 'smart_13_normalized', 'smart_13_raw', 'smart_15_normalized', 'smart_15_raw', 'smart_22_normalized', 'smart_22_raw', 'smart_23_normalized', 'smart_23_raw', 'smart_24_normalized', 'smart_24_raw', 'smart_177_normalized', 'smart_177_raw', 'smart_179_normalized', 'smart_179_raw', 'smart_181_normalized', 'smart_181_raw', 'smart_182_normalized', 'smart_182_raw', 'smart_183_normalized', 'smart_183_raw', 'smart_184_normalized', 'smart_184_raw', 'smart_187_normalized', 'smart_187_raw', 'smart_188_normalized', 'smart_188_raw', 'smart_189_normalized', 'smart_189_raw', 'smart_190_normalized', 'smart_190_raw', 'smart_191_normalized', 'smart_191_raw', 'smart_192_normalized', 'smart_192_raw', 'smart_193_normalized', 'smart_193_raw', 'smart_194_normalized', 'smart_194_raw', 'smart_195_normalized', 'smart_195_raw', 'smart_196_normalized', 'smart_196_raw', 'smart_197_normalized', 'smart_197_raw', 'smart_198_normalized', 'smart_198_raw', 'smart_199_normalized', 'smart_199_raw', 'smart_200_normalized', 'smart_200_raw', 'smart_201_normalized', 'smart_201_raw', 'smart_220_normalized', 'smart_220_raw', 'smart_222_normalized', 'smart_222_raw', 'smart_223_normalized', 'smart_223_raw', 'smart_224_normalized', 'smart_224_raw', 'smart_225_normalized', 'smart_225_raw', 'smart_226_normalized', 'smart_226_raw', 'smart_235_normalized', 'smart_235_raw', 'smart_240_normalized', 'smart_240_raw', 'smart_241_normalized', 'smart_241_raw', 'smart_242_normalized', 'smart_242_raw', 'smart_250_normalized', 'smart_250_raw', 'smart_251_normalized', 'smart_251_raw', 'smart_252_normalized', 'smart_252_raw', 'smart_254_normalized', 'smart_254_raw', 'smart_255_normalized', 'smart_255_raw'], dtype=object)# 摘要信息 train_data.info() <class 'pandas.core.frame.DataFrame'> RangeIndex: 558636 entries, 0 to 558635 Columns: 109 entries, date_g to smart_255_raw dtypes: float64(104), int64(2), object(3) memory usage: 464.6+ MB# 描述统计信息(boxplot中提到的数值) train_data.describe() 学习资源和参考资料【2021学习赛---硬盘异常检测】2月23号直播ppt【学习赛2021--硬盘异常检测】样例代码https://blog.csdn.net/qq_40981268/article/details/86566068https://www.itdiandi.net/view/1800https://blog.csdn.net/qq_37975685/article/details/107953941 其他学习赛推荐华为网络AI学习赛2021-KPI异常检测华为网络AI学习赛2021-日志异常检测 备注感谢老师的教学与课件欢迎各位同学一起来交流比赛心得^_^比赛配备了较为丰富的学习资料,有助于新手平稳入门,推荐参赛
  • [技术干货] 【学习赛2021-硬盘异常检测】【分享总结】Pandas 查看训练数据集中正负样本比例 华为网络AI学习赛2021-硬盘异常检测
    华为网络AI学习赛2021-硬盘异常检测 Pandas 查看训练数据集中正负样本比例import os os.chdir("/home/ma-user/work/disk") import pandas as pd from naie.datasets import get_data_reference dr_train = get_data_reference("DatasetService", "learning_training_data", file_type='csv') train_data = dr_train.to_pandas_dataframe()# 查看列的信息 train_data['failure'] 0 0 1 0 2 0 3 0 4 0 .. 558631 0 558632 0 558633 0 558634 0 558635 0 Name: failure, Length: 558636, dtype: int64# crosstab # rosstab(index, columns, values=None, rownames=None, colnames=None, aggfunc=None, margins=False, margins_name:str='All', dropna:bool=True, normalize=False) -> 'DataFrame' # Compute a simple cross tabulation of two (or more) factors. By default # computes a frequency table of the factors unless an array of values and an # aggregation function are passed. pd.crosstab(train_data.failure,"count")type(pd.crosstab(train_data.failure,"count")) pandas.core.frame.DataFrame# 饼图 # 显示的小数位数 autopct='%.3f%%' pd.crosstab(train_data.failure,"count").plot(kind="pie",subplots=True,autopct='%.3f%%')# 柱状图 pd.crosstab(train_data.failure,"count").plot(kind="bar")有些学习数据集的正负样本比例是平衡的,在实际中不平衡的会多一些。 学习资源和参考资料【2021学习赛---硬盘异常检测】2月23号直播ppt【学习赛2021--硬盘异常检测】样例代码【学习赛2021--KPI异常检测】优秀选手usstroot直播baseline代码及pptMatplotlib简单画图(四) -- pandas绘图之DataFrame 其他学习赛推荐华为网络AI学习赛2021-KPI异常检测华为网络AI学习赛2021-日志异常检测 备注感谢老师的教学与课件欢迎各位同学一起来交流比赛心得^_^比赛配备了较为丰富的学习资料,有助于新手平稳入门,推荐参赛
  • [技术干货] 知识+AI融合新突破,华为云论文被人工智能顶刊IEEE TPAMI接收
    近日,人工智能领域国际顶级学术刊物IEEE Transactions on Pattern Analysis and Machine Intelligence(即IEEE TPAMI,影响因子17.861)接收了华为云员工博士论文期间的研究成果。近日,人工智能领域国际顶级学术刊物IEEE Transactions on Pattern Analysis and Machine Intelligence(即IEEE TPAMI,影响因子17.861)接收了华为云员工博士论文期间的研究成果——论文“What is a Tabby? Interpretable Model Decisions by Learning Attribute-based Classification Criteria”。华为云已进一步联合中国科学院计算技术研究所将该成果应用于华为云EI故障检测平台,并支撑铁路、电网等客户的实际故障检测业务,未来计划应用于华为云一站式AI开发平台ModelArts训练服务,向模型中引入人工先验知识,提升模型精度;并计划应用于ModelArts推理服务,帮助定位当前模型存在的问题,确定后续进一步优化的思路。受益于深度学习技术的突破,图像分类、物体检测等传统计算机视觉任务的精度也得到了大幅度的提升,但是由于深度学习模型的复杂性,目前关于深度学习的理论并不完善。可解释的深度学习模型,以及深度学习模型与人工先验的结合是当前学术界重点研究的前沿方向,对于提升深度学习模型的可靠性和泛化能力具有重要的意义。方法框架示意图通过利用物体类别之间存在的层级关系约束,自动学习从数据中抽取识别不同类别的规则,该论文同时在这两个方向上迈出了坚实的一步:在可解释深度学习模型方面,相比于现有方法,不仅能够给出图像中的关键区域,还能给出规则化的解释,对使用者更友好,更符合人对于解释结果的期望;在引入人工先验知识方面,走通了一条基本可行的技术路线。为了更好地赋能产业升级,华为云持续深耕AI基础研究和落地应用。2020年以来,华为云人工智能研究团队已在图像分类、弱标注场景下的图像分类、图像检测,多模态数据处理、语音语义等领域取得多项世界第一,研究成果多次被顶级期刊及学术会议接受。未来,华为云将持续把AI前沿算法产品化,并开放给各行业的AI开发者使用,通过技术创新驱动产业智能升级。
总条数:7868 到第 页
上滑加载中