sigmoid

深度学习基础问题总结(一)

て烟熏妆下的殇ゞ 提交于 2019-12-11 13:17:02
激活函数;梯度消失梯度爆炸问题;损失函数;反向传播; 文章目录 一、激活函数 1.什么是激活函数?激活函数是干什么的? 2.常见的激活函数 3.为啥relu用的比较多?relu的优点? 4.为啥sigmoid会有梯度显示现象? 二、梯度消失、梯度爆炸 1.梯度消失的例子 2.梯度消失与梯度爆炸 3.分析sigmoid梯度消失 4.解决梯度消失的方法 5.实验过程中怎么发现是否有梯度消失或者梯度爆炸? 三、损失函数 1.交叉熵 2.为啥人们选择交叉熵 3.回归问题损失函数 参考文献 一、激活函数 1.什么是激活函数?激活函数是干什么的? 激活函数是在神经网络每一层卷积或者全连接后的非线性函数部分。 她是干什么的?如果没有激活函数只有前面的全连接的话,相当于整个神经网络只有线性函数,每一层都是权重与输入的乘机,网络的拟合能力有限。正因为上面的原因,我们决定引入非线性函数作为激励函数,这样深层神经网络表达能力就更加强大(不再是输入的线性组合,而是几乎可以逼近任意函数)。 2.常见的激活函数 记住下图就可以了 3.为啥relu用的比较多?relu的优点? 1、sigmoid激活函数以及tanh激活函数容易产生 梯度消失现象 ; relu解决了梯度消失问题。 2、sigmoid计算量较大,而 relu计算量较小 。 速度快 3、relu会使得负数为0,使得网络具有一定稀疏性,提高网络表达能力

test2

我是研究僧i 提交于 2019-12-11 10:20:23
"""network2.py ~~~~~~~~~~~~~~ An improved version of network.py, implementing the stochastic gradient descent learning algorithm for a feedforward neural network. Improvements include the addition of the cross-entropy cost function, regularization, and better initialization of network weights. Note that I have focused on making the code simple, easily readable, and easily modifiable. It is not optimized, and omits many desirable features. """ #### Libraries # Standard library import json import random import sys # Third-party libraries import numpy as np #### Define the quadratic and cross

Why multiply the error by the derivative of the sigmoid in neural networks?

北战南征 提交于 2019-12-10 09:33:33
问题 Here is the code: import numpy as np # sigmoid function def nonlin(x,deriv=False): if(deriv==True): return x*(1-x) return 1/(1+np.exp(-x)) # input dataset X = np.array([ [0,0,1], [0,1,1], [1,0,1], [1,1,1] ]) # output dataset y = np.array([[0,0,1,1]]).T # seed random numbers to make calculation # deterministic (just a good practice) np.random.seed(1) # initialize weights randomly with mean 0 syn0 = 2*np.random.random((3,1)) - 1 for iter in xrange(10000): # forward propagation l0 = X l1 =

logistic / sigmoid function implementation numerical precision

落爺英雄遲暮 提交于 2019-12-10 02:52:05
问题 in scipy.special.expit , logistic function is implemented like the following: if x < 0 a = exp(x) a / (1 + a) else 1 / (1 + exp(-x)) However, I have seen implementations in other languages/frameworks that simply do 1 / (1 + exp(-x)) I am wondering how much benefit the scipy version actually brings. For very small x , the result approaches to 0. It works even if exp(-x) overflows to Inf . 回答1: It's really just for stability - putting in values that are very large in magnitude might return

神经网络之MNIST数据集和CIFAR-10数据集训练

别等时光非礼了梦想. 提交于 2019-12-09 15:17:09
1.构建前馈神经网络训练MNIST 环境 :pycharm + win10 + conda3 + python3.6 首先创建一个神经网络类NeuralNetwork: import numpy as np #定义一个神经网络类 class NeuralNetwork : #初始化参数 def __init__ ( self , layers , alpha = 0.1 ) : self . Weight = [ ] self . layers = layers self . alpha = alpha #遍历从第一层到最后两层之前停止 for i in np . arange ( 0 , len ( layers ) - 2 ) : #构造MxN权重矩阵,节点相连,增加一个偏置项,正态化数据:除以当前层节点数平方根,得稳定方差 weight = np . random . randn ( layers [ i ] + 1 , layers [ i + 1 ] + 1 ) self . Weight . append ( weight / np . sqrt ( layers [ i ] ) ) #最后两层输入连接需要一个偏置项,输入不需要 weight = np . random . randn ( layers [ - 2 ] + 1 , layers [ - 1 ] )

【机器学习】激活函数(ReLU, Swish, Maxout)

一个人想着一个人 提交于 2019-12-09 13:25:11
https://blog.csdn.net/ChenVast/article/details/81382939 神经网络中使用激活函数来加入非线性因素,提高模型的表达能力。 ReLU(Rectified Linear Unit,修正线性单元) 形式如下: ReLU 公式近似推导:: 下面解释上述公式中的softplus,Noisy ReLU. softplus 函数与ReLU函数接近,但比较平滑, 同ReLU一样是单边抑制,有宽广的接受域(0,+inf), 但是由于指数运算,对数运算计算量大的原因,而不太被人使用.并且从一些人的使用经验来看(Glorot et al.(2011a)),效果也并不比ReLU好. softplus的导数恰好是sigmoid函数. softplus 函数图像 : Noisy ReLU 1 ReLU可以被扩展以包括高斯噪声(Gaussian noise): f(x)=max(0,x+Y),Y∼N(0,σ(x))f(x)=max(0,x+Y),Y∼N(0,σ(x)) Noisy ReLU 在受限玻尔兹曼机解决计算机视觉任务中得到应用. ReLU上界设置 : ReLU相比sigmoid和tanh的一个缺点是没有对上界设限.在实际使用中,可以设置一个上限,如ReLU6经验函数: f(x)=min(6,max(0,x))f(x)=min(6,max(0,x)).

动手学PyTorch | (6) 多层感知机

谁都会走 提交于 2019-12-08 14:54:53
我们已经介绍了包括线性回归和softmax回归在内的单层神经⽹络。然⽽深度学习主要关注多层模型。在本节中,我们将以多层感知机(multilayer perceptron,MLP)为例,介绍多层神经网络的概念。 目录 1. 隐藏层 2. 激活函数 3. 多层感知机 4. 小结 1. 隐藏层 多层感知机在单层神经⽹络的基础上引⼊了一到多个隐藏层(hidden layer)。隐藏层位于输⼊层和输出层之间。下图展示了⼀个多层感知机的神经⽹络图,它含有⼀个隐藏层,该层中有5个隐藏单元。 在上图所示的多层感知机中,输⼊和输出个数分别为4和3,中间的隐藏层中包含了5个隐藏单元 (hidden unit)。由于输入层不涉及计算,图3.3中的多层感知机的层数为2。由上图可见,隐藏层中的神经元和输⼊层中各个输⼊完全连接,输出层中的神经元和隐藏层中的各个神经元也完全连接。因此,多层感知机中的隐藏层和输出层都是全连接层。 具体来说,给定⼀个⼩批量样本 ,其批量大小维n,输入个数为d。假设多层感知机只有⼀个隐藏层,其中隐藏单元个数为h。记隐藏层的输出(也称为隐藏层变量或隐藏变量)为H,有 。因为隐藏层和输出层均是全连接层,可以设隐藏层的权􏰀重参数和偏差参数分别为 ,输出层的权􏰀重和偏差参数分别为 。 我们先来看一种含单隐藏层的多层感知机的设计。其输出 的计算为: 也就是将隐藏层的输出直接作为输出层的输入

逻辑回归的前因后果

孤人 提交于 2019-12-07 16:30:22
逻辑回归的前因后果 LR的泛化形式 – 广义线性模型 最简单的线性回归模型,函数对于 x 和 w 都是线性的: y ( x ) = w T x + w 0 //--> 它是二维坐标系中的一条直线,或者三维空间中的一个平面,在高维空间则是超平面。为了把它用于分类,可以给它加一个激活函数,把值域压缩到小区间,比如(0, 1)之间,这就是广义线性模型: y ( x ) = f ( w T x + w 0 ) //--> 当激活函数是logistic-sigmoid函数时,这个分类方法就是LR: p ( C 1 | ϕ ) = σ ( w T ϕ ) //--> 从回归方法演化而来,LR虽用于分类,它的输出却不是{0,1}两类,而是一个连续的函数,所以名字还叫“回归”而不是“分类”。 为什么用logistic-sigmoid函数 首先,LR是判别模型,即它直接求后验概率,那么想象一下,一个只有两类的后验概率 应该是什么形状 ? 用例子说明,假设男女比例相等,男女两类的先验概率:p(男人)=1/2,p(女人)=1/2 现在给先验概率加一个条件:身高,即知道一个人的身高,猜它是男的概率,是女的概率。高个子通常是男的,但也可能是女的。在各种不同身高条件下,有了一系列 后验概率 : p (男| 150 ) =1/8 | p (男| 160 ) =1/5 | p (男| 170 ) =1/2 | p

《Neural Networks and Deep Learning》课程笔记

旧街凉风 提交于 2019-12-06 10:31:02
Lesson 1 Neural Network and Deep Learning 这篇文章其实是 Coursera 上吴恩达老师的深度学习专业课程的第一门课程的课程笔记。 参考了其他人的笔记继续归纳的。 逻辑回归 (Logistic Regression) 逻辑回归的定义 神经网络的训练过程可以分为 前向传播(forward propagation) 和 反向传播 (backward propagation) 的 过程。我们通过逻辑回归的例子进行说明。 逻辑回归是一个用于 二分类 (binary clasification) 的算法。比如说,我们有一张图片作为输入,比如下图中的猫,如果识别这张图片为猫,则输出标签1作为结果;如果识别出不是猫,那么输出标签0作为结果。而我们把输出结果用 \(y\) 表示就如下图所示。 图片在计算机中保存的话,我们需要保存三个矩阵,它们分别对应图片中的红、绿、蓝三种颜色通道。如果图片是 \(64\times64\) 像素的,那么这三个矩阵的大小都是 \(64\times64\) 。 为了把这张图片的像素值转换为特征向量 \(x\) ,我们需要把三个矩阵展开为一个向量,而这个向量的总维度用 \(n_x\) 表示的话,就是 \(n_x=3\times64\times64=12,288\) 。 符号定义: \(x\) :表示一个 \(n_x\) 维数据

RNN、LSTM、GRU的简单介绍

别等时光非礼了梦想. 提交于 2019-12-06 06:58:37
一、RNN    1.为什么需要RNN     RNN,中文’循环神经网络‘,解决的是时间序列问题。什么是时间序列问题呢,就是我们的样本数据之间在时间维度上存在关联的,跟一般的神经网络不一样,也就是说我们前一个输入和后一个输入有某种说不清道不明的关系,需要RNN这种特定结构的神经网络去寻找内部联系。    2.基本网 络结构     下面是RNN的一个基本结构和一个官网结构,第一个图里左边是未展开的形式,右边是展开的形式 ,将每一个时刻T=t的过程统统列举出来,它们共享参数W、U、V,最终的损失是每一个时刻的损失累加    3.前向传播    对于时刻t,存在:        ,     其中ϕ为激活函数,一般来说会选择tanh函数,b为偏置,而t时刻的输出O为:            输出的预测值y_hat为:             σ为激活函数,通常RNN用于分类,一般用softmax函数。     针对每个时刻经过这样的计算,我们就能得到每个时刻的y_hat和h_t,以及各自的损失,再通过累加每个时刻的损失值得到最终的损失,这样就算是一次前向传播结束了。    4.反向传播       我们说模型的训练其实就是:将数据喂到模型里,找到一批参数使得损失函数最小的过程。那么最重要的就是这批参数的更新过程了,我们用的是梯度下降的过程来更新参数,本质就这一个公式,敲黑板啦!! W