python 深度学习中的4种激活函数


Posted in Python onSeptember 18, 2020

这篇文章用来整理一下入门深度学习过程中接触到的四种激活函数,下面会从公式、代码以及图像三个方面介绍这几种激活函数,首先来明确一下是哪四种:

  • Sigmoid函数
  • Tahn函数
  • ReLu函数
  • SoftMax函数

激活函数的作用

下面图像A是一个线性可分问题,也就是说对于两类点(蓝点和绿点),你通过一条直线就可以实现完全分类。

python 深度学习中的4种激活函数

当然图像A是最理想、也是最简单的一种二分类问题,但是现实中往往存在一些非常复杂的线性不可分问题,比如图像B,你是找不到任何一条直线可以将图像B中蓝点和绿点完全分开的,你必须圈出一个封闭曲线。

而激活函数就是帮助"绘制"这个封闭曲线的非线性函数,有了激活函数的帮助,很多算法的处理能力会得到加强,也可以处理线性不可分问题。

Sigmoid函数

Sigmoid函数曾在介绍逻辑回归时提起过,它的数学表达式为:

python 深度学习中的4种激活函数

其中 e 为纳皮尔常数,其值为2.7182... 它的图像如下:

python 深度学习中的4种激活函数

可以观察出图像的一些特点:

  • 曲线的值域为(0,1)
  • 当x = 0时,Sigmoid函数值为0.5
  • 随着 x 不断增大,Sigmoid函数值无限趋近于1
  • 随着 x 不断减小,Sigmoid函数值无限趋近于0

对于梯度下降法而言,信息的更新很大程度上都取决于梯度,而Sigmoid函数一个很明显的缺点就是当函数值特别靠近0或1这两端时,因为它的曲线已经近乎平缓,所以此时的梯度几乎为0,这样非常不利于权重的更新,从而就会导致模型不收敛。

Sigmoid函数的代码如下:

import numpy as np
def tanh(x):
 return (exp(x)-exp(-x))/(exp(x)+exp(-x))

Tanh函数

Tanh函数是双曲正切函数,它的的数学表达式为:

python 深度学习中的4种激活函数

Tanh函数和Sigmoid函数非常相近,这点从图像上可以很好的体现:

python 深度学习中的4种激活函数

这两个函数相同的是,当输入的 x 值很大或者很小时,对应函数输出的 y 值近乎相等,同样的缺点也是梯度特别小,非常不利于权重的更新;不同的是Tanh函数的值域为(-1,1),并且当 x = 0 时,输出的函数值为0。

Tanh函数的代码如下:

import numpy as np
def tanh(x):
 return (exp(x)-exp(-x))/(exp(x)+exp(-x))

ReLu函数

ReLu是线性整流函数,又称为修正性线性单元,它的函数的数学表达式为

python 深度学习中的4种激活函数

Tanh是一个分段函数,它的图像如下:

python 深度学习中的4种激活函数

图像很容易理解,若输入的 x 值小于0,则输出为也为0;若输入的 x 值大于0,则直接输出 x 值,需要注意的是ReLu函数在x = 0 处不连续(不可导),但同样也可以作为激活函数。

与Sigmoid函数和Tanh函数相比,ReLu函数一个很明显的优点就是在应用梯度下降法是收敛较快,当输入值为整数时,不会出现梯度饱和的问题,因为大于0的部分是一个线性关系,这个优点让ReLu成为目前应用较广的激活函数。

ReLu函数的代码如下:

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

SoftMax函数

分类问题可以分为二分类问题和多分类问题,Sigmoid函数比较适合二分类问题,而SoftMax函数更加适合多分类问题。
SoftMax函数的数学表达式为:

python 深度学习中的4种激活函数

其中Vi表示分类器的输出,i表示类别索引,总的类别个数为C,Si表示当前元素的指数与所有元素指数和的比值。概括来说,SoftMax函数将多分类的输出值按比例转化为相对概率,使输出更容易理解和比较。

为了防止SoftMax函数计算时出现上溢出或者下溢出的问题,通常会提前对 V 做一些数值处理,即每个 V 减去 V 中的最大值,假设D=max(V),SoftMax函数数学表达式更改为:

python 深度学习中的4种激活函数

因为SoftMax函数计算的是概率,所以无法用图像进行展示,SoftMax函数的代码如下:

import numpy as np
def softmax(x):
 D = np.max(x)
 exp_x = np.exp(x-D)
 return exp_x / np.sum(exp_x)

以上就是python 深度学习中的4种激活函数的详细内容,更多关于python 激活函数的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
跟老齐学Python之编写类之三子类
Oct 11 Python
详解python上传文件和字符到PHP服务器
Nov 24 Python
Python实现决策树C4.5算法的示例
May 30 Python
Python功能点实现:函数级/代码块级计时器
Jan 02 Python
python的依赖管理的实现
May 14 Python
Python3内置模块之json编解码方法小结【推荐】
Dec 09 Python
用python画一只可爱的皮卡丘实例
Nov 21 Python
python GUI库图形界面开发之PyQt5输入对话框QInputDialog详细使用方法与实例
Feb 27 Python
在pycharm中使用matplotlib.pyplot 绘图时报错的解决
Jun 01 Python
Windows下pycharm安装第三方库失败(通用解决方案)
Sep 17 Python
python gui开发——制作抖音无水印视频下载工具(附源码)
Feb 07 Python
关于Python中*args和**kwargs的深入理解
Aug 07 Python
python闭包与引用以及需要注意的陷阱
Sep 18 #Python
python 代码运行时间获取方式详解
Sep 18 #Python
python判断字符串以什么结尾的实例方法
Sep 18 #Python
python绘制趋势图的示例
Sep 17 #Python
Python绘制组合图的示例
Sep 18 #Python
记一次Django响应超慢的解决过程
Sep 17 #Python
Visual Studio Code搭建django项目的方法步骤
Sep 17 #Python
You might like
php中获得视频时间总长度的另一种方法
2011/09/15 PHP
php两种无限分类方法实例
2015/04/21 PHP
解决php写入数据库乱码的问题
2019/09/17 PHP
用JavaScript脚本实现Web页面信息交互
2006/12/21 Javascript
该如何加载google-analytics(或其他第三方)的JS
2010/05/13 Javascript
jQuery+jqmodal弹出窗口实现代码分明
2010/06/14 Javascript
封装了一个js图片轮换效果的函数
2011/09/28 Javascript
JS getAttribute和setAttribute(取得和设置属性)的使用介绍
2013/07/10 Javascript
Js表格万条数据瞬间加载实现代码
2014/02/20 Javascript
jQuery ui 利用 datepicker插件实现开始日期(minDate)和结束日期(maxDate)
2014/05/22 Javascript
JS实现页面超时后自动跳转到登陆页面
2015/01/19 Javascript
javascript记住用户名和登录密码(两种方式)
2015/08/04 Javascript
Ajax+FormData+javascript实现无刷新表单信息提交
2016/10/24 Javascript
react.js 翻页插件实例代码
2017/01/19 Javascript
Bootstrap面板(Panels)的简单实现代码
2017/03/17 Javascript
jQuery 添加样式属性的优先级别方法(推荐)
2017/06/08 jQuery
React中常见的动画实现的几种方式
2018/01/10 Javascript
JS实现图片转换成base64的各种应用场景实例分析
2018/06/22 Javascript
[01:28:31]《加油DOTA》真人秀 第五期
2014/09/01 DOTA
python 多线程应用介绍
2012/12/19 Python
python3使用urllib示例取googletranslate(谷歌翻译)
2014/01/23 Python
使用PyCharm配合部署Python的Django框架的配置纪实
2015/11/19 Python
Python模糊查询本地文件夹去除文件后缀的实例(7行代码)
2017/11/09 Python
Python自动化运维之IP地址处理模块详解
2017/12/10 Python
Python模拟脉冲星伪信号频率实例代码
2018/01/03 Python
python爬虫爬取淘宝商品信息
2018/02/23 Python
对Python中实现两个数的值交换的集中方法详解
2019/01/11 Python
Python Des加密解密如何实现软件注册码机器码
2020/01/08 Python
利用 Python ElementTree 生成 xml的实例
2020/03/06 Python
详解CSS3中nth-child与nth-of-type的区别
2017/01/05 HTML / CSS
canvas环形倒计时组件的示例代码
2018/06/14 HTML / CSS
GWT的应用有哪两种部署模式
2012/12/21 面试题
留学推荐信中文范文三篇
2014/01/25 职场文书
学校工作推荐信范文
2014/07/11 职场文书
田径运动会通讯稿
2014/09/13 职场文书
团组织关系介绍信
2019/06/24 职场文书