-
Probabilistic Logic Neural Networks for Reasoning 链接:https://papers.nips.cc/paper/8987-probabilistic-logic-neural-networks-for-reasoning.pdf 论文 提出了 pLogicNet,这个模型是用来做知识图推理的,而且知识图嵌入和逻辑规则相结合。模型通过变差EM算法训练(实际上,这几年用EM做训练&模型优化的论文也有增加的趋势,这事可以之后单独开一篇文章细说)。论文的重点是,用一个马尔科夫逻辑网络定义知识图中的三元组上的联合分布(当然了,这种做法要对未观察到的三元组做一些限制,因为枚举出所有实体和关系上的所有三元组是做不到的),并给逻辑规则设定一个权重;你可以再自己选择一个预训练知识图嵌入(可以选TransE或者ComplEx,实际上随便选一个都行)。在推理步骤中只能怪,模型会根据规则和知识图嵌入找到缺失的三元组,然后在学习步骤中,规则的权重会根据已见到的、已推理的三元组进行更新。pLogicNet 在标准的连接预测测试中展现出了强有力的表现。我很好奇如果你在模型里选用了 GNN 之类的很厉害的知识图嵌入会发生什么。
-
一个比较流行的方法是序列到序列的转换,即将一个序列转换为另一个序列。此方法一般机器翻译常用,通常依赖于具有编码器-解码器结构的神经网络模型,其中编码器神经网络接收输入序列并学习提取重要特征,然后解码器神经网络使用该特征来产生目标输出。该范式已经用于生物学和能源预测,其中在里面发挥重要作用的是Attention技术。 递归神经网络模型的示意图问答也能够作为处理序列数据的一个基准,此类神经网络模型的标准是:一段文字(作为上下文)和一个具体的问题作为输入,回答的段落作为输出。值得一提的是,问答模型要求的神经网络模型必须能够理解不同序列集的相关性和相似性。 处理序列数据比较强大的神经网络有递归神经网络、注意力机制、Transformers。递归神经网络(RNN)包括一层内的加权连接(与传统前馈网络相比,连接仅馈送到后续层)。因为RNN包含循环,所以它们可以在处理新输入的同时存储信息。 虽然注意力有助于解决远程依赖中的挑战,但RNN训练起来仍然很慢,NLP中的Transformer是全新的框架,旨在解决序列到序列的任务,同时轻松处理长时依赖。其用全attention的结构代替了lstm,能够在翻译任务上取得了更好的成绩。在科研中也有几个有趣的例子,如在蛋白质序列上进行训练并找到编码有意义的生物特性的表征。
-
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,标准网络自动实现集成的近似推断,而不需要权重比例推断规则。
-
目前为止,最流行和广泛使用的参数共享出现在应用于计算机视觉的卷积神经网络(CNN)中。自然图像有许多统计属性是对转换不变的。例如,猫的照片即使向右边移了一个像素,仍保持猫的照片。CNN通过在图像多个位置共享参数来考虑这个特性。相同的特征(具有相同权重的隐藏单元)在输入的不同位置上计算获得。这意味着无论猫出现在图像中的第 i 列或 i + 1 列,我们都可以使用相同的猫探测器找到猫。参数共享显著降低了CNN模型的参数数量,并显著提高了网络的大小而不需要相应地增加训练数据。它仍然是将领域知识有效地整合到网络架构的最佳范例之一。
-
卷积神经网络(Convolutional Neural Network,CNN)1984年,日本学者福岛基于感受区域概念提出了神经认知机。神经认知机可以看作是卷积神经网络的第一个实现网络,也是感受区域概念在人工神经网络领域的首次应用。神经认知机将一个视觉模式分解成许多feature,然后进入分层递阶式相连的feature maps进行处理,这样就可以将视觉系统模型化,使其能够在物体有位移或轻微变形的时候,也能完成识别。卷积神经网络LeNet-5示例卷积神经网络由卷积层(Convolutions Layer)、池化层(Pooling Layer)和全连接层构成。全连接层在最后,前面是若干卷积层和池化层,每个卷积层后面跟一个池化层,如此重复。图中展示了LeNet-5网络的结构,一共七层,前面四层是卷积层和池化层(池化层又叫子采样层,也即Subsample Layer),后面三层是全连接层,最后一层输出层是高斯连接层,也是全连接层,共有10个节点,分别代表数字0到9,且如果节点i的值为0,则网络识别的结果是数字i。采用的是欧式径向基函数(ERBF)的网络连接方式。假设x是上一层的输入,y是ERBF的输出,则ERBF输出的计算方式是:理解卷积神经网络的核心在于理解前面的卷积层和池化层。既然我们将卷积神经网络分为了卷积层、池化层和全连接层,则隐含了前面的卷积层和池化层并不是全连接的,那它们是怎么连接的呢?介绍连接方式之前需要先介绍卷积层与池化层的性质:卷积层:卷积层由若干张feature map(FM)构成。对输入数据应用卷积核(可以认为是对特定feature非常敏感的探测器),在输入数据上滚一遍我们的卷积核,就得到了一张FM,FM上记录了卷积核在原图不同区域的激活程度(与该卷积核的feature越契合,激活程度越高),也即去掉了读不懂的数据,留下了符合一定feature的数据。每个卷积核拥有一个feature,也就能产生一张对应feature的FM。池化层:池化层的价值在于缩减输入数据的规模,FM上k*k一共k^2个激活值合并成为池化层上的一个激活值,合并的方法有很多种,比如最大值合并、平均值合并及随机合并,需要视情况而定,比如如果要确定『有没有』的问题,就要采用最大值合并,把最高的激活值保留下来。然后最后一个池化层后面连接到一个或多个全连接层,全连接层的输出就是最后的输出。训练过程通过改进的反向传播实现,在反向传播的时候需要特别考虑到池化层合并激活值的方法,最大值合并、平均值合并等,均需要采用特定的处理方法,并以此来更新卷积核。我们能人工定义的是卷积核的宽和高,还有卷积核的个数。卷积核对什么feature敏感,是先随机初始化,再经过BP算法慢慢训练出来的,卷积核的权重就是卷积神经网络主要需要学习的参数。池化过程池化过程看起来要简单的多,就是一个取局部平均值\最大值的过程(根据具体池化方法决定)。人们可以计算图像一个区域上的某个特定特征的平均值 (或最大值)。这些概要统计特征不仅具有低得多的维度 (相比使用所有提取得到的特征),同时还会改善结果(不容易过拟合)。另外需要提的一点是,前面说10*10的卷积核需要训练的参数是100个,严格来讲是错误的,其实是101个,因为每个卷积核还有一个可训练偏置。接下来以LeNet-5为例,从头捋一遍卷积神经网络的过程,重新放一遍LeNet-5的图:卷积神经网络LeNet-5示例输入层是32*32像素的图片,比数据集中最大的的字符(最大体积是20*20像素的字符,位于28*28像素区域的中心)大很多。这样做的原因是能使潜在的特征比如边缘的端点、拐角能够出现在最高层次的卷积核的接收域的中心。然后第一层C1,6个卷积核,所以也就6张FM,卷积核是5*5的,至于为什么每张FM是28*28的,(32-5)/1 + 1 = 28。那C1一共有多少个需要训练的参数呢?(5*5+1)*6 = 156个可训练参数,每个卷积核26个可训练参数,6个卷积核,也就是156个可训练参数。那C1与原图一共有多少个连接呢?(28*28)*6*26 = 122304个连接,28*28的FM,一共有6张,所以乘6,这6张FM里的每一个点,都是采用了6种卷积核的其中之一卷积出来的,不管是这6种卷积核里的哪种,都有26个参数,也即26个连接,所以要乘以26。当然每张FM里面的点用的是同样的卷积核,连接数公式简记为(FM宽高*FM宽高)*可训练参数。然后第二层S2,以2*2的范围去池化,我们也称其为一个2*2的池化核。6张28*28的FM被池化成了14*14的图,这个算法很简单,可以参考上面池化层的动图去理解。这里的每个池化核有两个可训练参数,一个负责与池化核里4个输入相加的和相乘,另一个作为可训练偏置加在乘积上,最后得到池化结果。6张FM,也对应6个池化核,每个池化核2个参数,也即12个可训练参数。那S2层与C1层有多少连接呢?(14*14)*6*5 = 5880个连接,这里池化核与卷积核不同,对于卷积核而言,26个可训练参数,也即26个连接;而池化只有2个可训练参数,但是如果池化核也只有2个连接,那那4个输入是从哪来的呢,所以这里2*2的池化核对应5个连接。然后6张图,每张14*14,每个点5个连接,所以得到5880个连接。然后是C3层,C3层同样通过5*5的卷积核去卷积每张图14*14的S2,然后得到的每张FM就是10*10的,算法与C1时相同。它有16种不同的卷积核,所以C3层就对应了16张FM。这里有个比C1层复杂的多的问题,就是C1层只卷积1张图,而C3层要卷积6张图。那这16张FM是如何卷积前面S2层的6张图的呢?如下图: C3层卷积S2层对应关系图CNN作用CNN主要用来识别位移、缩放及其他形式扭曲不变性的二维图形。由于CNN特征检测层通过训练数据进行学习,在使用CNN时,避免了显式的特征抽取,而隐式地从训练数据中进行学习;再者,由于同一FM上的神经元权值相同,所以网络可以并行学习,这也是卷积网络相对于神经元彼此相连网络的一大优势。卷积神经网络以其局部权值共享的特殊结构在语音识别和图像处理方面有着独特的优越性,其布局更接近于实际的生物神经网络,权值共享降低了网络的复杂性,避免了特征提取和分类过程中数据重建的复杂度。
-
近十年来,计算机视觉识别任务一直由卷积神经网络 (CNN) 主导。尽管最近流行的视觉 Transformer 在基于 self-attention 的模型中显示出巨大的潜力,但是在没有提供额外数据的情况下,比如在 ImageNet 上的分类任务,它们的性能仍然不如最新的 SOTA CNNs。目前,在无额外数据集时,ImageNet 上的最高性能依旧是由 Google DeepMind 提出的 NFNet (Normalizer-Free Network)所获得。在一篇最近发表的论文中,来自新加坡 Sea 集团旗下、颜水成教授领导的 Sea AI Lab (SAIL) 团队提出了一种新的深度学习网络模型结构——Vision Outlooker (VOLO),用于高性能视觉识别任务。它是一个简单且通用的结构,在不使用任何额外数据的情况下,实现了在 ImageNet 上图像分类任务 87.1% 的精度目标;同时,实现了在分割数据集 CityScapes Validation 上 84.3% 的性能,创下 ImageNet-1K 分类任务和 CityScapes 分割任务的两项新纪录。
-
由图可见,其进行了二十多次卷积还有四次最大池化,其中3x3卷积用于提取特征,1x1卷积用于压缩特征,最后将图像压缩到7x7xfilter的大小,相当于将整个图像划分为7x7的网格,每个网格负责自己这一块区域的目标检测。整个网络最后利用全连接层使其结果的size为(7x7x30),其中7x7代表的是7x7的网格,30前20个代表的是预测的种类,后10代表两个预测框及其置信度(5x2)。网络部分代码如下:# relu的改进版 def leak_relu(self,x, alpha=0.1): return tf.maximum(alpha * x, x) # 建立网络部分 def _build_net(self): x = tf.placeholder(tf.float32, [None, 448, 448, 3]) with tf.variable_scope('yolo'): # _conv_layer(self, x, num_filters, filter_size, stride,scope) with tf.variable_scope('conv_2'): # (448,448,3)->(224,224,64) net = self._conv_layer(x, 64, 7, 2,'conv_2') # (224,224,64)->(112,112,64) net = self._maxpool_layer(net, 2, 2) with tf.variable_scope('conv_4'): # (112,112,64)->(112,112,192) net = self._conv_layer(net, 192, 3, 1,'conv_4') # (112,112,192)->(56,56,192) net = self._maxpool_layer(net, 2, 2) with tf.variable_scope('conv_6'): # (56,56,128) net = self._conv_layer(net, 128, 1, 1,'conv_6') with tf.variable_scope('conv_7'): # (56,56,256) net = self._conv_layer(net, 256, 3, 1,'conv_7') with tf.variable_scope('conv_8'): # (56,56,256) net = self._conv_layer(net, 256, 1, 1,'conv_8') with tf.variable_scope('conv_9'): # (56,56,512) net = self._conv_layer(net, 512, 3, 1,'conv_9') # (28,28,512) net = self._maxpool_layer(net, 2, 2) with tf.variable_scope('conv_11'): net = self._conv_layer(net, 256, 1, 1,'conv_11') with tf.variable_scope('conv_12'): net = self._conv_layer(net, 512, 3, 1,'conv_12') with tf.variable_scope('conv_13'): net = self._conv_layer(net, 256, 1, 1,'conv_13') with tf.variable_scope('conv_14'): net = self._conv_layer(net, 512, 3, 1,'conv_14') with tf.variable_scope('conv_15'): net = self._conv_layer(net, 256, 1, 1,'conv_15') with tf.variable_scope('conv_16'): net = self._conv_layer(net, 512, 3, 1,'conv_16') with tf.variable_scope('conv_17'): net = self._conv_layer(net, 256, 1, 1,'conv_17') with tf.variable_scope('conv_18'): net = self._conv_layer(net, 512, 3, 1,'conv_18') with tf.variable_scope('conv_19'): net = self._conv_layer(net, 512, 1, 1,'conv_19') with tf.variable_scope('conv_20'): net = self._conv_layer(net, 1024, 3, 1,'conv_20') # (14,14,512) net = self._maxpool_layer(net, 2, 2) with tf.variable_scope('conv_22'): net = self._conv_layer(net, 512, 1, 1,'conv_22') with tf.variable_scope('conv_23'): net = self._conv_layer(net, 1024, 3, 1,'conv_23') with tf.variable_scope('conv_24'): net = self._conv_layer(net, 512, 1, 1,'conv_24') with tf.variable_scope('conv_25'): net = self._conv_layer(net, 1024, 3, 1,'conv_25') with tf.variable_scope('conv_26'): net = self._conv_layer(net, 1024, 3, 1,'conv_26') with tf.variable_scope('conv_28'): # (7,7,1024) net = self._conv_layer(net, 1024, 3, 2,'conv_28') with tf.variable_scope('conv_29'): net = self._conv_layer(net, 1024, 3, 1,'conv_29') with tf.variable_scope('conv_30'): net = self._conv_layer(net, 1024, 3, 1,'conv_30') net = self._flatten(net) # (7x7x512,512) with tf.variable_scope('fc_33'): net = self._fc_layer(net, 512, activation=self.leak_relu,scope='fc_33') with tf.variable_scope('fc_34'): net = self._fc_layer(net, 4096, activation=self.leak_relu,scope='fc_34') with tf.variable_scope('fc_36'): net = self._fc_layer(net, 7*7*30,scope='fc_36') # 其返回了placeholder_x和(7,7,30)net return net,x # 生成卷积层 def _conv_layer(self, x, num_filters, filter_size, stride,scope): # 生成卷积层的weights in_channels = x.get_shape().as_list()[-1] weight = tf.Variable(tf.truncated_normal([filter_size, filter_size, in_channels, num_filters], stddev=0.1),name='weights') # 生成卷积层的bias bias = tf.Variable(tf.zeros([num_filters,]),name='biases') # 计算要padding的量, pad_size = filter_size // 2 pad_mat = np.array([[0, 0], [pad_size, pad_size], [pad_size, pad_size], [0, 0]]) x_pad = tf.pad(x, pad_mat) # 卷积 conv = tf.nn.conv2d(x_pad, weight, strides=[1, stride, stride, 1], padding="VALID",name=scope) # 经过优化后的relu output = self.leak_relu(tf.nn.bias_add(conv, bias)) return output def _fc_layer(self, x, num_out, activation=None,scope=None): # 全连接层 num_in = x.get_shape().as_list()[-1] weight = tf.Variable(tf.truncated_normal([num_in, num_out], stddev=0.1),name='weights') bias = tf.Variable(tf.zeros([num_out,]),name='biases') output = tf.nn.xw_plus_b(x, weight, bias,name=scope) if activation: output = activation(output) return output def _maxpool_layer(self, x, pool_size, stride): # 最大池化 output = tf.nn.max_pool(x, [1, pool_size, pool_size, 1], strides=[1, stride, stride, 1], padding="SAME") return output def _flatten(self, x): """flatten the x""" tran_x = tf.transpose(x, [0, 3, 1, 2]) # channle first mode nums = np.product(x.get_shape().as_list()[1:]) return tf.reshape(tran_x, [-1, nums]) 预测结果如下:可见预测结果较差。
-
1 简要目前目标检测成熟的算法都是基于Dense prior(密集的先验,比如anchors、reference points),但密集的先验存在很多问题:1)会检测出很多相似的结果,需要后处理(比如NMS)来过滤;2)many-to-one label assignment 问题(作者描述为 many-to-one 正负样本分配),猜测意思是我们在设置pred和gt时,一般不是一对一的关系,可能是有多个preds,看看哪个与gt更符合;3)检测结果与先验的关系非常密切(anchors的数量、大小,reference points的密级程度、proposal生成的数量)。所以,有研究者提出了稀疏RCNN(Sparse R-CNN),一种图像中目标检测的纯稀疏方法。现有的目标检测工作很大程度上依赖于密集的候选目标,如所有H×W的图像特征图网格上预定义的k个anchor boxes。然而,在新提出的方法中,提供了一套固定的稀疏的学习候选目标,总长度N,给目标检测头进行分类和定位。通过消除H*W*k(多达数十万)手工设计的候选目标到N(例如100)可学习的建议,Sparse R-CNN完全避免了所有与候选目标的设计和多对一的标签分配相关的工作。更重要的是,最终的预测是直接输出的,而没有非极大抑制的后处理。SparseR-CNN证明了准确性、运行时和训练收敛性能,与具有挑战性的COCO数据集上建立的检测器基线相当,例如,在标准3×训练计划中实现45.0AP,并使用ResNet-50FPN模型以22fps的速度运行。作者是希望新的框架能够激发人们重新思考目标检测器中密集先验的惯例。2 背景不同目标检测pipelines的比较。(a)Dense,HWk候选目标枚举在所有的图像网格上,例如。RetinaNet;(b)Dense-to-Sparse,它们从密集的HWk候选目标中选择一小组N个候选目标,然后通过池化操作提取相应区域内的图像特征,如Faster R-CNN;(c)研究者提出的Sparse R-CNN,直接提供了一小组N个学习的候选目标,这里N远小于HWk。DenseNet是CVPR2017的oral,非常厉害。文章提出的DenseNet(Dense Convolutional Network)主要还是和ResNet及Inception网络做对比,思想上有借鉴,但却是全新的结构,网络结构并不复杂,却非常有效!众所周知,最近一两年卷积神经网络提高效果的方向,要么深(比如ResNet,解决了网络深时候的梯度消失问题)要么宽(比如GoogleNet的Inception),而作者则是从feature入手,通过对feature的极致利用达到更好的效果和更少的参数。主要优化:减轻了vanishing-gradient(梯度消失)加强了feature的传递更有效地利用了feature一定程度上较少了参数数量在深度学习网络中,随着网络深度的加深,梯度消失问题会愈加明显,目前很多论文都针对这个问题提出了解决方案,比如ResNet,Highway Networks,Stochastic depth,FractalNets等,尽管这些算法的网络结构有差别,但是核心都在于:create short paths from early layers to later layers。那么作者是怎么做呢?延续这个思路,那就是在保证网络中层与层之间最大程度的信息传输的前提下,直接将所有层连接起来!RetinaNet提出一个新的损失函数,在解决类别不均衡问题上比之前的方法更有效。损失函数是动态缩放的交叉熵损失,其中缩放因子随着对正确类别的置信度增加而衰减到零(如下图)。直观地说,这个缩放因子可以自动降低训练过程中简单样本的贡献,并快速将模型集中在困难样本上。实验发现,Focal Loss在one-stage检测器上的精确度胜过之前的state-of-art的启发式采样和困难样本挖掘。最后,focal loss的具体公式形式不是关键的,其它的示例可以达到类似的结果。设计了一个名叫RetinaNet的one-stage对象检测器来说明focalloss的有效性,RetinaNet命名来源于在输入图像上的密集采样。它基于ResNet-101- FPN主干网,以5fps的运行速度下,在COCO test-dev上取得了39.1 AP的成绩,超过目前公开的单一模型在one-stage和two-stage检测器上取得的最好成绩。3 新框架数据输入包括an image, a set of proposal boxes and proposal features使用FPN作为Backbone,处理图像下图中的Proposal Boxes: N*4是一组参数,跟backbone没啥关系下图中的proposals features和backbone也没啥关系Learnable porposal box跟backbone没有什么关系可以看成是物体潜在位置的统计概率训练的时候可以更新参数Learnable proposal feature跟backbone没有什么关系之前的proposal box是一个比较简洁、却的方法来描述物体,但缺少了很多信息,比如物体的形状与姿态proposal feature就是用来表示更多的物体信息。Dynamic instance interactive head通过proposal boxes以及ROI方法获取每个物体的特征,然后与proposal feature结合得到最终预测结果Head的数量与learnable box的数量相同,即head/learnable proposal box/learnable proposal feature一一对应Sparse R-CNN的两个显著特点就是sparse object candidates和sparse feature interaction,既没有dense的成千上万的candidates,也没有dense的global feature interaction。Sparse R-CNN可以看作是目标检测框架从dense到dense-to-sparse到sparse的一个方向拓展。4 实验&可视化COCO 2017 val set测试结果COCO 2017 test-dev set可视化迭代架构中每个阶段的预测框,包括学习到的候选框。学习到的候选框以白色绘制。显示了分类分数超过0.3的预测框。同一候选类的框以相同颜色绘制,学习到的候选框被随机分布在图像上,并一起覆盖整个图像。迭代头逐渐细化边界框位置,删除重复的。上图显示了converged model的学习到的候选框。这些方框被随机分布在图像上,以覆盖整个图像区域。这保证了在稀疏候选条件下的召回性能。此外,每个阶段的级联头逐渐细化边界框的位置,并删除重复的位置。这就导致了高精度的性能。上图还显示了Sparse R-CNN在罕见场景和人群场景中都表现出稳健的性能。对于罕见场景中的目标,其重复的方框将在几个阶段内被删除。拥挤的场景需要更多的阶段来细化,但最终每个目标都被精确而唯一地检测到。
-
摘要: 问题生成是指机器主动对一段文本进行提问,生成一个自然语言的问题。神经问题生成则是完全采用端到端的训练方式,使用神经网络完成文档和答案到问题的转换,是自然语言处理中一个新兴而又重要的研究方向。文中首先对神经问题生成进行了简单介绍,包括基本概念、主流框架和评价方法。接着介绍了该研究方向的关键问题,包括输入建模、长文本处理、多任务学习、机器学习方法的应用、其他研究问题和改进点。最后,介绍了问题生成和问答系统的关系,以及问题生成的未来研究方向。http://www.jsjkx.com/CN/10.11896/jsjkx.201100013问题生成[1]是自然语言处理中一个非常重要的研究方 向,是检验计算机是否真正理解文本的重要途径之一.问题 生成是指机器主动对一段文本进行提问,生成一个自然语言 的问题.具体来说,问题生成任务的输入通常包含文本(文档 或句子,以下均用文档表示)和目标答案,输出是在给定文档 和目标答案的情况下,生成最有可能的问题. 问题生成在学术界和工业界有诸多应用.在学术界,问 题生成可以对许多其他任务起辅助作用,如为机器阅读理解 任务提供数据集、作为辅助任务提升其他生 成 任 务 的 性 能 等;在工业界,问题 生 成 则 可 以 在 许 多 实 际 的 应 用 场 景 中 使用,如引导对话 聊 天 机 器 人 主 动 提 问、在 教 育 辅 导 系 统 中模拟用户提问等.在最近的天池 竞 赛 中,也 展 开 了 以 医疗问题生成为主题的竞赛。问题生成主要包含两种方法:基于规则和模板的问题生 成,以及基于神经网络的问题生成.最初,基于规则和模板的 问题生成是问题生成的主流研究方法.该方法的好处是可以 保证生成问题的流畅度和相关性,缺点是需要大量人工干预, 同时手工模板的构造也会在很大程度上限制生成问题的多样 性.而在深度学习技术重新焕发生机以后,神经网络开始成 为问题生成的主流研究方法.2017年,Du等[2]和 Zhou等[3] 最先提出神经问题生成,其成功地将最原始的编码器G解码器 模型应用到问题生成.尽管该工作比较简单,但引起了极大 反响,让越来越多的研究人员开始关注神经问题生成这一研 究方向.随后,神 经 问 题 生 成 方 向 涌 现 出 了 大 量 高 质 量 的 研究. 本文将介绍问题生成的相关研究进展,如图1所示.本文 第 2 节 介 绍 了 问 题 生 成 的 主 流 框 架,包 括 基 于 RNNSearch的模型、基于 Transformer的模型和基于规则和 模板的方法;第3节介绍了问题生成的评价方法,包括其所使 用的数据集和自动化评价指标;第4节介绍了问题生成研究 中的关键问题,包括输入建模、主要改进点、长文本处理、多任 务学习及机器学习方法的应用;第5节介绍了问题生成和问 答系统的关系,包括问题生成和阅读理解的结合、利用问题生 成构建 QA 对;第6节介绍了问题生成的未来研究方向,包括 对话形式的问题生成、多跳形式的问题生成以及其他形式的 问题生成;最后总结全文.
-
摘要: 近年来,新兴的图神经网络因其强大的图学习和推理能力,得到学术界和工业界的广泛关注,被认为是推动人工智能领域迈入“认知智能”阶段的核心力量.图神经网络融合传统图计算和神经网络的执行过程,形成了不规则与规则的计算和访存行为共存的混合执行模式.传统处理器结构设计以及面向图计算和神经网络的加速结构不能同时应对2种对立的执行行为,无法满足图神经网络的加速需求.为解决上述问题,面向图神经网络应用的专用加速结构不断涌现,它们为图神经网络定制计算硬件单元和片上存储层次,优化计算和访存行为,取得了良好的加速效果.以图神经网络执行行为带来的加速结构设计挑战为出发点,从整体结构设计以及计算、片上访存、片外访存层次对该领域的关键优化技术进行详实而系统地分析与介绍.最后还从不同角度对图神经网络加速结构设计的未来方向进行了展望,期望能为该领域的研究人员带来一定的启发.人 工 智 能 时 代,包 括 卷 积 神 经 网 络 (convoluG tionalneuralnetworks,CNNs)、循 环 神 经 网 络 (recurrentneuralnetworks,RNNs)等在内的机器 学习应用为社会与生活的智能化做出了革新性的巨 大贡献.然而传统的神经网络只能处理来自欧几里 得空间(Euclideanspace)的数据[1],该类分布规整 且结构固定的数据无法灵活地表示事物间的复杂关 系.现实生活中,越来越多的场景采用图作为表征数 据属性与关系的结构.非欧几里得空间中的图结构 理论上能够表征世间万物的互联关系(如社交网络、 路线图、基因结构等)[2],具有极为丰富和强大的数 据表达能力.图计算是一种能够对图进行处理,深入 挖掘图数据内潜藏信息的重要应用,但其不具备对 图数据进行学习的能力.受到传统神经网络与图计算应用的双重启发, 图神经网络(graph neural networks,GNNs)应运 而生.图神经网络使得机器学习能够应用于非欧几 里得空间的图结构中,具备对图进行学习的能力.目 前图神经网络已经广泛应用到节点分类[3]、风控评 估[4]、推荐系统[5]等众多场景中.并且图神经网络被 认为是推动人工智能从“感知智能”阶段迈入“认知 智能”阶段的核心要素[6G8],具有极高的研究和应用 价值.图神经网络的执行过程混合了传统图计算和神 经网络应用的不同特点.图神经网络通常包含图聚 合和图更新2个主要阶段.1)图聚合阶段的执行行 为与传统图计算相似,需要对邻居分布高度不规则 的图进行遍历,为每个节点进行邻居信息的聚合,因 此这一阶段具有极为不规则的计算和访存行为特 点.2)图更新阶段的执行行为与传统神经网络相似, 通过多层感知机(multiGlayerperceptrons,MLPs) 等方式来进行节点特征向量的变换与更新,这一阶 段具有规则的计算和访存行为特点.图神经网络的混合执行行为给应用的加速带来 极大挑战,规则与不规则的计算与访存模式共存使 得传统处理器结构设计无法对其进行高效处理.图 聚合阶段高度不规则的执行行为使得 CPU 无法从 其多层次缓存结构与数据预取机制中获益.主要面 向密集规则型计算的 GPU 平台也因图聚合阶段图 遍历的不规则性、图更新阶段参数共享导致的昂贵 数据复制和线程同步开销等因素无法高效执行图神 经网络[9].而已有的面向传统图计算应用和神经网 络应用的专用加速结构均只关注于单类应用,无法 满足具有混合应用特征的图神经网络加速需求.因 此为图神经网络专门设计相应的加速结构势在必行. 自2020年全球首款面向图神经网络应用的专 用加速结构 HyGCN [9]发表后,短时间内学术界已 在该领域有多篇不同的硬件加速结构成果产出.为 使读者和相关领域研究人员能够清晰地了解图神经 网络加速结构的现有工作,本文首先对图神经网络 应用的基础知识、常见算法、应用场景、编程模型以 及主流的基于通用平台的框架与扩展库等进行介 绍.然后以图神经网络执行行为带来的加速结构设 计挑战为出发点,从整体结构设计以及计算、片上访 存、片外访存多个层次对该领域的关键优化技术进 行详实而系统的分析与介绍.最后还从不同角度对 图神经网络加速结构设计的未来方向进行了展望, 期望能为该领域的研究人员带来一定的启发.当前已有的图神经网络应用领域综述论文从不 同角度对图神经网络算法以及软件框架进行总结与 分析.综述[1]对应用于数据挖掘和机器学习领域的 主流图神经网络算法进行分类,并讨论不同类别算 法的关系与异同.综述[10]依据图神经网络模型的结 构和训练策略的不同,提出新的分类方法,并以模型 的发展历史为主线进行介绍与分析.综述[11]围绕图 的表示学习(representationlearning)方法展开,并建立统一的框架来描述这些相关模型.综述[12]关注 于图神经网络的理论属性,总结图神经网络的表达 能力(expressivepower)并对比分析克服表达限制 的图神经网络模型.综述[13]基于计算机的金字塔组 织结构,对面向图计算的加速结构进行分类和总结, 对于新兴的图神经网络应用,仅以 HyGCN [9]作为 案例进行了讨论.与前述工作侧重点不同的是,本文 针对图神经网络加速结构设计过程中涉及到的关键 优化技术,进行系统性分析和总结,具有重要意义与 启发价值.
-
近日,清华大学计图(Jittor)团队提出了一种针对三角网格的卷积神经网络,在两个网格分类数据集上首次取得100%正确率,在其他多个几何学习任务中,性能显著超过现有方法。尤为重要的是,这种基于细分表示的网格卷积神经网络的提出,使得VGG、ResNet和DeepLabV3+等二维图像的骨干网络模型可以方便地应用到三维模型的学习上,从而突破了二维图像和三维模型在深度学习上的壁垒,将极大地促进三维视觉、虚拟现实、智慧城市和无人驾驶等领域的发展。1 三角网格上的卷积网络三维几何学习是计算机视觉与图形学中的一个重要研究方向,基于三维体素、点云、网格(mesh)等数据表示,学习物体的几何形状特征。其中,网格广泛应用于建模、渲染、3D打印等。因为网格数据较为复杂,包含点、边、面三种基本元素,缺乏规则的结构与层次化的表示,因此也更具挑战。近日,清华大学Jittor团队在arXiv发布了论文“Subdivision-Based Mesh Convolution Networks”,提出了一种基于细分结构的网格卷积网络 SubdivNet。该方法首先将输入网格进行重网格化(remesh),构造细分结构,得到一般网格的多分辨率表示,并提出了直观灵活的面片卷积方法、上/下采样方法,并将成熟的图像网络架构迁移到三维几何学习中。论文链接:https://arxiv.org/abs/2106.02285图1 SubdivNet的流程图2 面片卷积与上下采样以往的网格深度学习方法将特征存储在点或者边上,但是点的度数不固定,边的卷积不灵活。该论文提出了一种在面片上的网格卷积方法,充分利用了每个面片与三个面片相邻的规则性质。基于这一规则性质,Jittor团队进一步依据面片之间的距离,设计了多种不同的卷积模式。从图2可以看到,这种面片上的网格卷积方法,直观且灵活,有规律,可支持指定卷积核大小、步长、空洞等参数,很类似于图像的情形。图中,k为卷积核大小,d为空洞长度;其中a)为三角面片卷积,b)对应的二维图像卷积,c)为卷积中可能出现的重复访问,d)为更复杂的卷积示例。图2 三角网格上的卷积示意图由于三维数据格式中的面片顺序不固定,SubdivNet在计算卷积结果时,通过取邻域均值、差分均值等方式,使得计算结果与面片顺序无关,满足排列不变性。图3给出了卷积的定义及其每项的含义。图3 卷积的定义及其每项的含义在进行上下采样时,该方法受到传统的Loop细分曲面建模的启发,构造了一种基于细分结构的上下采样方法。如图4a)所示,细分曲面建模对面片进行“一分四”的面片分裂,使得三维模型逐渐变得光滑。该论文首先将网格进行重网格化,使其面片具有细分连接结构,从而可以进行“四合一”的面片合并,从高分辨率转为低分辨率,实现面片特征的pooling操作,如图4b)所示。上采样时,同样对面片进行“一分四”的分裂。这样定义上下采样方式是规则且均匀的,还可以实现双线性插值等需求。图4 细分曲面的示意图由于卷积和上下采样规则且灵活,Jittor团队实现了VGG、ResNet和DeepLabV3+等网络架构,在三维网格模型的实验中取得了显著的效果。该工作由清华大学的深度学习框架Jittor实现,Jittor框架提供了高效的重索引算子,无需额外的C++代码即可实现邻域索引;并且在同等网格面片数量下,SubdivNet的速度可达以往方法[2]的20多倍。GitHub开源地址为:https://github.com/lzhengning/SubdivNet3 实验结果SubdivNet在多种应用的进行了实验,展示了其在几何学习上的优势。更多的消融实验可以阅读原论文。1、网格分类SubdivNet在三个网格分类数据集中进行了实验比较,如表1和表2所示。其中,在SHREC11和Cube Engraving两个数据集上首次达到了100%的分类正确率。表1 在SHREC11数据集上的分类精度表2 在CubeEngraving数据集上的分类精度该方法还把 ModelNet40 中的模型修复为紧致流形,贡献了新的数据集Manifold40 。在此数据集上,SubdivNet也超过了以往的网格方法。表3给出ModelNet40和 Manifold40上的分类精度,其中前两行以位置和法向为输入的点云的最好结果,后三行是网格模型的结果。表3 在Manifold40数据集上的分类精度2、网格分割计图团队在人体分割数据集、COSEG数据集上进行了网格分割的实验。量化指标下,SubdivNet的分割准确率均高于对比的点云、网格方法。以下是分割结果展示。图5 人体分割结果图6 COSEG 玩具分割结果3、形状对应在量化的形状对应实验中,SubdivNet达到了SOTA水准。图6中,给定Source Mesh的点,寻找Target Mesh中与之对应点;相同的颜色表示对应关系。图7 形状对应可视化结果4、网格检索Jittor团队还利用RGBD相机扫描了真实场景,以点云为输入,在网格数据库中检索相似网格模型;以下为一些检索结果。图8 从真实场景检索数据库中的三位网格模型
-
【摘要】 英伟达提出multi-scale attention机制,并将 HRNet+OCR+multi-scale attention组合在一起训练的语义分割模型在Cityscapes数据集上的mIoU达到84.7,成为Cityscapes上新的SOTA,下面对组合中涉及的HRNet、OCR模块、multi-scale attention机制以及SegFix模型进行简要介绍。主要内容可分为:(1)Cityscapes数据集介绍(2)HRNet的动机、结构以及核心代码(3)OCR的动机、结构以及核心代码(4)SegFix的动机、结构以及核心代码(5)分层多尺度注意力的动机、结构1 Cityscapes数据集介绍Cityscapes评测数据集即城市景观数据集,在2015年由奔驰公司推动发布,是目前公认的机器视觉领域内最具权威性和专业性的图像分割数据集之一。Cityscapes拥有5000张精细标注的在城市环境中驾驶场景的图像(2975train,500 val,1525test)。它具有19个类别的密集像素标注(97%coverage),其中8个具有实例级分割。具体类别名称见于下表1。 表1 Cityscapes数据集中的类别名称2 Deep High-Resolution Representation Learning for Visual Recognition(HRNet)2.1动机当前语义分割方法面临3个挑战,其中第一个挑战是基于FCN的分辨率由高到低会损失信息。语义分割方法需要高分辨率特征,图中1展示了几种基于FCN的经典方法的,它们的共同点通过一个网络得到 低分辨 feature map,然后通过上采样或反卷积恢复到高分辨率。图1 基于FCN方法的几种经典结构这些看起来不同,但本质核心思路是差不多的。这些方法存在一个缺点,分辨率由高到低会损失信息!2.2 模型结构与核心代码为了解决2.1中的问题,作者团队(MSRA和中科院)提出一个方法,核心思路是“不恢复高分辨率,而是保持分辨率”。如下图2中是一个基本的高分辨率保持网络结构,该结构把不同分辨率的feature map并联,相同分辨率的占一条分支,不同分辨率的占不同分支。并在不同分支之间添加通路(图中的斜线),形成high-resolution network。图2 基本的high-resolution network结构图2中的机构由4个stage组成,每一个蓝底色块为一个stage。在SOTA方法中,采用的是HRNet-W48,其结构图如图3所示。图3 HRNet-W48结构图HRNet V2-W48是在4个stage(图3中蓝、绿、红、黄4种底**域)的头部加上stem net(图3中白色底**域),尾部加上segment head后(图中未画出)组成。下面按照先后顺序依次对stem net、4个stage以及segment head进行介绍。(1)stem netstem net由两个Bottelneck组成,与Resnet的结构一样,经过两个Bottelneck以后,输入图像的维度由H*W*3变成了(H/4)*(W/4)*256(2)4个stage每个 stage 上的各个组件配置如下表2,以 hrnet_48 为例stage之间通过transition_layer连接,stage内由重复的基本单元HighResolutionModule组成。HighResolutionModule由分支以及分支末尾的fuse_layers组成。每条分支内由重复的basicblock组成,具体数量见表2 表2 HRNet-W48模型配置表A:stage间的transition layer:完成 stage之间通道转换和尺寸下采样,即图3中不同底色之间连接的直线和斜线stage之间的斜线,指向不做任何处理。图4 stage间的transition layer构建代码B:构建stage每个stag均是有若干重复的HighResolutionModule组成,因此构架stage的核心在与构建HighResolutionModule。构建HighResolutionModule分两步:构建分支、构建分支末尾的fuse_layers。构建分支:图3种的4个连续的basicblock即一个分支。 图5 HighResolutionModule内分支构建代码构建fuselayer:以下图中蓝色框为例说明fuselayer层的处理过程: 图6 fuselayer层图6 HighResolutionModule内fuselayer层构建代码转自fdafad,https://bbs.huaweicloud.com/blogs/259223
-
导 读本文是对发表于计算机图形学顶级会议 SIGGRAPH 2021 的论文 Learning Skeletal Articulations with Neural Blend Shapes 的解读。该论文由北京大学陈宝权教授研究团队与北京电影学院未来影像高精尖创新中心、Google Research、特拉维夫大学以及苏黎世联邦理工学院合作,针对骨骼驱动的模型动画的高质量自动化生成进行改进,提出了神经融合形状技术。实验证明,该方法显著减少了已有方法中需要的人工干预,大大提升了生成动画的质量。论文链接:https://peizhuoli.github.io/neural-blend-shapes/papers/neural-blend-shapes-camera-ready.pdf项目主页:https://peizhuoli.github.io/neural-blend-shapes/GitHub代码仓库:https://github.com/PeizhuoLi/neural-blend-shapes01引 言骨骼驱动的三维人物动画在游戏、影视等应用场景中随处可见。然而,使用骨骼驱动三维人物网格模型(mesh)进行变形并得到动画,通常需要经历繁琐的骨骼搭建(rigging)以及蒙皮权重绑定(skinning)。这些处理技术复杂而艰深,动画师通常需要数年的时间来尝试掌握。此外,一些常见的特定动作,例如弯曲肘部、蹲下,由于常用的蒙皮技术(线性融合蒙皮,Linear Blend Skinning)的局限性,关节区域的变形并不理想。左:现有技术在关节区域的问题;右:本文技术生成的高质量且细节丰富的动画为了简化骨骼搭建和蒙皮权重绑定的过程、高效利用动作捕捉数据以及生成高质量的动画,我们开发了一套能生成具有指定结构的骨骼以及精准绑定权重的神经网络。加以我们提出的神经融合形状(neural blend shapes)技术,我们实现了实时高质量三维人物模型动画的端到端自动生成。方法概览02方法简介从处于 T 姿态的人物模型以及在给定的骨骼结构上的关节旋转开始,我们的包裹变形分支(envelope deformation branch)学习并预测出相应的骨骼以及蒙皮权重。与此同时,补偿变形分支(residual deformation branch)预测出对应的融合形状(blend shapes)并使用输入的关节旋转预测对应的融合系数,然后基于此插值得到补偿变形。综合以上中间结果,可微分包裹变形模块将生成最终的变形结果。这一设计使得我们的神经网络能够通过仅观察变形后的人物模型进行间接学习,而不需要对训练数据集的变形方法有任何限制,极大增广了该方法的适用范围。方法框架我们的神经网络使用了网格卷积[1]和骨骼卷积[2]搭建各个模块。基于这些最前沿技术的基本算子,我们的网络可以在具有任意网格连通性的人物模型上生成高质量的结果。下图展示了我们的网络的具体架构:包裹变形分支补偿变形分支03结果展示我们的方法能准确的预测出与人物模型高度匹配的骨骼以及绑定权重:骨骼以及绑定权重的可视化特别的,我们的方法能生成符合预先指定结构的骨骼,这一点在使用动作捕捉数据时尤为关键。而 RigNet[3]只提供了十分有限的用户操纵参数,生成的骨骼结构难以控制:从左至右分别为:RigNet(12), RigNet(25), RigNet(50), Ours由于我们的神经网络直接在高质量变形模型上训练,仅使用包裹变形分支就已经超过了基准的线性融合蒙皮技术。再加上我们的神经融合形状技术,关节区域的变形结果便是更上一层楼:参考:[1] Hanocka et al., 2019, MeshCNN: A Network with an Edge[2] Aberman et al., 2020, Skeleton-Aware Networks for Deep Motion Retargeting[3] Xu et al., 2020, RigNet: Neural Rigging for Articulated Characters
-
将元学习明确地描述为两个嵌套的优化问题 内部优化在线进行指的是:智能体试图从系统设计阶段生成的一系列假设中找到在线学习数据中“得分”最佳的假设。内部优化的特色在于假设空间、评分标准和将用于搜索最佳假设的计算机算法。在传统的机器学习中,这些成分由人类工程师提供。 但在元学习中,至少一部分是由系统设计阶段进行的外部“元”优化过程所提供的。元优化试图找到内部学习过程本身的参数。这些参数能使学习在与元学习的环境相似的新环境中进行(源于相同的分布)。 最近有研究介绍了一种新的元学习形式,叫做“与模型无关的元学习”(model-agnostic meta-learning,MAML)。MAML是一个嵌套的优化框架,其中外部优化选择的是一些内部神经网络权重的初始值,能通过在线学习的标准梯度下降优化方法进一步调整。RL2算法在系统设计阶段中使用DRL来学习在线学习运行的一般小型程序,但这些小型程序不一定具有机器学习程序的形式。另一个变体试图在系统设计阶段发现可以组合起来以解决在线学习出现的问题的模块构造块(modular building blocks,如小型神经网络)。 自然界中的进化过程可以被认为是元学习的一种极端形式。在自然进化中,自然界会为了动物去寻找一个含有潜在学习算法的、极其不受限制的空间。(当然,从本质上讲,智能体的生理状况也会发生改变。)在机器人生命周期内,对内部优化问题的处理越灵活,越需要更多用于提高鲁棒性的资源,包括系统设计阶段的示例环境、在线学习的性能不佳的机器人,以及在两个阶段运行的计算容量。 这时候,我们又回到最初的问题:标准的强化学习方法不会被采用,因为尽管它是一种通用的学习方法,但它需要大量的在线学习经验。然而,元强化学习(meta-RL)需要丰富的系统设计经验,这可能会使开发过程变得迟钝、缓慢而花费高昂。因此,也许元学习也不是一个好的解决方法。 那还有什么解决方法呢?有很多方向可以探索,包括人类教学、与其他机器人协作学习,以及更改机器人的硬件和软件。在所有这些情况下,关键的一步还是设计出有效的方法来开发机器人软件。通过运用从计算机科学和工程学中所获得的见识以及认知神经科学的启发,我们可以找到能够内置到学习智能体中的算法和结构,并提供在系统设计阶段和在线学习算法和结构的杠杆。 卷积神经网络的发展是上述方法的典型例子。卷积神经网络的理念是设计出一种用于图像处理的神经网络,以使其执行“卷积”,即在整个图像上使用相同的计算模式对图像块进行局部处理。这个设计同时对先验知识进行了编码。在此处,先验知识指的是无论物体处于图像中的什么位置,物体都具有基本相同的外观(平移不变性),以及接近的像素组共享图像内容的信息(空间局部性)。与没有卷积结构的情况相比,以这种方式训练一个神经网络意味着需要的参数数量更少,因此训练次数也相应减少。 图像卷积的点子由工程师和自然启发,是早期信号处理和计算机视觉的基础概念。一直以来,人们都认为,哺乳动物视觉皮层中的细胞似乎也在执行类似的计算。 转自陈彩娴 ,https://www.leiphone.com/category/academic/VV75HfxY7dwQPurq.html
-
论文名称:Segmentation and Optimal Region Selection of Physiological Signals using Deep Neural Networks and Combinatorial Optimization作者:Jorge Oliveira /Margarida Carvalho /Diogo Marcelo Nogueira /Miguel Coimbra发表时间:2020/3/17论文链接:https://paper.yanxishe.com/review/14660?from=leiphonecolumn_paperreview0417推荐原因1 核心问题本文解决的是如何自动提取生理信号最优波段来辅助后续诊断和预测的问题。2 创新点本文使用神经网络去计算每个样本的状态概率分布,然后构造出一张图,同时在图中加入状态转换限制,并根据最大化用户提出的似然函数去使用一组约束来检索生理信号记录的子集。3 研究意义生理信号经常会被噪音干扰。通常情况下,人工智能算法会在无视质量的情况下对之进行整体分析。与之相反的是,医师则并不分析整个记录,而是会搜寻容易检测到基本波动和异常波动的波段进行分析,然后才进行预测。因此,受到以上事实启发,本文提出了一个基于用户自定标准,为后期处理自动选择最优波段的算法。本文将提出的方法使用在两个实际应用场景中,并且取得了很好的效果。转自Ai ,https://www.leiphone.com/category/academic/OplxYlWbr1ak9nCm.html
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第五期2026/09/04 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;蒋春阳-华为云AI开发者案例开发专家
本期直播内容: AI工具体验营 · 第5-8课连讲。Agent-Team 多智能体协作完成毕业设计实践
回顾中 -
华为云开发者AI素养ClassRoom·第六期2026/09/08 周二 19:00-20:00
樊渊-2026华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签