激活函数

在神经网络中weight decay

旧城冷巷雨未停 提交于 2021-01-03 14:16:32
weight decay(权值衰减)的最终目的是防止过拟合。在损失函数中,weight decay是放在正则项(regularization)前面的一个系数,正则项一般指示模型的复杂度,所以weight decay的作用是调节模型复杂度对损失函数的影响,若weight decay很大,则复杂的模型损失函数的值也就大。 momentum是梯度下降法中一种常用的加速技术。对于一般的SGD,其表达式为 , 沿负梯度方向下降。而带momentum项的SGD则写生如下形式: 其中 即momentum系数,通俗的理解上面式子就是,如果上一次的momentum(即 )与这一次的负梯度方向是相同的,那这次下降的幅度就会加大,所以这样做能够达到加速收敛的过程。 三、normalization。如果我没有理解错的话,题主的意思应该是batch normalization吧。batch normalization的是指在神经网络中激活函数的前面,将 按照特征进行normalization,这样做的好处有三点: 1、提高梯度在网络中的流动。Normalization能够使特征全部缩放到[0,1],这样在反向传播时候的梯度都是在1左右,避免了梯度消失现象。 2、提升学习速率。归一化后的数据能够快速的达到收敛。 3、减少模型训练对初始化的依赖。 作者:陈永志 链接:https://www.zhihu.com

多任务上实现SOTA,UBC、谷歌联合Hinton等提出3D点云的无监督胶囊网络

我与影子孤独终老i 提交于 2020-12-18 13:02:15
这是一种为 3D 点云提出的无监督胶囊架构,并且在 3D 点云重构、配准和无监督分类方面优于 SOTA 方法。 机器之心报道,作者:杜伟、小舟。 理解对象是计算机视觉的核心问题之一。传统方法而言,理解对象任务可以依赖于大型带注释的数据集,而无监督方法已经消除了对标签的需求。近来,研究人员试图将这些方法扩展到 3D 点云问题上,但无监督 3D 学习领域却进展寥寥。 近日,包括 Weiwei Sun、Andrea Tagliasacchi、Geoffrey Hinton 等来自英属哥伦比亚大学、谷歌研究院、多伦多大学的研究者提出了用于 3D 点云的无监督胶囊网络。Hinton 对此表示:在不受监督的情况下找到一个对象的自然组件以及这些组件的内在参照系是学习将解析图像转换为局部整体层级结构的重要一步。如果以点云开始,则可以做到。 具体而言,研究者通过排列等变(permutation-equivariant)的注意力计算对象的胶囊分解,并通过训练成对的随机旋转对象来自监督该过程。本研究的核心思想是将注意力掩模聚合为语义关键点,并使用它们来监督满足胶囊不变性或等方差的分解。这不仅可以训练语义上一致的分解,还能够学习以对象为中心的推理的规范化操作。在这种情况下,既不需要分类标签,也不需要手动对齐的训练数据集进行训练。 最后,通过以无监督的方式学习以对象为中心的表征,该方法在 3D 点云重构

阿里深度兴趣网络模型paper学习

Deadly 提交于 2020-12-17 23:48:12
论文地址: Deep Interest Network for Click-Through Rate ... 这篇论文来自阿里妈妈的精准定向检索及基础算法团队。文章提出的Deep Interest Network (DIN),实现了推荐系统CTR预估模型中,对用户历史行为数据的进一步挖掘。同时,文章中提出的Dice激活函数和自适应正则方法也优化了模型的训练过程。 Motivation CTR预估任务是,根据给定广告、用户和上下文情况等信息,对每次广告的点击情况做出预测。其中,对于用户历史行为数据的挖掘尤为重要,从这些历史行为中我们可以获取更多的关于用户兴趣的信息,从而帮助作出更准确的CTR预估。 许多应用于CTR预估的深度模型已经被提出。它们的基本思路是将原始的高维稀疏特征映射到一个低维空间中,也即对原始特征做了embedding操作,之后一起通过一个全连接网络学习到特征间的交互信息和最终与CTR之间的非线性关系。这里值得注意的一点是,在对用户历史行为数据进行处理时,每个用户的历史点击个数是不相等的,我们需要把它们编码成一个固定长的向量。以往的做法是,对每次历史点击做相同的embedding操作之后,将它们做一个求和或者求最大值的操作,类似经过了一个pooling层操作。论文认为这个操作损失了大量的信息,于是引入attention机制,提出一种更好的表示方式。

RBF(径向基)神经网络

廉价感情. 提交于 2020-12-16 10:39:45
  只要模型是一层一层的,并使用AD/BP算法,就能称作 BP神经网络。RBF 神经网络是其中一个特例。本文主要包括以下内容: 什么是径向基函数 RBF神经网络 RBF神经网络的学习问题 RBF神经网络与BP神经网络的区别 RBF神经网络与SVM的区别 为什么高斯核函数就是映射到高维区间 前馈网络、递归网络和反馈网络 完全内插法 一、什么是径向基函数   1985年,Powell提出了多变量插值的径向基函数(RBF)方法。径向基函数是一个取值仅仅依赖于离原点距离的实值函数,也就是Φ(x)=Φ(‖x‖),或者还可以是到任意一点c的距离,c点称为中心点,也就是Φ(x,c)=Φ(‖x-c‖)。任意一个满足Φ(x)=Φ(‖x‖)特性的函数Φ都叫做径向基函数,标准的一般使用欧氏距离(也叫做欧式径向基函数),尽管其他距离函数也是可以的。最常用的径向基函数是高斯核函数 ,形式为 k(||x-xc||)=exp{- ||x-xc||^2/(2*σ)^2) } 其中x_c为核函数中心,σ为函数的宽度参数 , 控制了函数的径向作用范围。 二、RBF神经网络   RBF神将网络是一种三层神经网络,其包括输入层、隐层、输出层。从输入空间到隐层空间的变换是非线性的,而从隐层空间到输出层空间变换是线性的。流图如下:   RBF网络的基本思想是:用RBF作为隐单元的“基”构成隐含层空间

详解Transformer (Attention Is All You Need)

蓝咒 提交于 2020-12-05 10:15:19
点击上方“ 迈微电子研发社 ”,选择“ 星标★ ”公众号 重磅干货,第一时间送达 前言 注意力(Attention)机制[2]由Bengio团队与2014年提出并在近年广泛的应用在深度学习中的各个领域,例如在计算机视觉方向用于捕捉图像上的感受野,或者NLP中用于定位关键token或者特征。谷歌团队近期提出的用于生成词向量的BERT[3]算法在NLP的11项任务中取得了效果的大幅提升,堪称2018年深度学习领域最振奋人心的消息。而BERT算法的最重要的部分便是本文中提出的Transformer的概念。 正如论文的题目所说的,Transformer中抛弃了传统的CNN和RNN,整个网络结构完全是由Attention机制组成。更准确地讲,Transformer由且仅由self-Attenion和Feed Forward Neural Network组成。一个基于Transformer的可训练的神经网络可以通过堆叠Transformer的形式进行搭建,作者的实验是通过搭建编码器和解码器各6层,总共12层的Encoder-Decoder,并在机器翻译中取得了BLEU值得新高。 作者采用Attention机制的原因是考虑到RNN(或者LSTM,GRU等)的计算限制为是顺序的,也就是说RNN相关算法只能从左向右依次计算或者从右向左依次计算,这种机制带来了两个问题: 时间片 的计算依赖

白话Xavier | 神经网络初始化的工程选择

人走茶凉 提交于 2020-12-04 07:14:55
插播一个小新闻:最近建立了交流群~欢迎回复【加群】加入~ “Xavier”初始化方法是一种很有效的神经网络初始化方法,方法来源于2010年的一篇论文《Understanding the difficulty of training deep feedforward neural networks》。 论文的链接在这里:https://machinelearning.wustl.edu/mlpapers/paper_files/AISTATS2010_GlorotB10.pdf PyTorch代码 在介绍论文和理论之前,先讲一下如何使用在PyTorch中使用Xavier初始化: def _initialize_weights (self) : # print(self.modules()) for m in self.modules(): print(m) if isinstance(m, nn.Linear): # print(m.weight.data.type()) # input() # m.weight.data.fill_(1.0) init.xavier_uniform_(m.weight, gain= 1 ) print(m.weight) 通俗讲理论 论文提出的Xavier的主要思想: 每一层输出的方差应该尽量相等 。 前向传播 下面进行推导:

小赵带你读论文系列14-阿里妈妈之Deep Interest Network for Click-Through Rate Prediction

帅比萌擦擦* 提交于 2020-12-01 13:24:22
前言 鬼才知道我为什么要学管理经济学和管理数学,学不进去了,算了看看论文读读代码放松一下。 这是阿里 DIN 系列的第一篇文章,文章读起来不是很难,不过工业上实现会考虑时延就很麻烦,主要的工作我觉得像是引入了 Attention 机制(他自己解释说有点差别)。以往都是根据用户的 Profile,Behavior Sequence 做一个用户的 Embedding ,然后根据这个 Embedding 来和待推荐的商品作比较,最终输出用户点击该商品的概率。阿里觉得不好,第一,这种对待所有商品用户的 Embedding 都一成不变,这显然不行。第二,单纯扩大 Embedding 的 size 来获取更多的信息,这样会浪费大量的计算成本并且有过拟合现象。以往的推荐形式如下图: 主体内容 第一, 阿里妈妈觉得待推荐的物品是否会被点击和用户的历史行为有着显著的关系,那么我们能不能使用用户的历史行为(也代表了用户的兴趣,Deep Interest大概从这里命名)来表征用户对于不同商品的兴趣呢,换句话说,我能不能使得用户对于不同的商品有不同的 Embedding 呢。然后他就把待推荐物品和用户历史点击行为进行 Attention ,他死不承认用 Attention 的一个原因大体就是他的 Attention 没有做正则化,以及他的 Attention weights 的 sum=1 。模型构建如下

深度神经网络(DNN) 向前传播

一个人想着一个人 提交于 2020-12-01 11:34:24
 深度神经网络(Deep Neural Networks, 以下简称DNN)是深度学习的基础,而要理解DNN,首先我们要理解DNN模型,下面我们就对DNN的模型与前向传播算法做一个总结。 1. 从感知机到神经网络     在 感知机原理小结 中,我们介绍过感知机的模型,它是一个有若干输入和一个输出的模型,如下图:     输出和输入之间学习到一个线性关系,得到中间输出结果: z=∑i=1mwixi+bz=∑i=1mwixi+b     接着是一个神经元激活函数: sign(z)={−11z<0z≥0sign(z)={−1z<01z≥0     从而得到我们想要的输出结果1或者-1。     这个模型只能用于二元分类,且无法学习比较复杂的非线性模型,因此在工业界无法使用。     而神经网络则在感知机的模型上做了扩展,总结下主要有三点:     1)加入了隐藏层,隐藏层可以有多层,增强模型的表达能力,如下图实例,当然增加了这么多隐藏层模型的复杂度也增加了好多。     2)输出层的神经元也可以不止一个输出,可以有多个输出,这样模型可以灵活的应用于分类回归,以及其他的机器学习领域比如降维和聚类等。多个神经元输出的输出层对应的一个实例如下图,输出层现在有4个神经元了。     3) 对激活函数做扩展,感知机的激活函数是sign(z)sign(z),虽然简单但是处理能力有限

一文读懂YOLO V5 与 YOLO V4

自闭症网瘾萝莉.ら 提交于 2020-11-27 05:46:55
YOLO之父Joseph Redmon在今年年初宣布退出计算机视觉的研究的时候,很多人都以为目标检测神器YOLO系列就此终结。然而在4月23日,继任者YOLO V4却悄无声息地来了。Alexey Bochkovskiy发表了一篇名为YOLOV4: Optimal Speed and Accuracy of Object Detection的文章。YOLO V4是YOLO系列一个重大的更新,其在COCO数据集上的平均精度(AP)和帧率精度(FPS)分别提高了10% 和12%,并得到了Joseph Redmon的官方认可,被认为是当前最强的实时对象检测模型之一。 正当计算机视觉的从业者们正在努力研究YOLO V4的时候,万万没想到,有牛人不服。6月25日,Ultralytics发布了YOLOV5 的第一个正式版本,其性能与YOLO V4不相伯仲,同样也是现今最先进的对象检测技术,并在推理速度上是目前最强。 从上图的结果可以看出,YOLO V5确实在对象检测方面的表现非常出色,尤其是YOLO V5s 模型140FPS的推理速度非常惊艳。 YOLO V5和V4集中出现让很多人都感到疑惑,一是YOLO V5真的有资格能被称作新一代YOLO吗?二是YOLO V5的性能与V4相比究竟如何,两者有啥区别及相似之处? 在本文中我会详细介绍YOLO V5和YOLO V4的原理,技术区别及相似之处

干货|非常详细的神经网络入门解释

℡╲_俬逩灬. 提交于 2020-11-25 14:48:23
Python.NN(一) 神经网络入门 1 将感知机用于多任务分类 我们之前在 Python · SVM(一)· 感知机干货|SVM(一)·最全面的感知机总结 里面介绍感知机时,用的是这么一个公式: ,然后样本中的y要求只能取正负1。 这在二分类任务时当然没问题,但是到多分类时就会有些问题。 虽说我们是可以用各种方法让二分类模型去做多分类任务的,不过那些方法普遍都比较麻烦。 为了让我们的模型天然适应于多分类任务,我们通常会将样本中的y取为one-hot向量,亦即 此时我们的感知机就会变成这样(以 N 个拥有 n 维特征的样本的 K 分类任务为例;为简洁,省略了偏置量 b): (看在我纯鼠绘的份上原谅我画得那么丑吧 | 此时模型的表示会变为 。注意到我们原来输出的是一个数,在改造后输出的则是一个 K 维向量。 也正因此,我们不能简单地沿用之前定义的损失函数( )、而应该定义一个新的损失函数 由于我们的目的是让模型输出的向量 和真实的( )标签向量“越近越好”,而“距离”是一个天然的衡量“远近”的东西,所以用欧氏距离来定义损失函数是比较自然的。 具体而言,我们可以把损失函数定义为 在有了损失之后就可以求导了。需要指出的是,虽然我接下来写的公式看上去挺显然,但由于我们进行的是矩阵求导工作,所以它们背后真正的逻辑其实没那么显然。 有兴趣的观众老爷可以看看这篇文章矩阵求导术