• [其他] 深度学习之稀疏激活
    对于小的数据集,Jarrett et al. (2009b) 观察到,使用整流非线性甚至比学习隐藏层的权重值更加重要。随机的权重足以通过整流网络传播有用的信息,允许在顶部的分类器层学习如何将不同的特征向量映射到类标识。当有更多数据可用时,学习开始提取足够的有用知识来超越随机选择参数的性能。Glorot et al. (2011a) 说明,在深度整流网络中的学习比在激活函数具有曲率或两侧饱和的深度网络中的学习更容易。整流线性单元还具有历史意义,因为它们表明神经科学继续对深度学习算法的发展产生影响。Glorot et al. (2011a) 从生物学考虑整流线性单元的导出。半整流非线性旨在描述生物神经元的这些性质:(1) 对于某些输入,生物神经元是完全不活跃的。(2) 对于某些输入,生物神经元的输出和它的输入成比例。(3) 大多数时间,生物神经元是在它们不活跃的状态下进行操作(即它们应该具有稀疏激活(sparse activation))。
  • [其他] 深度学习之参数共享
    这种方法由Lasserre et al. (2006) 提出,正则化一个模型(监督模式下训练的分类器)的参数,使其接近另一个无监督模式下训练的模型(捕捉观察到的输入数据的分布)的参数。这种构造架构使得许多分类模型中的参数能与之对应的无监督模型的参数匹配。参数范数惩罚是正则化参数使其彼此接近的一种方式,而更流行的方法是使用约束:强迫某些参数相等。由于我们将各种模型或模型组件解释为共享唯一的一组参数,这种正则化方法通常被称为参数共享(parameter sharing)。和正则化参数使其接近(通过范数惩罚)相比,参数共享的一个显著优点是,只有参数(唯一一个集合)的子集需要被存储在内存中。对于某些特定模型,如卷积神经网络,这可能可以显著减少模型所占用的内存。
  • [其他] 深度学习之权重比例
    权重比例推断规则在其他设定下也是精确的,包括条件正态输出的回归网络以及那些隐藏层不包含非线性的深度网络。然而,权重比例推断规则对具有非线性的深度模型仅仅是一个近似。虽然这个近似尚未有理论上的分析,但在实践中往往效果很好。Goodfellow et al. (2013b) 实验发现,集成预测权重比例推断规则比蒙特卡罗近似的效果更好(在分类精度方面)。即使允许蒙特卡罗近似采样多达 1000 子网络时也比不过集成。Gal and Ghahramani (2015) 发现一些模型可以通过二十个样本和蒙特卡罗近似获得更好的分类精度。似乎推断近似的最佳选择是与问题相关的。
  • [其他] 深度学习之快速 Dropout
    使用Dropout训练时的随机性不是这个方法成功的必要条件。它仅仅是近似所有子模型总和的一个方法。Wang and Manning (2013) 导出了近似这种边缘分布的解析解。他们的近似被称为快速 Dropout(fast dropout),减小梯度计算中的随机性而获得更快的收敛速度。这种方法也可以在测试时应用,能够比权重比例推断规则更合理地(但计算也更昂贵)近似所有子网络的平均。快速 Dropout在小神经网络上的性能几乎与标准的Dropout相当,但在大问题上尚未产生显著改善或尚未应用。随机性对实现Dropout的正则化效果不是必要的,同时也不是充分的。为了证明这一点,Warde-Farley et al. (2014) 使用一种被称为 Dropout Boosting(Dropout Boosting)的方法设计了一个对照实验,具有与传统Dropout方法完全相同的噪声掩码,但缺乏正则化效果。Dropout Boosting训练整个集成以最大化训练集上的似然。从传统Dropout类似于Bagging的角度来看,这种方式类似于Boosting。如预期一样,和单一模型训练整个网络相比,Dropout Boosting几乎没有正则化效果。这表明,使用Bagging解释Dropout比使用稳健性噪声解释Dropout更好。只有当随机抽样的集成成员相互独立地训练好后,才能达到Bagging集成的正则化效果。
  • [其他] 深度学习之Dropout优点
    Dropout的另一个显著优点是不怎么限制适用的模型或训练过程。几乎在所有使用分布式表示且可以用随机梯度下降训练的模型上都表现很好。包括前馈神经网络、概率模型,如受限玻尔兹曼机(Srivastava et al., 2014),以及循环神经网络(Bayer and Osendorfer, 2014; Pascanu et al., 2014a)。许多效果差不多的其他正则化策略对模型结构的限制更严格。虽然Dropout在特定模型上每一步的代价是微不足道的,但在一个完整的系统上使用Dropout的代价可能非常显著。因为Dropout是一个正则化技术,它减少了模型的有效容量。为了抵消这种影响,我们必须增大模型规模。不出意外的话,使用Dropout时最佳验证集的误差会低很多,但这是以更大的模型和更多训练算法的迭代次数为代价换来的。对于非常大的数据集,正则化带来的泛化误差减少得很小。在这些情况下,使用Dropout和更大模型的计算代价可能超过正则化带来的好处。只有极少的训练样本可用时,Dropout不会很有效。在只有不到 5000 的样本的Alternative Splicing数据集上 (Xiong et al., 2011),贝叶斯神经网络 (Neal, 1996)比Dropout表现得更好 (Srivastava et al., 2014)。当有其他未分类的数据可用时,无监督特征学习也比Dropout更有优势。
  • [其他] 深度学习之Dropout启发
    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,标准网络自动实现集成的近似推断,而不需要权重比例推断规则。
  • [其他] 深度学习之局部和全局结构间的弱对应
    迄今为止,我们讨论的许多问题都是关于损失函数在单个点的性质——若 J(θ)是当前点 θ 的病态条件,或者 θ 在悬崖中,或者 θ 是一个下降方向不明显的鞍点,那么会很难更新当前步。如果该方向在局部改进很大,但并没有指向代价低得多的遥远区域,那么我们有可能在单点处克服以上所有困难,但仍然表现不佳。大多数优化研究的难点集中于训练是否找到了全局最小点、局部极小点或是鞍点,但在实践中神经网络不会到达任何一种临界点。图 8.1 表明神经网络通常不会到达梯度很小的区域。甚至,这些临界点不一定存在。例如,损失函数 − log p(y | x; θ)可以没有全局最小点,而是当随着训练模型逐渐稳定后,渐近地收敛于某个值。对于具有离散的 y 和 softmax 分布 p(y | x) 的分类器而言,若模型能够正确分类训练集上的每个样本,则负对数似然可以无限趋近但不会等于零。同样地,实值模型p(y | x) = N (y; f(θ), β−1) 的负对数似然会趋向于负无穷——如果 f(θ) 能够正确预测所有训练集中的目标 y,学习算法会无限制地增加 β。给出了一个失败的例子,即使没有局部极小值和鞍点,该例还是不能从局部优化中找到一个良好的代价函数值。
  • [其他] 使用OpenCV为视频中美女加上眼线
    计算机视觉是最令人兴奋的领域之一,其应用范围非常广泛。从医学成像到创建最有趣的面部滤镜等各个领域都充分见证了计算机视觉技术的强大。在本文中,我们将尝试创建一个人造眼线笔来模仿Snapchat或Instagram滤波器,为视频中的美女添加上美丽的眼线。最终的结果可以通过下面的动图观察到。本文介绍的内容适合想要通过计算机视觉来实现一个具有一定展示性功能的计算机视觉初学者。因此,在本文重我们会尽量简化说明,如果您对完整的程序感兴趣,可以在Github上找到完整的代码。Github的链接在本文的文末给出。 在实现本文功能之前,我们需要设置一个新的虚拟环境并安装所有必需的依赖项。这个过程比较简单,我们也在Github里面给出了如何配置环境的具体过程。在本项目中,我们需要使用的工具有OpenCV,NumPy,imutils,SciPy和Dlib。有些小伙伴可能对这些工具和库比较陌生,接下来我们简单介绍一下每个模块的作用。• OpenCV:用于图像处理的最受欢迎的模块之一。我们将使用OpenCV读取,写入和绘制图像。• NumPy:在处理OpenCV项目时经常使用NumPy。图像本质上是一个像素数组,OpenCV使用以NumPy数组形式存储的这些数组,并对图像执行操作。• Imutils:Imutils附带了自定义功能,使我们的计算机视觉工作变得更加轻松。在这里,我们将使用它来将dlib对象转换为非常灵活且广泛接受的numpy数组。• Scipy:顾名思义,SciPy用于python上的科学计算。我们将使用它来创建插值(如果现在没有意义,可以的)。• Dlib:Dlib是一个包含各种ML算法的C ++库。我们将使用dlib提取面部界标点。项目简要介绍该程序首先从每个面孔中提取68个界标点。在这68个点中,点37–42属于左眼,点43–48属于右眼,具体形式如下图所示。因为我们的目标是给面部添加眼线,所以我们只对37-48点感兴趣,因此我们提取了这些点。我们将对这些提取的点进行插值。插值意味着我们尝试在两个给定点之间插入点。我们可以使用的插值方式如下图所示。眼线算法的流程图如下所示接下来,我们将进一步详细描述该算法。如果小伙伴只对运行代码感兴趣,可以跳至最后一部分。算法介绍我们首先需要提取脸部周围边界框的坐标。OpenCV将图像转换为NumPy数组。numpy.array(即图像的矩阵表示形式)存储在名为的变量中frame。我们使用一个名为face_detector()的函数,该函数返回围绕框架中所有脸部的包围框的坐标。这些边界框坐标存储在一个名为bounding_boxes的变量中。遍历循环bounding_boxes以将眼线应用于帧中检测到的每个脸部。face_landmark_points存储68个坐标点。eye_landmark_points是从getEyeLandmarkPts()函数中得到。getEyeLandmarkPts()函数使用68个坐标点作为输入并返回具有左上眼睑的坐标4个矩阵,左上眼线(L_eye_top),左下眼线(L_eye_bottom)和相同的右眼(R_eye_top & R_eye_bottom)。这可以通过简单的NumPy索引完成的。我们将端点(pt号37、40、43和46。请参见68个界标点图)向外移动5px,以使外观更逼真。现在,我们需要对这些点进行插值以获得平滑的曲线,进而可以画出眼线。我们需要对每个曲线进行不同的处理(即L_eye_top,L_eye_bottom,R_eye_top,R_eye_bottom)。因此,我们为每个曲线使用单独的变量名称。interpolateCoordinates()用于在每条曲线上生成插值。重复使用该函数,为每个曲线生成插值坐标。这个函数为每个曲线返回一个插值点数组。drawEyeLiner()函数将生成的插值点作为参数,并在两个连续点之间画一条线。在两个循环中为每个曲线完成此操作,一个循环用于左眼,另一个循环用于右眼。 调用项目该项目的用发非常简单,首先从Github上克隆到本地 git clone https://github.com/kaushil24/Artificial-Eyeliner/接下来,打开命令提示符并键入以下代码以运行示例测试python3 eyeliner.py -v "Media/Sample Video.mp4"我们也可以通过将视频路径放在参数中来使用自己的视频。完整的CLI命令如下:python eyeliner.py [-i image] [-v video] [-d dat] [-t thickness] [-c color] [-s save]每个参数的具体含义如下:• i :要在其上绘制眼线的图像的路径• v :要在其上绘制眼线的视频的路径。• v :也可以通过网络摄像头获取视频。例如:python3 -v webcam -s "Webcam output"• t :整数(整数)以设置眼线的厚度。默认值= 2。推荐的数值介于1-5之间• d:shape_predictor_68_face_landmarks.dat文件的路径。默认路径在根目录中。除非将shape_predictor_68_face_landmarks.dat文件存储在其他位置,否则不需要使用此参数。• c :更改眼线的颜色。语法-c 255 255 255。默认值= 0 0 0。其中每个数字代表其RGB值。• s :要将输出保存到的位置和文件名。注意程序在保存文件时会自动添加扩展名。如果已经存在同名文件,它将覆盖该文件。转载自小白学视觉公众号
  • [其他] YoloX部署、优化、训练相关
    YOLOX的Anchor Free(Anchor Based针对数据集聚类分析得到Anchor Box的方式,怕对泛化会有影响,尤其前期缺乏现场数据时)以及更有效的Label Assignment(SimOTA),使我下决心将目前所用的FCOS+ATSS模型换成YOLOX模型。这次改动将YOLOX添加到了Yolov5上,在Yolov5的框架下,训练150个epoch的yolox-s模型的mAP也达到了39.7(且未使用mixup数据增强和random resize)。一、实验环境:实验机器:1台PC:CPU: AMD Ryzen 7 1700X Eight-Core Processor, 内存: 32G, 显卡: 2张GeForce GTX 1080 Ti 11G1台PC:CPU: AMD Ryzen 5 2600 Six-Core Processor, 内存: 32G, 显卡: 2张GeForce GTX 1080 Ti 11G目标部署硬件:A311D开发板(带8位整型5TOPS算力的NPU)软件版本:Python版本为3.7.7,Pytorch版本为1.7.1,Cuda版本为10.1官方YoloX版本:https://github.com/Megvii-BaseDetection/YOLOX.gitCommits:29df1fb9bc456fcd5c35653312d7c22c9f66b9f8 (Aug 2, 2021)官方Yolov5版本:- https://github.com/ultralytics/yolov5.gitCommits: f409d8e54f9391ce21436d33334beff3a2fd4042 (Aug 4, 2021)二、选择适合NPU的架构试验:1、速度实验:注:a、模型在NPU上的速度实验,并不需要把模型完整地训练一遍,那样太耗时,只需要将模型导出(初始化后导出或者少量图片train一个epoch),再量化转换为NPU的模型即可。b、另一方面,NPU对有些层不支持、层与层之间的搭配、或层的实现完整性差异(参见:【原创】A311D模型转换问题),会导致模型转换成NPU模型时失败,这样花大力气训练出来模型用不上,白白浪费时间,尤其对于小公司,训练机器资源有限,训练一个模型一两天时间就过去了,因为模型转换失败或者模型性能不达标,又要重来一遍,会推迟项目进度。c、对于面向产品快速部署落地而言,在开始训练模型之前,需要先确保模型能成功转换成目标硬件上,以及能在目标硬件上达到所需的性能要求。1)、YOLOX_S模型在NPU上640x640分辨率下纯推理速度(不包括前处理和后处理)每帧需要62.3ms;2)、原来部署在NPU上的FCOS ATSS模型在同等分辨率下NPU纯推理速度每帧只需要45.58ms;我们的FCOS对解耦头做过简化设计,但为了融合多数据集以及自有数据集训练(如,coco,wider face等),进行多种不同任务检测(如,人体检测,人脸检测等),采用更多的解耦头分支来规避数据集之间相互缺少的类别标签问题。最终更换成YOLOX_S模型,也是需要实现同时检测多个任务的功能,如果原始的YOLOX_S模型在NPU上就比FCOS在速度上差这么多,较难应用;3)、将YOLOX_S模型的SiLU激活函数替换成ReLU激活函数在同等分辨率下NPU纯推理速度每帧只需要42.61ms;我们所用的NPU可以将Conv+ReLU融合成一个层(注意多看NPU手册,了解哪些层的组合以及什么样的层的参数配置对性能优化更友好),而SiLU激活函数是不会做融合的,这意味着更多的运算量以及内存访问(在32位DDR4甚至DDR3的内存的NPU开发板上,内存访问对性能的影响是不容忽视的),因此,只是更换了一下激活函数推理速度便提升为原来的1.46倍了;我很想知道SiLU比ReLU到底能提升多少的AP值(但没找到,唯一能找到的是对ImageNet数据集的分类模型来说的),如果AP提升不多,1.46倍的性能差别,觉得不值,从其他地方补回来可能更划算;4)、将YOLOX_S模型的SiLU激活函数替换成LeakyReLU激活函数在同等分辨率下NPU纯推理速度每帧需要54.36ms;Conv+LeakyReLU不会融合成一个层,LeakyReLU也多一点运算,性能相比ReLU也慢不少;5)、YOLOX_S模型使用ReLU+SiLU激活函数,即大部分使用ReLU激活函数小部分使用SiLU激活函数(所有stride为2的Conv、SPP、所有C3中的最后一个Conv都使用SiLU)在同等分辨率下NPU纯推理速度每帧需要44.22ms;SiLU激活函数可以增加非线性,ReLU激活函数的非线性感觉还是比较有限:转发自https://www.yuque.com/yerunyuan/ar9831/tsm0id#Kfi4w 
  • [其他] 深度学习的跨模态检索综述
    近年来,由于多模态数据的快速增长,跨模态检索受到了研究者的广泛关注,它将一种模态的数据作为查询去检索其它模态的数据。例如,用户可以用文本检索图像或/和视频。由于查询及其检索结果模态表征的差异,如何度量不同模态之间的相似性是跨模态检索的主要挑战。随着深度学习技术的推广以及其在计算机视觉、自然语言处理等领域的显著成果,研究者提出了一系列以深度学习为基础的跨模态检索方法,极大地缓解了不同模态间相似性度量的挑战,本文称之为深度跨模态检索。本文将从以下角度综述近些年来代表性的深度跨模态检索论文,基于所提供的跨模态信息将这些方法分为三类:基于跨模态数据间一一对应的、基于跨模态数据间相似度的以及基于跨模态数据语义标注的深度跨模态检索。一般来说,上述信息呈现递增的情况,且提供学习的信息越多,跨模态检索性能越优。在上述不同类别下,涵盖了七类主流技术,即典型相关分析、一一对应关系保持、度量学习、似然分析、学习排序、语义预测以及对抗学习。不同类别下包含其中部分关键技术,其中代表性方法将被具体阐述。同时本文将对比提供不同跨模态数据信息下不同技术的区别,以阐述在提供了不同层次的跨模态数据信息下相关技术的关注点与使用异同。为评估不同的跨模态检索方法,本文总结了部分代表性的跨模态检索数据库。最后本文讨论了当前深度跨模态检索待解决的问题以及未来的研究方向。http://www.cjig.cn/jig/ch/reader/view_abstract.aspx?flag=2&file_no=202012310000005&journal_id=jig在过去的二十几年里,不同类型的媒体数据如文 本、图像和视频迅速增长。通常,这些不同类型的 数据用于描述相同的事件或主题。例如,网页通常 不仅包含文本描述,还包含与之匹配的图像或视频。这些不同类型的数据被称为多模态数据,表现出模 态间异构特性并具有广泛的应用,如图 1 所示,互 联网与社交媒体涌现的大规模多模态数据可以用于 进行主题检测、信息推荐、检索等。多模态数据的迅速增长使得用户很难有效地搜 索感兴趣的信息,也就衍生了各种各样的检索、搜 索技术。然而这些搜索技术大多是针对单一模态内 检索,如基于关键字的检索和基于内容的检索,它 们只执行相同媒体类型的相似性搜索,如文本检索、 图像检索、音频检索和视频检索。近些年来,移动 设备和新兴的社交网站(如 Facebook、Flickr、 YouTube 和 Twitter)的普及使得用户对跨模态数据 检索的要求越来越高。例如,用户正在游览长城, 希望通过拍照检索相关的文本、音频等材料作为指 南。通常,跨模态检索的目的是以一种模态的数据作为查询来检索相关的其它模态数据。
  • [其他] 深度学习预测蛋白质-蛋白质相互作用
    塔夫茨大学的 Lenore Cowen 教授和麻省理工学院的研究人员合作设计了一种基于神经语言建模的最新进展的结构驱动的深度学习方法。该团队的深度学习模型称为 D-SCRIPT,能够从初级氨基酸序列预测蛋白质 - 蛋白质相互作用 (PPI)。研究人员结合神经语言建模和结构驱动设计的进步来开发 D-SCRIPT,这是一种可解释且可推广的深度学习模型,它仅使用其序列来预测两种蛋白质之间的相互作用,并在有限的训练数据和跨物种的情况下保持高精度。测试结果表明,与最先进的方法相比,在 38,345 个人类 PPI 上训练的 D-SCRIPT 模型能够显着改善果蝇蛋白质的功能表征。在具有已知 3D 结构的蛋白质复合物上评估相同的 D-SCRIPT 模型,研究人员发现 D-SCRIPT 输出的蛋白质间接触图与基本事实有显着重叠。该团队应用 D-SCRIPT 在全基因组范围内筛选奶牛(Bos taurus)的 PPI,并专注于瘤胃生理学,识别与代谢和免疫反应相关的功能基因模块。然后可以利用预测的相互作用进行大规模的功能预测,解决基因组到现象组的挑战,特别是在数据很少的物种中。该研究以「D-SCRIPT translates genome to phenome with sequence-based, structure-aware, genome-scale predictions of protein-protein interactions」为题,于 2021 年 9 月 17 日刊载在《Cell Systems》。转发自:https://www.jiqizhixin.com/articles/2022-01-13-6
  • [行业动态] 深度学习,通过一个片段修饰进行分子优化
    分子优化是药物开发中的关键步骤,可通过化学修饰改善候选药物的预期特性。来自俄亥俄州立大学(The Ohio State University)的研究人员,在分子图上开发了一种新颖的深度生成模型 Modof,用于分子优化。Modof 通过预测分子处的单个断开位点以及在该位点去除和/或添加片段来修饰给定的分子。在 Modof-pipe 中实现了多个相同 Modof 模型的管道,以修改多个断开位置的输入分子。研究人员表明 Modof-pipe 能够保留主要的分子支架,允许控制中间优化步骤并更好地约束分子相似性。Modof-pipe 在基准数据集上优于最先进的方法。该研究以「A deep generative model for molecule optimization via one fragment modification」为题,于 2021 年 12 月 9 日发布在《Nature Machine Intelligence 》。分子优化制约着药物发现分子优化是药物发现的关键步骤,可通过化学修饰改善候选药物的所需特性。例如,在先导优化中,可以改变先导分子的化学结构以提高它们的选择性和特异性。传统上,这种分子优化过程是根据药物化学家的知识和经验规划的,并通过基于片段的筛选或合成来进行。因此,它不可扩展或自动化。最近的研究表明,使用深度学习的计算机方法使替代的计算生成过程能够加速传统范式。这些深度学习方法从基于字符串的分子表示(SMILES)或分子图中学习,并相应地生成具有更好特性的新表示(例如,通过连接原子和键)。尽管在计算上很有吸引力,但这些方法在一个非常重要的方面并不符合体外分子优化过程:分子优化需要保留分子的主要支架,但生成完整的新分子结构可能无法复制支架。因此,这些方法在告知和指导体外分子优化的潜力方面受到限制。「带有一个片段的修饰符」在这里,该团队提出了用于分子优化的新型生成模型,该模型更近似于硅化学修饰。该方法被称为「带有一个片段的修饰符」或 Modof。遵循基于片段的药物设计理念,Modof 预测分子上的单个断开位点,并通过改变该位点的片段(例如,环系统、接头和侧链)来修饰分子。与现有的对整个分子图进行编码和解码的分子优化方法不同,Modof 从一个断开位置优化前后分子之间的差异中学习和编码。为了修改一个分子,Modof 只生成一个片段,该片段通过解码从潜在“差异”空间中抽取的样本来实例化预期的差异。然后,Modof 在断开连接的站点移除原始片段,并在该站点附加生成的片段。通过多次采样,Modof 能够生成多个优化的候选者。一个由多个相同的 Modof 模型组成的管道,表示为 Modof-pipe,通过不同的 Modof 模型迭代地优化多个断开位置的分子,其中一个 Modof 模型的输出分子作为下一个 Modof 模型的输入。Modof-pipe 进一步增强为 Modof-pipem 以允许将一个分子修饰为多个优化的分子作为最终输出。转发自:https://www.jiqizhixin.com/articles/2022-01-17-3
  • [技术干货] 华为云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.
  • [技术干货] NOVA-BERT:在Transformer框架下“非侵入地”融入序列旁信息
    华为诺亚方舟实验室语音语义团队联合推荐搜索团队提出一种序列推荐模型NOVA-BERT《Non-invasive Self-attention for Side Information Fusion in Sequential Recommendation》,已被AAAI 2021接收。(论文地址:http://arxiv.org/abs/2103.03578)。该工作研究如何在Transformer框架下高效地融入推荐问题中的各类序列旁信息,并提出一种不侵入主信息表示空间的旁信息融合机制:Non-invasive Self-attention。作者在两个公开数据集与产品数据集上进行验证,实验结果表明,非侵入式的旁信息融合方式相比传统的旁信息融合方式,有更加稳定的融合收益。研究背景序列推荐是根据用户与系统的历史交互行为预测用户未来兴趣点的推荐任务。除了建模主信息(Item ID,即预测对象)外,如何利用丰富的序列旁信息(例如item类别,用户行为发生时间等)提升预测效果,是一个非常重要的研究课题。目前已有工作BERT4Rec [1]基于BERT预训练任务验证了推荐任务中Transformer强大的序列建模能力,然而Transformer模型最初的设计并未专门考虑多序列建模(每个序列点都有丰富旁信息)的情况。一种自然的做法是直接在Embedding层将同一个位置点的所有旁信息连同主信息进行融合,得到融合表示后再进行序列建模,如图1 (a)所示。我们通过试点试验发现,直接在Embedding层将所有信息融合后再进行序列建模,相比只使用主信息建模,效果提升收益较小,甚至可能损坏模型预测效果。因此,本文提出一种不侵入主信息表示空间的旁信息融合方式,希望能更加安全鲁棒地使用各类序列旁信息。具体地,两种不同的旁信息融合方式定义如下:序列推荐是根据用户与系统的历史交互行为预测用户未来兴趣点的推荐任务。除了建模主信息(Item ID,即预测对象)外,如何利用丰富的序列旁信息(例如item类别,用户行为发生时间等)提升预测效果,是一个非常重要的研究课题。目前已有工作BERT4Rec [1]基于BERT预训练任务验证了推荐任务中Transformer强大的序列建模能力,然而Transformer模型最初的设计并未专门考虑多序列建模(每个序列点都有丰富旁信息)的情况。一种自然的做法是直接在Embedding层将同一个位置点的所有旁信息连同主信息进行融合,得到融合表示后再进行序列建模,如图1 (a)所示。我们通过试点试验发现,直接在Embedding层将所有信息融合后再进行序列建模,相比只使用主信息建模,效果提升收益较小,甚至可能损坏模型预测效果。因此,本文提出一种不侵入主信息表示空间的旁信息融合方式,希望能更加安全鲁棒地使用各类序列旁信息。具体地,两种不同的旁信息融合方式定义如下:(1)侵入式的旁信息融合:所有旁信息和主信息在Embedding层进行融合,序列建模对象为融合后的向量表示;(2)非侵入式的旁信息融合:如图1(b)所示,旁信息并至始至终不和主信息进行融合,而是在Self-attention机制中通过影响不同位置点的主信息之间的关联强度,来发挥旁信息作用。方法概述上图2为BERT4Rec [1]框架,是推荐领域第一个使用BERT预训练任务进行序列建模的框架。在BERT4Rec框架下,最直接的旁信息融合方式是将同一个位置点的所有信息通过融合器F进行融合,得到融合表示上式中ID表示Item ID主信息,也是最终模型预测的信息类型,和分别表示该位置的Item旁信息(例如Item类别)和用户行为旁信息(例如用户评分)。以融合表示作为最底层输入,模型通过多层Transformer block建模序列,从而预测特定时刻的主信息。上述建模过程中,融合表示空间不再是独立的主信息表示空间,因此我们称该旁信息融合方式为“侵入式”旁信息融合。与之相反,我们提出的Non-invasive Self-attention机制希望能够在保证主信息空间独立的情况下,旁信息仍能发挥作用。在Embedding层,除了生成上述融合信息对应的序列外,还生成一个仅包含主信息的序列:如图3所示,在Transformer block中,包含了旁信息的融合表示序列被建模在Query,Key向量中,而Value向量仅建模主信息序列:上述机制保证了Value向量始终为不同位置主信息的线性加权,从而保证了每一层Transformer block的输出始终维持在主信息空间,这和最终要预测的对象空间保持了一致。我们称上述旁信息融合机制为Non-invasiveSelf-attention,并基于此构建了NOVA-BERT框架,如下图4所示。在NOVA-BERT框架中,旁信息在每一层都需要通过Non-invasive Self-attention机制进行融合。实验验证我们在公开数据集Movie-Lens以及工业级产品数据集上验证NOVA-BERT算法,对比基线模型有不使用旁信息的BERT4Rec及其侵入式旁信息融合版本。准确性从上图实验结果可以看出,相比于原始的只用ID建模的原始方法,通过非侵入式的旁信息融合,包括加和、拼接和门控,NOVA-BERT算法在不同数据集上均取得最优表现。可以看到,直接地侵入式地信息融合方法对精度带来有限,甚至可能带来负向的提升。另外,NOVA方式在不同数据集上带来的提升不同,这主要与数据集的样本量大小相关。旁信息消融分析上图展示了在ML-1m数据集上物品属性旁信息(出版年份等)与用户行为旁信息(评分)对模型的贡献度,None表示不加入额外信息,All表示加入全部信息。从结果可见,融合用户行为信息旁信息比融合物品属性旁信息更有效。模型可视化我们可视化了NOVA-BERT最底层的注意力得分分布,考察模型的可解释性。上图中左右两个4行6列分布图分别来自BERT4Rec以及NOVA-BERT算法在随机选出的6个物品上4个头的注意力得分,颜色越深代表相关性越高。由于是物品与物品间注意力得分,对角线上表示物品与其本身的注意力。时序上接近的Item往往可能共享相同的Item旁信息,可以看到NOVA-BERT沿对角线周边呈现出更强的局部注意趋势,说明NOVA-BERT有效建模了序列中的旁信息。总结本工作提出了一种用于序列旁信息融合的非侵入式自注意力机制,并以此为基础构建了NOVA-BERT序列推荐模型。和传统的旁信息融合思路不同,NOVA-BERT并不将旁信息直接融合到主信息(Item ID)表示中,而是将旁信息作为辅助信号引导主信息之间进行更好的相互关联,这样可以保持序列建模中主信息表示空间和旁信息空间的独立性,避免过多旁信息带来的主信息淹没。NOVA-BERT在两个公开数据集和商业数据集上均呈现出比传统的“侵入式”方式更好的融合收益,同时,线上A/B测试也表明NOBA-BERT在序列建模上优于基线算法。参考文献[1] Sun, F.; Liu, J.; Wu, J.; Pei, C.; Lin, X.; Ou,W.; and Jiang, P. 2019. BERT4Rec: Sequential recommendation with bidirectional encoder representations from transformer. In Proceedings of the 28th ACM International Conference on Information and Knowledge Management, 1441–1450.原创 诺亚方舟实验室