sigmoid

卷积神经网络CNNs 为什么要用relu作为激活函数?

时间秒杀一切 提交于 2020-01-18 17:30:52
relu激活函数的优势: (1)反向传播时,可以避免梯度消失。 (2)Relu会使一部分神经元的输出为0,这样就造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生(以及一些人的生物解释balabala)。 (3)相对于sigmoid激活函数,tanh激活函数,求导简单。采用sigmoid等函数,算激活函数时(指数运算),计算量大,反向传播求误差梯度时,求导涉及除法,计算量相对大,而采用Relu激活函数,整个过程的计算量节省很多。 缺点: (1)左侧神经元为0,导致神经元死亡,不再更新。 (2)输出非负,仍然存在zigzag现象。 参考文章1:【深度学习】为什么使用ReLU作为激活函数,ReLU比sigmoid优秀在哪里 参考文章2:卷积神经网络之relu激活函数的理解 参考文章3:神经网络为什么要使用激活函数,为什么relu要比sigmoid要好 来源: CSDN 作者: Dontla 链接: https://blog.csdn.net/Dontla/article/details/104030712

6.1激活函数-数据预处理笔记

岁酱吖の 提交于 2020-01-18 05:50:39
文章目录 处理过程 激活函数 sigmoid函数 问题1 首先是饱和神经元将使梯度消失 问题2 sigmoid是非0中心函数 问题3 exp()是一个计算成本高的函数 tanh激活函数 ReLU激活函数 ReLU改进 leaky relu 实践 数据预处理 初始化网络权重 处理过程 处理过程包括 激活函数 数据预处理 权重初始化 批量归一化 训练过程监控 超参的优化 激活函数 当输入数据,在全连接层或者卷积层,我们将输入乘上权重值,然后将结果输入一个激活函数,或非线性单元。 上图是一些例子 sigmoid函数 每个数被输入sigmoid中,都会被压缩到[0,1]的范围内,然而它从在很多问题。 问题1 首先是饱和神经元将使梯度消失 当x=-10,太过接近sigmoid负饱和区,这个区域本质上是平的所以梯度变为0,我们将返回上游梯度乘一个约为0的数,所以得到一个非常小的梯度,所以某种意义上经过链式法则后让梯度流消失因此0梯度就传递到下游的节点。 当x=0,可以有一个好的梯度可以好的反向传播 当x=10,或者很大正值,它们位于梯度平滑区域,无法得到梯度流的反馈。 问题2 sigmoid是非0中心函数 当输入神经元的数值始终为正,它会乘以某个权重W,然后我们将通过激活函数来运行 权重W梯度如何? 当我们把上游梯度传回来,就是对我们的损失L关于f进行求导,就是dl/df它的值就是正数或负数

吴恩达机器学习3--逻辑回归(Logistic Regression)

吃可爱长大的小学妹 提交于 2020-01-17 23:57:01
分类问题 在分类问题中,你要预测的变量 𝑦 是离散的值,我们将学习一种叫做 逻辑回归 (Logistic Regression) 的算法,这是目前最流行使用最广泛的一种学习算法。 在分类问题中,我们尝试预测的是结果是否属于某一个类(例如正确或错误)。分类问题的例子有:判断一封电子邮件是否是垃圾邮件;判断一次金融交易是否是欺诈;判断肿瘤是恶性还是良性 先从二元分类来讨论 我们将因变量可能属于的两个类别称为 正类 和 负类 ,我们用0表示负类,用1表示正类。 如果我们用线性回归来解决一个分类问题,线性函数的输出值可能远大于1或者远小于0,那怎么办呢? 所以我们就要逻辑回归的算法的 输出值永远在0到1中间 根据线性回归模型,我们只能预测连续值,而逻辑回归预测的是离散值,我们可以假设 当ℎ𝜃(𝑥) >= 0.5时,预测 𝑦 = 1。 当ℎ𝜃(𝑥) < 0.5时,预测 𝑦 = 0 。 我们引入一个新的模型,逻辑回归,该模型的输出变量范围始终在 0 和 1 之间。 逻辑回归模型的假设是: ℎ𝜃(𝑥) = 𝑔(𝜃𝑇𝑋) 其中: 𝑋 代表特征向量 𝑔 代表逻辑函数,是一个常用的逻辑函数为 S 形函数(Sigmoid function) python代码实现 import numpy as np def sigmoid ( z ) : return 1 / ( 1 + np . exp ( - z

机器学习,深度学习相关概念,及用PyTorch实现(二)——Logistic回归模型

∥☆過路亽.° 提交于 2020-01-14 23:14:14
Logistic回归是一种广义的回归模型,其与多元线性回归有着很多相似之处,模型的形式基本相同,虽然也被称为回归,但是其更多的情况使用在分类问题上,同时又以二分类更为常用。 回归和分类:回归问题得到的结果是 连续 的,比如通过学习时间预测成绩 分类问题是将数据分成几类,比如根据邮件信息将邮件分成垃圾邮件和有效邮件两类 Logistic回归的模型形式和线性回归一样,都是y=wx+b, 其中x可以是一个多维的特征,唯一不同的地方在于Logistic回归会对y作用一个logistic函数,将其变为一种概率的结果。Logistic 函数作为Logistic回归的核心,也被称为Sigmoid函数。 Sigmoid函数 可以看到Sigmoid函数的范围是在0~1之间,所以任何一个值经过了Sigmoid 函数的作用,都会变成0~1之间的一个值,这个值可以形象地理解为一个概率,比如对于二分类问题,这个值越小就表示属于第一类,这个值越大就表示属于第二类。 损失函数: Logistic回归使用了Sigmoid函数将结果变到0~1之间,对于任意输入一个数据,经过Sigmoid之后的结果我们记为yΛ, 表示这个数据点属于第二类的概率,那么其属于第一类的概率就是1 - yΛ.如果这个数据点属于第二类,我们希望y越大越好,也就是越靠近1越好,如果这个数据属于第一类,那么我们希望1- yΛ越大越好

深度学习之BN(批量标准化)

纵然是瞬间 提交于 2020-01-13 12:18:51
BN作为最近一年来深度学习的重要成果,已经广泛被证明其有效性和重要性。虽然还解释不清其理论原因,但是实践证明好用才是真的好。 一、什么是BN 机器学习领域有个很重要的假设: 独立同分布假设 ,就是假设训练数据和测试数据是满足相同分布的,这是通过训练数据获得的模型能够在测试集获得好的效果的一个基本保障。BN就是深度神经网络训练过程中使得每层网络的输入保持相同分布。 二、为什么要使用BN 根据论文《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》所讲内容,BN主要是解决Internal Convariate Shift问题。那么什么是Internal Convariate Shift呢? 可以这样解释:如果ML系统实例集合<X,Y>中的输入值X的分布老是变,这不符合IID假设,网络模型很难学习到有效的规律。对于深度学习这种包含很多隐层的网络结构,在训练过程中,因为各层参数不停在变化,所以每个隐层都会面临covariate shift的问题,也就是在训练过程中,隐层的输入分布老是变来变去,这就是所谓的“Internal Covariate Shift”,Internal指的是深层网络的隐层,是发生在网络内部的事情,而不是covariate

Batch Normalization

家住魔仙堡 提交于 2020-01-12 19:24:42
前言: Batch Normalization是深度学习领域在2015年非常热门的一个算法,许多网络应用该方法进行训练,并且取得了非常好的效果。 众所周知,深度学习是应用随机梯度下降法对网络进行训练,尽管随机梯度下降训练神经网络非常有效,但是它有一个缺点,就是需要人为的设定很多参数,比如学习率,权重衰减系数,Dropout比例等。这些参数的选择对训练结果至关重要,以至于训练的大多数精力都耗费在了调参上面。BN算法就可以完美的解决这些问题。当我们使用了BN算法,我们可以去选择比较大的初始学习率,这样就会加快学习的速度;我们还可以不必去理会过拟合中的dropout、正则项约束问题等,因为BN算法可以提高网络的泛化能力;我们再也不需要使用局部响应归一化层,因为BN本身就是归一化的网络;还可以打乱训练数据,防止每批训练的时候,某一个样本经常被选到。通常在训练神经网络之前,我们都会对数据进行归一化处理,为什么呢?因为神经网络训练实际是为了学习数据的分布情况,一旦训练数据与测试数据分布不同,那么网络的泛化能力也会大大降低。另外,如果每一批的训练数据都不同,那么神经网络就会去适应不同训练数据的分布,这样就会大大降低网络训练的速度。深度学习的训练是一个复杂的过程,如果前几层的数据分布发生了变化,那么后面就会积累下去,不断放大,这样就会导致神经网络在训练过程中不断适应新的数据分布,影响网络训练的速度

循环神经网络和LSTM

我们两清 提交于 2020-01-10 08:39:29
MENU 循环神经网络 定义 应用领域 模型结构 问题 LSTM 基本概念 核心思想 循环神经网络 定义 循环神经网络(Recurrent Neural Network, RNN)是一类以序列(sequence)数据为输入,在序列的演进方向进行递归(recursion)且所有节点(循环单元)按链式连接的递归神经网络(recursive neural network) 应用领域 RNN的应用领域有很多, 可以说只要考虑时间先后顺序的问题都可以使用RNN来解决.这里主要说一下几个常见的应用领域: 自然语言处理(NLP): 主要有视频处理, 文本生成, 语言模型, 图像处理 机器翻译, 机器写小说 语音识别 图像描述生成 文本相似度计算 音乐推荐、网易考拉商品推荐、Youtube视频推荐等新的应用领域. 模型结构 问题 RNN存在梯度消失和梯度爆炸问题(BP算法和长时间依赖造成的): RNN的算法, 它处理时间序列的问题的效果很好, 但是仍然存在着一些问题, 其中较为严重的是容易出现梯度消失或者梯度爆炸的问题(BP算法和长时间依赖造成的). 注意: 这里的梯度消失和BP的不一样,这里主要指由于时间过长而造成记忆值较小的现象. 因此, 就出现了一系列的改进的算法, 这里介绍主要的两种算法: LSTM 和 GRU. LSTM 和 GRU对于梯度消失或者梯度爆炸的问题处理方法主要是:

BP 算法之一种直观的解释

喜夏-厌秋 提交于 2020-01-10 07:15:11
本文转载自: https://www.cnblogs.com/daniel-d/archive/2013/06/03/3116278.html 作者:daniel-D 转载请注明该声明。 0. 前言 之前上模式识别课程的时候,老师也讲过 MLP 的 BP 算法, 但是 ppt 过得太快,只有一个大概印象。后来课下自己也尝试看了一下 stanford deep learning 的 wiki, 还是感觉似懂非懂,不能形成一个直观的思路。趁着这个机会,我再次 revisit 一下。本文旨在说明对 BP 算法的直观印象,以便迅速写出代码,具体偏理论的链式法则可以参考 我的下一篇博客 (都是图片,没有公式)。 1. LMS 算法 故事可以从线性 model 说起(顺带复习一下)~在线性 model 里面,常见的有感知机学习算法、 LMS 算法等。感知机算法的损失函数是误分类点到 Target 平面的总距离,直观解释如下:当一个实例点被误分,则调整 w, b 的值,使得分离超平面向该误分类点的一侧移动,以减少该误分类点与超平面的距离,在 Bishop 的 PRML一书中,有一个非常优雅的图展现了这个过程。但是了解了 MLP 的 BP 算法之后,感觉这个算法与 LMS 有点相通之处。虽然从名字上 MLP 叫做多层感知机,感知机算法是单层感知机。 LMS (Least mean squares)

【深度学习】sigmoid与softmax

社会主义新天地 提交于 2020-01-09 00:53:06
sigmoid与softmax sigmoid与softmax可以神经网络的输出单元。 原理 sigmoid 预测二值型变量$y$的值,定义如下: $$\hat{y}= \sigma( \omega^{T}h+b)=\frac{1}{1+exp{-( \omega^ {T}h+b)}}$$ 通常使用最大似然来学习,因为最大似然的代价函数是$-log(y|x)$,代价函数中的log抵消了sigmoid中的exp,这样的结果是只有当$\sigma$函数的自变量非常大的时候才会有饱和,也就是梯度变得非常小。 softmax softmax最常见的多分类器的输出单元。 $$z=W^{T}h+b$$ $$y_{i}=softmax(z_{i})=\frac{exp(z_{i})}{\sum_{j}exp(z_{j})}$$ 同样,对数似然中的log可以抵消exp,而其他形式的目标函数(比如平方误差)都不能起到学习的作用。 交叉熵与softmax loss 交叉熵是衡量样本真实分布与样本预测分布的距离,分布距离越小,交叉熵的值就越小,公式如下: $$H(p,q)=\sum_{i}^{n}-p_{i}log(q_{i})$$ 其中$p$是样本真实分布,$q$是预测分布,$n$为样本数量。根据交叉熵的形式,可以写出softmax损失函数公式,$\hat{y_{i}}$是训练数据的真实标签: $$L

tensorflow激活函数总结分析

故事扮演 提交于 2020-01-06 14:59:16
每个神经元都必须有激活函数。它们为神经元提供了模拟复杂非线性数据集所必需的非线性特性。该函数取所有输入的加权和,进而生成一个输出信号。你可以把它看作输入和输出之间的转换。使用适当的激活函数,可以将输出值限定在一个定义的范围内。 如果 xi 是第 j 个输入,Wj 是连接第 j 个输入到神经元的权重,b 是神经元的偏置,神经元的输出(在生物学术语中,神经元的激活)由激活函数决定,并且在数学上表示如下: 这里,g 表示激活函数。激活函数的参数 ΣWjxj​+b 被称为神经元的活动。 这里对给定输入刺激的反应是由神经元的激活函数决定的。有时回答是二元的(是或不是)。例如,当有人开玩笑的时候...要么不笑。在其他时候,反应似乎是线性的,例如,由于疼痛而哭泣。有时,答复似乎是在一个范围内。 下面整理了tensorflow中提供的激活函数: 1、sigmoid激活函数 sigmoid函数也被称为S型函数,它可以将整个实数区间映射到(0,1)区间,因此经常被用来计算概率,它也是在传统神经网络中被经常使用的一种激活函数。 sigmoid函数可以由下列公式定义 sigmoid函数对x求导的公式: sigmoid激活函数的 优点 : 1)输出的映射区间(0,1)内单调连续,非常适合用作输出层; 2)比较容易求导; 3)输出范围有限,数据不会发散 sigmoid激活函数的 缺点 : 1