神经网络激活函数汇总(Sigmoid、tanh、ReLU、LeakyReLU、pReLU、ELU、maxout)

神经网络激活函数汇总(Sigmoid、tanh、ReLU、LeakyReLU、pReLU、ELU、maxout)神经网络激活函数汇总(Sigmoid、tanh、ReLU、LeakyReLU、pReLU、ELU、maxout)常规sigmoid和tanhsigmoid特点:可以解释,比如将0-1之间的取值解释成一个神经元的激活率(firingrate)缺陷:有饱和区域,是软饱和,在大的正数和负数作为输入的时候,梯度就会变成零,使得神经元基本不能更新。只有…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

神经网络激活函数汇总(Sigmoid、tanh、ReLU、LeakyReLU、pReLU、ELU、maxout)

常规 sigmoid 和 tanh

sigmoid


这里写图片描述

这里写图片描述

特点:可以解释,比如将0-1之间的取值解释成一个神经元的激活率(firing rate)

缺陷:

  1. 有饱和区域,是软饱和,在大的正数和负数作为输入的时候,梯度就会变成零,使得神经元基本不能更新。
  2. 只有正数输出(不是zero-centered),这就导致所谓的zigzag现象:


这里写图片描述

详细说明:


这里写图片描述


3 . 计算量大(exp)

tanh

tanh函数定义如下:


这里写图片描述

激活函数形状:


这里写图片描述

tanh和sigmoid函数是具有一定的关系的,可以从公式中看出,它们的形状是一样的,只是尺度和范围不同。

tanh是zero-centered,但是还是会饱和。

ReLU 大家族

ReLU


这里写图片描述

CNN中常用。对正数原样输出,负数直接置零。在正数不饱和,在负数硬饱和。relu计算上比sigmoid或者tanh更省计算量,因为不用exp,因而收敛较快。但是还是非zero-centered。

relu在负数区域被kill的现象叫做dead relu,这样的情况下,有人通过初始化的时候用一个稍微大于零的数比如0.01来初始化神经元,从而使得relu更偏向于激活而不是死掉,但是这个方法是否有效有争议。

LeakyReLU


这里写图片描述

为了解决上述的dead ReLU现象。这里选择一个数,让负数区域不在饱和死掉。这里的斜率都是确定的。

PReLU

parametric rectifier:

f(x) = max(ax,x)

但是这里的a不是固定下来的,而是可学习的。

ELU


这里写图片描述

具有relu的优势,且输出均值接近零,实际上prelu和LeakyReLU都有这一优点。有负数饱和区域,从而对噪声有一些鲁棒性。可以看做是介于relu和LeakyReLU之间的一个东西。当然,这个函数也需要计算exp,从而计算量上更大一些。

大一统:Maxout

maxout是通过分段线性函数来拟合所有可能的凸函数来作为激活函数的,但是由于线性函数是可学习,所以实际上是可以学出来的激活函数。具体操作是对所有线性取最大,也就是把若干直线的交点作为分段的界,然后每一段取最大。

maxout可以看成是relu家族的一个推广。

缺点在于增加了参数量。

更多相关见以前整理的一篇:深度学习中的各种tricks_2.0_maxout

2018年04月22日21:53:22

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/234819.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • toArray()方法使用说明「建议收藏」

    toArray()方法使用说明「建议收藏」ArrayList提供了一个将List转为数组的一个非常方便的方法toArray。toArray有两个重载的方法:1.list.toArray();2.list.toArray(T[] a);对于第一个重载方法,是将list直接转为Object[]数组;第二种方法是将list转化为你所需要类型的数组,当然我们用的时候会转化为与list内容相同的类型。

    2022年5月15日
    52
  • Maven工具安装

    Maven工具安装

    2021年6月3日
    96
  • pycharm 模板_pycharm基础代码

    pycharm 模板_pycharm基础代码在Pycharm中编码时,当我们输入main再按下Tab键,编辑器会自动出现如下代码块:if__name__==’__main__’:类似地,如果我们有一大段代码要经常重复使用,可以将这段代码设置成一个模版,通过自定义的指令+Tab键直接导入代码。比如我们有如下一段代码:fromPyQt5.Qtimport*classWindow(QWidget):def__init__(self):super().__init__()

    2022年8月25日
    7
  • 记录一次maven JVM 调优

    记录一次maven JVM 调优记录一次mavenJVM调优前言记录一次无(摸)聊(鱼)的GC调优过程,本着学以致用、务实求真的精神,看了《深入理解Java虚拟机》中作者对自己的开发ideeclipse工具做了JVM调优,觉得很有意思。感觉这个确实是可以用自己的知识来提升开发效率,所以就有了这次的玄学调优之旅,文中如果有错误,希望能够指出,非常感谢。优化背景我本人目前有个工作上的项目,编译的时间大概需要30多秒,这次的目标就是从JVM的层面折腾、优化编译速度,那么就开始吧编译时间基准线优化前的编译时间,先

    2022年5月14日
    46
  • 模拟实现strstr函数

    模拟实现strstr函数推荐一篇讲解KMP算法的文章–阮一峰http://www.ruanyifeng.com/blog/2013/05/Knuth–Morris–Pratt_algorithm.html推荐一篇讲解Boyer-Moore算法的文章–阮一峰http://www.ruanyifeng.com/blog/2013/05/boyer-moore_string_search_algorithm.html…

    2022年6月25日
    22
  • python与anaconda安装(先安装了python后安装anaconda,基于python已存在的基础上安装anaconda)——逼死强迫症、超详解[通俗易懂]

    python与anaconda安装(先安装了python后安装anaconda,基于python已存在的基础上安装anaconda)——逼死强迫症、超详解[通俗易懂]目录欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML图表FLowchart流程图导出与导入导出导入#一、安装python欢迎…

    2022年6月5日
    592

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号