神经网络的知识

  1. 激活函数 y=f(Wx+b)

常用的激活函数有sigmoid、tanh、ReLu、LeakyReLU等

为什么需要激活函数(这里说的激活函数一般指非线性激活),假设不用激活函数(相当于激活函数f(x)=x​, 这是每一层的节点的输入都是上一层输出的线性函数,很容易证明,无论神经网络有多少层,输出都是输入的线性组合,与没有隐含层的效果相当,这种情况就是原始的感知器(Perceptron),那么网络的逼近能力是相当有限的。因此,需要引入非线性函数作为激活函数,这样深层的神经网络具有更强的逼近能力(不在是输入的线性组合,理论上神经网络基本可以逼近任意函数)

Sigmoid函数:

Sigmoid函数值常用的非线性激活函数,它的数学形式如下:

几何图像如下:

特点:它能把输入的连续实值变换为0和1之间的输出,特别地,当输入如果是非常大的负数,那么输出就是0,反之,如果输入非常大的正数,输出就是1.。且sigmoid的导数为f(z)*(1-f(z))

缺点:(1)在深度神经网络中梯度的反向传播是导致梯度爆炸/梯度消失,梯度爆炸发生的概率较少,梯度消失的概率很大。

如果我们初始化神经网络的权值为 [0,1] 之间的随机值,由反向传播算法的数学推导可知,梯度从后向前传播时,每传递一层梯度值都会减小为原来的0.25倍,如果神经网络隐层特别多,那么梯度在穿过多层后将变得非常小接近于0,即出现梯度消失现象;当网络权值初始化为 (1,+∞) (1,+∞)(1,+∞) 区间内的值,则会出现梯度爆炸情况。

(2)其解析式中含有幂运算,计算机求解时相对来讲比较耗时。对于规模比较大的深度网络,这会较大地增加训练时间。

适用于:当我们尝试将值分类到特定的类时,使用Sigmoid函数非常理想。

ReLU函数

数学表达式:

Relu函数及其导数的图像如下图所示:

​ReLU函数其实就是一个取最大值函数,注意这并不是全区间可导的,但是我们可以取sub-gradient,如上图所示。ReLU虽然简单,但却是近几年的重要成果,有以下几大优点:

1) 解决了gradient vanishing问题 (在正区间)

2)计算速度非常快,只需要判断输入是否大于0

3)收敛速度远快于sigmoid和tanh

ReLU也有几个需要特别注意的问题:

1)ReLU的输出不是zero-centered

2)Dead ReLU Problem,指的是某些神经元可能永远不会被激活,导致相应的参数永远不能被更新。有两个主要原因可能导致这种情况产生: (1) 非常不幸的参数初始化,这种情况比较少见 (2) learning rate太高导致在训练过程中参数更新太大,不幸使网络进入这种状态。解决方法是可以采用Xavier初始化方法,以及避免将learning rate设置太大或使用adagrad等自动调节learning rate的算法。

尽管存在这两个问题,ReLU目前仍是最常用的activation function,在搭建人工神经网络的时候推荐优先尝试!

优点:不会同时激活所有的神经元,这意味着,在一段时间内,只有少量的神经元被激活,神经网络的这种稀疏性使其变得高效且易于计算。

缺点:x<0时,梯度是零。随着训练的进行,可能会出现神经元死亡,权重无法更新的情况。也就是说,ReLU神经元在训练中不可逆地死亡了。

Tanh函数

数学表达式:

tanh函数及其导数的几何图像如下图:

​tanh解决了Sigmoid函数的不是zero-centered输出问题,然而,梯度消失(gradient vanishing)的问题和幂运算的问题仍然存在。解决了sigmoid的大多数缺点,仍然有两边学习率太低的缺点

如何选择正确的激活函数?

根据问题的性质,我们可以为神经网络更快更方便地收敛作出更好的选择。

用于分类器时,Sigmoid函数及其组合通常效果更好。

由于梯度消失问题,有时要避免使用sigmoid和tanh函数。

ReLU函数是一个通用的激活函数,目前在大多数情况下使用。

如果神经网络中出现死神经元,那么PReLU函数就是最好的选择。

请记住,ReLU函数只能在隐藏层中使用。

一点经验:你可以从ReLU函数开始,如果ReLU函数没有提供最优结果,再尝试其他激活函数。

sigmoid函数_机器学习面试常考知识之激活函数相关推荐

  1. python中sigmoid函数_机器学习中 Sigmoid 函数的物理含义

    讨论范围:二分类问题 只有 2 个分类的情况,logistic 曲线可以简化为 又叫 sigmoid 函数. 1. Python 画 Sigmoid 函数的图像 import numpy as np ...

  2. html盒子模型子元素怎么水平占满父元素_前端面试常考问题之css盒模型

    一.题目:谈一谈你对CSS盒模型的认识 专业的面试,一定会问 CSS 盒模型.对于这个题目,我们要回答一下几个方面: (1)基本概念:content.padding.margin. (2)标准盒模型. ...

  3. 考研:研究生考试(十五天学完)之《高等数学上/下册》研究生学霸重点知识点总结之考试内容各科占比及常考知识重点梳理(函数极限连续、一元/多元函数微分学/积分学、常微分函数、向量代数与空间几何、无穷级数)

    考研:研究生考试(十五天学完)之<高等数学上/下册>研究生学霸重点知识点总结之考试内容各科占比及常考知识重点梳理(函数极限连续.一元/多元函数微分学/积分学.常微分函数.向量代数与空间几何 ...

  4. 64位 int 占几个字节_面试常考,项目易错,长文详解C/C++中的字节对齐

    面试常考,项目易错,长文详解C/C++中的字节对齐​mp.weixin.qq.com 引入主题,看代码 我们先来看看以下程序 //编译器:https://tool.lu/coderunner/ //来 ...

  5. @entity 不限字节长度的类型_面试常考,项目易错,长文详解C/C++中的字节对齐...

    面试常考,项目易错,长文详解C/C++中的字节对齐​mp.weixin.qq.com 引入主题,看代码 我们先来看看以下程序 //编译器:https://tool.lu/coderunner/ //来 ...

  6. PHP面试常考内容之Memcache和Redis(2)

    你好,是我琉忆. 继周一(2019.2-18)发布的"PHP面试常考内容之Memcache和Redis(1)"后,这是第二篇,感谢你的支持和阅读. 本周(2019.2-18至2-2 ...

  7. PHP面试常考内容之面向对象(3)

    PHP面试专栏正式起更,每周一.三.五更新,提供最好最优质的PHP面试内容. 继上一篇"PHP面试常考内容之面向对象(2)"发表后,今天更新面向对象的最后一篇(3).需要(1),( ...

  8. JAVA面试常考系列三

    转载自 JAVA面试常考系列三 题目一 什么是迭代器(Iterator)? 迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中确定的地址.迭 ...

  9. JAVA面试常考系列一

    转载自 JAVA面试常考系列一 题目一 什么是Java虚拟机?为什么Java被称为平台无关的编程语言? java虚拟机是一个可以执行字节码文件(.class)的虚拟机进程. 为什么java与平台无关呢 ...

最新文章

  1. C 语言中的 feof()函数
  2. 20165231 2017-2018-2 《Java程序设计》第5周学习总结
  3. C++中继承的基本概念
  4. 三星识别文字_比亚迪电子助力三星Galaxy Note 10系列霸气首发!
  5. Qt文档阅读笔记-FileDialog QML Type官方解析与实例
  6. 中国风海报设计模板,东方韵味尽显
  7. segy地震数据的读取python_SEGY地震数据格式分析与读写
  8. 富士通Fujitsu DPK1786T 打印机驱动
  9. html 实现蒙板效果,用css3实现ps蒙版效果+动画
  10. java支付宝扫码支付,简单生成二维码方法
  11. html如何加黑色蒙板,Photoshop中怎么添加黑色蒙版?
  12. python中单引号的作用_python里的单引号和双引号的有什么作用
  13. HDU-5773 The All-purpose Zero(LIS变形)
  14. Metasploit -- 各类密码破解
  15. Guava学习之Splitter
  16. 如何解决 cannot be cast to java.lang.Comparable问题?
  17. java实时获取android网速_Android中获取实时网速(2)
  18. opencv vs2010 应用程序无法正常启动(oxc000007b) 解决
  19. 如何学会600多种编程语言
  20. 计算机国培培训总结,国培培训总结范文(精选5篇)

热门文章

  1. 再破纪录!ECCV 2020 旷视研究院15篇成果总览
  2. 2021蓝桥直播课-软件类-本科组
  3. php实现上传文件功能,简单实现php上传文件功能
  4. java.lang.IllegalStateException: PathVariable/RequestParam annotation was empty on param 0.
  5. oracle 安装及使用方法,Oracle安装及使用小结
  6. Java向数据库中插入Boolean类型的字段
  7. JavaScript——自定义对话框
  8. 2019中山大学程序设计竞赛
  9. Tomcat6 Spring3 问题:严重: Error configuring application listener of class org.springframework.web.conte
  10. Python实训-15天-博客汇总表