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

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

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



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


激活函数的作用


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


image.png

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


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


Sigmoid函数


(Sigmoid函数是一个在生物学中常见的S型函数,也称为S型生长曲线。在信息科学中,由于其单增以及反函数单增等性质,Sigmoid函数常被用作神经网络的激活函数,将变量映射到0,1之间


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


image.png

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


image.png


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


  • 曲线的值域为(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函数是双曲正切函数,它的的数学表达式为:


image.png

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


image.png

这两个函数相同的是,当输入的 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是线性整流函数,又称为修正性线性单元,它的函数的数学表达式为


image.png

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


image.png

图像很容易理解,若输入的 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函数的数学表达式为:


image.png

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


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


image.png

因为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)


《一个人工智能的诞生》EP04 - 加一层_哔哩哔哩_bilibili


image.png

image.png

image.png

image.png

  1. 坐标变换(线性变换和平移);
  2. 阶越函数(曲线变换) ;实在不行进行维度提升;’
  3. 直线分类


image.png

使用线性变化,使其处于不同的象限,

image.png

在使用阶跃函数进行划分。

image.png

image.png

image.png

增加维度原理


image.png


相关文章
|
1月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
169 1
|
1月前
|
算法 Java Docker
(Python基础)新时代语言!一起学习Python吧!(三):IF条件判断和match匹配;Python中的循环:for...in、while循环;循环操作关键字;Python函数使用方法
IF 条件判断 使用if语句,对条件进行判断 true则执行代码块缩进语句 false则不执行代码块缩进语句,如果有else 或 elif 则进入相应的规则中执行
259 1
|
1月前
|
Java 数据处理 索引
(numpy)Python做数据处理必备框架!(二):ndarray切片的使用与运算;常见的ndarray函数:平方根、正余弦、自然对数、指数、幂等运算;统计函数:方差、均值、极差;比较函数...
ndarray切片 索引从0开始 索引/切片类型 描述/用法 基本索引 通过整数索引直接访问元素。 行/列切片 使用冒号:切片语法选择行或列的子集 连续切片 从起始索引到结束索引按步长切片 使用slice函数 通过slice(start,stop,strp)定义切片规则 布尔索引 通过布尔条件筛选满足条件的元素。支持逻辑运算符 &、|。
155 0
|
2月前
|
设计模式 缓存 监控
Python装饰器:优雅增强函数功能
Python装饰器:优雅增强函数功能
268 101
|
2月前
|
缓存 测试技术 Python
Python装饰器:优雅地增强函数功能
Python装饰器:优雅地增强函数功能
209 99
|
2月前
|
存储 缓存 测试技术
Python装饰器:优雅地增强函数功能
Python装饰器:优雅地增强函数功能
186 98
|
2月前
|
缓存 Python
Python中的装饰器:优雅地增强函数功能
Python中的装饰器:优雅地增强函数功能
|
3月前
|
Python
Python 函数定义
Python 函数定义
491 155
|
4月前
|
PHP Python
Python format()函数高级字符串格式化详解
在 Python 中,字符串格式化是一个重要的主题,format() 函数作为一种灵活且强大的字符串格式化方法,被广泛应用。format() 函数不仅能实现基本的插入变量,还支持更多高级的格式化功能,包括数字格式、对齐、填充、日期时间格式、嵌套字段等。 今天我们将深入解析 format() 函数的高级用法,帮助你在实际编程中更高效地处理字符串格式化。
541 0

推荐镜像

更多