-
我使用cpp参赛前几天的程序本地运行超过300s,但是在线判题耗时更少,可以通过我今天尝试修改了执行逻辑用来优化执行时间和得分,本地只需要100s左右就可以完成执行,但在线执行超时另外一个奇怪的点是,我在代码中加入了一段本身耗时极少的代码(少于1s),目的是修改数据的一些分配逻辑,本地在执行时间几乎不变的情况下提升了大概一个点的score,而线上却直接time_out我对于线上和线下的数据差异究竟有多大产生了疑惑
-
系统为ubuntu18.04.6 arm架构、版卡为atlas200,芯片为310,cann版本已升级为最新版本6.0.1、驱动为21.0.2,RC模式npu-smi infopytorch的模型转onnx,用atc工具将onnx转成om模型,atc --model=./model.onnx --framework=5 --output=./model --soc_version=Ascend310报错trans_cast算子转换失败,如下:
-
准备自行准备一个玫瑰花朵数据集,尽量多的种类和数量,下面教程已自备数据集。数据预处理将图片转换为模型可以处理的格式,对数据进行归一化处理。import tensorflow as tf from tensorflow.keras.preprocessing.image import ImageDataGenerator # 设置图片大小和批次大小 IMG_SIZE = (224, 224) BATCH_SIZE = 32 # 创建ImageDataGenerator实例,用于数据增强和预处理 train_datagen = ImageDataGenerator( rescale=1./255, rotation_range=20, width_shift_range=0.2, height_shift_range=0.2, shear_range=0.2, zoom_range=0.2, horizontal_flip=True, fill_mode='nearest' ) # 加载训练数据集 train_data = train_datagen.flow_from_directory( 'flowers', target_size=IMG_SIZE, batch_size=BATCH_SIZE, class_mode='categorical' )模型构建使用预训练的ResNet50模型作为特征提取器,然后搭建一个全连接层用于分类from tensorflow.keras.models import Model from tensorflow.keras.layers import Dense, GlobalAveragePooling2D from tensorflow.keras.applications.resnet50 import ResNet50 # 加载ResNet50模型 base_model = ResNet50(weights='imagenet', include_top=False, input_shape=IMG_SIZE + (3,)) # 在ResNet50模型基础上搭建全连接层 x = base_model.output x = GlobalAveragePooling2D()(x) x = Dense(1024, activation='relu')(x) predictions = Dense(train_data.num_classes, activation='softmax')(x) # 构建完整模型 model = Model(inputs=base_model.input, outputs=predictions) # 冻结ResNet50模型的所有层 for layer in base_model.layers: layer.trainable = False模型训练和评估训练:# 编译模型 model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy']) # 训练模型 model.fit(train_data, epochs=10)模型训练完成后需要评估:# 加载测试数据集 test_datagen = ImageDataGenerator(rescale=1./255) test_data = test_datagen.flow_from_directory( 'test', target_size=IMG_SIZE, batch_size=BATCH_SIZE, class_mode='categorical' ) # 在测试集上评估模型 test_loss, test_acc = model.evaluate(test_data) print('Test accuracy:', test_acc)必要时调整模型再进行训练:# 设置训练参数 EPOCHS = 50 STEPS_PER_EPOCH = len(train_data) VALIDATION_STEPS = len(valid_data) # 开始训练模型 history = model.fit( train_data, epochs=EPOCHS, steps_per_epoch=STEPS_PER_EPOCH, validation_data=valid_data, validation_steps=VALIDATION_STEPS )
-
目的与要求实验目的:学习 PyTorch 基础: 通过实现一个简单的卷积神经网络,学习如何使用PyTorch 构建深度学习模型。熟悉卷积神经网络结构: 了解卷积层、池化层、全连接层等卷积神经网络的基本组件,以及它们在图像分类任务中的作用。实践深度学习训练循环: 通过编写训练和测试循环,理解深度学习模型的训练过程,包括前向传播、反向传播、损失计算等步骤。掌握 PyTorch 工具: 学会使用 PyTorch 提供的工具和模块,例如优化器(Optimizer)和学习率调度器(Learning Rate Scheduler)。实验结果分析: 通过测试模型并分析测试结果,评估模型在手写数字识别任务上的性能。2、 实验要求:使用 PyTorch 实现一个卷积神经网络(CNN),并使用 MNIST 数据集进行训练和测试,从而实现手写数字识别实验原理1、卷积神经网络 (CNN):一类专门设计用于处理网格状数据(如图像)的深度学习模型。它包含卷积层、池化层和全连接层。卷积层能够有效地提取图像中的特征,而池化层则用于降采样,减小计算量。这有助于CNN学习图像中的局部模式和整体结构。2、MNIST 数据集:包含手写数字图像,每个图像都是28x28像素的灰度图。它是一个常用的基准数据集,用于测试图像分类算法的性能。每个图像都带有相应的标签,表示图像中的数字。3、激活函数 (Activation Function): 在神经网络中,激活函数引入非线性性质,允许网络学习复杂的映射关系。在本实验中,Rectified Linear Unit(ReLU)是主要的激活函数,用于在卷积层和全连接层之间引入非线性。4、损失函数 (Loss Function): 用于度量模型输出与真实标签之间的差异。5、优化器 (Optimizer): 用于更新模型参数以最小化损失。6、学习率调度器 (Learning Rate Scheduler): 用于动态调整学习率,帮助模型更好地收敛。7、训练循环: 包括前向传播、反向传播和参数更新。在训练期间,模型通过多次迭代学习如何准确地预测手写数字的标签。8、测试循环: 在训练结束后,模型通过测试集进行评估。测试集上的性能指标,如损失和准确率,可用于评估模型的泛化能力。使用环境PyTorchTorchvisionPyCharm2022.3.2四、实验结果及分析 Test set: Average Loss :0.0473 Accuracy :9851/10000 99%五、附录未修改 batch_size和learning_rate的代码:from __future__ import print_functionimport argparseimport torchimport torch.nn as nnimport torch.nn.functional as Fimport torch.optim as optimfrom torchvision import datasets, transformsfrom torch.optim.lr_scheduler import StepLR# 定义神经网络模型class Net(nn.Module): def __init__(self): super(Net, self).__init__() # 卷积层 self.conv1 = nn.Conv2d(1, 32, 3, 1) self.conv2 = nn.Conv2d(32, 64, 3, 1) # 丢弃层 self.dropout1 = nn.Dropout(0.25) self.dropout2 = nn.Dropout(0.5) # 全连接层 self.fc1 = nn.Linear(9216, 128) self.fc2 = nn.Linear(128, 10) def forward(self, x): # 卷积和激活层 x = self.conv1(x) x = F.relu(x) x = self.conv2(x) x = F.relu(x) # 最大池化层 x = F.max_pool2d(x, 2) x = self.dropout1(x) # 展平数据以供全连接层使用 x = torch.flatten(x, 1) # 全连接层,包括激活和丢弃 x = self.fc1(x) x = F.relu(x) x = self.dropout2(x) x = self.fc2(x) # 输出层使用对数softmax激活 output = F.log_softmax(x, dim=1) return output# 训练模型的函数def train(args, model, device, train_loader, optimizer, epoch): model.train() for batch_idx, (data, target) in enumerate(train_loader): data, target = data.to(device), target.to(device) optimizer.zero_grad() output = model(data) # 负对数似然损失 loss = F.nll_loss(output, target) loss.backward() optimizer.step() if batch_idx % args.log_interval == 0: print('训练 Epoch: {} [{}/{} ({:.0f}%)]\t损失: {:.6f}'.format( epoch, batch_idx * len(data), len(train_loader.dataset), 100. * batch_idx / len(train_loader), loss.item())) if args.dry_run: break# 测试模型的函数def test(model, device, test_loader): model.eval() test_loss = 0 correct = 0 with torch.no_grad(): for data, target in test_loader: data, target = data.to(device), target.to(device)
-
对卷积神经网络的研究可追溯至日本学者福岛邦彦(Kunihiko Fukushima)提出的neocognitron模型。在其1979 和1980年 发表的论文中,福岛仿造生物的视觉皮层(visual cortex)设计了以“neocognitron”命名的神经网络。neocognitron是一个具有深度结构的神经网络,并且是最早被提出的深度学习算法之一 ,其隐含层由S层(Simple-layer)和C层(Complex-layer)交替构成。其中S层单元在感受野(receptive field)内对图像特征进行提取,C层单元接收和响应不同感受野返回的相同特征 。neocognitron的S层-C层组合能够进行特征提取和筛选,部分实现了卷积神经网络中卷积层(convolution layer)和池化层(pooling layer)的功能,被认为是启发了卷积神经网络的开创性研究。第一个卷积神经网络是1987年由Alexander Waibel等提出的时间延迟网络(Time Delay Neural Network, TDNN)。TDNN是一个应用于语音识别问题的卷积神经网络,使用FFT预处理的语音信号作为输入,其隐含层由2个一维卷积核组成,以提取频率域上的平移不变特征 。由于在TDNN出现之前,人工智能领域在反向传播算法(Back-Propagation, BP)的研究中取得了突破性进展 ,因此TDNN得以使用BP框架内进行学习。在原作者的比较试验中,TDNN的表现超过了同等条件下的隐马尔可夫模型(Hidden Markov Model, HMM),而后者是二十世纪80年代语音识别的主流算法 。1988年,Wei Zhang提出了第一个二维卷积神经网络:平移不变人工神经网络(SIANN),并将其应用于检测医学影像。独立于Zhang (1988),Yann LeCun在1989年同样构建了应用于计算机视觉问题的卷积神经网络,即LeNet的最初版本 [5] 。LeNet包含两个卷积层,2个全连接层,共计6万个学习参数,规模远超TDNN和SIANN,且在结构上与现代的卷积神经网络十分接近 。LeCun (1989) [5] 对权重进行随机初始化后使用了随机梯度下降(Stochastic Gradient Descent, SGD)进行学习,这一策略被其后的深度学习研究所保留。此外,LeCun (1989)在论述其网络结构时首次使用了“卷积”一词,“卷积神经网络”也因此得名。LeCun (1989)的工作在1993年由贝尔实验室(AT&T Bell Laboratories)完成代码开发并被部署于NCR(National Cash Register Coporation)的支票读取系统 。但总体而言,由于数值计算能力有限、学习样本不足,加上同一时期以支持向量机(Support Vector Machine, SVM)为代表的核学习(kernel learning)方法的兴起,这一时期为各类图像处理问题设计的卷积神经网络停留在了研究阶段,应用端的推广较少。在LeNet的基础上,1998年Yann LeCun及其合作者构建了更加完备的卷积神经网络LeNet-5并在手写数字的识别问题中取得成功。LeNet-5沿用了LeCun (1989) 的学习策略并在原有设计中加入了池化层对输入特征进行筛选 [15] 。LeNet-5及其后产生的变体定义了现代卷积神经网络的基本结构,其构筑中交替出现的卷积层-池化层被认为能够提取输入图像的平移不变特征 [16] 。LeNet-5的成功使卷积神经网络的应用得到关注,微软在2003年使用卷积神经网络开发了光学字符读取(Optical Character Recognition, OCR)系统 。其它基于卷积神经网络的应用研究也得到展开,包括人像识别 、手势识别等。在2006年深度学习理论被提出后,卷积神经网络的表征学习能力得到了关注,并随着数值计算设备的更新得到发展 。自2012年的AlexNet 开始,得到GPU计算集群支持的复杂卷积神经网络多次成为ImageNet大规模视觉识别竞赛(ImageNet Large Scale Visual Recognition Challenge, ILSVRC) 的优胜算法,包括2013年的ZFNet 、2014年的VGGNet、GoogLeNet [24] 和2015年的ResNet 。
-
连接性卷积神经网络中卷积层间的连接被称为稀疏连接(sparse connection),即相比于前馈神经网络中的全连接,卷积层中的神经元仅与其相邻层的部分,而非全部神经元相连。具体地,卷积神经网络第l层特征图中的任意一个像素(神经元)都仅是l-1层中卷积核所定义的感受野内的像素的线性组合。卷积神经网络的稀疏连接具有正则化的效果,提高了网络结构的稳定性和泛化能力,避免过度拟合,同时,稀疏连接减少了权重参数的总量,有利于神经网络的快速学习,和在计算时减少内存开销。卷积神经网络中特征图同一通道内的所有像素共享一组卷积核权重系数,该性质被称为权重共享(weight sharing)。权重共享将卷积神经网络和其它包含局部连接结构的神经网络相区分,后者虽然使用了稀疏连接,但不同连接的权重是不同的。权重共享和稀疏连接一样,减少了卷积神经网络的参数总量,并具有正则化的效果。在全连接网络视角下,卷积神经网络的稀疏连接和权重共享可以被视为两个无限强的先验(pirior),即一个隐含层神经元在其感受野之外的所有权重系数恒为0(但感受野可以在空间移动);且在一个通道内,所有神经元的权重系数相同。表征学习作为深度学习的代表算法,卷积神经网络具有表征学习能力,即能够从输入信息中提取高阶特征。具体地,卷积神经网络中的卷积层和池化层能够响应输入特征的平移不变性,即能够识别位于空间不同位置的相近特征。能够提取平移不变特征是卷积神经网络在计算机视觉问题中得到应用的原因之一。平移不变特征在卷积神经网络内部的传递具有一般性的规律。在图像处理问题中,卷积神经网络前部的特征图通常会提取图像中有代表性的高频和低频特征;随后经过池化的特征图会显示出输入图像的边缘特征(aliasing artifacts);当信号进入更深的隐含层后,其更一般、更完整的特征会被提取。反卷积和反池化(un-pooling)可以对卷积神经网络的隐含层特征进行可视化 。一个成功的卷积神经网络中,传递至全连接层的特征图会包含与学习目标相同的特征,例如图像分类中各个类别的完整图像。生物学相似性卷积神经网络从猫视觉皮层电生理研究中获得启发,通过仿造生物的视知觉机制来构建模型。卷积网络中卷积核的设定就对应着视觉神经系统中视觉皮层对视觉空间的组织。视觉皮层细胞从视网膜上的光感受器接收信号,但单个视觉皮层细胞不会接收光感受器的所有信号,而是只接受其所支配的刺激区域,即感受野内的信号。只有感受野内的刺激才能够激活该神经元。多个视觉皮层细胞通过系统地将感受野叠加,完整接收视网膜传递的信号并建立视觉空间。卷积神经网络中基于感受野设定的稀疏连接有明确对应的神经科学过程——视觉神经系统中视觉皮层(visual cortex)对视觉空间(visual space)的组织 。视觉皮层细胞从视网膜上的光感受器接收信号,但单个视觉皮层细胞不会接收光感受器的所有信号,而是只接受其所支配的刺激区域,即感受野内的信号。只有感受野内的刺激才能够激活该神经元。多个视觉皮层细胞通过系统地将感受野叠加完整接收视网膜传递的信号并建立视觉空间 。事实上机器学习的“感受野”一词即来自其对应的生物学研究 。卷积神经网络中的权重共享的性质在生物学中没有明确证据,但在对与大脑学习密切相关的目标传播(target-propagation, TP)和反馈调整(feedback alignment, FA) 机制的研究中,权重共享提升了学习效果 。
-
论文:Densely Connected Convolutional Networks 论文链接:https://arxiv.org/pdf/1608.06993.pdfDenseNet网络的背景 DenseNet模型的基本思路与ResNet一致,但它建立的是前面所有层与后面层的密集连接(即相加变连结),它的名称也是由此而来。 DenseNet的另一大特色是通过特征在通道上的连接来实现特征重用。这些特点让DenseNet的参数量和计算成本都变得更少了(相对ResNet),效果也更好了。 ResNet解决了深层网络梯度消失问题,它是从深度方向研究的。宽度方向是GoogleNet的Inception。而DenseNet是从feature入手,通过对feature的极致利用能达到更好的效果和减少参数。 DenseNet斩获CVPR 2017的最佳论文奖。随着CNN网络层数的不断增加,gradient vanishing和model degradation问题出现在了人们面前,BatchNormalization的广泛使用在一定程度上缓解了gradient vanishing的问题,而ResNet和Highway Networks通过构造恒等映射设置旁路,进一步减少了gradient vanishing和model degradation的产生.Fractal Nets通过将不同深度的网络并行化,在获得了深度的同时保证了梯度的传播,随机深度网络通过对网络中一些层进行失活,既证明了ResNet深度的冗余性,又缓解了上述问题的产生. 虽然这些不同的网络框架通过不同的实现加深的网络层数,但是他们都包含了相同的核心思想,既将feature map进行跨网络层的连接.DenseNet作为另一种拥有较深层数的卷积神经网络的优缺点1、优点(1)相比ResNet拥有更少的参数数量参数减少,计算效率更高,效果更好(相较于其他网络)(2)传播与预测都保留了低层次的特征在以前的卷积神经网络中,最终输出只会利用最高层次的特征。而DenseNet实现特征重用,同时利用低层次和高层次的特征。(3)旁路加强了特征的重用,导致直接的监督因为每一层都建立起了与前面层的连接,误差信号可以很容易地传播到较早的层,所以较早的层可以从最终分类层获得直接的监督。(4)网络更易于训练,并具有一定的正则化效果(5)缓解了梯度消失/爆炸和网络退化的问题特征重用实现了梯度的提前传播,也至少保留了前面网络的能力,不至于变弱(最少也是个恒等变换)2、缺点由于需要进行多次Concatnate操作,数据需要被复制多次,显存容易增加得很快,需要一定的显存优化技术。因此在训练过程中,训练的时间要比Resnet作为backbone长很多。所以相对而言,ResNet更常用。
-
问题描述:参考Atlas 200 DK开发者套件文档搭建环境https://www.hiascend.com/document/detail/zh/Atlas200DKDeveloperKit/1013/environment/atlased_04_0018.html以Atlas 200DK为运行环境,运行.om模型进行目标检测时,在python3.7.5中 import acl 遇到:ubuntu版本:ubuntu-18.04.4-server-arm64驱动版本:A200dk-npu-driver-21.0.4-ubuntu18.04-aarch64-minircCANN版本:Ascend-cann-nnrt_6.0.0.alpha003_linux-aarch64
-
想请教一下,数据集是怎么使用的,他和竞赛有什么关系?
-
《Diffusion Models Beat GANs on Image Synthesis》的论文,证明了扩散模型在图像合成上优于目前最先进的生成模型的图像质量。论文地址:https://openreview.net/pdf?id=AAWuCvzaVt过去十年在计算机视觉和机器学习方面的突破是GANs(生成式对抗网络)的发明——这种方法引入了超越数据中已经存在的内容的可能性,是一个全新领域的敲门砖,现在称为生成式建模。然而,在经历了一个蓬勃发展的阶段后,GANs开始面临平台期,其中大多数方法都在努力解决对抗性方法面临的一些瓶颈。GANs的一些主要瓶颈是:图像生成缺乏多样性模式崩溃多模态分布问题学习训练时间过长由于问题表述的对抗性,不容易训练还有另一系列基于似然的方法(例如,马尔可夫随机场),它已经存在了相当长的一段时间,但由于对每个问题的实现和制定都很复杂,因此未能获得重大影响。其中一种方法是“扩散模型”——一种从气体扩散的物理过程中获得灵感的方法,并试图在多个科学领域对同一现象进行建模。然而,在图像生成领域,它们的应用最近变得越来越明显。主要是因为我们现在有更多的计算能力来测试复杂的算法,这些算法在过去是不可实现的。一个标准扩散模型有两个主要的过程域:正向扩散和反向扩散。在前向扩散阶段,图像被逐渐引入的噪声污染,直到图像成为完全随机噪声。在反向过程中,利用一系列马尔可夫链在每个时间步逐步去除预测噪声,从而从高斯噪声中恢复数据。扩散模型最近在图像生成任务中表现出了显著的性能,并在图像合成等任务上取代了GANs的性能。这些模型还能够产生更多样化的图像,并被证明不会受到模式崩溃的影响。这是由于扩散模型保留数据语义结构的能力。然而,这些模型的计算要求很高,训练需要非常大的内存,这使得大多数研究人员甚至无法尝试这种方法。这是因为所有的马尔可夫状态都需要一直在内存中进行预测,这意味着大型深度网络的多个实例一直在内存中。此外,这些方法的训练时间也变得太高,因为这些模型往往陷入图像数据中细粒度的、难以察觉的复杂性。然而,需要注意的是,这种细粒度图像生成也是扩散模型的主要优势之一,因此,使用它们是一种矛盾。另一个来自NLP领域的非常著名的方法系列是transformer。他们在语言建模和构建对话AI工具方面非常成功。在视觉应用中,transformer表现出泛化和自适应的优势,使其适合通用学习。它们比其他技术更好地捕捉文本甚至图像中的语义结构。然而,与其他方法相比,transformer需要大量的数据,并且在许多视觉领域也面临着性能方面的平台。
-
1.常见NLP任务信息抽取:从给定文本中抽取重要的信息,比如时间、地点、人物、事件、原因、结果、数字、日期、货币、专有名词等等。通俗说来,就是要了解谁在什么时候、什么原因、对谁、做了什么事、有什么结果。文本生成:机器像人一样使用自然语言进行表达和写作。依据输入的不同,文本生成技术主要包括数据到文本生成和文本到文本生成。数据到文本生成是指将包含键值对的数据转化为自然语言文本;文本到文本生成对输入文本进行转化和处理从而产生新的文本问答系统:对一个自然语言表达的问题,由问答系统给出一个精准的答案。需要对自然语言查询语句进行某种程度的语义分析,包括实体链接、关系识别,形成逻辑表达式,然后到知识库中查找可能的候选答案并通过一个排序机制找出最佳的答案。对话系统:系统通过一系列的对话,跟用户进行聊天、回答、完成某一项任务。涉及到用户意图理解、通用聊天引擎、问答引擎、对话管理等技术。此外,为了体现上下文相关,要具备多轮对话能力。语音识别和生成:语音识别是将输入计算机的语音符号识别转换成书面语表示。语音生成又称文语转换、语音合成,它是指将书面文本自动转换成对应的语音表征。信息过滤:通过计算机系统自动识别和过滤符合特定条件的文档信息。通常指网络有害信息的自动识别和过滤,主要用于信息安全和防护,网络内容管理等。舆情分析:是指收集和处理海量信息,自动化地对网络舆情进行分析,以实现及时应对网络舆情的目的。信息检索:对大规模的文档进行索引。可简单对文档中的词汇,赋之以不同的权重来建立索引,也可建立更加深层的索引。在查询的时候,对输入的查询表达式比如一个检索词或者一个句子进行分析,然后在索引里面查找匹配的候选文档,再根据一个排序机制把候选文档排序,最后输出排序得分最高的文档。机器翻译:把输入的源语言文本通过自动翻译获得另外一种语言的文本。机器翻译从最早的基于规则的方法到二十年前的基于统计的方法,再到今天的基于神经网络(编码-解码)的方法,逐渐形成了一套比较严谨的方法体系。文本挖掘:包括文本聚类、分类、情感分析以及对挖掘的信息和知识的可视化、交互式的表达界面。目前主流的技术都是基于统计机器学习的。2.如何将业务问题抽象为已得到很好解决的典型问题2.1 明确业务的输入与输出令输入文本用X表示,输出标签用Y表示,则有以下粗略的分类:2.1.1 如果Y表示某一类的概率,或者是一个定长向量,向量中的每个维度是其属于各个类的概率,且概率之和为1,则可抽象为文本多分类问题。a.一般X只有一段文本。如下所示 i.如情感分析等任务。房间 太 小 。 其他 的 都 一般 0b.如果X是2段文本(X1,X2),则是可以抽象为句对分类问题。如下所示 i:如NLI等任务。大家觉得她好看吗 大家觉得跑男好看吗? 0c.如果的每个类别的概率相互独立,即各类概率之和不为1,可抽象为文本多标签分类问题。如下所示 i:如用户评论分类、黄反识别等任务。互联网创业就如选秀 需求与服务就是价值 0 1d. 如果X有多段非文本特征输入,如整型、浮点型类型特征。则可抽象为混合特征的分类问题。如下所示 i:如CTR预估等任务。 CTR预估*CTR预估是推荐中最核心的算法之一。 相关概念: CTR预估:对每次广告的点击情况做出预测,预测用户是点击还是不点击。 CTR预估的影响因素:比如历史点击率、广告位置、时间、用户等 CTR预估相关介绍 推荐算法之4——CTR预估模型2.1.2 如果X是2段文本(X1,X2),Y表示二者的相似度,可抽象为文本匹配问题。如下所示喜欢 打篮球 的 男生 喜欢 什么样 的 女生 爱 打篮球 的 男生 喜欢 什么样 的 女生 1a.如语义相似度、相似问题匹配等任务。b.文本聚类的问题可以通过文本相似度问题进行处理。2.1.3 如果X有一段文本,Y是一个与X等长的序列,可抽象为序列标注问题。如下所示海 钓 比 赛 地 点 在 厦 门 与 金 门 之 间 的 海 域 。 O O O O O O O B-LOC I-LOC O B-LOC I-LOC O O O O O Oa.如分词、POS、NER、词槽挖掘等任务。2.1.4 如果X有一段文本,Y是一个不定长的文本,可抽象为文本生成问题。如下所示Rachel Pike : The science behind a climate headline Khoa học đằng sau một tiêu đề về khí hậua.如机器翻译、文本摘要、标题生成等任务。2.1.5.如果X为一段文本,Y表示文本X作为正常语句出现的概率或者混淆度,则属于语言模型任务。如下所示<s> but some analysts remain sour on the company but some analysts remain sour on the company <e>a.语言模型任务的子问题是基于上(下)文X预测下(上)一个词出现的概率Y,可以理解为一种特殊的文本分类。2.1.6如果X是2段文本(X1,X2),分别表示正文篇章和问题,Y是篇章中的一小段文本,表示对应问题的答案,则可抽象为阅读理解问题。{ "data": [{ "title": "", "paragraphs": [{ "context": "爬行垫根据中间材料的不同可以分为:XPE爬行垫、EPE爬行垫、EVA爬行垫、PVC爬行垫;其中XPE爬行垫、EPE爬行垫都属于PE材料加保鲜膜复合而成,都是无异味的环保材料,但是XPE爬行垫是品质较好的爬行垫,韩国进口爬行垫都是这种爬行垫,而EPE爬行垫是国内厂家为了减低成本,使用EPE(珍珠棉)作为原料生产的一款爬行垫,该材料弹性差,易碎,开孔发泡防水性弱。EVA爬行垫、PVC爬行垫是用EVA或PVC作为原材料与保鲜膜复合的而成的爬行垫,或者把图案转印在原材料上,这两款爬行垫通常有异味,如果是图案转印的爬行垫,油墨外露容易脱落。当时我儿子爬的时候,我们也买了垫子,但是始终有味。最后就没用了,铺的就的薄毯子让他爬。您好,爬行垫一般色彩鲜艳,能吸引宝宝的注意力,当宝宝刚会爬的时候,趴在上面玩,相对比较安全,不存在从床上摔下来的危险。对宝宝的爬行还是很有好处的。还有就是妈妈选择爬行垫时可以选择无害的PE棉,既防潮又隔冷隔热。外有要有一层塑料膜,能隔绝液体进入垫子内部,而且方便清洗。宝宝每次爬行,一定要记得把宝宝的手擦干净。", "qas": [{ "answers": [{ "text": "XPE", "answer_start": 17 }], "id": "DR-single-pre_and_next_paras-181574", "question": "爬行垫什么材质的好" }] }, ..., ] }] }2.1.7 如果Y是以上多种任务的组合,则可以抽象为多标签学习、多任务学习任务。a.如实体关系抽取任务,实体抽取本属于序列标注、关系抽取本属于文本多分类。2.2抽象与拆分任务取舍经验2.2.1优先考虑简单的任务,由易到难循序渐进:a.文本分类、文本匹配、序列标注、文本生成、阅读理解、多任务学习、强化学习、对抗学习等。2.2.2 复杂任务可拆分、化简成简单的子任务a.如实体关系抽取任务,可以拆分为实体识别+关系抽取的pipline进行实现。b.如文本纠错任务,可以拆分出语言模型、统计机器翻译等多种不同子任务构造复杂的pipline进行实现。c.如排序任务,输入X为多段文本,输出Y为每段文本的排序位置,可化简成文本分类问题、文本匹配问题进行处理。2.2.3 有监督学习任务优先于无监督学习任务a.因为有监督学习更可控,更易于应用最前沿的研究成果。文心目前只覆盖有监督、自监督任务。b.比如文本关键词抽取,可以有TFIDF之类的无监督解法,但效果控制较困难,不如转换为文本分类问题。2.2.4 能应用深度学习的任务优于不利用深度学习的任务a.因为深度学习算法效果一般更好,而且可以应用到最前沿的预训练模型。文心目前只采用深度学习算法。b.如果文本聚类,可以有LDA之类的解法,但效果一般不如基于深度学习的语义相似度的文本聚类。3. 明确业务目标与限制条件3.1典型业务目标与限制条件1.预测部署性能a.典型指标:qps 性能指标:QPS、TPS、系统吞吐量理解2.模型效果a.以文本分类为例,典型指标:精确率、准确率、召回率、F1值b.该评估指标应该在训练开始之前基本确定,否则很容易优化偏。3.硬件采购成本a.典型指标:钱b.GPU远贵于CPU,V100贵于P40。4.训练时间成本(GPU,卡,调参,GPU利用率)a.典型指标:每一轮训练所需要的时间。5.数据大小限制a.由于标注成本较高,很多时候是数据量很少又希望有很好的效果。6.开发迭代成本a.搭建环境成本b.迭代效率:往往是最消耗时间的部分。3.2 可供选择的方案选择平台版还是工具版选择GPU还是CPU训练,哪一款硬件,单机还是多机,单卡还是多卡,本地还是集群选择怎样的预制网络是否需要预训练模型选择哪一版本的预训练模型训练数据要多少batch_size、train_log_step、eval_step、save_model_step选多少4.根据业务目标与限制条件选择合适的方案4.1预测部署性能如果要求qps>1000a.不适合直接部署ERNIE预训练模型。b.但可尝试蒸馏策略,模型效果会存在一定损失。如果要求qps>100a.如果预算允许使用GPU,可尝试直接部署ERNIE相关预训练模型,推荐尝试ERNIE-tiny系列模型。b.如果预算只允许使用CPU,可尝试CPU集群部署ERNIE相关预训练模型。3.如果对部署性能要求不高,可随意尝试各种预训练模型。4.性能细节请参考:模型预测与部署——预测性能4.2 模型效果1.一般来说,复杂的网络优于简单的网络,多样的特征优于单一的特征,有预训练模型的效果优于无预训练模型。a.从模型复杂度来看,LSTM、GRU、CNN、BOW的复杂度与效果依次递减,速度依次提升。2.一般来说,在预训练模型中,large优于base优于tiny,新版本的模型优于旧版本的模型,针对具体任务的预训练模型优于通用版预训练模型。3.一般来说,在不欠拟合的情况下,训练数据越多模型效果越好,标注数据的质量越好效果越好。标注数据的质量优于数据的数量。4.不同任务适合的网络结构并不相同,具体任务具体分析。4.3硬件采购成本1.GPU远贵于CPU,常用训练用GPU型号为V100、P40、K40,价格依次递减。2.具体成本可参考百度云服务器-BCC-价格计算器3.如果缺少训练资源,可通过文心平台版的免费共享队列进行训练,资源紧张,且用且珍惜。4.4训练时间成本1.GPU还是CPUa.对于非ERNIE等复杂网络的模型,CPU的训练速度一般也能接受。 如果训练语料过多,数千万条以上,则建议采用CPU集群进行训练。 b.对于ERNIE模型,尽量采用GPU训练,CPU太慢,训练不起来。2.怎么用好GPU a.GPU并行训练能提升训练速度,建议优先把一个节点(trainer)的卡数用完,再考虑多机训练。因为单机多卡的GPU利用率更高,更快。而多机训练数据通信时间成本较高,时间更慢。 b.大原则:GPU利用率越高训练越快。 c.还有一点需要注意,多卡训练时是将不同的数据文件送给不同的卡,所以数据文件的个数要大于卡的个数。数据文件建议拆分细一些,这可以提升数据读取的速度。 d.熟练的同学可以尝试GPU多进程单机多卡训练、混合精度训练等方法,提升训练速度。3.train_log_step、eval_step、save_model_stepa.分别表示每多少步打印训练日志、每多少步评估一次验证集、每多少步保存一次模型。 b.设置不当也会拖慢训练时间 c.一般建议三者依次放大十倍,如:10、100、10004.batch_sizea.设置过小容易收敛慢,设置过大容易超过显存极限直接挂掉 b.如果使用ERNIE,batch_size建议小一些,使用large版本建议更小一些,如果输入语句并不是很长可以适当增加batch_size。 c.如果不使用ERNIE,可以大一些。 d.建议使用默认配置,如果想优化可以采用二分查找4.5 数据大小限制1.一般建议标注语料越多越好。2.非ERNIE模型一般需要几万至几百万条数据能收敛到较好的效果。3.ERNIE模型一般需要几千至几万条数据即可收敛到较好效果。a.一般不用ERNIE训练数百万条以上的数据,因为这会极大延长训练时间,增大资源消耗,而对效果的提升并不明显。自己有足够GPU资源的用户除外。 b.对于基线模型,建议在几万条数据上验证策略有效后再尝试增加数据量。4.如果用ERNIE模型,最少需要多少样本才能取得效果a.对于文本分类与序列标注,一般来说每个标签覆盖的样本数至少要超过200条才能有一定的效果。也就是说如果要进行50类多分类,就总共至少需要1万条样本。一般分类的类别越多任务越复杂。4.6开发迭代成本1.搭建环境成本a.如果只想训练基线模型验证效果,可以考虑使用文心平台版,免去搭建环境的成本。 b.如果需要不断调试、迭代优化模型,而由于平台版集群资源紧张造成迭代周期过长,可以尝试使用工具版。 i:这会付出搭建环境的成本,但长痛不如短痛。2.迭代效率a.使用工具版本地调试成功后再上集群训练能极大提升迭代效率。 b.使用预训练模型能提升迭代效率。 c.基线模型,建议在几万条数据上验证策略,提升迭代效率。验证有效后再尝试增加数据量5. 如何高效训练NLP任务汇总诸多NLP算法同学的建议,我们把高效训练NLP任务的基本流程总结如下:1.分析业务背景、明确任务输入与输出,将其抽象为已得到很好解决的NLP典型任务。 a.对于复杂任务,需要将其拆分成比较简单的子任务 b.文心已覆盖绝大部分NLP典型任务,可参考文心ERNIE工具版-支持任务。2.准备好几千条格式规范的训练数据,快速实现一个NLP模型基线。 a.最快速的方法是通过文心ERNIE平台版或者工具版,采用预制网络和模型无代码训练一个模型基线。 b.本步骤只需要您知道最基本的机器学习概念,划分好训练集、验证集、测试集进行训练即可。 c.评估训练出模型的效果,看是否满足你的业务需求,如果不满足,可考虑进一步优化模型效果。3.优化模型效果: a.各优化手段按照投入产出比排序如下 i:进一步分析你的业务背景和需求,分析基线模型的不足,进行更细致的技术选型。 ii:采用工具版进行本地小数据调试,极大地提升迭代效率。 iii:基于预制网络进行调参。 iv:自定义组网并进行调参。 v:基于核心接口进行高度自定义开发。 vi:直接修改文心核心源码进行开发。 b.每一种优化手段都都可以申请vip服务进行支持。如何自我判断采用哪种文心开发方式 典型的训练方式:无代码训练(不调参),无代码训练(自主调参),自定义组网训练,高阶自定义训练。以上4类训练方式的开发自由度、上手难度、建模的风险、模型效果的上限依次递增,性价比依次递减。本地工具包的调试、迭代效率最高。6总结:需掌握知识6.1 无代码调参建议具备的相关知识1.明确以下概念:有监督学习、标签、特征、训练集、验证集、测试集、逻辑回归、过拟合、欠拟合、激活函数、损失函数、神经网络、学习率、正则化、epoch、batch_size、分词、统计词表。2.知道回归与分类的区别。3.知道如何通过收敛曲线判断过拟合与欠拟合。4.知道准确率、召回率、精确度、F1值、宏平均、微平均的概念与区别。5.知道为什么训练集、验证集、测试集要保证独立同分布。6.知道什么是神经网络.7.知道什么是迁移学习、什么是预训练模型、什么是finetune、迁移学习的优点是什么。6.2 自定义组网建议具备的相关知识1.前提是已经掌握无代码调参建议具备的相关知识2.明确以下概念:Sigmoid函数公式、softmax函数公式、交叉熵公式、前向传播、反向传播、SGD、Adam、词向量、embedding、dropout、BOW、CNN、RNN、GRU、LSTM、迁移学习、3.知道神经网络为什么具有非线性切分能力。4.知道NLP中一维CNN中的卷积核大小、卷积核的个数各指代什么,时序最大池化层如何操作。5.知道NLP中CNN与LSTM的区别,各擅长处理哪类文本问题。6.知道为什么BOW模型无法识别词语顺序关系。7.知道为什么会梯度爆炸,以及如何解决。参考书籍: a.ML特征工程和优化方法 b.周志华《机器学习》前3章 c.迁移学习常见问题 a.CNN常见问题 b.深度学习优化方法 c.花书《深度学习》6-10章 d.《基于深度学习的自然语言处理》整本项目参考链接:cid:link_2
-
模型的名称——“VGG”代表了牛津大学的Oxford Visual Geometry Group,该小组隶属于1985年成立的Robotics Research Group,该Group研究范围包括了机器学习到移动机器人。下面是一段来自网络对同年GoogLeNet和VGG的描述:“GoogLeNet和VGG的Classification模型从原理上并没有与传统的CNN模型有太大不同。大家所用的Pipeline也都是:训练时候:各种数据Augmentation(剪裁,不同大小,调亮度,饱和度,对比度,偏色),剪裁送入CNN模型,Softmax,Backprop。测试时候:尽量把测试数据又各种Augmenting(剪裁,不同大小),把测试数据各种Augmenting后在训练的不同模型上的结果再继续Averaging出最后的结果。”VGG发展历程VGG网络由牛津大学在2014年ImageNet挑战赛本地和分类追踪分别获得了第一名和第二名。研究卷积网络深度对其影响在大规模图像识别设置中的准确性,主要贡献是全面评估网络的深度,使用3*3卷积滤波器来提取特征。解决了Alexnet容易忽略小部分的特征。VGG的特点:小卷积核。作者将卷积核全部替换为3x3(极少用了1x1);小池化核。相比AlexNet的3x3的池化核,VGG全部为2x2的池化核;层数更深特征图更宽。基于前两点外,由于卷积核专注于扩大通道数、池化专注于缩小宽和高,使得模型架构上更深更宽的同时,计算量的增加放缓;全连接转卷积。网络测试阶段将训练阶段的三个全连接替换为三个卷积,测试重用训练时的参数,使得测试得到的全卷积网络因为没有全连接的限制,因而可以接收任意宽或高为的输入。图片数据输入彩色图像有RGB三个颜色通道,分别是红、绿、蓝三个通道,这三个通道的像素可以用二维数组来表示,其中像素值由0到255的数字来表示。比如一张160x60的彩色图片,可以用160*60*3的数组表示。卷积卷积过程是使用一个卷积核(如图中的Filter),在每层像素矩阵上不断按步长扫描下去,每次扫到的数值会和卷积核中对应位置的数进行相乘,然后相加求和,得到的值将会生成一个新的矩阵。卷积核相当于卷积操作中的一个过滤器,用于提取我们图像的特征,特征提取完后会得到一个特征图。卷积核的大小一般选择3x3和5x5,比较常用的是3x3,训练效果会更好。卷积核里面的每个值就是我们需要训练模型过程中的神经元参数(权重),开始会有随机的初始值,当训练网络时,网络会通过后向传播不断更新这些参数值,知道寻找到最佳的参数值。对于如何判断参数值的最佳,则是通过loss损失函数来评估。
-
前言大家好,我是“老表,你好hea”的团队核心,本赛题为两癌筛查的宫颈癌医学图像分类,主办方为了降低难度让大家都能参与其中,将主流的检测+分类,或者是分割+分类,降为分类任务,赛题数据的分布特别不均衡。数据分析小知识:病理医生同通常会根据细胞的核浆比来判断鳞状上皮细胞是否癌变。高级别的是鳞癌特点是角化(通俗来说就是形状像是长了角)HSIL 高核浆比,不规则核膜LSIL 低核浆比 双核,多核,典型细胞质挖空。数据增强由于数据的gap非常大,所以一些看似常用的涨点小技巧,这里大部分统统失效。 我们观察了线下的混淆矩阵和单类acc,包括测试图像,发现scc和nilm这两类分的很准,但是hsil和lsil存在十分严重的混淆,所以我们尝试了mixup和labelsmooth。线下有涨点,但是线上会降。 模型训练模型参数配置我们一开始是用一个非常小的学习率微调,但是这样很容易陷入过拟合,所以我们采样adamW+coswarmuprestart 的配置,热重启帮助模型逃离局部最小值。而模型前期应该多看不同的样本,在后期快收敛的时候减小学习率,帮助模型更好的收敛。正则化手段也很重要,weight_decay通常会使用一个5e-4 ,这里用到了5e-2,5e-3。 这部分知识蒸馏,作为后续落地的大样本数据迭代训练,小模型线上使用。 受到数据的限制,这里的大模型并没有得到很好的精度。 指标模型结论总结感谢主办方的诚挚邀请,作为一名医疗图像的算法工程师,深知医疗落地的难处。竞赛小tips:多做实验多调参有什么新的idea要尽快实验不到最后一刻不要放弃。最后十分感谢广州市科学技术局、金域医学以及华为云,以及幕后辛勤付出的工作人员!
-
卷积神经网络表征可视化研究综述(3)人工智能技术与咨询源自:自动化学报 作者:司念文 张文林 屈丹 罗向阳 常禾雨 牛铜3. 可视化效果的评估可视化效果评估用于度量不同方法的解释效果, 指导用户针对特定任务选择合适的可视化方法. 具体来讲, 可从以下两个方面对可视化效果进行评估: 有效性和鲁棒性.3.1 有效性 3.1.1 定性评估定性评估方法在表征可视化研究的早期被经常使用, 依靠人的视觉感观来评价解释结果是否符合人的认知. 由于定性评估具有简单直观、便于理解等优点, 至今仍广泛使用. 常用的定性度量标准有以下3个:1、视觉连贯性. 热力图需要关注感兴趣的目标区域, 忽略其他不相关区域. 在视觉连贯性标准下, 热力图中突出的区域对感兴趣目标的覆盖越全面、冗余部分越少, 表明可视化效果越好.2、视觉可分辨性. 热力图需要与预测结果中的不同类别相对应, 这对于含有多个不同类别目标的图像来说至关重要. 例如, 在同时含有“Dog”和“Cat”的图像中, “Dog”的热力图应该聚焦与之对应的图像区域, 而尽量去除与“Cat”相关的区域. 视觉可分辨性对应于可视化方法的类别区分性特点, 用于评估热力图能否针对特定类别进行可视化, 以定位仅与该类别其相关的区域和特征.3、多目标可视化. 当多个同一类别的目标同时出现在图像中时, 可视化方法需要同时定位多个目标, 而没有遗漏其中的某个目标.此外, 解释结果的客观性也应作为一种评价可视化方法有效性的标准, 即解释结果是否真实的反映了模型的决策依据, 而非按照“预期”寻找到了人类所希望的决策依据. 例如, 文献[78]的实验表明, 分类器做出的决策可能依据目标周围的环境因素, 而目标自身却不是主导因素. 该情形下, 解释方法只能对分类器的分类依据如实解释, 而非按照人的期望去定位目标主体的某些特征. 文献[84]的研究同样验证了这一点, 若分类器从数据集中学习到“女性面部涂口红, 男性面部不涂口红” 这种带有一定“偏见”的事实, 导致分类器面对“涂有口红”的男性图像时, 仍将其判定为“未涂口红”. 此时, 尽管分类器结果错误, 但解释方法应当遵循分类器的决策依据, 定位于男性面部的其他特征, 将其作为判定为“男性”, 进而“未涂口红”的依据. 而非像人所认为的那样, 直接对该图像的嘴唇位置进行定位, 这样的解释结果与分类结果将出现明显不一致的现象, 无法客观地解释分类器的决策依据.尽管解释的客观性问题在相关文献中较少被提及, 但也应引起注意. 只有让解释方法客观、真实地反映模型的决策依据, 才能使人真正理解并诊断其存在的问题, 进而改进与优化. 3.1.2 定量评估定量评估方法按照某种得分规则, 计算数据集上所有图像的可视化结果的平均得分, 从而定量比较各方法的优劣. 这里介绍3种典型的定量评估方法.1)弱监督目标定位. 使用目标定位任务的指标来评价可视化方法的目标定位效果. 具体方法为: 按照设定的阈值处理热力图以生成边框, 然后和真实边框进行比较, 计算交并比(Intersection over union, IoU). 对于某个定位结果, IoU > 0.5表示成功定位该目标, 以此在整个数据集上计算定位准确率. 该方法多用于评价CAM这类目标区分性较好、具有区域级可视化效果的方法.由于某些细粒度的可视化方法更易定位与预测最相关的像素, 而非寻求覆盖目标整体, 因此, 热力图对应的边框将会定位在目标的局部区域, 导致IoU值总体偏小. 此时, IoU值无法反映解释结果的优劣, 表明这种评价方法具有一定的局限性[66].2)指向游戏. 对于特定类别目标的热力图, 计算其最大激活值是否落入该类别的一个实例的边框中, 若落入则计入指向成功1次(#Hit), 否则不计入(#Miss), 以此计算每个目标类别的定位准确率Acc=#Hits/(#Hits+#Misses). 最终使用不同类别的平均准确度作为度量标准.指向游戏只考虑热力图的最大值点, 无需突出特定目标的全部区域, 仅需对热力图最少量的后处理, 这样对不同特点的热力图更公平. 其可能的缺点在于热力图自身的噪声问题, 最大值点可能来自极值噪声点, 导致评价结果产生误差.3)随机性检验. 文献[85]提出随机性检验方法, 用于评估可视化方法的适用范围和解释质量. 分为两种随机化检验: 一种是模型参数随机化, 使用随机化模型参数和预训练模型参数加载模型, 对比这两种情形下可视化方法的输出变化, 以检验该方法是否对模型参数敏感; 另一种是数据随机化, 对训练数据标签进行随机化打乱并重新训练模型, 与未打乱标签的可视化结果进行对比, 检验该方法是否对训练数据标签敏感.随机性检验已成为广泛认可的基准测试方法, 用于检验可视化方法是否能有效实现解释, 从而区分出对模型参数和训练数据标签并不敏感的可视化方法. 这种不敏感的可视化方法的真实作用相当于一个独立于模型的边缘检测器, 而非一个有效的解释器. 文献[85]通过该实验验证了VBP和Grad-CAM的有效性, 而GBP和Guided Grad-CAM等未通过检验.3.2 鲁棒性可视化方法的鲁棒性与CNN模型的鲁棒性不同. CNN模型的鲁棒性是指模型的预测结果不会因为对抗攻击而发生明显变化. 可视化方法的鲁棒性是指在面临对抗攻击时, 可视化方法仍能够提供准确有效的解释. 为此, 本文将对抗攻击分为以下2种情形: 1)攻击模型预测结果, 测试解释结果是否随之改变; 2)攻击解释结果, 测试其是否会被误导. 3.2.1 稳定性可视化方法的稳定性是指在模型预测受到对抗攻击时, 可视化方法的解释结果仍能保持稳定而不发生显著变化. 其中, 用于攻击模型预测结果的对抗样本xadv具有以下3个特点:1、对原图x施加扰动δ后得到对抗图像xadv, xadv相对于x的变化在视觉上难以感知, 满足||δ||=||xadv−x||≪ε(ε表示较小常数), 保证扰动后图像的视觉不变性;2、图像分类模型f对xadv的分类结果将会极大的改变, 即f(xadv)≠f(x);3、解释方法g产生的解释结果不会因为扰动而发生显著变化, 满足g(xadv)≈g(x).这里简单介绍一种经典的基于梯度的对抗攻击方法 (Fast gradient sign method, FGSM)[86], 可用于攻击模型的预测结果, 检验可视化方法的解释结果是否仍保持稳定. FGSM利用梯度上升方法, 通过优化输入图像来最大化损失函数, 使模型产生误分类的结果, 此时对应的输入图像即为对抗图像. FGSM方法形式化如下: (38) 式中, ∇xJ(θ,x,f(x))表示原图对应初始类别的梯度. sign(⋅⋅)表示符号函数, 根据梯度正负取+1或−1. ϵ表示扰动系数. FGSM的具体过程如图33所示. 其中, x表示输入图像, f(x)的结果为“Panda”, 置信度为57.7%. 扰动量大小ϵ = 0.07. 经过“Nematode”的扰动后, 扰动后的图像虽然在视觉上仍为“Panda”, 但却被分类为“Gibbon”, 且置信度高达99.3% 图 33 FGSM生成对抗样本的过程[87]Fig. 33 The process of generating adversarial example by FGSM[87]文献[63]和文献[66]使用FGSM对抗样本测试Grad-CAM生成的类激活图的稳定性, 如图34所示. 图34(a)和(b)分别表示原图和对抗图像, 原图分类结果为Boxer: 0.40, Tiger Cat: 0.18. 对抗图像的分类结果为Airliner: 0.9999. 在图34(c)和图34(d)中, 针对对抗图像, 使用Grad-CAM分别对Boxer (Dog)和Tiger Cat (Cat)进行定位时, 仍可以稳定地找出相关目标区域, 尽管此时这两种目标的分类置信度非常低. 这表明Grad-CAM产生的解释具有一定的稳定性, 可以抵抗针对模型预测结果的对抗攻击. 图 34 使用FGSM对抗样本测试Grad-CAM的稳定性[63] ((a)原图; (b)对抗图像; (c) Grad-CAM “Dog”; (d) Grad-CAM “Cat”)Fig. 34 Using FGSM adversarial example to test the stability of Grad-CAM[63] ((a) Original image; (b) Adversarial image; (c) Grad-CAM “Dog”; (d) Grad-CAM “Cat”)尽管这是一种测试可视化方法稳定性的方法, 但文献[88]认为, 当模型分类结果受到攻击时, 解释结果应当随着分类结果的改变而改变, 即解释方法应该尝试对新的分类结果进行解释, 而不应保持原来的解释不变, 这样才是一种忠实的解释方法. 由此可见, 这种稳定性测试方法的合理性仍存在一定疑问. 根据这种思路, 即可视化结果应当与新的误分类结果相对应, 文献[88]使用可视化方法来检测对抗样本, 从而找出其中误导分类结果的特征. 3.2.2 抗欺骗性可视化方法的抗欺骗性是指可视化方法自身受到对抗攻击时, 解释结果能够抵抗这种欺骗性的攻击, 仍能实现有效的解释.文献[89]指出, 可视化方法生成的显著图可以被人为设计的对抗样本操纵. 通过对输入施加视觉上难以察觉的扰动, 使网络的输出近似保持不变, 显著图却可以被任意改变. 也就是说, 这种对抗样本的攻击对象不是模型预测结果, 而是对预测结果的解释. 用于攻击可视化方法的解释结果的对抗样本xadv具有以下3个特点[90]:1、对原图x施加扰动δ后得到对抗图像xadv. xadv相对于x的变化在视觉上难以感知, 满足||δ||=||xadv−x||≪ε(ε表示较小常数), 保证扰动后图像的视觉不变性;2、图像分类模型f对xadv的分类结果基本不变, 即f(xadv)=f(x);3、解释方法g产生的解释结果g(xadv)将根据扰动的变化而变化g(x), 使之偏离原来的解释结果, 即满足g(xadv)≠g(x).一种典型的针对解释结果的攻击方法如图35所示, 图35中3个CNN表示同一个待解释的预训练CNN. 其中, Con表示原图x的分类置信度, Exp表示对应的解释. 使用均方误差损失作为约束, 使对抗图像的分类结果f(xadv)逼近原图的分类结果f(x), 而解释结果g(xadv)则逼近目标图的解释结果g(xtarget), 最终的目标函数是两者的加权和: 图 35 针对可视化结果的攻击Fig. 35 Attacks on the visualization results (39) 式中, xtarget表示用于诱导解释结果的目标图像, λ1和λ2为2部分的权重参数.攻击结果如图36所示, 图36(a)为目标图像xtarget, 图36(b)为原图x, 图36(c)为对抗图像xadv, 图36(e) ~ (g)分别表示对应的显著图. 由图36可以看出, g(xadv)被诱导偏向g(xtarget), 显示出一只鸟的轮廓. 与此同时, f(xadv)却基本保持不变.图 36 使用GAN生成的目标图像诱导对LRP显著图的攻击[82, 90]Fig. 36 Using the target image generated by GAN to induce an attack on the LRP saliency map[82, 90]对于使用随机初始化的原图生成的对抗图像图36(d), 同样可以使用上述攻击方法, 使其对应的显著图36(h)被诱导偏向目标图的解释图36(e), 尽管原图和对抗图像本身没有任务的语义信息. 最终, 分类器对对抗图像图36(d)的分类结果图36(b)相近, 解释结果与图36(e)相近, 但对抗图像图36(d)从视觉上看仅是一幅噪声图像. 可见, 显著图解释方法的抗欺骗能力的确存在漏洞, 而目前对于造成这一问题的原因分析仍在探索之中[90].上述分析显示, 在输入图像未被显著改变、分类结果也保持不变的情形下, 针对分类结果的解释却可以被明显改变而偏向任意目标的解释, 表明可视化方法存在被欺骗的可能. 文献[91]从另一种思路出发, 通过重新微调模型参数, 使微调后的模型的预测结果大致不变, 但解释结果却可以被任意引导. 文献[92]对自解释模型所提供的解释的鲁棒性进行了评估, 发现通过创建这样一些对抗性输入, 会使自解释模型提供错误的解释, 表明现有的自解释模型提供的解释鲁棒性并不好, 无法经受住对抗性攻击. 另一方面, 为了提升可视化方法的鲁棒性, 使其不易被误导, 文献[93]将显著图应用到模型训练中, 对训练集进行数据增强, 从而训练出归因鲁棒性较好的模型.登录中国人工智能培训chinaai查看更多信息
-
转人工智能技术与咨询源自:自动化学报 作者:司念文 张文林 屈丹 罗向阳 常禾雨 牛铜摘要近年来, 深度学习在图像分类、目标检测及场景识别等任务上取得了突破性进展, 这些任务多以卷积神经网络为基础搭建识别模型, 训练后的模型拥有优异的自动特征提取和预测性能, 能够为用户提供“输入–输出”形式的端到端解决方案. 然而, 由于分布式的特征编码和越来越复杂的模型结构, 人们始终无法准确理解卷积神经网络模型内部知识表示, 以及促使其做出特定决策的潜在原因. 另一方面, 卷积神经网络模型在一些高风险领域的应用, 也要求对其决策原因进行充分了解, 方能获取用户信任. 因此, 卷积神经网络的可解释性问题逐渐受到关注. 研究人员针对性地提出了一系列用于理解和解释卷积神经网络的方法, 包括事后解释方法和构建自解释的模型等, 这些方法各有侧重和优势, 从多方面对卷积神经网络进行特征分析和决策解释. 表征可视化是其中一种重要的卷积神经网络可解释性方法, 能够对卷积神经网络所学特征及输入–输出之间的相关关系以视觉的方式呈现, 从而快速获取对卷积神经网络内部特征和决策的理解, 具有过程简单和效果直观的特点. 对近年来卷积神经网络表征可视化领域的相关文献进行了综合性回顾, 按照以下几个方面组织内容: 表征可视化研究的提起、相关概念及内容、可视化方法、可视化的效果评估及可视化的应用, 重点关注了表征可视化方法的分类及算法的具体过程. 最后是总结和对该领域仍存在的难点及未来研究趋势进行了展望.。。。。。(接上)4. 可视化的应用4.1理解与解释模型表征可视化是理解CNN模型的一种重要途径,在图像领域应用广泛, 常见于图像分类、场景识别等任务的可视化解释. 本文第3节所述的表征可视化方法常用于对基于CNN的图像分类器的解释, 例如, AM方法用于可视化网络对输入图像的偏好, 从另一种角度揭示了网络对何种输入模式的依赖性较强. 注意力掩码能够告诉设计者网络的关注点, 这使其自身具有一定的可解释特性, 因此, 基于注意力掩码的可视化方法不仅可以验证注意力机制自身的有效性, 也常用于观察网络的训练效果.此外, 表征可视化方法也可以应用在其他类型的数据, 例如, CAM这类方法具有较好的类别区分性, 能够用来确定与特定输出类别相关联的图像区域, 可在视觉问答模型中帮助定位与问题最相关的图像区域. LRP方法在制定反向传播规则时依靠网络的权重与激活值, 而非特征图和通道等图像领域的概念. 因此, 它不仅适应于图像识别任务的解释, 还可以用于可视化机器翻译、语音识别[94]等任务中, 为这些领域的研究者提供了另一种理解模型的途径.4.2 诊断与优化网络在CNN学习效果诊断和结构优化上, 基于反卷积的可视化能够观察任意层的神经元的激活, 从而分析CNN的学习率、卷积核尺寸及步长等重要参数的设计是否达到最优. 文献[13]使用基于反卷积的可视化方法对AlexNet内部激活进行分析与改进, 进而提出了ZFNet, 获得了2013年ImageNet数据集图像分类任务冠军. 这种基于表征可视化的针对性分析和诊断方式, 很大程度上避免了盲目的参数调优. 文献[95]利用基于梯度的可视化方法指导单像素的对抗性扰动和对抗性分析, 帮助模型进行对抗性学习. 文献[88]则使用显著性方法检测对抗样本, 避免模型受到对抗攻击. 文献[72]使用Grad-CAM产生的类激活图来观察网络中间层表征, 分析对比不同结构设计对模型训练效果的影响. 此外, CAM这类方法还可用于提供自注意力, 优化CNN的结构设计. 例如, 文献[73]和文献[77]使用Grad-CAM生成自注意力的掩码作为图像蒙版, 用于去除图像中的非重要区域, 并将处理后的图像应用于下阶段的模型训练和推理. 文献[96]将CAM方法集成到图像转换模型的自注意力模块中, 引导模型关注源域与目标域之间的判别性区域, 从而提升图像转换模型对细节的关注能力.4.3 其他方面除了对CNN本身的理解与诊断, 可视化方法在其他任务上也有不断拓展与延伸, 例如CAM和Grad-CAM方法在弱监督目标定位任务上取得了非常好的效果. 文献[93]进一步探索了将显著性归因方法产生的显著图作为先验, 应用于弱监督的分割任务上. 在应用领域方面, 可视化方法能够提升对推荐系统决策结果的理解[97], 以及与知识图谱的结合来实现可解释的推荐算法[98]. 对于自动驾驶[99-100]以及智能医疗[101]等领域, 由于这些领域对于决策风险的承受能力较低, 可视化方法对这些领域应用的现实落地至关重要.5. 存在的难点及发展趋势5.1 难点分析与趋势展望近年来, CNN表征可视化相关研究越来越多, 研究者们提出了各种可视化方法, 极大推动了该领域的进展, 但仍存在一些难点问题有待解决, 本节对其进行了归纳, 并分析了未来可能的研究趋势.1)对于可视化方法, 仍存在噪声、稳定性、解释能力有限等问题.通过对多种可视化方法的实验比较发现, 多数可视化方法生成的热力图含有一定的噪声, 噪声产生的原因仍没有权威统一的解释. 同时, 面对不同图像时的可视化效果不尽相同, 有些图像可能直接导致可视化方法的失效, 而失效的原因尚不清楚, 仍有待进一步的探究. 此外, 面对复杂背景条件的图像、多目标场景、小目标图像等, 受限于模型本身在面对这些情形时的性能约束, 可视化方法的解释效果并不一定好. 未来可能的研究趋势是将可视化方法与其他解释方法的结合, 从不同侧面不同角度解释模型, 从而缓解单一可视化方法解释效果受限的问题.2)对于可视化效果的评估, 仍欠缺标准统一的评估方法.目前很难找到适用于大多数可视化方法的评估标准, 原因在于许多方法的目标并不相同, 也即每种方法对“可解释性”的理解并不相同, 导致各种可视化方法的解释结果差别较大. 同时, 很多可视化方法自身同样缺乏清晰明确的数学与逻辑机理, 导致结果难以量化比较. 如果可以从“可解释性”的概念出发, 统一数个可解释性的标准, 那么对于可视化结果的评估也就有了依据. 同时, 还可以根据可视化方法产生的热力图的特点进行分类评价, 每类热力图使用与之适应的评价标准, 提升其侧重解释某方面的能力.3)对于可视化的对象, 细粒度的识别模型难以可视化解释.可视化方法多应用于对图像分类、目标定位及场景识别等任务的解释, 能够实现对多目标图像中语义级目标的区分. 例如,“Cat”和“Dog”虽然同属动物, 但是在语义级上属于明显不同的两种动物. 而单独对于“Cat”这一动物, 实现的不同品种猫的细粒度图像分类, 受限于分类网络自身准确性, 可视化方法很难找到用于区分目标的细节特征, 此时的解释效果非常有限, 甚至对于不同的目标可视化效果始终相同. 与人们的视觉观察及解释能力相差较远. 这一问题或许可以通过视觉解释与语言解释相结合的途径来改善解释效果. 对可视化解释难以描述的细微之处, 辅助加以自然语言描述形式的解释(比如对猫的颜色、猫耳形状的描述), 能够实现更好的解释效果.4)对于可视化解释的完备性, 现有研究中的解释结果与预测结果无法相互印证.理论上看, 一个完备可靠的解释可以使用户从中推理并得到被解释的预测结果, 而目前的可视化方法仍不具备这一能力, 仅能从预测结果中得到解释结果, 而无法根据解释来推断出模型的预测, 即两者之间的相互印证关系没有被建立起来. 例如, 如果可视化方法给出了错误的解释, 但这一解释恰好符合用户根据预测结果推测的预期解释, 进而使得用户相信了解释的可靠性, 这将对其形成误导. 此时, 若能根据解释结果推断预测结果, 发现推断出的预测结果和实际预测结果不相符合, 则可通过进一步分析发现其中存在的问题, 从而提升用户对可视化方法的信任.5.2 学界近年来的关注近年来, 众多人工智能领域顶级会议关注人工智能和深度学习可解释问题, 其中许多涉及到表征可视化方面的前沿研究, 如[102]:1) IJCAI 2020 Tutorial on Trustworthiness of Interpretable Machine Learning;2) CVPR 2020 Tutorial on Interpretable Machine Learning for Computer Vision;3) ICCV 2019 Workshop on Interpretating and Explaining Visual Artificial Intelligence Models;4) ICLR 2019 Workshop on Safe Machine Learning;5) CVPR 2019 Workshop on Explainable AI;6) AAAI 2019 Workshop on Network Interpretability for Deep Learning;7) IJCAI 2018/2017 Workshop on Explainable Artificial Intelligence;8) ICML 2018 Workshop on Human Interpretability in Machine Learning;9) NIPS 2017 Interpretable Machine Learning Symposium.表4列举了可解释性深度学习研究领域的部分综述文献, 对各文献的内容侧重作了简要介绍, 其中包含CNN表征可视化的相关内容.表 4 CNN表征可视化相关的综述文献统计Table 4 Review literature statistics related to CNN representation visualization5.3 开源工具CNN可视化的相关开源工具, 一些研究人员在GitHub等网站开源了多种方法综合的代码包,这对于表征可视化研究及迁移到其他任务使用具有重要价值.文献[103]对2016年以前的可视化方法作了详细调研和分类整理, 将其中主流方法分为修改输入的方法(如基于扰动的方法)、反卷积类方法和重建输入的方法(如激活最大化方法)三类. 根据这些方法开发了基于MatConvNet框架[112]的CNN可视化工具包FeatureVis, 适用于Matlab平台上的CNN可视化.Ozbulak[83]发布了一个内容丰富的开源代码包, 实现了10余种可视化方法, 包括梯度方法(如VBP、GAP、Smooth gradient、Integrated gradient等)和类激活映射方法(如Grad-CAM、Score-CAM等). 该源码包基于PyTorch框架, 已经被许多研究人员关注和使用, 受到领域内好评, 目前仍在更新与拓展中.韩国科学技术院的Kim[113]发布了基于Tensorflow框架的可视化源码包, 该源码包含有梯度类方法、CAM类方法、激活最大化方法等, 配有详细的使用教程, 对各种方法的原理及实现过程的介绍细致, 适合初学者使用.此外, 佐治亚理工学院的Wang等[114]实现了对CNN网络的交互式可视化, 可对CNN网络各层的卷积、激活和池化操作的数据流向及中间层特征图进行实时展示, 支持交互式的选择输入图像, 实时观察各层的数据流向及表征情况. 虽然该工具更多关注于CNN网络中数据流的走向, 而非解释CNN中间层特征的语义, 但也非常有利于理解CNN的内部表征.6. 结束语本文围绕CNN表征可视化研究, 详细梳理了该领域近年来相关的文献, 从基础概念及内容、常见方法的分类与比较、效果的评估及应用等方面进行了详细介绍. 其中, 对常见的可视化方法的分类和介绍是本文的重点内容, 该部分详细分析了各种算法的过程, 归纳了每一类方法的特点, 并对它们的效果进行了比较. 最后, 对该领域仍存在的难点和未来的研究趋势作了总结和展望.随着表征可视化研究的深入, 人们对CNN的特征学习和预测机制的理解也会更加深刻. 同时, 其他类型的可解释性方法也在不断发展中, 在它们的共同作用下, 不断推动可解释性深度学习的发展. 期待未来实现可理解的、透明的和高效的深度学习方法.登录中国人工智能培训chinaai查看更多信息
推荐直播
-
HDC深度解读系列 - Serverless与MCP融合创新,构建AI应用全新智能中枢2025/08/20 周三 16:30-18:00
张昆鹏 HCDG北京核心组代表
HDC2025期间,华为云展示了Serverless与MCP融合创新的解决方案,本期访谈直播,由华为云开发者专家(HCDE)兼华为云开发者社区组织HCDG北京核心组代表张鹏先生主持,华为云PaaS服务产品部 Serverless总监Ewen为大家深度解读华为云Serverless与MCP如何融合构建AI应用全新智能中枢
回顾中 -
关于RISC-V生态发展的思考2025/09/02 周二 17:00-18:00
中国科学院计算技术研究所副所长包云岗教授
中科院包云岗老师将在本次直播中,探讨处理器生态的关键要素及其联系,分享过去几年推动RISC-V生态建设实践过程中的经验与教训。
回顾中 -
一键搞定华为云万级资源,3步轻松管理企业成本2025/09/09 周二 15:00-16:00
阿言 华为云交易产品经理
本直播重点介绍如何一键续费万级资源,3步轻松管理成本,帮助提升日常管理效率!
回顾中
热门标签