Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >深度学习那些事 — 激活函数

深度学习那些事 — 激活函数

作者头像
木野归郎
发布于 2020-10-10 03:02:25
发布于 2020-10-10 03:02:25
4990
举报
文章被收录于专栏:share ai happinessshare ai happiness

这篇文章介绍激活函数,之所以将激活函数单独拿出来进行介绍,因为多层感知机在刚开始发展的时候,梯度会消失,所以它梯度不会太深,训练不了太深的参数,其实最核心的问题就是激活函数,结合反向求导那篇文章求导的过程,我们提出两个问题,带着这两个问题往下看。

有的激活函数为什么导致那个参数无法收敛?

梯度为什么会消失?

激活函数特征

  • 非线性:当激活函数是非线性的时候,一个两层的神经网络就可以逼近基本上所有的函数了。如果 MLP不适用激活函数,那么深层网络跟单层神经网络是等价的。
  • 可微性:当优化方法是基于梯度的时候,这个性质是必须的。
  • 单调性:当激活函数是单调的时候,单层网络能够保证是凸函数。

从激活函数特征我们可以知道,激活函数一定要是非线性的,如果是线性的,就相当于一层非常厚的线性模型,就是因为非线性,才能让神经网络得到更复杂的模型。如果激活函数不可微就没法求它的导数。单调的时候才能保证这个函数式凸函数,凸函数只有一个最优解。

前面是激活函数必须要有的特性,现在看看不同的激活函数都有什么特性呢?

如果输出结果是有限的,梯度优化更加稳定,不会出现极端的情况。当输出结果是无限的模型会更加高效,随之带来的结果是不稳定的,一般需要把学习速率设置更小一点。学习速率太大了容易激进,太小了得不到收敛。

01

Sigmoid 激活函数

下图蓝色曲线就是激活函数的曲线,黄色的是激活函数导数曲线,导数的值域在0-0.25之间,就验证之前说过的,输出是有限的收敛能稳定。所以要初始化要小心。不管输入范围多少,输出范围一直是0-1之间。

02

Sigmoid 激活函数

下图黄色是激活函数,蓝色是函数本身,都是受限制的,只不过范围不一样。

前面介绍的两个存在梯度消失,下面介绍的这个不会,但是神经元容易死掉。

03

Relu 激活函数

如果小于0,不被激活,大于0的话,激活结果是输入和输出是一样的。这个 正好类似f(x)约等于x,输出不受限制。

反向传播算法-核心思想

为什么激活函数决定了梯度会不会消失?决定了神经元会不会死掉?

请看下图中公式:前部分算的是误差值(这里由两部分组成,其中一个激活函数的导数),后部分算的是下层节点具体的值,前面的误差乘一个小于1的数,算出来的值只能越来越小,也就是从上层往下层传递的时候,乘了好几次小于1的值,误差会越来越小,只要层数越深,最后导致求下层边的权重的时候这个权重几乎等于0了,最后导数消失,就是梯度消失。

梯度消失导致的结果是什么?

看上图中更新参数,旧的参数是黄色的,减去导数值乘上学习速率,如果导数值小,相当于每次没有减,这就导致梯度消失导致权重无法更新问题,权重没有办法更新,这个模型就学不下去,所以说以前多层感知机三层就很多了,再多的话下面就学不好,学不好就导致整个模型非常差。

下面这个是sig()激活函数:

下面是Relu激活函数:

Relu激活函数导数等于1,hi也可以大于1,所以就解决了梯度消失问题,虽然解决了梯度消失问题,Relu激活函数不设上限,神经元容易死掉。

为什么神经元容易死掉?

hi这个值,假设前馈的时候hi非常大,通过激活函数之后也是很大,那导数也就非常大,如果用非常大的导数更新的时候,会导致 变成负数,那下次,新的参数值来了,负数给了这个激活函数,激活函数不会被激活,前馈计算的时候这个节点也是0,反向传播的时候没有被激活的节点的导数是0,也就是说这个节点死掉,以后也不会参与之后的过程。

小结

  • 激活函数是梯度消失的根本原因。
  • Relu可以解决梯度消失问题,但会导致网络变得脆弱。

现在也有好多变种,既可以不让梯度消失,也不会把神经元变得脆弱。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-10-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 OnlyCoding 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
激活函数还是有一点意思的!
激活函数(Activation functions)对于人工神经网络模型去学习、理解非常复杂和非线性的函数来说具有十分重要的作用。它们将非线性特性引入到我们的网络中。如在神经元中,输入的 inputs 通过加权,求和后,还被作用了一个函数,这个函数就是激活函数。
计算机视觉研究院
2019/07/09
1.3K0
激活函数还是有一点意思的!
神经网络的激活函数
人工神经网络( Artificial Neural Network, 简写为ANN)也简称为神经网络(NN),是一种模仿生物神经网络结构和功能的 计算模型。人脑可以看做是一个生物神经网络,由众多的神经元连接而成。各个神经元传递复杂的电信号,树突接收到输入信号,然后对信号进行处理,通过轴突输出信号。
@小森
2024/05/03
1170
神经网络的激活函数
深度学习500问——Chapter03:深度学习基础(2)
超参数:在机器学习的上下文中,超参数是在开始学习过程之前设置值的参数,而不是通过训练得到的参数数据。通常情况下,需要对超参数进行优化,给学习机选择一组最优超参数,以提高学习的性能和效果。
JOYCE_Leo16
2024/03/19
1500
深度学习500问——Chapter03:深度学习基础(2)
非零均值?激活函数也太硬核了!
若网络中不用激活函数,那么每一层的输出都是输入的线性组合。无论神经网络有多少层,网络的输出都是输入的线性组合,这种网络就是原始的感知机(
灿视学长
2021/05/28
2.6K0
深度学习500问——Chapter03:深度学习基础(1)
神经网络类型众多,其中最为重要的是多层感知机。为了详细地描述神经网络。我们先从最简单的神经网络说起。
JOYCE_Leo16
2024/03/19
1130
深度学习500问——Chapter03:深度学习基础(1)
[MachineLearning] 激活函数Activation Function
神经网络中激活函数的主要作用是提供网络的非线性建模能力,如不特别说明,激活函数一般而言是非线性函数。假设一个示例神经网络中仅包含线性卷积和全连接运算,那么该网络仅能够表达线性映射,即便增加网络的深度也依旧还是线性映射,难以有效建模实际环境中非线性分布的数据。加入(非线性)激活函数之后,深度神经网络才具备了分层的非线性映射学习能力。因此,激活函数是深度神经网络中不可或缺的部分。
wOw
2018/09/18
1.1K0
[MachineLearning] 激活函数Activation Function
【激活函数合集】盘点当前最流行的激活函数及选择经验
在阅读DarkNet源码的时候发现作者定义了大量从古至今流行的损失函数,本着科普的态度我打算做一个全面的总结,所以就有了这篇文章。
BBuf
2020/02/26
2.8K0
机器学习|深度学习基础知识
最近在看深度学习的一些资料,发现有些基础知识比较模糊,于是重新整理了一下深度学习的基础知识。
用户1904552
2025/02/27
840
机器学习|深度学习基础知识
深度学习基本概念|激活函数 Activation Function
人工神经网络由多层神经元构成,对于单个神经元而言,首先对接收到的输入信号进行线性组合,示意如下
生信修炼手册
2021/07/06
8900
深度学习基本概念|激活函数 Activation Function
理解神经网络的激活函数
激活函数在神经网络中具有重要的地位,对于常用的函数如sigmoid,tanh,ReLU,不少读者都已经非常熟悉。但是你是否曾想过这几个问题:
SIGAI学习与实践平台
2018/08/07
1.2K0
理解神经网络的激活函数
深度神经网络总结
深度神经网络(Deep Neural Networks,DNN)可以理解为有很多隐藏层的神经网络,又被称为深度前馈网络(DFN),多层感知机(Multi-Layer perceptron,MLP)。
全栈程序员站长
2022/07/02
1.6K0
深度神经网络总结
深度学习中常见激活函数的原理和特点
前面一些分享文章提到了激活函数,这篇文章将介绍各种激活函数,下一篇将分享我和同事在业务中对激活函数的一些思考与应用。
自学气象人
2023/06/20
1.2K0
深度学习中常见激活函数的原理和特点
机器学习 深度学习中激活函数sigmoid relu tanh gelu等汇总整理
这篇博客主要总结一下常用的激活函数公式及优劣势,包括sigmoid relu tanh gelu
大鹅
2021/09/12
3.1K0
干货 | 深入理解深度学习中的激活函数
生物神经网络是人工神经网络的起源。然而,人工神经网络(ANNs)的工作机制与大脑的工作机制并不是十分的相似。不过在我们了解为什么把激活函数应用在人工神经网络中之前,了解一下激活函数与生物神经网络的关联依然是十分有用的。
用户1150922
2019/05/27
6870
梯度消失问题与如何选择激活函数
当我们在做反向传播,计算损失函数对权重的梯度时,随着越向后传播,梯度变得越来越小,这就意味着在网络的前面一些层的神经元,会比后面的训练的要慢很多,甚至不会变化。
杨熹
2018/08/03
9520
梯度消失问题与如何选择激活函数
入门 | 一文概览深度学习中的激活函数
选自Learn OpenCV 机器之心编译 参与:路雪、蒋思源 本文从激活函数的背景知识开始介绍,重点讲解了不同类型的非线性激活函数:Sigmoid、Tanh、ReLU、LReLU、PReLU、Swish,并详细介绍了这些函数的优缺点。 本文介绍了多种激活函数,并且对比了激活函数的优劣。本文假设你对人工神经网络(AAN)有基本了解,如果没有,推荐先阅读机器之心介绍过的相关文章: 神经网络快速入门:什么是多层感知器和反向传播? DNN 概述论文:详解前馈、卷积和循环神经网络技术 1. 什么是激活函数? 生物神
机器之心
2018/05/10
9120
入门必看!一文读懂神经网络中的激活函数(二)
看看深度学习之激活函数 本篇接着上一篇推文入门《必看!从零开始了解到训练神经网络(一)》,在介绍完神经网络的基本原理和结构之后,继续介绍神经网络中的关键之一 —— 激活函数。 树根这一部分会给大家通俗讲一下激活函数的概念,原理以及作用,还有实际应用中各种激活函数的优缺点。因为激活函数本身就是一种数学函数,推文中出现数学公式在所难免,但是树根力求讲得通俗清晰,让初学者都能读懂,轻松入门深度学习。 1 感知机 Percrptron Activation Function 感知机由Rosenblatt于1957年
企鹅号小编
2018/01/31
2.9K0
入门必看!一文读懂神经网络中的激活函数(二)
深度学习4大激活函数
如果不用激励函数(其实相当于激励函数是f(x) = x),在这种情况下你每一层输出实际上都是上层输入的线性函数。
皮大大
2023/08/25
3970
深度学习4大激活函数
6 种激活函数核心知识点,请务必掌握!
我们知道,神经网络模型中,各隐藏层、包括输出层都需要激活函数(Activation Function)。我们比较熟悉的、常用的激活函数也有 ReLU、Sigmoid 等等。但是,对于各个激活函数的选取方法、区别特点还有几点需要特别注意的地方。今天红色石头就和大家一起来总结一下常用激活函数 Sigmoid、tanh、ReLU、Leaky ReLU、ELU、Maxout 的关键知识点。
红色石头
2022/01/12
3660
6 种激活函数核心知识点,请务必掌握!
吾爱NLP(2)--解析深度学习中的激活函数
由惑而生,所以我打算总结一下深度学习模型中常用的激活函数的一些特性,方便大家日后为模型选择合适的激活函数。   说到激活函数,就不能不提神经网络或者深度学习,从一个新手入门深度学习领域,我觉得首先需要理解三个基本的构成要素:
流川枫
2018/09/12
8790
吾爱NLP(2)--解析深度学习中的激活函数
推荐阅读
相关推荐
激活函数还是有一点意思的!
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文