激活函数

论文阅读——LSQ+: Improving low-bit quantization through learnable offsets and better initialization

淺唱寂寞╮ 提交于 2020-10-04 11:58:05
LSQ+: Improving low-bit quantization through learnable offsets and better initialization from Qualcomn AI Research | Seoul National University CVPR2020 LSQ+:通过学习偏移和更好的初始化改进LSQ Abstract 新的激活函数,如Swish,Mish不像ReLU只有非负值,而是有正有负,而传统的无符号量化策略会将所有负的激活值量化为0,从而导致性能的显著下降;如果为了对负激活值也进行量化就需要增加额外的符号位,在低比特量化(2、3、4bit)中代价太大了。 

为了解决这一问题,本文基于LSQ提出了改进版的LSQ+,通过引入一种通用的非对称的量化策略,通过训练学习缩放尺度scale和偏移参数offset,从而解决负激活值的量化问题;另一方面基于梯度学习的量化方案训练过程通常不稳定,因此需要调整大量的超参数才能达到较好的性能,LSQ+通过对待量化的参数使用MSE初始化策略有效缓解了这一问题,使得多次训练结果的差异波动明显降低。 


在EfficientNet和MixNet上使用LSQ+的量化策略的表现要优于Swish激活的LSQ低比特量化,比如EfficientNet的W4A4量化精度提升1.8%

暴力方法将成过去?UC伯克利等新研究返璞归真,探索网络的本质

帅比萌擦擦* 提交于 2020-10-04 00:19:51
         深度卷积神经网络的训练很难,方法很多,有没有可能从中提炼出一条指导性原则呢?加州大学的研究者抛弃暴力搜索方法,试图回归网络最核心简洁的性质。研究作者之一、加州大学伯克利分校马毅教授表示:这应该是真正按原理设计而得到的深度网络。   初始化、归一化和残差连接(skip connection)被认为是训练深度卷积神经网络(ConvNet)并获得最优性能的三大必备技术。   最近,来自加州大学伯克利分校和圣迭戈分校的研究者发布一项研究, 提出不使用归一化和残差连接的深度 ConvNet 在标准图像识别基准上也能实现优异的性能 。其实现方式是:在初始化和训练期间,令卷积核具备近似保距性(near isometric);使用 ReLU 激活函数的变体,实现保距性。      论文地址:https://arxiv.org/pdf/2006.16992.pdf   GitHub 地址:https://github.com/HaozhiQi/ISONet   研究人员进行了大量实验,结果表明此类近似保距网络与残差连接结合后,在 ImageNet 数据集上的性能与 ResNet 相当,在 COCO 数据集上的性能甚至超过 ResNet。而前者甚至都没有应用归一化。   该研究作者之一计算机视觉学者、加州大学伯克利分校马毅教授表示:   这应该是真正按原理设计而得到的深度网络……

深度学习中的一些组件及使用技巧

我只是一个虾纸丫 提交于 2020-10-03 14:24:29
【说在前面】本人博客新手一枚,象牙塔的老白,职业场的小白。以下内容仅为个人见解,欢迎批评指正,不喜勿喷![认真看图][认真看图] 【补充说明】深度学习有多火,我就不多说了。本文主要介绍深度学习项目实践过程中可能遇到的一些组件及使用技巧! 一、Optimizor优化器选择 1. 梯度下降:经典 梯度下降的通用计算公式如下: 其中, 是学习率, 是梯度。梯度下降完全依赖于当前的梯度,所以 可理解为允许当前梯度多大程度影响参数更新。 梯度下降主要包含三种梯度下降: (1)批量梯度下降(Batch Gradient Descent) 使用所有的训练样本来更新每次迭代中的模型参数 (2)随机梯度下降(Stochastic Gradient Descent) 在每次迭代中,仅使用单个训练样本更新参数(训练样本通常是随机选择的) (3)小批量梯度下降(Mini-Batch Gradient Descent):这个最常用 训练时不是使用所有的样本,而是取一个批次的样本来更新模型参数 小批量梯度下降试图在随机梯度下降的稳健性和批量梯度下降的效率之间找到平衡 梯度下降的缺点: 选择合适的learning rate比较困难 对所有的参数更新均使用同样的learning rate 可能被困在鞍点,容易产生局部最优,不能达到全局最优 2. Momentum Momentum是模拟物理里动量的概念,公式如下:

写给程序员的机器学习入门 (五)

依然范特西╮ 提交于 2020-10-02 13:45:10
递归模型的应用场景 在前面的文章中我们看到的多层线性模型能处理的输入数量是固定的,如果一个模型能接收两个输入那么你就不能给它传一个或者三个。而有时候我们需要根据数量不一定的输入来预测输出,例如文本就是数量不一定的输入,“这部片非常好看” 有 7 个字,“这部片很无聊” 有 6 个字,如果我们想根据文本判断是正面评价还是负面评价,那么就需要使用支持不定长度 (即可以接收 6 个又可以接收 7 个) 输入的模型。时序性的数据数量也是不一定的,例如一个运动中的球,从某个时间点开始的第 0 秒在位置 1,第 1 秒在位置 3,第 2 秒在位置 5,那么正确的模型应该可以预测出第 3 秒在位置 7,如下图所示。当然,时序性的数据可以固定一个窗口(例如最近的 5 条数据)来处理,这样输入数量就是一定的,但灵活性就降低了,窗口设置过小可能会导致没有足够的信息用于预测输出,过大则会影响性能。 递归模型 (Recursive Model) 可以用于处理不定长度的输入,用法是一次只传固定数量的输入给模型,可以分多次传,传的次数根据数据而定。以上述例子来说,“这部片非常好看” 每次传一个字需要传 7 次,“这部片很无聊” 每次传一个字需要传 6 次。而递归模型每收到一次输入都会返回一次输出,有的场景只会使用最后一次输出的结果 (例如这个例子),而有的场景则会使用每一次输出的结果。 换成代码可以这样理解:

C++从零实现神经网络(收藏版:两万字长文)

ε祈祈猫儿з 提交于 2020-10-02 06:32:12
点击上方 “ AI算法与图像处理 ”,选择加"星标"或“置顶” 重磅干货,第一时间送达 来源:CVPy 长文预警: 共 22727字 建议:收藏后找合适时间阅读。 一、Net类的设计与神经网络初始化 闲言少叙,直接开始 既然是要用C++来实现,那么我们自然而然的想到设计一个神经网络类来表示神经网络,这里我称之为Net类。由于这个类名太过普遍,很有可能跟其他人写的程序冲突,所以我的所有程序都包含在namespace liu中,由此不难想到我姓刘。在之前的博客反向传播算法资源整理中,我列举了几个比较不错的资源。对于理论不熟悉而且学习精神的同学可以出门左转去看看这篇文章的资源。这里假设读者对于神经网络的基本理论有一定的了解。 神经网络的要素 在真正开始coding之前还是有必要交代一下神经网络基础,其实也就是设计类和写程序的思路。简而言之,神经网络的包含几大要素: 神经元节点 层(layer) 权值(weights) 偏置项(bias) 神经网络的两大计算过程分别是前向传播和反向传播过程。每层的前向传播分别包含加权求和(卷积?)的线性运算和激活函数的非线性运算。反向传播主要是用BP算法更新权值。虽然里面还有很多细节,但是对于作为第一篇的本文来说,以上内容足够了。 Net类的设计 Net类——基于Mat 神经网络中的计算几乎都可以用矩阵计算的形式表示

贝叶斯神经网络最新综述

假如想象 提交于 2020-10-01 12:52:00
©PaperWeekly 原创 · 作者|尹娟 学校|北京理工大学博士生 研究方向|随机过程、复杂网络 论文标题: Bayesian Neural Networks: An Introduction and Survey 论文链接: https://arxiv.org/abs/2006.12024 引言 下一代神经网络的演化方向是什么?最近两年在北京举行的智源大会都谈到了这个问题,可能性的一个答案是贝叶斯神经网络,因为它可以对已有的知识进行推断。逻辑推理作用就是可以对已有的知识进行延伸扩展。 举个例子,如果询问训练完善的 AI 模型的一个问题,“在乌克兰,新西兰,新加坡,阿尔及利亚这四个国家里,哪一个国家位于中国的最西边”,这个问题的难点就在于那个“最”字,如果是传统的 AI 模型可能会蒙圈,因为乌克兰和阿尔及利亚都是在中国的西边,因为现有的训练的知识并不足以告诉它哪个是最西边,经过 BNN(贝叶斯神经网络)训练的模型可能会从经纬度,气温等其他信息进行推断得出一个阿尔及利亚在中国的最西边这个答案。 BNN 的最新进展值得每个 AI 研究者紧密关注, 本文就是一篇新鲜出炉的关于 BNN 的综述 ,为了方便读者的阅读,我按照自己的节奏和想法重新梳理了一下这篇文章。 神经网络 先回顾一下传统神经网络,论文限于篇幅的原因有一些重要的细节没有展开

Xavier神经网络参数初始化方法

末鹿安然 提交于 2020-09-30 06:52:55
转自: https://zhuanlan.zhihu.com/p/68487857 之前我们学习了使用RBM对深度置信网络进行逐层训练初始化,或用类似的方法对多层深度神经网络进行预训练(pretraining),以求最终收敛的结果接近最优且加快收敛速度,同时还能避免 梯度消失 (gradient vanishing)和 梯度爆炸 (gradient explosion)的问题。今天介绍一个更加方便快速的初始化方法,来 近似 达到相同的目的。 一、梯度消失与梯度爆炸 这是一个深度学习领域遇到的老问题了,即使是现在,任何一个新提出的模型,无论是MLP、CNN、还是RNN,随着深度的加深,这两个问题变得尤为严重。 梯度消失是指在深度学习训练的过程中,梯度随着链式求导逐层传递逐层减小,最后趋近于0,导致对某些层的训练失效; 梯度爆炸与梯度消失相反,梯度随着链式求导逐层传递逐层增大,最后趋于无穷,导致某些层无法收敛; 二、Xavier方法 接下来的推导基于假设: 激活函数在0周围的导数接近1(比如tanh); 偏置项b初始化为0,期望为0 参数初始化期望均为0 显然,在初始化参数的时候不能全部初始化为0,这样无论是什么输入,输出都是0,梯度在反向传播的过程中也会变成0,无法训练。同理如果把模型的值设为单一值,也会造成模型容量的减小(反向传播的过程中W的每一行都是相同的)。

百度飞桨AI识虫任务心得

半腔热情 提交于 2020-09-26 17:59:08
百度飞桨AI识虫任务心得 一 、赛题背景 二、比赛任务 三、心得体会 一 、赛题背景 目标检测是计算机视觉中的一个重要的应用方向,与之相关的应用也越来越多。百度飞桨与北京林业大学合作开发的AI识虫项目,是将AI与农业相结合的典型案例。本次比赛将使用林业病虫数据集,使用目标检测算法对图片中的虫子类别和位置进行预测。在《零基础实践深度学习课程》中,老师讲介绍如何使用YOLO-V3算法检测虫子,但老师所讲授的内容只包含最基本的功能。学员需要在此基础上对模型参数或者模型结构进行调整,以得到更好的评估结果。主要改进方案可以从以下四个方面进行:1、 使用其它模型如faster rcnn等;2、 使用数据增强,如对原图进行翻转、裁剪等操作; 3、 修改anchor参数的设置;4、 调整优化器、学习率策略、正则化系数等。 二、比赛任务 参赛者需要训练好目标检测模型,并且用训练好的模型在测试数据集上进行预测,每张图片的预测输出结果为图片中包含的虫子的 类别、位置、和置信度得分 。结果保存为json文件。参赛者需提供飞桨训练好的模型参数,可以在AI Studio Notebook中一键运行的预测代码,还有存放预测结果的json文本文件。 三、心得体会 通过最后一周的参赛,能够将最基本也是最常用的图像操作算法YOLO-V3用于实践案例中。在对数据集进行处理时,用到了一系列的图像增强技术,如调节亮度、缩放

使用LSTM-RNN建立股票预测模型

社会主义新天地 提交于 2020-09-26 04:56:28
  硕士毕业之前曾经对基于LSTM循环神经网络的股价预测方法进行过小小的研究,趁着最近工作不忙,把其中的一部分内容写下来做以记录。   此次股票价格预测模型仅根据股票的历史数据来建立,不考虑消息面对个股的影响。曾有日本学者使用深度学习的方法来对当天的新闻内容进行分析,以判断其对股价正面性/负面性影响,并将其与股票的历史数据相结合,各自赋予一定的权重来对近日的股价进行预测 [1] 。该预测方法取得了一定的效果。   而这里我没有引入消息面的影响,主要出于以下几点考虑:   1.消息的及时性难以保证:很多时候,在一只股票的利好/利空消息出来之前,其股价已经有了较大幅度的增长/下跌。信息的不对称性导致普通群众缺乏第一手消息源。   2.消息的准确性难以保证:互联网上信息传播速度极快,媒体之间经常会出现相互抄袭新闻的情况,而这种抄来的新闻(非原创新闻)往往没有经过严格的审核,存在着内容虚假,夸大宣传的可能性。一旦分析模型错用了某条谣言或真实性不高的新闻,很有可能得出错误的预测结果。   3.语言的歧义性:一条新闻,其正面性/负面性往往存在着多种解读。例如“习主席宣布中国将裁军30万”——新华每日电讯2015.09.04。这条新闻一般意义上可以解读为:中央政府深入推进改革,精兵简政,大力发展国防军工事业。这是一种正面性的解读。而在使用机器学习模型时,如传统的奇异值分解算法(SVD)

神经网络浅讲:从神经元到深度学习

纵然是瞬间 提交于 2020-08-20 07:10:45
  神经网络是一门重要的机器学习技术。它是目前最为火热的研究方向 -- 深度学习的基础。学习神经网络不仅可以让你掌握一门强大的机器学习方法,同时也可以更好地帮助你理解深度学习技术。   本文以一种简单的,循序的方式讲解神经网络。适合对神经网络了解不多的同学。本文对阅读没有一定的前提要求,但是懂一些 机器学习 基础会更好地帮助理解本文。   神经网络是一种模拟人脑的神经网络以期能够实现类人工智能的机器学习技术。人脑中的神经网络是一个非常复杂的组织。成人的大脑中估计有 1000 亿个神经元之多。 图1 人脑神经网络   那么机器学习中的神经网络是如何实现这种模拟的,并且达到一个惊人的良好效果的?通过本文,你可以了解到这些问题的答案,同时还能知道神经网络的历史,以及如何较好地学习它。   由于本文较长,为方便读者,以下是本文的目录:   一. 前言   二. 神经元   三. 单层神经网络(感知器)   四. 两层神经网络(多层感知器)   五. 多层神经网络(深度学习)   六. 回顾   七. 展望   八. 总结   九. 后记   十. 备注 一. 前言   让我们来看一个经典的神经网络。这是一个包含三个层次的神经网络。红色的是 输入层 ,绿色的是 输出层 ,紫色的是 中间层 (也叫 隐藏层 )。输入层有 3 个输入 单元,隐藏层有 4 个 单元,输出层有 2 个 单元。后文中