sigmoid

AlexNet

笑着哭i 提交于 2020-02-11 01:44:05
这篇论文的作者包括Alex Krizhevsky,Ilya Sutskever 和Geoffrey E. Hinton,三人均来自于多伦多大学计算机科学院,其中,前两者都是Hinton的学生,Hinton就不多说了,和Yoshua Bengio以及Yann LeCun共同获得了2018年图灵奖。下面我们来看一下这篇论文《ImageNet Classification with Deep Convolutional Neural Networks》。 我主要从论文的性能提升方面,和训练提速方面进行介绍。 1、ReLU 论文并没有使用标准的tanh函数和sigmoid函数 而是使用了Rectified Linear Unit,即ReLU 结果也是显而易见的 使用ReLU(实线)的四层卷积神经网络在CIFAR-10上达到25%的训练错误率,比使用tanh(虚线)神经元的等效网络快六倍。每个网络的学习率是独立选择的,以使训练尽可能快。没有采用任何形式的正规化。这里所演示的效果的大小随着网络架构的不同而不同,但是使用ReLUs的网络始终比使用饱和神经元的网络学习速度快几倍。 为什么ReLU比tanh和sigmoid收敛速度快呢,我们来具体看一下几个函数 sigmoid tanh ReLU 从图像上可以看出,sigmoid和tanh在饱和区域非常平缓

百度PaddlePaddle入门-11(网络结构)

萝らか妹 提交于 2020-02-10 18:41:41
前面使用与房价预测相同的简单神经网络解决手写数字识别问题,效果并不理想,原因有两点: 输入数据类型不同。房价预测的输入为离散一维数据。 房价预测使用全连接神经网络无法学习到图像二维数据中的空间信息 。 模型复杂度不够。因为手写数字识别任务涉及到图像信号,比房价预测任务更加复杂,模型的复杂度也会影响最终的效果,理论上复杂的模型能够表示更复杂的转换关系(从输入到输出)。 本节介绍两种常见的网络结构,全连接神经网络和卷积神经网络,观测卷积网络能否提升手写数字识别的训练效果。 在开始介绍网络结构前,复用上一节的数据处理代码,代码如下。 1 #数据处理部分之前的代码,保持不变 2 import os 3 import random 4 import paddle 5 import paddle.fluid as fluid 6 from paddle.fluid.dygraph.nn import Conv2D, Pool2D, FC 7 import numpy as np 8 import matplotlib.pyplot as plt 9 from PIL import Image 10 11 import gzip 12 import json 13 14 # 定义数据集读取器 15 def load_data(mode='train'): 16 17 # 数据文件 18

LSTM网络学习

假如想象 提交于 2020-02-08 18:31:34
循环神经网络(Recurrent Neural Networks) 人对一个问题的思考不会完全从头开始。比如你在阅读本片文章的时,你会根据之前理解过的信息来理解下面看到的文字。在理解当前文字的时候,你并不会忘记之前看过的文字,从头思考当前文字的含义。 传统的神经网络并不能做到这一点,这是在对这种序列信息(如语音)进行预测时的一个缺点。比如你想对电影中的每个片段去做事件分类,传统的神经网络是很难通过利用前面的事件信息来对后面事件进行分类。 而循环神经网络(下面简称RNNs)可以通过不停的将信息循环操作,保证信息持续存在,从而解决上述问题。RNNs如下图所示 1.png 可以看出A是一组神经网络(可以理解为一个网络的自循环),它的工作是不停的接收 并且输出 。从图中可以看出A允许将信息不停的再内部循环,这样使得它可以保证每一步的计算都保存以前的信息。 这样讲可能还是有点晕,更好的理解方式,也是很多文章的做法,将RNNs的自循环结构展开,像是将同一个网络复制并连成一条线的结构,将自身提取的信息传递给下一个继承者,如下图所示。 2.png 这种链式的结构揭示了RNNs与序列和列表类型的数据密切相关。好像他们生来就是为了处理序列类型数据的。 谁说不是呢!在过去的几年里,RNNs在语音识别、文字建模、翻译、字幕等领域有很成功的应用。在Andrej Karpathy写的博客 The

【TensorFlow2.x系列第3篇】TensorFlow2.0-深度学习中的激活函数

假装没事ソ 提交于 2020-02-08 10:15:58
对于激活函数的应用是比较熟悉和频繁的,但一直以来没有系统性地把深度学习中地激活函数做一个总结,因此小知同学特地对常用的激活函数做一个比较全面的总结, 在讲述理论的同时,也根据激活函数的公式进行编程实现 激活函数概念 所谓激活函数(Activation Function),就是在人工神经网络的神经元上运行的函数,负责将神经元的输入映射到输出端。 什么是激活函数 激活函数(Activation functions)对于人工神经网络模型去学习、理解非常复杂和非线性的函数来说具有十分重要的作用。它们将非线性特性引入到我们的网络中。如图1,在神经元中,输入的 inputs 通过加权,求和后,还被作用了一个函数,这个函数就是激活函数。引入激活函数是为了增 加神经网络模型的非线性。没有激活函数的每层都相当于矩阵相乘。就算你叠加了若干层之后,无非还是个矩阵相乘罢了。 为什么使用激活函数 如果不用激活函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合,这种情况就是最原始的感知机(Perceptron)。 如果使用的话,激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。 个人认知与理解 我觉得机器学习的传统算法与深度学习算法的比较重要的区别是: 从广义上来讲

激活函数

早过忘川 提交于 2020-02-07 09:28:27
激活函数 因为线性的卷积运算,无法形成复杂的空间表示,故很难提取出高语义的信息,因此需要加入非线性的映射,称为激活函数,可以逼近任意的非线性函数,以提升整个神经网络的表达能力. 常用的激活函数 Sigmoid 函数 σ ( x ) = 1 1 + e − x \sigma(x) = \frac{1}{1+e^{-x}} σ ( x ) = 1 + e − x 1 ​ \sigma(x) 的导数计算 σ ( x ) ′ = ( 1 1 + e − x ) ′ = 1 − 1 1 + e − x = 1 − σ ( x ) \sigma(x)' = \left(\frac{1}{1+e^{-x}}\right)' = 1 - \frac{1}{1+e^{-x}} = 1- \sigma(x) σ ( x ) ′ = ( 1 + e − x 1 ​ ) ′ = 1 − 1 + e − x 1 ​ = 1 − σ ( x ) 目的是将一个实数输入转化到 0~1 之间的输出,具体的说也是将越大的负数转化到越靠近 0, 将越大的正数转化到越靠近 1. 即 0 端对应抑制状态,1 端对应激活状态. 中间部分梯度大. 缺点: (1) Sigmoid 函数会造成梯度消失. 靠近 0 和 1 两端时,梯度几乎变为 0, (2) Sigmoid 输出不是以 0 为均值, 这会导致经过 SIgmoid

BP神经网络

纵饮孤独 提交于 2020-02-07 03:02:50
起源:线性神经网络与单层感知器 古老的线性神经网络,使用的是单层Rosenblatt感知器。该感知器模型已经不再使用,但是你可以看到它的改良版:Logistic回归。 可以看到这个网络,输入->加权->映射->计算分类误差->迭代修改W、b,其实和数学上的回归拟合别无二致。 Logistic回归对该模型进行了改良: 线性神经网络(回归)使用的LMS(最小均方)的数学原理其实可由最大似然估计+假设误差概率模型得到。(详见Andrew Ng视频) 在二类分类(误差非0即1)情况下,适用于连续型数据的最小均方显然不是很好的cost函数,会引起梯度过大。 仿照线性回归假设误差服从正态分布建立概率模型,Logistic回归假设误差服从二项分布建立概率模型。 Logistic函数的(0~1连续特性)在这里充当着,由输入评估概率的角色,而不是像下面的BP网络一样,起的是高维空间非线性识别作用。 该手法同样在RBM限制玻尔兹曼机中使用。 实际上,这两种模型的起源都是最小二乘法的线性回归。不同的是,早期的解决线性回归使用的矩阵解方程组,求得参数。 而基于梯度下降使目标函数收敛的数学方法,在计算神经科学领域,就变成神经网络了。 Part I :BP网络的结构与工作方式 BP网络中使用隐层(HideLayer)设定,目的是通过全连接的网络+非线性Sigmoid函数,疯狂地通过特征空间映射来区分非线性数据

LSTMs 长短期记忆网络系列

孤街醉人 提交于 2020-02-07 02:11:38
RNN的长期依赖问题 什么是长期依赖? 长期依赖是指当前系统的状态, 可能受很长时间之前系统状态的影响 ,是RNN中无法解决的一个问题。 如果从 (1) “ 这块冰糖味道真?” 来预测下一个词,是很容易得出“ 甜 ”结果的。但是如果有这么一句话, (2) “ 他吃了一口菜,被辣的流出了眼泪,满脸通红。旁边的人赶紧给他倒了一杯凉水,他咕咚咕咚喝了两口,才逐渐恢复正常。他气愤地说道:这个菜味道真? ” ,让你从这句话来预测下一个词,确实很难预测的。因为出现了长期依赖, 预测结果要依赖于很长时间之前的信息。 RNN的长期依赖问题 RNN 是包含循环的网络,允许信息的持久化。 预测问题(1): 相关的信息和预测的词位置之间的间隔是非常小时,RNN 可以学会使用先前的信息。 预测问题(2): 在这个间隔不断增大时,RNN 会丧失学习到连接如此远的信息的能力。 Why? 理论上,通过调整参数,RNN是可以学习到时间久远的信息的。 Bengio, et al. (1994) 但是,实践中的结论是,RNN很难学习到这种信息的。 RNN 会丧失学习时间价格较大的信息的能力, 导致长期记忆失效。 RNN中,考虑每个连接的权重,如果abs(W)<1,逐层迭代,将写成含权重的表达式,那么前面的系数会 连乘多个权重 。当层与层之间距离非常远时, 较前层传递到当前层是非常小的一个数 ,可以认为对几乎不产生影响

深度学习——最常见的三种激活函数

末鹿安然 提交于 2020-02-06 20:11:46
深度学习——最常见的三种激活函数 1 tanh激活函数 1.1 函数原型 t a n h ( x ) = e x − e − x e x + e − x tanh(x) = \frac{e^x-e^{-x}}{e^x+e^{-x}} t a n h ( x ) = e x + e − x e x − e − x ​ 1.2 函数图像 1.3 函数导数 t a n h ′ ( x ) = 1 − t a n h 2 ( x ) tanh'(x) = 1 - tanh^2(x) t a n h ′ ( x ) = 1 − t a n h 2 ( x ) 1.4 代码实现 import numpy as np def tanh ( x ) : return ( np . exp ( x ) - np . exp ( - x ) ) / ( np . exp ( x ) + np . exp ( - x ) ) 2 Sigmoid激活函数 2.1 函数原型 s i g m o i d ( x ) = 1 1 + e − x sigmoid(x) = \frac{1}{1+e^{-x}} s i g m o i d ( x ) = 1 + e − x 1 ​ 2.2 函数图像 图像来源:https://www.jianshu.com/p/ebde8a644e25 2.3 函数导数 s i g

Chapter3_神经网络

♀尐吖头ヾ 提交于 2020-02-05 12:03:49
神经网络 输入层(第0层)->中间层(隐藏层)->输出层(最后一层) 隐藏层的激活函数 将输入信号的总和转换为输出信号.决定如何来激活输入信号的总和 先计算输入信号的加权总和(带偏置),然后用激活函数转换这一总和 \[ a = b+\omega_1x_1+\omega_2x_2\\ y = h(a) \] 阶跃函数 以阈值为界,一旦输入超过阈值,就切换输出 #阶跃函数的实现 import numpy as np def step_function(x): y = x > 0 return y.astype(np.int) step_function(np.array([-1.0,1.0,2.0])) array([0, 1, 1]) #绘制阶跃函数的图形 import matplotlib.pylab as plt x = np.arange(-5.0,5.0,0.1) y = step_function(x) plt.plot(x,y) plt.ylim(-0.1,1.1)#指定y轴的范围 plt.show() sigmoid函数 \[ h(x) = \frac{1}{1+exp(-x)} \] #sigmoid函数的实现 def sigmoid(x): return 1/(1+np.exp(-x)) x = np.array([-1.0,1.0,2.0]) sigmoid(x)

CNN:LeNet-5

牧云@^-^@ 提交于 2020-02-05 10:14:44
LeNet-5共包含8层 ![在这里插入图片描述](https://img- C1层是一个卷积层,由6个特征图Feature Map构成。特征图中每个神经元与输入为55的邻域相连。特征图的大小为2828,这样能防止输入的连接掉到边界之外(32-5+1=28)。C1有156个可训练参数(每个滤波器55=25个unit参数和一个bias参数,一共6个滤波器,共(55+1)6=156个参数),共156(28*28)=122,304个连接。 S2层是一个下采样层,有6个1414的特征图。特征图中的每个单元与C1中相对应特征图的22邻域相连接。S2层每个单元的4个输入相加,乘以一个可训练参数,再加上一个可训练偏置。每个单元的22感受野并不重叠,因此S2中每个特征图的大小是C1中特征图大小的1/4(行和列各1/2)。S2层有12(6(1+1)=12)个可训练参数和5880(1414(2*2+1)*6=5880)个连接。 C3层也是一个卷积层,它同样通过5x5的卷积核去卷积层S2,然后得到的特征map就只有10x10个神经元,但是它有16种不同的卷积核,所以就存在16个特征map了。 C3中每个特征图由S2中所有6个或者几个特征map组合而成。为什么不把S2中的每个特征图连接到每个C3的特征图呢?原因有2点。第一,不完全的连接机制将连接的数量保持在合理的范围内。第二,也是最重要的