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编写提取日志中的中文的脚本的方法
Apr 30 Python
基于python实现的抓取腾讯视频所有电影的爬虫
Apr 22 Python
python通过Windows下远程控制Linux系统
Jun 20 Python
python使用pygame模块实现坦克大战游戏
Mar 25 Python
Python计算一个点到所有点的欧式距离实现方法
Jul 04 Python
python的pygal模块绘制反正切函数图像方法
Jul 16 Python
django基础学习之send_mail功能
Aug 07 Python
Python Web框架之Django框架Form组件用法详解
Aug 16 Python
Python学习笔记之列表和成员运算符及列表相关方法详解
Aug 22 Python
python中字典按键或键值排序的实现代码
Aug 27 Python
python Qt5实现窗体跟踪鼠标移动
Dec 13 Python
python 实现按对象传值
Dec 26 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
《魔兽世界》惊魂幻象将获得调整
2020/03/08 其他游戏
PHP常用数组函数介绍
2014/07/28 PHP
ThinkPHP中公共函数路径和配置项路径的映射分析
2014/11/22 PHP
简单实用的PHP防注入类实例
2014/12/05 PHP
laravel中Redis队列监听中断的分析
2020/09/14 PHP
THREE.JS入门教程(4)创建粒子系统
2013/01/24 Javascript
Javascript中对象继承的实现小例
2014/05/12 Javascript
浅谈js中的闭包
2015/03/16 Javascript
javascript实现计时器的简单方法
2016/02/21 Javascript
基于JavaScript Array数组方法(新手必看篇)
2016/08/20 Javascript
微信公众平台开发教程(四) 实例入门:机器人回复(附源码)
2016/12/02 Javascript
Bootstrap基本插件学习笔记之轮播幻灯片(23)
2016/12/08 Javascript
详解Nodejs基于mongoose模块的增删改查的操作
2016/12/21 NodeJs
bootstrap精简教程_动力节点Java学院整理
2017/07/14 Javascript
浅谈JavaScript作用域和闭包
2017/09/18 Javascript
浅谈VUE监听窗口变化事件的问题
2018/02/24 Javascript
微信小程序绑定手机号获取验证码功能
2019/10/22 Javascript
实现一个Vue自定义指令懒加载的方法示例
2020/06/04 Javascript
vue 子组件和父组件传值的示例
2020/09/11 Javascript
[01:08]2014DOTA2展望TI 剑指西雅图LGD战队专访
2014/06/30 DOTA
[49:17]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第三场 1月26日
2021/03/11 DOTA
Python设计模式之中介模式简单示例
2018/01/09 Python
PyQt5每天必学之拖放事件
2020/08/27 Python
解决Python 使用h5py加载文件,看不到keys()的问题
2019/02/08 Python
解决Tensorflow sess.run导致的内存溢出问题
2020/02/05 Python
完美解决ARIMA模型中plot_acf画不出图的问题
2020/06/04 Python
Asics日本官网:鬼冢八喜郎创立的跑鞋运动品牌
2017/10/18 全球购物
梵蒂冈和罗马卡:Omnia Card Pass
2018/02/10 全球购物
Java中会存在内存泄漏吗,请简单描述
2016/12/22 面试题
教师实习自我鉴定
2013/12/13 职场文书
物流管理毕业生自荐信范文
2014/03/15 职场文书
购房协议书
2014/04/11 职场文书
期中考试后的感想
2015/08/07 职场文书
钓鱼岛事件感想
2015/08/11 职场文书
Python中基础数据类型 set集合知识点总结
2021/08/02 Python
解析redis hash应用场景和常用命令
2021/08/04 Redis