激活函数

首先看一下感知机的数学表达式,b是被称为偏置的参数,用于控制神经元被激活的容易程度;而w1和w2是表示各个信号的权重的参数,用于控制各个信号的重要性。

引入一个新函数h(x),将上式改成:

h(x)函数会将输入信号的总和转换为输出信号,这种函数一般称为激活函数(activation function)。

阶跃函数

阶跃函数,当输入超过0时,输出1,否则输出0。可以像下面这样简单地实现阶跃函数。

def step_function(x):if x > 0:return 1else:return 0

为了便于后面的操作,我们把它修改为支持NumPy数组的实现。

import numpy as npdef step_function(x):y = x > 0return y.astype(np.int_)print(step_function(np.array([-1, 2, 3, -4])))

阶跃函数的图形:

实现如下:

import numpy as np
import matplotlib.pylab as pltdef step_function(x):return np.array(x > 0, dtype=np.int_)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()
print(step_function(np.array([-1, 2, 3, -4])))

sigmoid函数

神经网络中经常使用的一个激活函数就是sigmoid函数:

exp(−x)表示e的−x次幂的意思。e是纳皮尔常数2.7182 …。sigmoid函数看上去有些复杂,但它也仅仅是个函数而已。而函数就是给定某个输入后,会返回某个输出的转换器。神经网络中用sigmoid函数作为激活函数,进行信号的转换,转换后的信号被传送给下一个神经元。
sigmoid函数的实现:

def sigmoid(x):return 1 / (1 + np.exp(-x))

sigmoid函数图形:


实现如下:

import numpy as np
import matplotlib.pylab as pltdef sigmoid(x):return 1 / (1 + np.exp(-x))x = np.arange(-5.0, 5.0, 0.1)
y = sigmoid(x)
plt.plot(x, y)
plt.ylim(-0.1, 1.1) # 指定y轴的范围
plt.show()

sigmoid函数和阶跃函数的比较


首先注意到的是“平滑性”的不同。sigmoid函数是一条平滑的曲线,输出随着输入发生连续性的变化。而阶跃函数以0为界,输出发生急剧性的变化。sigmoid函数的平滑性对神经网络的学习具有重要意义。
另一个不同点是,相对于阶跃函数只能返回0或1,sigmoid函数可以返回0.731 …、0.880 …等实数(这一点和刚才的平滑性有关)。也就是说,感知机中神经元之间流动的是0或1的二元信号,而神经网络中流动的是连续的实数值信号。
接着说一下阶跃函数和sigmoid函数的共同性质。阶跃函数和sigmoid函数虽然在平滑性上有差异,但是如果从宏观视角看,可以发现它们具有相似的形状。实际上,两者的结构均是“输入小时,输出接近0(为0);随着输入增大,输出向1靠近(变成1)”。也就是说,当输入信号为重要信息时,阶跃函数和sigmoid函数都会输出较大的值;当输入信号为不重要的信息时,两者都输出较小的值。还有一个共同点是,不管输入信号有多小,或者有多大,输出信号的值都在0到1之间。

ReLU函数

到目前为止,我们介绍了作为激活函数的阶跃函数和sigmoid函数。在神经网络发展的历史上,sigmoid函数很早就开始被使用了,而最近则主要使用ReLU(Rectified Linear Unit)函数。ReLU函数在输入大于0时,直接输出该值;在输入小于等于0时,输出0。ReLU函数可以表示为下面的式:

ReLU函数实现也很简单:

def relu(x):return np.maximum(0, x)

ReLU函数图形:
实现如下:

import numpy as np
import matplotlib.pylab as pltdef relu(x):return np.maximum(0, x)x = np.arange(-5.0, 5.0, 0.1)
y = relu(x)
plt.plot(x, y)
plt.ylim(-1, 6) # 指定y轴的范围
plt.show()

激活函数:阶跃函数,sigmoid函数,ReLU函数相关推荐

  1. 【深度学习】——神经网络中常用的激活函数:sigmoid、Relu、Tanh函数

    激活函数   实际中的很多事情并不能简单的用线性关系的组合来描述.在神经网络中,如果没有激活函数,那么就相当于很多线性分类器的组合,当我们要求解的关系中存在非线性关系时,无论多么复杂的网络都会产生欠拟 ...

  2. 激活函数总结sigmoid,tanh,relu,Leaky ReLU,RRelu,ELU,PRelu,SELU,swish

    本文总结深度学习的损失函数及其优缺点. 激活函数是深度学习模型的重要成分,目的是将线性输入转换为非线性.常见的激活函数有sigmoid,tanh,ReLU等 1.sigmoid Sigmoid 非线性 ...

  3. 【深度学习】激活函数:原理+常见激活函数(Sigmoid\Tanh\ReLU\Leaky ReLU\Softmax)

    首先需要知道为什么要引入激活函数:激活函数是用来加入非线性因素的,因为线性模型的表达能力不够.引入非线性激活函数,可使深层神经网络的表达能力更加强大. 在深度学习中,线性模型只需要简单的全连接层就能实 ...

  4. 功能性模块:(8)一文理解常用激活函数(Sigmoid,ReLU,ELU,GELU...)

    一文理解常用激活函数 1. Sigmoid 公式: Sigmoid(x)=11+exp⁡(−x)\text{Sigmoid}(x) = \frac{1}{1 + \exp(-x)}Sigmoid(x) ...

  5. 常用的激活函数汇总-Sigmoid, tanh, relu, elu

    激活函数(又叫激励函数,后面就全部统称为激活函数)是模型整个结构中的非线性扭曲力,神经网络的每层都会有一个激活函数.那他到底是什么,有什么作用?都有哪些常见的激活函数呢? 深度学习的基本原理就是基于人 ...

  6. 神经网络常用的三大激活函数sigmoid函数、tanh函数、relu函数对比讲解

    在我们学习神经网络的时候经常要用到激活函数,但是我们对于为什么要使用这一个,它们之间的区别和优缺点各是什么不太了解.下面,我们来详细说一说这三个激活函数. - sigmoid函数 sigmoid函数也 ...

  7. 深度学习激活函数中的线性整流函数ReLU及其变种

    线性整流函数ReLU         线性整流函数(Rectified Linear Unit, ReLU),又称修正线性单元, 是一种人工神经网络中常用的激活函数(activation functi ...

  8. sigmoid函数,tanh函数,relu函数,softmax函数

    sigmoid函数 数学表达式: f(z)=1/(1+e**-z) Sigmoid 函数的输出范围是 0 到 1.由于输出值限定在 0 到 1,因此它对每个神经元的输出进行了归一化: 用于将预测概率作 ...

  9. 激活函数之ReLU函数

    0 前言 激活函数的引入是为了增加神经网络模型的非线性,没有激活函数每层就相当于矩阵相乘.每一层输出都是上层的输入的线性函数,无论神经网络多少层,输出都是输入的线性组合,就是最原始的感知机 加入激活函 ...

  10. 常用的激活函数sigmoid,relu,tanh

    1.什么是激活函数? 在神经网络中,我们经常可以看到对于某一个隐藏层的节点,该节点的激活值计算一般分为两部: (1)输入该节点的值为x1,x2时,在进入这个隐藏节点后,会先进行一个线性变换,计算出值z ...

最新文章

  1. 清华大佬告诉史上最全的Java进阶书籍推荐面南背北
  2. 微信小程序lottiejs动画事例代码
  3. Entity Framework简介
  4. 【电商日志项目之七】项目调优
  5. 使用TMG2010企业版组建大型***网络之3-配置NLB
  6. 【Android】UI架构
  7. 如何在官网中下载历史版本的火狐浏览器
  8. 非对称加密算法---加密学习笔记(四)
  9. 博客园客户端(睡睡版iphone)源码
  10. python opencv3 检测人
  11. ffmpeg 音乐循环_[宜配屋]听图阁
  12. 树莓派搭建全功能NAS服务器(07):管理你的书库随心阅读
  13. c语言角度转换为弧度程序,C语言之将弧度值转换为角度值
  14. hdu 2586 How far away ? (LCA转RMQ)
  15. GEE开发之Landsat_SR计算地表温度(不推荐)
  16. 计算器(Java)课设
  17. 关于百度网盘离线下载链接无效的问题
  18. 计算机平面设计与工程论文,浅谈计算机平面设计和设计软件相互结合
  19. Arduino 高级教程 01:基础篇
  20. SSM框架的基本概念(什么是ssm框架?)

热门文章

  1. 高中计算机学考什么时候,2019年江苏高中学业水平信息技术考试时间:12月15日-17日...
  2. 最优化——粒子群算法(PSO)
  3. 2021自主可控计算机上市公司,普华基础软件亮相2021 CCF自主可控计算机大会
  4. php fetchall与fetch,PDO :: fetchAll与PDO :: fetch在循环中
  5. 微信小程序(页面获取组件实例对象来操做组件)
  6. 《游戏脚本的设计与开发》-1.6 按钮,脚本的暂停和标签
  7. 经典软件十五年深情回眸!
  8. NSLog使用与说明
  9. angular5 升级到 angular7 步骤
  10. 程序开发心理学(银年纪念版)(经典重读,与温伯格大师的思想共舞)