激活函数:阶跃函数,sigmoid函数,ReLU函数
激活函数
首先看一下感知机的数学表达式,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函数相关推荐
- 【深度学习】——神经网络中常用的激活函数:sigmoid、Relu、Tanh函数
激活函数 实际中的很多事情并不能简单的用线性关系的组合来描述.在神经网络中,如果没有激活函数,那么就相当于很多线性分类器的组合,当我们要求解的关系中存在非线性关系时,无论多么复杂的网络都会产生欠拟 ...
- 激活函数总结sigmoid,tanh,relu,Leaky ReLU,RRelu,ELU,PRelu,SELU,swish
本文总结深度学习的损失函数及其优缺点. 激活函数是深度学习模型的重要成分,目的是将线性输入转换为非线性.常见的激活函数有sigmoid,tanh,ReLU等 1.sigmoid Sigmoid 非线性 ...
- 【深度学习】激活函数:原理+常见激活函数(Sigmoid\Tanh\ReLU\Leaky ReLU\Softmax)
首先需要知道为什么要引入激活函数:激活函数是用来加入非线性因素的,因为线性模型的表达能力不够.引入非线性激活函数,可使深层神经网络的表达能力更加强大. 在深度学习中,线性模型只需要简单的全连接层就能实 ...
- 功能性模块:(8)一文理解常用激活函数(Sigmoid,ReLU,ELU,GELU...)
一文理解常用激活函数 1. Sigmoid 公式: Sigmoid(x)=11+exp(−x)\text{Sigmoid}(x) = \frac{1}{1 + \exp(-x)}Sigmoid(x) ...
- 常用的激活函数汇总-Sigmoid, tanh, relu, elu
激活函数(又叫激励函数,后面就全部统称为激活函数)是模型整个结构中的非线性扭曲力,神经网络的每层都会有一个激活函数.那他到底是什么,有什么作用?都有哪些常见的激活函数呢? 深度学习的基本原理就是基于人 ...
- 神经网络常用的三大激活函数sigmoid函数、tanh函数、relu函数对比讲解
在我们学习神经网络的时候经常要用到激活函数,但是我们对于为什么要使用这一个,它们之间的区别和优缺点各是什么不太了解.下面,我们来详细说一说这三个激活函数. - sigmoid函数 sigmoid函数也 ...
- 深度学习激活函数中的线性整流函数ReLU及其变种
线性整流函数ReLU 线性整流函数(Rectified Linear Unit, ReLU),又称修正线性单元, 是一种人工神经网络中常用的激活函数(activation functi ...
- sigmoid函数,tanh函数,relu函数,softmax函数
sigmoid函数 数学表达式: f(z)=1/(1+e**-z) Sigmoid 函数的输出范围是 0 到 1.由于输出值限定在 0 到 1,因此它对每个神经元的输出进行了归一化: 用于将预测概率作 ...
- 激活函数之ReLU函数
0 前言 激活函数的引入是为了增加神经网络模型的非线性,没有激活函数每层就相当于矩阵相乘.每一层输出都是上层的输入的线性函数,无论神经网络多少层,输出都是输入的线性组合,就是最原始的感知机 加入激活函 ...
- 常用的激活函数sigmoid,relu,tanh
1.什么是激活函数? 在神经网络中,我们经常可以看到对于某一个隐藏层的节点,该节点的激活值计算一般分为两部: (1)输入该节点的值为x1,x2时,在进入这个隐藏节点后,会先进行一个线性变换,计算出值z ...
最新文章
- 清华大佬告诉史上最全的Java进阶书籍推荐面南背北
- 微信小程序lottiejs动画事例代码
- Entity Framework简介
- 【电商日志项目之七】项目调优
- 使用TMG2010企业版组建大型***网络之3-配置NLB
- 【Android】UI架构
- 如何在官网中下载历史版本的火狐浏览器
- 非对称加密算法---加密学习笔记(四)
- 博客园客户端(睡睡版iphone)源码
- python opencv3 检测人
- ffmpeg 音乐循环_[宜配屋]听图阁
- 树莓派搭建全功能NAS服务器(07):管理你的书库随心阅读
- c语言角度转换为弧度程序,C语言之将弧度值转换为角度值
- hdu 2586 How far away ? (LCA转RMQ)
- GEE开发之Landsat_SR计算地表温度(不推荐)
- 计算器(Java)课设
- 关于百度网盘离线下载链接无效的问题
- 计算机平面设计与工程论文,浅谈计算机平面设计和设计软件相互结合
- Arduino 高级教程 01:基础篇
- SSM框架的基本概念(什么是ssm框架?)
热门文章
- 高中计算机学考什么时候,2019年江苏高中学业水平信息技术考试时间:12月15日-17日...
- 最优化——粒子群算法(PSO)
- 2021自主可控计算机上市公司,普华基础软件亮相2021 CCF自主可控计算机大会
- php fetchall与fetch,PDO :: fetchAll与PDO :: fetch在循环中
- 微信小程序(页面获取组件实例对象来操做组件)
- 《游戏脚本的设计与开发》-1.6 按钮,脚本的暂停和标签
- 经典软件十五年深情回眸!
- NSLog使用与说明
- angular5 升级到 angular7 步骤
- 程序开发心理学(银年纪念版)(经典重读,与温伯格大师的思想共舞)