专栏首页机器学习和数学[高大上的DL] Activation function (激活函数)的初步认识

[高大上的DL] Activation function (激活函数)的初步认识

今天简单认识一下什么激活函数以及都有那些激活函数。说到激活函数这里有几个比较容易混淆的概念,比如Pooling池化和Sampling采样,loss function损失函数和optimizer优化器,还有Initializers初始化方法和Batch Normal正则化(归一化)方法。不知道大家是不是能分得清楚。反正我开始学的时候总是分不清。如果你也不清楚,一定要去看看哦~!

先简单说一下,激活函数是干什么的。首先从数学的角度理解一下,激活函数首先也是个函数,什么是函数呢?简单说给一个x,得到一个y。函数代表了x和y的关系,也叫一一映射。也就是把一个数经过一种运算(通常是非线性)得到另一个数。很简单吧!那么从神经网络的角度,通常我们通过权重和输入的乘积求和再加偏置项,得到的结果,输入给激活函数,这样就把线性变为非线性,我们知道神经网络最初的设计是为了求解分类问题,既然分类,我们就要找到一个区分不同类的线,来把他们分开。相比于用一个超级复杂的线性组合去逼近那个理想中的分隔线,倒不如用一个非线性,较平滑的曲线来分割平面。这就是激活函数的作用。最后要说一下激活函数一般要满足,非线性,可微分,还要具有单调性。(意思是如果你发现了这样的函数,就可以去发paper了、、、)!

其实也不用去纠结这个,因为在实际工程中,根据不同的work,都回去试不同的激活函数,那个好就用那个,所以你只要知道有哪些激活函数,然后在什么时候用,最后拿着去用就OK啦!下面把常见的简单介绍一下,毕竟真正用的时候,无非就是调用一个TensorFlow函数~,这么说是不是很不负责任? 囧

1 sigmoid(logistics)函数

定义域:实数。值域:(0, 1)。

2 tanh函数(双曲正切)

定义域:R,值域:(-1,1)(注意对比sigmoid)

这个函数就是双曲正切,在数学中,有双曲正切,那么就有双曲余弦,双曲正弦。有想法的童鞋可以去推一推公式,求个导数什么的,没事玩玩。

3 Relu函数

f(x)= max(0, x)

这个函数形式炒鸡简单吧,这个函数就是把输入和0做个比较,谁大就输出谁。也就是说如果是负数,最后都变成了0。

但是就这么一个函数,它具有很多良好的性质,大神写了一篇paper啊(有兴趣自己去找)。为什么这么简单的一个函数如此厉害呢?要清楚背后的思想其实还真不是一两句话能说清楚。详细的介绍可以看一下我后面给的参考文献。

这里在多说几句,大家可能也听说过softplus函数,这个函数如下:

softplus求导之后就得到了sigmoid函数。还有一个函数softmax函数:

Softmax函数是sigmoid函数在多分类问题中的推广。K代表的就是类别。这里说这个的原因是给新手提个醒,注意他们的联系和区别。最后但是很重要的是,softplus其实是Relu的一个比较圆滑的版本。为什么这么说呢,是因为Relu其实不是一个解析函数,因为他有一些值为0,存在一个不可导的邻域,也就是在0不解析。而softplus是一个解析函数。解析函数是复变函数中的一个概念,有兴趣可以去看一下参考文献3。但是softplus的效果稍差于Relu。

4 Leaky Relu

leaky relu 是在relu的基础上一个改进函数,是一个更“温和”的函数,它不像relu那么“暴力”,直接把负数全扔掉了,而是对于负数给乘以一个很小的系数a,a一般取0.2,或者0.3。

5 Elu

函数elu的特点是大于0的部分为线性函数,小于0的部分为非线性函数。左侧具有软饱和,右侧无饱和性。怎么理解饱和性呢?我后面知道了再告诉大家 =* =。Elu对于输出的均值接近于0,所以收敛的更快。

6 PRelu

其中如果ai等于0,则PRelu就是Relu,如果ai是固定的常数,PRelu就是Leaky Relu。

PRelu和Leaky Relu的区别在于其中的参数ai是一个可学习的参数,也就是利用梯度反向传播的时候来更新ai。更新公式如下:

今天就先把激活函数说一下吧,看看时间不早了,这周事情比较多,所以更新比较慢了。

[参考文献]

1. https://www.zhihu.com/question/29021768

2. http://www.cnblogs.com/neopenx/p/4453161.html

3. https://wenku.baidu.com/view/532c39681eb91a37f1115c77.html

下集预告:明天不出意外要分享的是我对损失函数的理解,欢迎大家关注!

本文为作者原创,如有雷同,必然是别人抄我的。

本文分享自微信公众号 - 机器学习和数学(ML_And_Maths),作者:Alvin_2580

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-05-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • [编程经验]Python中的Lambda,Map, Reduce小结

    今天要和大家分享的是Python匿名函数(anonymous functions),也叫lambda函数。匿名函数的意思就是说这个函数没有显式的函数名,因为一般...

    用户1622570
  • [高大上的DL] Deep Learning中常用loss function损失函数的小结

    在前面我们分享的如何来训练CNN中,提到了BP算法,还记得BP算法是怎么更新参数w,b的吗?当我们给网络一个输入,乘以w的初值,然后经过激活函数得到一个输出。然...

    用户1622570
  • [编程经验] Python 中列表list介绍

    列表是Python中非常重要的一种数据结构,使用频率非常高,本文主要介绍对于学习python的新手来说,需要掌握的一些基础知识。 1. 创建列表 ? 列表用中括...

    用户1622570
  • 聊一聊编程中的函数

    给定一个数集A,假设其中的元素为x。现对A中的元素x施加对应法则f,记作f(x),得到另一数集B。假设B中的元素为y。则y与x之间的等量关系可以用y=f(x)表...

    算法与编程之美
  • 学会使用函数式编程的程序员(第1部分)

    在这篇由多部分组成的文章中,接下来将介绍函数式编程的一些概念,这些概念对你学习函数式编程有所帮助。如果你已经懂了什么是函数式编程,这可以加深你的理解。

    前端小智@大迁世界
  • Kotlin中let()with()run()apply()also()函数的使用方法与区别

    相比Java, Kotlin提供了不少高级语法特性。对于一个Kotlin的初学者来说经常会写出一些不够优雅的代码。在Kotlin中的源码标准库(Standard...

    砸漏
  • 什么是python的函数体

    函数的概念,函数是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集

    砸漏
  • Matlab系列之那些数学函数(讨论功能已加入)

    本来是打算写关于矩阵的一些东西,但是弄了一半,发现需要的线代知识有点多,直接讲相关的使用,就太直白了,可能根本无法理解是什么意思,如果讲线代的知识,就感觉和该系...

    狂人V
  • 程序员的函数

    在对函数求导数或者微分的过程中,如果能够知道原函数的图像,对照图像去理解各点的导数、微分、梯度等概念,比纯粹靠函数式理解要直观得多。

    叶锦鲤
  • 机器学习中的数学:为什么对数如此重要

    当然,如果你是一个忙碌的人,没有时间去健身房,把楼梯当作是有氧运动的简易版,那么走楼梯会更好。但是除此之外,你更可能选择乘电梯。

    deephub

扫码关注云+社区

领取腾讯云代金券