深度学习03-神经网络02-激活函数

可以使用这个进行跳转链接​​​​​​​http://playground.tensorflow.org/#activation=relu&batchSize=11&dataset=spiral®Dataset=reg-gauss&learningRate=0.01®ularizationRate=0.1&noise=0&networkShape=7,5,4,3,2&seed=0.54477&showTestData=false&discretize=false&percTrainData=50&x=true&y=true&xTimesY=false&xSquared=false&ySquared=false&cosX=false&sinX=false&cosY=false&sinY=false&collectStats=false&problem=classification&initZero=false&hideText=false到谷歌的神经网络可视化网站

深度学习03-神经网络02-激活函数

A Neural Network Playground

激活函数的选择方法

对于隐藏层:

  1. 1.不管几层都是使用一个激活函数,一般优先选择ReLU激活函数

  2. 2.如果ReLu效果不好,那么尝试其他激活,如Leaky ReLu等。

  3. 3.如果你使用了ReLU, 需要注意一下Dead ReLU问题, 避免出现大的梯度从而导致过多的神经元死亡。

  4. 4. 少用使用sigmoid激活函数,可以尝试使用tanh激活函数

对于输出层:


1. 二分类问题选择sigmoid激活函数 ,输出层:一个神经元节点

2. 多分类问题选择softmax激活函数 ,输出层:有多少分类,就用多少神经元节点

3. 回归问题选择identity激活函数,输出层:一个神经元节点

从一个神经网络看,这里就是两部分是我们人关注的,第一部分是我们如何进行权重参数的初始化, 第二部分我们怎么选择激活函数。

架构决定了,同一层一般是使用同一个非线性激活函数

因为生活中很少有真实的线性关系,基本都是非线性关系。

目前大部分的使用这个relu 效果都还不错。负半轴为0可能会发生神经元死亡的问题,但是这样减少了网络的稀疏。缓解了过拟合。

​​​​​​​

回归的时候不加激活函数, identity (恒等激活 即 y = x  )  

激活函数是神经网络中的关键组成部分,其作用是引入非线性,使神经网络能够学习复杂的模式和解决非线性问题。在没有激活函数的情况下,神经网络的每一层都是线性组合,最终整个网络将会退化为一个简单的线性模型,失去解决复杂问题的能力。因此,激活函数是深度学习模型成功的关键。

激活函数的主要作用

  1. 引入非线性:如果神经网络仅仅是线性变换的堆叠,不管层数多少,最终的网络仍然是一个线性函数。激活函数提供了非线性,使得神经网络可以逼近任意复杂的函数。

  2. 控制神经元的输出范围:通过将输出值限定在某个范围内,激活函数可以稳定神经网络的训练过程,减少数值不稳定问题。

常见的激活函数及其详细分析

1. Sigmoid 函数

公式:   输出范围: ​​​​​​​  特点

  • 将输入压缩到 ​​​​​​​ 的范围。

  • 适合输出为概率值的任务,例如二分类问题。

  • 缺点:容易出现梯度消失问题,尤其是在深层网络中。输入的绝对值较大时,Sigmoid 函数的导数接近 0,导致反向传播时梯度更新非常缓慢,训练效率低。

优点

  • 它能够使输出值保持在有限范围内,便于理解输出。

应用场景:二分类问题的输出层。

2. Tanh 函数

公式:   输出范围: ​​​​​​​ 特点

  • 类似于 Sigmoid,但输出范围为  。

  • 相较于 Sigmoid,Tanh 的输出更居中,值域更广,梯度消失的问题较弱。

  • 在输入接近 0 时,Tanh 函数的导数最大,网络的梯度流动效果更好。

优点

  • 输出的零中心特性(输出在 (-1) 到 (1) 之间)使得训练过程更加平稳,避免了 Sigmoid 函数的非零均值问题。

应用场景:适用于需要平滑输出值的任务。

3. ReLU (Rectified Linear Unit)

公式: 输出范围:   特点

  • 如果输入为负,则输出为 0;如果输入为正,则输出为输入本身。

  • ReLU 是目前最常用的激活函数之一,尤其适合深度神经网络,因为它计算简单且有效。

  • 优势:避免了 Sigmoid 和 Tanh 的梯度消失问题,并且计算速度快。

  • 缺点:会出现“死亡 ReLU”现象,即一旦某个神经元在反向传播中输出 0,那么该神经元在随后的训练中将永远不会激活,因为它的梯度为 0。

应用场景:适用于大部分隐藏层,尤其是卷积神经网络。

4. Leaky ReLU

公式:   输出范围特点

  • 与 ReLU 类似,但允许负数通过一个较小的斜率 (通常 )。

  • 优势:减少了 ReLU 的死亡现象,增加了对负值的敏感性。

应用场景:适用于避免死亡 ReLU 的场景,通常在深度网络中比 ReLU 更稳定。

5. Softmax 函数

公式:   输出范围:  ,且所有输出的总和为 1 特点

  • Softmax 将输出值转换为概率分布,所有输出值加起来为 1。

  • 常用于多分类问题的输出层,因为它提供了一种将神经网络输出解释为概率的方式。

应用场景:多分类问题的输出层,例如图像分类。

激活函数的比较与选择

  • Sigmoid 和 Tanh 常用于较浅的网络或输出层,但由于梯度消失问题,逐渐被 ReLU 和其变种取代。

  • ReLU 和 Leaky ReLU 在深度网络中表现更好,因为它们能够有效避免梯度消失问题,并且计算更简单。

  • Softmax 通常用于多分类问题的输出层,用于将输出转化为概率分布。

如何选择激活函数

  1. ReLU 及其变种(如 Leaky ReLU):大多数情况下,推荐在隐藏层使用 ReLU 或其改进版本。它计算简单且有效,尤其在深度神经网络中表现优异。

  2. Sigmoid 或 Tanh:适用于较浅的网络或用于输出层,尤其是需要输出概率的二分类任务中。

  3. Softmax:用于多分类任务的输出层。

梯度消失与梯度爆炸

梯度消失是指在反向传播中,随着网络层数的增加,梯度逐渐减小,最后趋于 0,导致权重无法更新。Sigmoid 和 Tanh 函数容易出现这种问题。而 ReLU 及其变种通过保持正梯度来缓解梯度消失问题。梯度爆炸则是当梯度在反向传播过程中变得过大,导致参数更新过快,使得模型无法收敛。

总结

激活函数是深度学习网络中的核心组件,负责将线性变换引入非线性,进而增强神经网络的学习能力。不同激活函数各有优缺点,选择合适的激活函数对于神经网络的训练效果至关重要。

版权声明:如无特殊标注,文章均来自网络,本站编辑整理,转载时请以链接形式注明文章出处,请自行分辨。

本文链接:https://www.shbk5.com/dnsj/72921.html