精华内容
下载资源
问答
  • bp神经网络激活函数的代码BP神经网络Matlab 描述 Matlab中的BP神经网络。 教程 该程序用于Matlab的主要应用程序来生成和训练BP神经网络。 我选择Sigmoid作为隐藏层的激活函数,并选择Linear函数作为输出层的激活函数...
  • 神经网络最全激活函数,包括sigmoid,tanh,ReLU,ELU,PReLU,softplus,liner等激活函数,应有尽有
  • 基于matlab的人工神经网络激活函数示例基于matlab的人工神经网络激活函数示例
  • 形象的解释神经网络激活函数的作用是什么?
  • 基于ArcReLU函数的神经网络激活函数优化研究.pdf
  • 共30种神经网络激活函数汇总,其中25种有函数图像以及导数图像,包括函数表达式。
  • 本资源主要是可视化各种激活函数:Relu,sigmoid ,swish,mish等,只需要依赖numpy,不需要安装pytorch,只是一个简单的demo
  • 激活函数神经网络中具有重要的地位。在SIGAI之前的公众号文章“理解神经网络激活函数”中,我们回答了3个关键的问题: 为什么需要激活函数? 什么样的函数能用作激活函数? 什么样的函数是好的激活函数? 这...
  • 如何自定义MATLAB神经网络激活函数

    千次阅读 2020-11-06 15:51:44
    1、拷贝 “C:\Program Files\MATLAB\R2017a\toolbox\nnet\nnet\nntransfer” 文件夹和文件到你的工作目录,例如ReLU函数:“poslin.m” 和 “+poslin”。 2、修改文件名和文件夹名,例如“my_softmax.m” 和 “+...

    环境:Win10 64-Bit

    MATLAB:R2017a

    1、拷贝 “C:\Program Files\MATLAB\R2017a\toolbox\nnet\nnet\nntransfer” 文件夹和文件到你的工作目录,例如ReLU函数:“poslin.m” 和 “+poslin”。

     

    2、修改文件名和文件夹名,例如“my_softmax.m” 和 “+my_softmax”。

     

    3、编辑 “my_softmax.m” 第一行和最后一行函数名为 “my_softmax” 。

     

    4、编辑函数。位于 “./+my_softmax/apply.m”,例如:

    5、修改后的网络调用方法如下:

    注:参考自 “How to customize Neural Networks' activation function

     

    展开全文
  • 神经网络激活函数的作用是什么?

    万次阅读 多人点赞 2017-12-03 21:22:29
    在看到激活函数的时候,突然不知道激活函数是干嘛用的!立马翻遍手里的纸质资料,都说的模糊不清。无奈,赶紧来网上看看!下面,我就把在网上看到的知识点,总结一下,形成读书笔记,方便大家学习!由于本人知识有限...

    这周本来想写一篇个人笔记,关于神经网络中反向传播算法识别手写字符的实现。但是,在整理自己的思路的时候,发现本人把之前看的许多神经网络的东西都给忘了,内心很是着急啊!在看到激活函数的时候,突然不知道激活函数是干嘛用的!立马翻遍手里的纸质资料,都说的模糊不清。无奈,赶紧来网上看看!下面,我就把在网上看到的知识点,总结一下,形成读书笔记,方便大家学习!由于本人知识有限,文章有少部分参考网上,如有侵权,请告知!我会及时修改、删除!

    一、 激活函数出现的原因

    思考这么一个问题:
    现在有一个二分类问题,我们要将下面的三角形和圆点进行正确的分类,如图1所示。我们试着用神经网络解决这个问题。跟大家说明一下,这是一个线性不可分的问题,就是你在这个平面里,找不到一条直线可以把图中的三角形和圆点完全分开。如果你能找到,算你厉害!


    图1:二分类问题

    解决思路:
    (1)用不带激活函数的单层感知机来解决。

    首先我们想到利用最简单的单层感知机来解决,单层感知机可以画出一条直线,把平面分开,如图2所示。

    图2:单层感知机分割平面

    我来简单的解释一下图2。在图2中,左图是一个单层的感知机结构,其中W1、W2是网络上权重,b是偏置量。左图是一个没有激活函数单层感知机,它的工作原理是:输入特征X1和特征X2,如果y>0,证明是正类;如果y<0,证明是负类。我们这里不讨论y=0的特殊情况。根据单层感知机的工作原理,我们画出右边的坐标图。

    总结:不带激活函数的单层感知机是一个线性分类器,不能解决线性不可分的问题。

    (2)用不带激活函数的多个感知机来解决。
    不带激活函数的单层感知机解决不了问题,那我们就会想到用多个感知机进行组合,获得更强的分类能力,看看能不能解决我们的线性不可分问题。如图3所示。

    图3 多个感知器

    图3中,我们已经得到了多感知器分类器了,那么它的分类能力能否解决我们的线性不可分的问题呢?我们来分析一下,来对y进行一个合并同类项,整理后的公式如下:
    y=X1(W1-11W2-1+W1-12W2-2+W1-13W2-3)+X2(W1-21W2-1+W1-22W2-2+W1-23W2-3)+W2-1b1-1+W2-2b1-2+W2-3b1-3

    大家看一下,合并后的式子,还是一个关于X1和X2的线性表达式,合并后的多个感知器本质上还是一个线性分类器,还是解决不了非线性的问题。
    不管是单层感知机还是多个感知器,只要不带激活函数,都只能解决线性可分的问题。解决不了我们的线性不可分问题。不信,那我们就在平面中画几条直线试试,结果发现这几条直线无论在平面中如何旋转,都不能完全正确的分开三角形和圆点。结果如图4所示。

    图4:线性分类器解决不了问题

    在上面的线性方程的组合过程中,我们其实类似的在做三条直线的线性组合,如图5所示。图5描述了,当我们直接用没有激活函数的分类器时,其实我们还是线性组合,最多也就是更复杂的线性组合罢了。有人在这里又要抖机灵了!我数学学的好,我记得学高等数学的时候,在不定积分那一块,有个画曲为直思想来近似求解。那么,我们可以来借鉴一下,用无数条直线去近似接近一条曲线,你很聪明啊!但是比着用非线性的激活函数来说,你这解决办法还是太低端了一些。

    图5:没有激活函数的分类器

    思考一个问题:抛开神经网络中神经元需不需要激活函数这点不说,如果没有激活函数,仅仅是线性函数的组合解决的问题太有限了,碰到非线性问题就束手无策了.那么加入激活函数是否能够解决呢?

    二、激活函数作用

    我们再设计一个神经网络,在所有的隐层和输出层加一个激活函数,这里激活函数我们就用Sigmoid函数,如图6所示。这样y输出的就是一个非线性函数了,y的输出更复杂,有了这样的非线性激活函数以后,神经网络的表达能力更加强大了。能不能解决我们一开始提出的线性不可分问题呢?我们接着来验证吧!

    图6:带有非线性激活函数的感知机

    我们把图6中的带有激活函数的单层感知机扩展到带有激活函数的多个神经元的情况。那么神经网络的表达能力更强,具体如图7所示。

    图7:带有激活函数的多个神经元组成的神经网络


    图8:带激活函数的非线性组合

    和图7相对应的非线性组合是图8所示的样子。这样看起来,似乎已经能解决我们线性不可分的问题了。最后,我们通过最优化损失函数的做法,通过不断的学习,能够学到正确分类三角形和圆点的曲线。具体学到什么曲线,我们不知道,或许是图9所示的曲线,也可能是其他曲线。

    图9:学习到的分类曲线

    总结:激活函数是用来加入非线性因素的,提高神经网络对模型的表达能力,解决线性模型所不能解决的问题。

    三、激活函数的实践

    我们都知道异或问题是线性不可分的问题,那么我们可以用今天学的激活函数解决这个问题。我在之前学习周志华老师西瓜书时候,已经用RBF神经网络实现过,感兴趣的小伙伴可以参考一下。这是地址:http://blog.csdn.net/program_developer/article/details/72716316


    本文参考:
    以上图片大部分来自于@颜沁睿的知乎回答。非常感谢!
    知乎话题:https://www.zhihu.com/question/22334626
    神经网络激励函数的作用是什么?有没有形象的解释? - 忆臻的回答 - 知乎https://www.zhihu.com/question/22334626/answer/147543436
    神经网络激励函数的作用是什么?有没有形象的解释? - 颜沁睿的回答 - 知乎https://www.zhihu.com/question/22334626/answer/103835591
    神经网络激励函数的作用是什么?有没有形象的解释? - lee philip的回答 - 知乎https://www.zhihu.com/question/22334626/answer/21036590
    机器学习周志华西瓜书。第五章:神经网络。

    关注微信公众号【Microstrong】,我写过4年Android代码,了解前端、熟悉后台,现在研究方向是机器学习、深度学习!一起来学习,一起来进步,一起来交流吧!欢迎扫描下方二维码关注交流!


    展开全文
  • BP神经网络Matlab实现,带GUI界面,多种数据选择,多种激活函数选择。主要是熟悉各种参数对神经网络的影响。相关介绍http://blog.csdn.net/hoho1151191150/article/details/79570281
  • 神经网络激活函数的理解以及激活函数的用法

    万次阅读 多人点赞 2018-09-24 20:30:14
    1.什么是激活函数  激活函数就是在神经元中,输入的input经过加权,求和后被应用于一个函数,这个函数就是激活函数:Activation Function...如果使用的话,激活函数给神经元引入了非线性的因素,使得神经网络可以...

    1.什么是激活函数

        激活函数就是在神经元中,输入的input经过加权,求和后被应用于一个函数,这个函数就是激活函数:Activation Function,如下图所示:

    2.为什么使用激活函数

        如果不使用激活函数,我们的每一层输出只是承接了上一层输入函数的线性变换,无论神经网络有多少层,输出都是输入的线性组合。如果使用的话,激活函数给神经元引入了非线性的因素,使得神经网络可以逼近任何非线性函数,这样神经网络就可以应用到非线性模型中。

    3.激活函数

    3.1激活函数类型

        激活函数有:sigmoid 函数,tanh函数,Relu函数,softmax函数

    3.2激活函数的介绍

    3.2.1 sigmoid函数

        公式:

        曲线:

    sigmoid函数也叫Logistic函数,用于隐藏层的输出,输出在(0,1)之间,它可以将一个实数映射到(0,1)的范围内,可以用来做二分类。常用于:在特征相差比较复杂或是相差不是特别大的时候效果比较好。

    sigmoid函数的缺点:1)激活函数的计算量大,反向传播求误差梯度时,求导涉及到除法。2)反向传播的时候,很容易出现梯度消失的情况,从而无法完成深度神经网络的训练;

    3.2.1.1为什么Sigmoid函数会出现梯度下降?

    反向传播算法中,要对激活函数求导,sigmoid的导数表达式为:

    sigmoid原函数及导数图形如下:

    由图可知,导数从0开始,很快就又趋近于0,所以很容易造成梯度下降时出现“梯度消失”。

    3.2.2  Tanh函数

        公式:

                  

        曲线:

        tanh曲线:也称为双切正切曲线,取值范围为[-1,1],tanh在特征相差明显的时候效果会好,在循环过程中,会不断的扩大特征效果,与Sigmoid函数相比,tanh是0均值的,因此实际应用中,tanh要比sigmoid函数更好。

    3.2.3 Relu函数

        公式:

        曲线:

        由上图可以看到:输入信号<0时,输出都是0,输入信号>0时,输出等于输入。

        RELU函数:使用Relu函数得到的SGD的收敛速度会比tanh/sigmoid函数快很多。

        RELU的缺点:训练的时候很脆弱,很容易就‘die’了,例如:一个非常大的梯度流过一个Relu神经元,更新过参数后,这个神经元不会对任何数据有激活现象了,那么这个神经元的梯度就永远都会是0了。如果learningRate很大,那么很有可能网络中%40的神经元都‘die’了。

    3.2.4  softmax函数

    Softmax-用于多分类神经网络的输出

        公式:

        案例: 

    如果某一个zj大过其他zk,那么这个映射的分量就逼近于1,反而就逼近于0,主要应用于多分类。

    为什么取指数?1):为了模仿max的行为,使得值大的经过映射后值更大;2):需要一个求导函数

    4  sigmoid函数,Relu函数,softmax函数的区别

    Sigmoid与Relu函数比较:

    Sigmoid函数发生梯度消失问题,Relu就不存在这样的问题,它的导数表达式为:

    曲线如图所示:

    对比于sigmoid函数相比:1):单侧抑制;2):相对宽阔的兴奋区域;3):稀疏激活性

    sigmoid和softmax函数

    sigmoid将一个real value映射到(0,1)的区域,用来做二分类

    而softmax是将一个k维的real value向量(a1,a2...ak)映射成一个(b1,b2...bk),其中bi是一个在(0,1)的常数,输出的神经元之和为1,所以相当于概率值,可以通过bi的概率的大小来做多分类。

    在二分类的时候,softmax和sigmoid函数是一样的,都是求解cross entropy loss,而softmax是可以用来多分类的。softmax是sigmoid函数的扩展,因为当类别为2时,softmax回归退化为sigmoid回归,具体来说,当k=2时,softmax回归的假设函数为:

    利用softmax回归参数冗余特点,从两个参数向量中,都减去向量θ1 ,得到: 

    这与logistic回归是一致的。

    softmax建模使用的是多项式分布,而logistic是基于伯努利分布。多个logistic回归通过叠加也是可以实现多分类效果的,但是softmax的多分类回归,类与类之间是互斥的,而多个logistic回归进行多分类,类别之间并不是互斥的,可以是多种类。

    5  激活函数选择

    选择的时候,根据各个函数的优缺点来进行选择:

    如果使用Relu,则要小心设置learnning rate,注意不要让网络出现很多"dead"神经元,如果不好解决,可以试试Leaky Relu、PRelu或者Maxout。

    展开全文
  • 神经网络激活函数和损失函数

    万次阅读 2017-08-10 19:22:13
    激活函数 1、sigmoid  sigmoid函数曲线如下: sigmoid激活函数,符合实际,当输入值很小时,输出接近于0;当输入值很大时,输出值接近于1。 但sigmoid激活函数有较大的缺点,是主要有两...

    激活函数


    1、sigmoid


              sigmoid函数曲线如下:

    sigmoid激活函数,符合实际,当输入值很小时,输出接近于0;当输入值很大时,输出值接近于1。
    但sigmoid激活函数有较大的缺点,是主要有两点:
    (1)容易引起梯度消失。当输入值很小或很大时,梯度趋向于0,相当于函数曲线左右两端函数导数趋向于0。
    (2)非零中心化,会影响梯度下降的动态性。这个可以参考CS231n.

    2、tanh


    tanh函数曲线如下:

    与sigmoid相比,输出至的范围变成了0中心化[-1, 1]。但梯度消失现象依然存在。


    3、Relu


    Relu修正线性单元是有许多优点,是目前神经网络中使用最多的激活函数。

    函数曲线如下:

    优点:(1)不会出现梯度消失,收敛速度快;
            (2)前向计算量小,只需要计算max(0, x),不像sigmoid中有指数计算;
             (3)反向传播计算快,导数计算简单,无需指数、出发计算;
             (4)有些神经元的值为0,使网络具有saprse性质,可减小过拟合。

    缺点:(1)比较脆弱,在训练时容易“die”,反向传播中如果一个参数为0,后面的参数就会不更新。使用合适的学习率会减弱这种情况。

    4、Leak Relu
    Leak Relu是对Relu缺点的改进,当输入值小于0时,输出值为αx,其中α是一个很小的常数。这样在反向传播中就不容易出现“die”的情况。


    损失函数

    损失函数(loss function)也叫代价函数(cost function)。是神经网络优化的目标函数,神经网络训练或者优化的过程就是最小化损失函数的过程(损失函数值小了,对应预测的结果和真实结果的值就越接近


    1、二次代价函数





    二次代价函数就是欧式距离的和,在线性回归中用的比较多,但在目前的神经网络中用的相对较少。


    2、交叉熵代价函数


    交叉熵(cross-entropy)代价函数来源于信息论中熵的概念。是目前神经网络分类问题中(比如图像分类)常用的代价函数。交叉熵代价函数对分类问题有一个很好的解释:当分类输出正确类的结果(输出层使用softmax函数之后的值)接近于1,即a=~1时,对应正确类的标签为1,即y=1。则可得到,C中第一项接近于0,第二项等于0。对于非正确类,a接近于0,y=0,则C中第一项为0,第二项接近于0。故最终C接近于0;当分类输出正确类的结果与1的差距越大,则上式C的值越大。


    3、对数似然函数

    对数似然函数与交叉熵代价函数类似,但只考了正确类损失,不考虑错误类的损失,用的也比较多。与交叉熵代价函数一样,对数似然也对分类有一个很好的解释:当正确类的输出值a(输出层只用softmax后的值)接近于1时,y=1,C接近于0;当输出值a距离a越大时,C值越大。

    参考资料:http://cs231n.github.io/neural-networks-1/
    展开全文
  • 一、sigmoid函数 二、tanh函数 三,ReLU函数 四, Leaky ReLU 五,ELU指数线性单元函数&SELU函数 六,softmax函数
  • 神经网络激活函数总结

    千次阅读 2018-03-23 01:32:01
    激活函数的作用 在线性不可分的情况下,激活函数可以给模型引入非...这个问题是线性不可分的,假设有一个单隐藏层的神经网络,如图: 上图线上数字表示权重,下面两个节点是异或问题的输入,中间隐藏层的1.5表...
  • import numpy as np import matplotlib.pyplot as plt def step_function(x): return np.array(x > 0, dtype=np.int) x = np.arange(-0.5, 0.5, 0.01) y = step_function(x) ...plt.ylim(-0...
  • 激活函数神经网络中具有重要的地位,对于常用的函数如sigmoid,tanh,ReLU,不少读者都已经非常熟悉。但是你是否曾想过这几个问题: 为什么需要激活函数? 什么样的函数可以做激活函数? 什么样的函数是好的...
  • python 神经网络激活函数sigmoid函数

    千次阅读 2019-07-18 20:17:42
    sigmoid函数 由于其单增及反函数单增等性,sigmoid函数常被用做神经网络激活函数,将变量映射到0,1之间。所以主要用来做二分类神经网络。 由于其平滑、易于求导的特性,处理特征相差不是很大或者复杂的数据效果...
  • 查阅资料和学习,大家对神经网络激活函数的作用主要集中下面这个观点: 激活函数是用来加入非线性因素的,解决线性模型所不能解决的问题。 下面我分别从这个方面通过例子给出自己的理解~ @lee philip@颜沁睿...
  • 神经网络激活函数与损失函数

    千次阅读 2016-08-11 11:42:23
    sigmoid输出层使用的损失函数为cross-entropysoftmax 输出层使用的损失函数为log-likelihood
  • 神经网络激活函数汇总(Sigmoid、tanh、ReLU、LeakyReLU、pReLU、ELU、maxout) 常规 sigmoid 和 tanh sigmoid 特点:可以解释,比如将0-1之间的取值解释成一个神经元的激活率(firing rate) 缺陷...
  • 神经网络26 个激活函数汇总

    万次阅读 2018-09-06 20:06:17
    神经网络中,激活函数决定来自给定输入集的节点的输出,其中非线性激活函数允许网络复制复杂的非线性行为。正如绝大多数神经网络借助某种形式的梯度下降进行优化,激活函数需要是可微分(或者至少是几乎完全可微分...
  • 卷积神经网络激活函数

    万次阅读 2019-06-23 11:48:38
    目前所有神经网络和支撑向量机的基础都是1957年提出来的感知机。感知机(perceptron) 是二类分类的线性分类模型, 其输入为实例的特征向量, 输出为实例的类别, 取+1和–1二值。 感知机对应于输入空间(特征空间)...
  • 多层前馈神经网络的新型激活函数
  • Tanh 是双曲正切函数,是三角学中普遍使用的 Tan 圆函数的双曲类比. Tanh[α] 定义为对应的双曲正弦和双曲余弦函数的比值,即 via . Tanh 也可以定义为 ,其中 是自然对数 Log 的底数. 当变量是有理数的...
  • 从ReLU到Sinc,26种神经网络激活函数可视化 摘要: 在神经网络中,激活函数决定来自给定输入集的节点的输出,其中非线性激活函数允许网络复制复杂的非线性行为。正如绝大多数神经网络借助某种形式的梯度下降进行优化...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 91,564
精华内容 36,625
关键字:

神经网络激活函数

友情链接: 13.rar