机器学习(14)——激活函数

article/2025/9/27 6:49:51

文章目录

  • 1 定义
  • 2 激活函数的必要性
  • 3 常用的激活函数
    • 3.1 单位阶跃函数
    • 3.2 Logistic函数
    • 3.3 Tanh函数
    • 3.4 ReLU函数
    • 3.5 LeakyReLU函数
    • 3.6 Softmax函数
  • 4 选择恰当的激活函数

1 定义

  激活函数 (Activation functions) 对于人工神经网络模型去学习、理解非常复杂和非线性的函数来说具有十分重要的作用。它们将非线性特性引入到神经网络中。在下图中,输入的 inputs 通过加权,求和后,还被作用了一个函数,这个函数就是激活函数。引入激活函数是为了增加神经网络模型的非线性。没有激活函数的每层都相当于矩阵相乘。就算你叠加了若干层之后,无非还是个矩阵相乘罢了。
在这里插入图片描述

2 激活函数的必要性

  如果不用激活函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合,这种情况就是最原始的感知机(Perceptron)。这种情况无论有多少层神经网络均可以仅使用输入层和输出层代替,不同的地方就是线性函数的系数不同。激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。

3 常用的激活函数

3.1 单位阶跃函数

  单位阶跃函数,又称赫维赛德阶跃函数,方程式如下:
f ( x ) = { 0 , x < 0 1 , x ≥ 0 f(x)= \begin{cases} 0,& x < 0\\ 1, & x \geq 0 \end{cases} f(x)={0,1,x<0x0
函数曲线如下:

在这里插入图片描述
可以看出是个不连续函数,它是一个几乎必然是零的随机变量的累积分布函数,激活值只有 0 和 1,即百分百确定和百分百不确定,适合二分类问题。导数方程式如下:
f ′ ( x ) = { 0 , x ≠ 0 ? , x = 0 f'(x) = \begin{cases} 0 , & x \not= 0 \\ ?, & x = 0 \end{cases} f(x)={0,?,x=0x=0

3.2 Logistic函数

  Logistic 函数也叫 Sigmoid 函数,用于隐层神经元输出,取值范围为(0,1),它可以将一个实数映射到(0,1)的区间,因此 Sigmoid 函数作为输出层时可以用来做二分类。在特征相差比较复杂或是相差不是特别大时效果比较好。方程式如下:
f ( x ) = 1 1 + e − x f(x) = \frac{1}{1 + e^{-x}} f(x)=1+ex1
函数曲线如下:

在这里插入图片描述
其导数方程式如下:
f ′ ( x ) = f ( x ) ( 1 − f ( x ) ) f'(x) = f(x)(1 - f(x)) f(x)=f(x)(1f(x))
Logistic 函数平滑、易于求导,但是计算量大,反向传播求误差梯度时,求导涉及除法;反向传播时,很容易就会出现梯度消失的情况,从而无法完成深层网络的训练。

3.3 Tanh函数

  Tanh 函数能够将输入“压缩”到(−1,1)区间,方程式如下:
f ( x ) = T a n h ( x ) = ( e x − e − x ) ( e x + e − x ) f(x) = Tanh(x) = \frac{(e^x - e^{-x})}{(e^x + e^{-x})} f(x)=Tanh(x)=(ex+ex)(exex)
函数曲线如下:
在这里插入图片描述
可以看到 tanh 激活函数可通过 Sigmoid 函数缩放平移后实现。其导数方程式如下:
f ′ ( x ) = 1 − f ( x ) 2 f'(x) = 1 - f(x)^2 f(x)=1f(x)2
sigmoid 函数相比,它的输出均值为0,使其收敛速度要比 sigmoid 快,可以减少迭代次数。它的缺点是需要幂运算,计算成本高;同样存在梯度消失,因为在两边一样有趋近于0的情况。

3.4 ReLU函数

  整流线性单位函数(ReLU )又称修正线性单元, 是一种人工神经网络中常用的激励函数(activation function),通常指代以斜坡函数及其变种为代表的非线性函数。ReLU 认为有一定的生物学原理,并且由于在实践中通常有着比其他常用激励函数(譬如 Sigmoid 函数)更好的效果,而被如今的深度神经网络广泛使用于诸如图像识别等计算机视觉人工智能领域。方程式如下:
f ( x ) = m a x ( 0 , x ) f(x) = max(0, x) f(x)=max(0,x)
而在神经网络中,ReLU 作为神经元的激活函数,定义了该神经元在线性变换 w T + b \boldsymbol{w^T + b} wT+b之后的非线性输出结果。换言之,对于进入神经元的来自上一层神经网络的输入向量 x \boldsymbol{x} x,使用 ReLU 的神经元会输出:
m a x ( 0 , w T + b ) max(0, \boldsymbol{w^T + b}) max(0,wT+b)
函数曲线如下:
在这里插入图片描述
导数方程式如下:
f ′ ( x ) = { 0 , x < 0 1 , x ≥ 0 f'(x) = \begin{cases} 0, & x < 0 \\ 1, &x\geq 0 \end{cases} f(x)={0,1,x<0x0
相对 sigmoidtanh,极大地改善了梯度消失的问题,收敛速度块;不需要进行指数运算,因此运算速度快,复杂度低;ReLU 函数会使得一部分神经元的输出为0,这样就造成了网络的稀疏性,并且减少了参数的互相依存关系,缓解了过拟合问题的发生。它的缺点是对参数初始化和学习率非常敏感;存在神经元死亡;ReLU 函数的输出均值大于0,偏移现象和神经元死亡会共同影响网络的收敛性。

3.5 LeakyReLU函数

  ReLU 函数在 x < 0 x < 0 x<0 时导数值恒为 0,也可能会造成梯度弥散现象,为了克服这个问题,LeakyReLU 函数被提出,方程式如下:
f ( x ) = m a x ( α x , x ) f(x) = max(\alpha x,x) f(x)=max(αx,x)
其函数曲线如下:
在这里插入图片描述
导数方程式如下:
f ′ ( x ) = { 1 , x ≥ 0 α , x < 0 f'(x) = \begin{cases} 1 ,& x \geq 0 \\ \alpha, &x < 0 \end{cases} f(x)={1,α,x0x<0

其中 α \alpha α 为用户自行设置的某较小数值的超参数,如 0.02 等。当 α = 0 \alpha = 0 α=0 时,LeayReLU 函数退化为 ReLU 函数;当 α ≠ 0 \alpha \not = 0 α=0 时, x < 0 x < 0 x<0 处能够获得较小的导数值 α \alpha α,从而避免出现梯度弥散现象。

3.6 Softmax函数

  Softmax 函数,或称归一化指数函数,有多个输入,是 Sigmoid 函数的一种推广。它能将一个含任意实数的 K K K 维向量 z \boldsymbol{z} z “压缩”到另一个 K K K 维实向量 σ ( z ) \boldsymbol{\sigma(z)} σ(z) 中,使得每一个元素的范围都在(0,1)之间,并且所有元素的和为1。那么我们就可以将它理解成概率,在最后选取输出结点的时候,我们就可以选取概率最大(也就是值对应最大的)结点,作为我们的预测目标。方程式如下:
σ ( z ) j = e z j ∑ k = 1 K e z k f o r j = 1 , ⋯ , K \boldsymbol{\sigma(z)_j = \frac{e^{z_j}}{\sum_{k = 1}^{K} e^{z_k}}\qquad for\ j = 1,\cdots, K} σ(z)j=k=1Kezkezjfor j=1,,K
Softmax 的使用包括两个好处,第一个好处是好求导,第二个就是它使得好结果和坏结果之间的差异更加显著,更有利于学习了。关于 SoftmaxLoss Function 之间的求导可参考这篇文章https://zhuanlan.zhihu.com/p/25723112

4 选择恰当的激活函数

  在搭建神经网络时,如果搭建的神经网络层数不 多,选择 SigmoidTanhReLULeakyReLUSoftmax 都可以;而如果搭建的网络层次较 多,那就需要小心,选择不当就可导致梯度消失问题。此时一般不宜选择 SigmoidTanh 激活函数,因它们的导数都小于1,尤其是 Sigmoid 的导数在 [0,1/4]之间,多层叠加后,根据微积分链式法则,随着层数增多,导数或偏导将指数级变小。所以层数较多的激活函数需要考虑其导数不宜小于1当然 也不能大于1,大于1将导致梯度爆炸,导数为1最好,而激活函数 ReLU 及其变种正好满足这个条件。所以,搭建比较深的神经网络时,一般使用 ReLU 激活函数, 当然一般神经网络也可使用。此外,激活函数 Softmax 由于 ∑ j = 0 K σ ( z ) j = 1 \boldsymbol{\sum_{j = 0}^{K}\sigma(z)_j} = 1 j=0Kσ(z)j=1 的性质,常用于多分类神经网络输出层。


http://chatgpt.dhexx.cn/article/JZFR9q3S.shtml

相关文章

GELU激活函数

最近看bert论文&#xff0c;发现用的是GELU激活函数&#xff0c;找出来看看 论文&#xff1a;GAUSSIAN ERROR LINEAR UNITS (GELUS)项目&#xff1a;https://github.com/hendrycks/GELUs ABSTRACT 本文提出了高斯误差线性单元(GELU)&#xff0c;一个高性能的神经网络激活函数…

神经网络中的激活函数

文章目录 引言什么是激活函数&#xff1f;为什么我们要在神经网络中使用激活函数&#xff1f;线性激活函数非线性激活函数1. Sigmoid&#xff08;逻辑激活函数&#xff09;2. Tanh&#xff08;双曲正切激活函数&#xff09;3. ReLU&#xff08;线性整流单元&#xff09;激活函数…

激活函数简述

1、激活函数的作用 1.不带激活函数的单层感知机是一个线性分类器&#xff0c;不能解决线性不可分的问题 2.合并后的多个感知器本质上还是一个线性分类器&#xff0c;还是解决不了非线性的问题 3.激活函数是用来加入非线性因素的&#xff0c;提高神经网络对模型的表达能力&a…

常用激活函数

文章目录 前言为什么需要激活函数什么样的函数可以做激活函数什么样的函数是好的激活函数常用激活函数sigmoidtanhReLULeaky ReLURandomized Leaky ReLUMaxout 参考文章 前言 今天这篇文章对一些常用激活函数做一下总结吧。在神经网络中激活函数还是很重要的&#xff0c;并且熟…

激活函数

深度学习中的激活函数导引 我爱机器学习(52ml.net) 2016年8月29日 0 作者&#xff1a;程程 链接&#xff1a;https://zhuanlan.zhihu.com/p/22142013 来源&#xff1a;知乎 著作权归作者所有&#xff0c;已联系作者获得转载许可。 深度学习大讲堂致力于推送人工智能&#xff0c…

详解激活函数

文章目录 0️⃣前言1️⃣Sigmoid2️⃣tanh3️⃣Relu4️⃣Leaky Relu5️⃣Softmax6️⃣总结 0️⃣前言 用了这么久的激活函数&#xff0c;抽空总结一下吧&#xff0c;不然总是忘记&#xff0c;这里介绍常用到的sigmoid&#xff0c;tanh&#xff0c;relu&#xff0c;leaky relu&…

常用激活函数(激励函数)理解与总结

引言 学习神经网络的时候我们总是听到激活函数这个词&#xff0c;而且很多资料都会提到常用的激活函数&#xff0c;比如Sigmoid函数、tanh函数、Relu函数。那么我们就来详细了解下激活函数方方面面的知识。本文的内容包括几个部分&#xff1a; 什么是激活函数&#xff1f;激活…

常用激活函数总结(深度学习)

前言   学习神经网络的时候我们总是听到激活函数这个词&#xff0c;而且很多资料都会提到常用的激活函数&#xff0c;比如Sigmoid函数、tanh函数、Relu函数。在经过一段时间学习后&#xff0c;决定记录个人学习笔记。 一、激活函数 1.激活函数定义&#xff1f;   在神经网…

【概念梳理】激活函数

一、引言 常用的激活函数如下&#xff1a; 1、Sigmoid函数 2、Tanh函数 3、ReLU函数 4、ELU函数 5、PReLU函数 6、Leaky ReLU函数 7、Maxout函数 8、Mish函数 二、激活函数的定义 多层神经网络中&#xff0c;上层节点的输出和下层节点的输入之间具有一个函数关系&#xff0c;…

一文搞懂激活函数

目录 1、什么是激活函数 2、激活函数的用途&#xff08;为什么需要激活函数&#xff09;&#xff1f; 3、常见的激活函数介绍 3.1 Sigmoid函数 3.2 tanh函数 3.3.RelU函数 3.4 Leaky ReLU函数 和 PReLU 函数 --- ReLU 变体的提出 3.5 ELU (Exponential Linear Units) 函…

激活函数(Relu,sigmoid,Tanh,softmax)详解

目录 1 激活函数的定义 2 激活函数在深度学习中的作用 3 选取合适的激活函数对于神经网络有什么样的重要意义 4 常用激活函数 4.1 Relu 激活函数 4.2 sigmoid 激活函数 4.3 Tanh激活函数 4.4 softmax 激活函数 1 激活函数的定义 激活函数&#xff08;Activation Funct…

激活函数(Activation Function)

目录 1 激活函数的概念和作用 1.1 激活函数的概念 1.2 激活函数的作用 1.3 通俗的理解一下激活函数(图文结合) 1.3.1 无激活函数的神经网络 1.3.2 带激活函数的神经网络 2 神经网络梯度消失与梯度爆炸 2.1 简介梯度消失与梯度爆炸 2.2 梯度不稳定问题 2.3 产生梯度消…

常用的激活函数合集(详细版)

目录 一、定义以及作用 二、常用激活函数解析 1、Sigmoid函数 1.1 公式 1.2 对应的图像 1.3 优点与不足之处 1.4 对应pytorch的代码 2、Tanh函数 2.1 公式 2.2 对应的图像 2.3 优点与不足之处 2.4 对应pytorch的代码 3、ReLU 3.1 公式 3.2 对应的图像 3.3 优点与不…

优化算法——FTRL

ctr预测中&#xff0c;单个样本由向量x表示&#xff0c;w是模型参数&#xff0c;预测样本x被点击的概率psigmoid(w * x)&#xff0c;sigmoid(x) 1/(1exp(x))。样本label为{0, 1}表示是否被点击。模型损失函数为交叉熵损失&#xff1a; L -ylog - (1-y)log(1-p)&#xff0c;梯…

【深度学习】优化算法-Ftrl

脑图 代码实现 DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSEVersion 2, December 2004Copyright (C) 2004 Sam Hocevar <samhocevar.net>Everyone is permitted to copy and distribute verbatim or modified copies of this license document, and changing it is all…

谷歌13年提出来的类似于lr的算法 - ftrl论文翻译(七)

论文链接&#xff1a;https://static.googleusercontent.com/media/research.google.com/zh-CN//pubs/archive/41159.pdf 概要 预测广告点击率&#xff08;CTR&#xff09;是一个巨大的规模学习问题&#xff0c;是在线广告业数十亿美元的核心问题。 我们从最近的实验中选择出…

FTRL 算法

本文会尝试总结FTRL的发展由来&#xff0c;总结从LR -> SGD -> TG -> FOBOS -> RDA -> FTRL 的发展历程。本文的主要目录如下&#xff1a; 一、 反思魏则西事件。 二、 LR模型 三、 SGD算法 四、 TG算法 五、 FOBOS算法 六、 RDA算法 七、 FTRL算法 注&…

排序模型进阶-FMFTRL

日萌社 人工智能AI&#xff1a;Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战&#xff08;不定时更新&#xff09; 5.8 排序模型进阶-FM&FTRL 学习目标 目标 无应用 无 5.8.1 问题 在实际项目的时候&#xff0c;经常会遇到训练数据非常大导致一些算法实际…

以我视角深入理解FTRL模型原理

以我视角深入理解FTRL模型原理 FTRL算法是吸取了FOBOS算法和RDA算法的优点而衍生而来的算法。 1.FOBOS算法 小结&#xff1a; 2. RDA算法 RDA也叫正则对偶平均算法&#xff0c;特征权重更新如下&#xff1a; 小结&#xff1a; 3.FTRL算法原理 从loss function的形式来看&am…

FTRL实战之LR+FTRL(代码采用的稠密数据)

理解要点&#xff1a;主要是梯度更新的方法使用了FTRL。即更改了梯度的update函数。 相关参考&#xff1a;https://github.com/wan501278191/OnlineLearning_BasicAlgorithm/blob/master/FTRL.py FTRL&#xff08;Follow The Regularized Leader&#xff09;是一种优化…