NoRM

2.基于梯度的攻击——FGSM

半世苍凉 提交于 2020-08-16 06:19:03
  FGSM原论文地址: https://arxiv.org/abs/1412.6572    1.FGSM的原理      FGSM的全称是Fast Gradient Sign Method(快速梯度下降法),在白盒环境下,通过求出模型对输入的导数,然后用符号函数得到其具体的梯度方向,接着乘以一个步长,得到的“扰动”加在原来的输入 上就得到了在FGSM攻击下的样本。     FGSM的攻击表达如下:       那么为什么这样做有攻击效果呢? 就结果而言,攻击成功就是模型分类错误,就模型而言,就是加了扰动的样本使得模型的loss增大。而 所有基于梯度的攻击方法都是基于让loss增大这一点来做的。 可以仔细回忆一下,在神经网络的反向传播当中,我们在训练过程时就是沿着梯度方向来更新更新w,b的值。这样做可以使得网络往loss减小的方向收敛。 那么现在我们既然是要使得loss增大,而模型的网络系数又固定不变,唯一可以改变的就是输入,因此我们就利用loss对输入求导从而“更新”这个输入。(当然,肯定有人问,神经网络在训练的时候是多次更新参数,这个为什么仅仅更新一次呢?主要因为我们希望产生对抗样本的速度更快,毕竟名字里就有“fast”,当然了,多次迭代的攻击也有,后来的PGD(又叫I-FGSM)以及MIM都是更新很多次,虽然攻击的效果很好,但是速度就慢很多了)     

谷歌刷新机器学习世界纪录!2 分钟搞定 ImageNet 训练

二次信任 提交于 2020-08-13 02:52:32
AI 前线导读 :随着技术、算力的发展,在 ImageNet 上训练 ResNet-50 的速度被不断刷新。2018 年 7 月,腾讯机智机器学习平台团队在 ImageNet 数据集上仅用 6.6 分钟就训练好 ResNet-50,创造了 AI 训练世界纪录;一周前,壕无人性的索尼用 2176 块 V100 GPU 将这一纪录缩短到了 224 秒;如今,这一纪录再次被谷歌刷新…… 深度学习非常依赖于硬件条件,它是一个计算密集型的任务。硬件供应商通过在大型计算集群中部署更快的加速器来做出更快的相应。在 petaFLOPS(运算能力单位,每秒千万亿次浮点数运算)规模的设备上训练深度学习模型需要同时面临算法和系统软件两方面的挑战。Google 于近日推出了一种大规模计算集群的图像分类人物训练解决方案,相关论文发表于 Arxiv: Image Classification at Supercomputer Scale 。本文的作者使用 Google TPU v3 Pod 训练 ResNet-50,在识别率没有降低的情况下,仅使用了 2.2 分钟的时间。 背景 深度神经网络的成功应用与发展离不开疯狂增长的算力,在许多领域,深度学习的发展可以说是由硬件驱动的。在深度网络的训练过程中,最关键的部分就是使用随机梯度下降算法(SGD)优化网络权重。通常情况下,模型需要使用 SGD

SparseNN中的优化

孤街醉人 提交于 2020-08-11 23:25:59
作者|The AI LAB 编译|VK 来源|Medium 对SparseNN模型的过拟合进行研究,并探索了多种正则化方法,如嵌入向量的max-norm/constant-norm、稀疏特征id的dropout、参数的freezing、嵌入收缩等。然而,据我们所知,在单次训练中,没有显著的减少过拟合的效果。 正则化全连接层和稀疏参数 随机梯度下降优化器使用小批量样本来更新全连接层和稀疏参数。给定一个小批量的例子,通常所有的全连接层参数都会被更新(假设没有gate或dropout),而只有一小部分稀疏参数会在正向传播中被激活,从而在反向传播中被更新。例如,假设一个稀疏特征对用户在过去一周内单击的广告id进行编码,虽然我们可能有数百万个惟一的广告id,但是在一个小型批处理中(通常是100个样本)出现的广告id的数量与基数相比非常有限。 正则化稀疏参数与全连接层参数的不同之处在于,我们需要在运行时识别小型批处理中已激活的稀疏参数,然后仅对这些参数进行正则化。 在正则化全连接层参数时需要注意的一点是,全连接层中的偏差通常不需要正则化。因此,需要识别这些偏差,并将它们自动排除在正则化之外。 L2正则化 J(W)是经验损失,||W_dense||²是全连接层稀疏参数(也称为L2正则化器)的L2范数的平方;||W_sparse||²也是如此。 参数W_i的损失L的梯度被分解为经验损失J和所谓的

ICML2020 | Prune or Not to Prune?与其剪枝丢掉无用通道,不如将其激活?

吃可爱长大的小学妹 提交于 2020-08-11 22:17:49
      本文介绍的是IC ML 2020 论文《Channel Equilibrium Networks for Learning Deep Representation》,论文作者 来自香港大学罗平组。   作者 | 邵文琪、罗平   编辑 | 丛 末      论文地址:https://arxiv.org/pdf/2003.00214.pdf    1    前言   这篇文章主要介绍我们ICML 2020的一个工作——Channel Equilibrium Networks for Learning Deep Representation。卷积神经网络(CNN)中最重要的一个概念就是通道(Channel),与之相关联的基本结构包括卷积层、归一化层(如BN等)。比如卷积中的一个kernel通常对应着一个输出通道,而常用的BN就是在每一个通道内计算相应的统计量。   大量研究表明,网络中有效通道的数量与CNN的表达能力关系密切。比如,WideResNet通过增加通道数量也就是网络宽度来提升CNN的表达能力,而常用的模型剪枝方法(Prunning)也发现对一个训练好的网络,删去一些不重要的通道并不会对网络性能产生太大的影响。   在这篇文章中,我们把这些不重要的通道称之为“抑制通道”。抑制通道在特征表示中几乎没有作用,因此网络剪枝即去除抑制通道。与网络压缩不同

【线性代数】范数(norm)

送分小仙女□ 提交于 2020-08-11 21:34:33
定义 范数是将向量映射到非负值得函数,常被用来衡量一个向量的大小。 常用向量范数 范数类型 计算公式 MATLAB调用 补充解释 L 1 范 数 L1范数 ∥ x ∥ 1 = ∑ n i = 1 | x i | ‖x‖1=∑i=1n|xi| norm(x,1) 向量元素的绝对值之和 L 2 范 数 L2范数 ∥ x ∥ = ∑ n i = 1 x 2 i − − − − − − − √ ‖x‖=∑i=1nxi2 norm(x,2) 欧几里得范数,最常用来计算向量长度,以至于下标中的2 都被省略 L p 范 数 Lp范数 ∥ x ∥ p = ( ∑ n i = 1 | x i | p ) 1 p ‖x‖p=(∑i=1n|xi|p)1p norm(x,p) 一般化的 P 范数 L ∞ 范 数 L∞范数 ∥ x ∥ ∞ = m a x | x i | ‖x‖∞=max|xi| norm(x,inf) 即所有元素绝对值中的最大值 L − ∞ 范 数 L−∞范数 ∥ x ∥ − ∞ = m i n | x i | ‖x‖−∞=min|xi| norm(x,-inf) 即所有元素绝对值中的最小值 常用矩阵范数 范数类型 计算公式 MATLAB调用 补充解释 L 1 L1 范数,列和范数 ∥ A ∥ 1 = max ∑ m i = 1 | a i , j | ‖A‖1=max∑i=1m|ai,j

SparseNN中的优化

旧城冷巷雨未停 提交于 2020-08-11 19:13:23
作者|The AI LAB 编译|VK 来源|Medium 对SparseNN模型的过拟合进行研究,并探索了多种正则化方法,如嵌入向量的max-norm/constant-norm、稀疏特征id的dropout、参数的freezing、嵌入收缩等。然而,据我们所知,在单次训练中,没有显著的减少过拟合的效果。 正则化全连接层和稀疏参数 随机梯度下降优化器使用小批量样本来更新全连接层和稀疏参数。给定一个小批量的例子,通常所有的全连接层参数都会被更新(假设没有gate或dropout),而只有一小部分稀疏参数会在正向传播中被激活,从而在反向传播中被更新。例如,假设一个稀疏特征对用户在过去一周内单击的广告id进行编码,虽然我们可能有数百万个惟一的广告id,但是在一个小型批处理中(通常是100个样本)出现的广告id的数量与基数相比非常有限。 正则化稀疏参数与全连接层参数的不同之处在于,我们需要在运行时识别小型批处理中已激活的稀疏参数,然后仅对这些参数进行正则化。 在正则化全连接层参数时需要注意的一点是,全连接层中的偏差通常不需要正则化。因此,需要识别这些偏差,并将它们自动排除在正则化之外。 L2正则化 J(W)是经验损失,||W_dense||²是全连接层稀疏参数(也称为L2正则化器)的L2范数的平方;||W_sparse||²也是如此。 参数W_i的损失L的梯度被分解为经验损失J和所谓的

Java 多线程基础(十一)线程优先级和守护线程

懵懂的女人 提交于 2020-08-11 18:40:38
Java 多线程基础(十一)线程优先级和守护线程 一、线程优先级 Java 提供了一个线程调度器来监控程序启动后进去就绪状态的所有线程。线程调度器通过线程的优先级来决定调度哪些线程执行。一般来说,Java的线程调度器采用时间片轮转算法使多个线程轮转获得CPU的时间片。然而根据实际情况,每个线程的重要程序也不相同,有时候我们想让一些线程优先执行,那么我们可以将他的优先级调高一下,这样它们获得的时间片会多一些。 多个线程处于就绪状态时,若这些线程的优先级相同,则线程调度器会按时间片轮转方式或独占方式来分配线程的执行时间。 java 中的线程优先级的范围是1~10,默认的优先级是5。“高优先级线程”会优先于“低优先级线程”执行。 Java中线程优先级分为三个级别: 低优先级:1~4,其中类变量 Thread.MIN_PRORITY 最低,数值为1; 默认优先级:如果一个线程没有指定优先级,默认优先级为5,由类变量 Thread.NORM_PRORITY表示; 高优先级:6~10,类变量 Thread.MAX_PRORITY 最高,数值为10。 注意:具有相同优先级的多个线程,若它们都为高优先级Thread.MAX_PRORITY,则每个线程都是独占式的,也就是这些线程将被顺序执行;若它们优先级不是高优先级,则这些线程将被同时执行,可以说是无序执行。 java 中有两种线程:

OpenCV开发笔记(六十):红胖子8分钟带你深入了解Harris角点检测(图文并茂+浅显易懂+程序源码)

半腔热情 提交于 2020-08-11 02:28:08
若该文为原创文章,未经允许不得转载 原博主博客地址: https://blog.csdn.net/qq21497936 原博主博客导航: https://blog.csdn.net/qq21497936/article/details/102478062 本文章博客地址: https://blog.csdn.net/qq21497936/article/details/106367317 各位读者,知识无穷而人力有穷,要么改需求,要么找专业人士,要么自己研究 红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…(点击传送门) OpenCV开发专栏(点击传送门) 上一篇:《 OpenCV开发笔记(五十九):红胖子8分钟带你深入了解分水岭算法(图文并茂+浅显易懂+程序源码) 》 下一篇:持续补充中… <br> 前言   红胖子,来也!   做识别,有时候遇到需求,比如识别一个三角形,并求得三角形三个顶点的角度,这种属于教育场景类似的,还有其他场景,那么检测角点就显得很重要了,检测出角点并且求出其角度。 <br> Demo                   <br> 图像特征三大类型 边缘:图像强度发生突变的区域,其实就是高强度梯度区域; 角点:两个边缘相交的地方,看起来像一个角;

创建线程池的正确姿势,请给它指定一个有意义的名字

坚强是说给别人听的谎言 提交于 2020-08-11 02:12:07
为什么我们创建线程或者线程池的时候,需要指定有意义的线程名称? 最终目的是为了方便回溯。 我们在日常开发中,一个项目中会创建很多个线程池用来资源隔离,但是如果我们没有一个好的命名的话,出问题的时候就会难以定位。 public class Demo5 { ​ public static void main( String[] args ) throws IOException { new Thread(()->{ System.out.println("保存用户信息.........."); ​ try { Thread.sleep(4000); } catch (InterruptedException e) { e.printStackTrace(); } throw new NullPointerException(); }).start(); System.in.read(); } } 上面代码是启动一个线程来保存用户信息,然后抛出异常! 报错信息如下: 从运行错误可以分析,Thread-0 抛出了空指针,那么单从这个日志根本无法判断用户模块线程抛出的异常。我们先分析一下Thread-0是怎么来的。 我们先看下创建线程的代码: public Thread(Runnable target) { init(null, target, "Thread-" +

Pytorch遇到的错误解决方法

≯℡__Kan透↙ 提交于 2020-08-10 18:31:35
1. pytorch运行错误:RuntimeError: cuDNN error: CUDNN_STATUS_INTERNAL_ERROR 解决方法: 代码中添加: torch.cuda.set_device( 0 ) 2. 训练RNN网络loss出现Nan解决办法 (1). 梯度爆炸的原因可以通过梯度裁决解决 GRAD_CLIP = 5 loss.backward() torch.nn.utils.clip_grad_norm_(model.parameters(), GRAD_CLIP) optimizer.step() (2)testModel和evaluate中需要使用 with torch.no_grad(): (3) 学习率调小一点 来源: oschina 链接: https://my.oschina.net/u/4228078/blog/4456343