0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

神经网络初学者的激活函数指南

颖脉Imgtec 2023-04-21 09:28 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

作者:Mouâad B.

来源:DeepHub IMBA


如果你刚刚开始学习神经网络,激活函数的原理一开始可能很难理解。但是如果你想开发强大的神经网络,理解它们是很重要的。

f6fc88d0-dd8b-11ed-ad0d-dac502259ad0.png

但在我们深入研究激活函数之前,先快速回顾一下神经网络架构的基本元素。如果你已经熟悉神经网络的工作原理,可以直接跳到下一节。


神经网络架构

神经网络由称为神经元的链接节点层组成,神经元通过称为突触的加权连接来处理和传输信息。

f7128234-dd8b-11ed-ad0d-dac502259ad0.png

每个神经元从上一层的神经元获取输入,对其输入的和应用激活函数,然后将输出传递给下一层。

神经网络的神经元包含输入层、隐藏层和输出层。

输入层只接收来自域的原始数据。这里没有计算,节点只是简单地将信息(也称为特征)传递给下一层,即隐藏层。隐藏层是所有计算发生的地方。它从输入层获取特征,并在将结果传递给输出层之前对它们进行各种计算。输出层是网络的最后一层。它使用从隐藏层获得的所有信息并产生最终值。

为什么需要激活函数。为什么神经元不能直接计算并将结果转移到下一个神经元?激活函数的意义是什么?


激活函数在神经网络中的作用

网络中的每个神经元接收来自其他神经元的输入,然后它对输入进行一些数学运算以生成输出。一个神经元的输出可以被用作网络中其他神经元的输入。

f746d052-dd8b-11ed-ad0d-dac502259ad0.png

如果没有激活函数,神经元将只是对输入进行线性数学运算。这意味着无论我们在网络中添加多少层神经元,它所能学习的东西仍然是有限的,因为输出总是输入的简单线性组合。

激活函数通过在网络中引入非线性来解决问题。通过添加非线性,网络可以模拟输入和输出之间更复杂的关系,从而发现更多有价值的模式。

简而言之,激活函数通过引入非线性并允许神经网络学习复杂的模式,使神经网络更加强大。


理解不同类型的激活函数

我们可以将这些函数分为三部分:二元、线性和非线性。

f75d787a-dd8b-11ed-ad0d-dac502259ad0.png

二元函数只能输出两个可能值中的一个,而线性函数则返回基于线性方程的值。

非线性函数,如sigmoid函数,Tanh, ReLU和elu,提供的结果与输入不成比例。每种类型的激活函数都有其独特的特征,可以在不同的场景中使用。


1、Sigmoid / Logistic激活函数

Sigmoid激活函数接受任何数字作为输入,并给出0到1之间的输出。输入越正,输出越接近1。另一方面,输入越负,输出就越接近0,如下图所示。

f7774f48-dd8b-11ed-ad0d-dac502259ad0.png

它具有s形曲线,使其成为二元分类问题的理想选择。如果要创建一个模型来预测一封电子邮件是否为垃圾邮件,我们可以使用Sigmoid函数来提供一个0到1之间的概率分数。如果得分超过0.5分,则认为该邮件是垃圾邮件。如果它小于0.5,那么我们可以说它不是垃圾邮件。

函数定义如下:

f7a416a4-dd8b-11ed-ad0d-dac502259ad0.png

但是Sigmoid函数有一个缺点——它受到梯度消失问题的困扰。当输入变得越来越大或越来越小时,函数的梯度变得非常小,减慢了深度神经网络的学习过程,可以看上面图中的导数(Derivative)曲线。

但是Sigmoid函数仍然在某些类型的神经网络中使用,例如用于二进制分类问题的神经网络,或者用于多类分类问题的输出层,因为预测每个类的概率Sigmoid还是最好的解决办法。


2、Tanh函数(双曲正切)

Tanh函数,也被称为双曲正切函数,是神经网络中使用的另一种激活函数。它接受任何实数作为输入,并输出一个介于-1到1之间的值。

f7bd2608-dd8b-11ed-ad0d-dac502259ad0.png

Tanh函数和Sigmoid函数很相似,但它更以0为中心。当输入接近于零时,输出也将接近于零。这在处理同时具有负值和正值的数据时非常有用,因为它可以帮助网络更好地学习。

函数定义如下:

f7e4c456-dd8b-11ed-ad0d-dac502259ad0.png

与Sigmoid函数一样,Tanh函数也会在输入变得非常大或非常小时遭遇梯度消失的问题。


3、线性整流单元/ ReLU函数

ReLU是一种常见的激活函数,它既简单又强大。它接受任何输入值,如果为正则返回,如果为负则返回0。换句话说,ReLU将所有负值设置为0,并保留所有正值。

f7f3a444-dd8b-11ed-ad0d-dac502259ad0.png

函数定义如下:

f812cfae-dd8b-11ed-ad0d-dac502259ad0.png

使用ReLU的好处之一是计算效率高,并且实现简单。它可以帮助缓解深度神经网络中可能出现的梯度消失问题。

但是,ReLU可能会遇到一个被称为“dying ReLU”问题。当神经元的输入为负,导致神经元的输出为0时,就会发生这种情况。如果这种情况发生得太频繁,神经元就会“死亡”并停止学习。


4、Leaky ReLU

Leaky ReLU函数是ReLU函数的一个扩展,它试图解决“dying ReLU”问题。Leaky ReLU不是将所有的负值都设置为0,而是将它们设置为一个小的正值,比如输入值的0.1倍。他保证即使神经元接收到负信息,它仍然可以从中学习。

f825f3f4-dd8b-11ed-ad0d-dac502259ad0.png

函数定义如下:

f852474c-dd8b-11ed-ad0d-dac502259ad0.png

Leaky ReLU已被证明在许多不同类型的问题中工作良好。


5、指数线性单位(elu)函数

ReLU一样,他们的目标是解决梯度消失的问题。elu引入了负输入的非零斜率,这有助于防止“dying ReLU”问题

f86315ae-dd8b-11ed-ad0d-dac502259ad0.png

公式为:

f88ba528-dd8b-11ed-ad0d-dac502259ad0.png

这里的alpha是控制负饱和度的超参数。

与ReLU和tanh等其他激活函数相比,elu已被证明可以提高训练和测试的准确性。它在需要高准确度的深度神经网络中特别有用。


6、Softmax函数

在需要对输入进行多类别分类的神经网络中,softmax函数通常用作输出层的激活函数。它以一个实数向量作为输入,并返回一个表示每个类别可能性的概率分布。

softmax的公式是:

f8a18672-dd8b-11ed-ad0d-dac502259ad0.png

这里的x是输入向量,i和j是从1到类别数的索引

Softmax对于多类分类问题非常有用,因为它确保输出概率之和为1,从而便于解释结果。它也是可微的,这使得它可以在训练过程中用于反向传播。


7、Swish

Swish函数是一个相对较新的激活函数,由于其优于ReLU等其他激活函数的性能,在深度学习社区中受到了关注。

Swish的公式是:

f8b5fc6a-dd8b-11ed-ad0d-dac502259ad0.png

这里的beta是控制饱和度的超参数。

Swish类似于ReLU,因为它是一个可以有效计算的简单函数。并且有一个平滑的曲线,有助于预防“dying ReLU”问题。Swish已被证明在各种深度学习任务上优于ReLU。


选择哪一种?

首先,需要将激活函数与你要解决的预测问题类型相匹配。可以从ReLU激活函数开始,如果没有达到预期的结果,则可以转向其他激活函数。

以下是一些需要原则:

  • ReLU激活函数只能在隐藏层中使用。
  • Sigmoid/Logistic和Tanh函数不应该用于隐藏层,因为它们会在训练过程中引起问题。

Swish函数用于深度大于40层的神经网络会好很多。

输出层的激活函数是由你要解决的预测问题的类型决定的。以下是一些需要记住的基本原则:

回归-线性激活函数

二元分类- Sigmoid

多类分类- Softmax

  • 多标签分类- Sigmoid

选择正确的激活函数可以使预测准确性有所不同。所以还需要根据不同的使用情况进行测试。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4840

    浏览量

    108141
  • 函数
    +关注

    关注

    3

    文章

    4421

    浏览量

    67819
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    神经网络的初步认识

    日常生活中的智能应用都离不开深度学习,而深度学习则依赖于神经网络的实现。什么是神经网络神经网络的核心思想是模仿生物神经系统的结构,特别是大脑中神经
    的头像 发表于 12-17 15:05 445次阅读
    <b class='flag-5'>神经网络</b>的初步认识

    FPGA初学者求助

    Vivado2025.1配置MIG时出现报错 大家好,我是一名研一的学生,同时也是一名FPGA初学者,最近在使用vivado2025.1配置MIG的时候遇到了问题,具体问题如下: 我这个mig的配置
    发表于 12-07 11:43

    激活函数ReLU的理解与总结

    激活函数的作用 神经网络中使用激活函数来加入非线性因素,提高模型的表达能力。 如果不用激励函数
    发表于 10-31 06:16

    CNN卷积神经网络设计原理及在MCU200T上仿真测试

    的提出很大程度的解决了BP算法在优化深层神经网络时的梯度耗散问题。当x&gt;0 时,梯度恒为1,无梯度耗散问题,收敛快;当x&lt;0 时,该层的输出为0。 CNN
    发表于 10-29 07:49

    NMSISI库的使用

    :   神经网络卷积函数   神经网络激活函数   全连接层函数   
    发表于 10-29 07:07

    NMSIS神经网络库使用介绍

    :   神经网络卷积函数   神经网络激活函数   全连接层函数   
    发表于 10-29 06:08

    在Ubuntu20.04系统中训练神经网络模型的一些经验

    , batch_size=512, epochs=20)总结 这个核心算法中的卷积神经网络结构和训练过程,是用来对MNIST手写数字图像进行分类的。模型将图像作为输入,通过卷积和池化层提取图像的特征,然后通过全连接层进行分类预测。训练过程中,模型通过最小化损失函数来优化
    发表于 10-22 07:03

    CICC2033神经网络部署相关操作

    在完成神经网络量化后,需要将神经网络部署到硬件加速器上。首先需要将所有权重数据以及输入数据导入到存储器内。 在仿真环境下,可将其存于一个文件,并在 Verilog 代码中通过 readmemh 函数
    发表于 10-20 08:00

    液态神经网络(LNN):时间连续性与动态适应性的神经网络

    1.算法简介液态神经网络(LiquidNeuralNetworks,LNN)是一种新型的神经网络架构,其设计理念借鉴自生物神经系统,特别是秀丽隐杆线虫的神经结构,尽管这种微生物的
    的头像 发表于 09-28 10:03 1516次阅读
    液态<b class='flag-5'>神经网络</b>(LNN):时间连续性与动态适应性的<b class='flag-5'>神经网络</b>

    神经网络的并行计算与加速技术

    随着人工智能技术的飞速发展,神经网络在众多领域展现出了巨大的潜力和广泛的应用前景。然而,神经网络模型的复杂度和规模也在不断增加,这使得传统的串行计算方式面临着巨大的挑战,如计算速度慢、训练时间长等
    的头像 发表于 09-17 13:31 1277次阅读
    <b class='flag-5'>神经网络</b>的并行计算与加速技术

    基于神经网络的数字预失真模型解决方案

    在基于神经网络的数字预失真(DPD)模型中,使用不同的激活函数对整个系统性能和能效有何影响?
    的头像 发表于 08-29 14:01 3643次阅读

    避雷!树莓派初学者常犯的5个错误!

    如果你刚刚入手树莓派,你就会知道它潜力无穷,几乎能实现你想到的任何功能。然而,这种自由也让你可能在不知不觉中做出对系统有害的操作。在本文中,我将介绍要避免犯哪些错误。初学者最常犯的错误包括:损坏SD
    的头像 发表于 07-22 17:16 1532次阅读
    避雷!树莓派<b class='flag-5'>初学者</b>常犯的5个错误!

    无刷电机小波神经网络转子位置检测方法的研究

    摘要:论文通过对无刷电机数学模型的推导,得出转角:与三相相电压之间存在映射关系,因此构建了一个以三相相电压为输人,转角为输出的小波神经网络来实现转角预测,并采用改进遗传算法来训练网络结构与参数,借助
    发表于 06-25 13:06

    神经网络专家系统在电机故障诊断中的应用

    摘要:针对传统专家系统不能进行自学习、自适应的问题,本文提出了基于种经网络专家系统的并步电机故障诊断方法。本文将小波神经网络和专家系统相结合,充分发挥了二者故障诊断的优点,很大程度上降低了对电机
    发表于 06-16 22:09

    神经网络RAS在异步电机转速估计中的仿真研究

    众多方法中,由于其结构简单,稳定性好广泛受到人们的重视,且已被用于产品开发。但是MRAS仍存在在低速区速度估计精度下降和对电动机参数变化非常敏感的问题。本文利用神经网络的特点,使估计更为简单、快速
    发表于 06-16 21:54