深入理解激活函数
什么是激活函数?
在人工神经网络中,节点的激活函数定义了该节点或神经元对于给定输入或一组输入的输出。然后将此输出用作下一个节点的输入,依此类推,直到找到原始问题的所需解决方案。
它将结果值映射到所需的范围,例如 0 到 1或-1 到 1 等。这取决于激活函数的选择。例如,使用逻辑激活函数会将实数域中的所有输入映射到 0 到 1 的范围内。
二元分类问题示例:
在二元分类问题中,我们有一个输入 x,比如说一个图像,我们必须将它分类为是否有正确的对象。如果它是一个正确的对象,我们将给它赋值 1,否则赋值为 0。所以在这里,我们只有两个输出——图像要么包含一个有效的对象,要么不包含。这是一个二元分类问题的例子。
when we multiply each of them features with a weight (w1, w2, …, wm) and sum them all together,
node output = activation(weighted sum of inputs).
`一些重要的术语和数学概念——
- 传播是一个重复调整权重以最小化实际输出和期望输出之间的差异的过程。
- 隐藏层是堆叠在输入和输出之间的神经元节点,允许神经网络学习更复杂的特征(例如 XOR 逻辑)。
- 反向传播是一种重复调整权重以最小化实际输出和期望输出之间的差异的过程。
它允许信息通过网络从成本向后返回,以计算梯度。因此,以反向拓扑顺序循环从最终节点开始的节点,以计算最终节点输出的导数。这样做将帮助我们知道谁对最大的错误负责,并在该方向上适当地更改参数。
- 在训练机器学习模型时使用梯度下降。它是一种基于凸函数的优化算法,它迭代地调整其参数以将给定函数最小化为其局部最小值。如果您稍微改变输入,梯度会测量函数的输出变化的程度。
注意:如果梯度下降正常工作,则每次迭代后成本函数都应该减小。
激活函数的类型:
激活函数基本上有两种类型:
1. 线性激活函数——
2. 非线性激活函数——
它使模型可以轻松地对各种数据进行泛化并区分输出。通过仿真发现,对于较大的网络,ReLUs 的速度要快得多。事实证明,ReLU 可以为大型网络带来更快的训练。非线性意味着不能从输入的线性组合中再现输出。
理解非线性函数所需的主要术语是:
1. 导数: y 轴变化与 x 轴变化。它也被称为斜率。
2.单调函数:其或者是完全非增或非递减的函数。
非线性激活函数主要根据其范围或曲线划分如下:
让我们更深入地了解每个激活函数 -
1. Sigmoid:
它也被称为二元分类器或逻辑激活函数,因为函数总是选择 0(假)或 1(真)值。
sigmoid函数产生的结果与 step函数类似,输出在 0 和 1 之间。曲线在 z=0 处与 0.5 交叉,我们可以为激活函数设置规则,例如:如果 sigmoid 神经元的输出大于或等于0.5,输出1;如果输出小于 0.5,则输出 0。
sigmoid函数的曲线没有颠簸。它是平滑的,并且它有一个非常好的和简单的导数,在曲线上的任何地方都是可微的。
Sigmoid 的推导:
Sigmoids 饱和并杀死梯度。 sigmoid 的一个非常普遍的特性是,当神经元激活在 0 或 1 处饱和时,这些区域的梯度几乎为零。回想一下,在反向传播期间,这个局部梯度将乘以整个目标的该门输出的梯度。因此,如果局部梯度非常小,它将有效地“杀死”梯度,并且几乎没有信号会流经神经元到其权重并递归到其数据。此外,将添加额外的惩罚来初始化 sigmoid 神经元的权重以防止饱和。例如,如果初始权重太大,那么大多数神经元会变得饱和,网络几乎无法学习。 2. ReLU(整流线性单元):
它是使用最广泛的激活函数。因为它几乎用于所有的卷积神经网络。 ReLU 从底部整整一半。函数及其导数都是单调的。
f(x) = max(0, x)
接近线性的模型很容易优化。由于 ReLU 具有线性函数的许多特性,因此它往往能很好地解决大多数问题。唯一的问题是在 z = 0 处没有定义导数,我们可以通过在 z = 0 处将导数赋值为 0 来克服这一问题。然而,这意味着对于 z <= 0,梯度为零并且再次无法学习.
3. 泄漏 ReLU:
Leaky ReLU 是 ReLU函数的改进版本。 ReLU函数,x<0 时梯度为 0,这使得神经元因该区域的激活而死亡。 Leaky ReLU 的定义就是为了解决这个问题。我们没有将 Relu函数定义为 x 小于 0 的 0,而是将其定义为 x 的一个小的线性分量。 Leaky ReLU 是解决 Dying ReLU 问题的一种尝试。当 x < 0 时函数不是零,而是有泄漏的 ReLU 将具有小的负斜率(0.01 左右)。也就是说,该函数计算:
4. Tanh 或双曲正切:
它将实数值压缩到范围 [-1, 1] 与 Sigmoid 一样,它的激活饱和,但与 sigmoid 神经元不同,它的输出是以零为中心的。因此,tanh 非线性总是优于 sigmoid 非线性。 tanh 神经元只是一个缩放的 sigmoid 神经元。
Tanh 也像逻辑 sigmoid,但更好。优点是负输入将被映射到强负值,而零输入将被映射到 tanh 图中的接近零。
该函数是可微单调的,但其导数不是单调的。 tanh 和逻辑 Sigmoid 激活函数都用于前馈网络。
它实际上只是 sigmoid函数的缩放版本。
tanh(x)=2 sigmoid(2x)-1
5. 软最大:
sigmoid函数可以轻松应用,并且 ReLU 不会在您的训练过程中消失。但是,当您要处理分类问题时,它们无济于事。 sigmoid函数只能处理两个类,这不是我们所期望的,但我们想要更多。 softmax函数将每个单元的输出压缩到 0 到 1 之间,就像 sigmoid函数。并且它还划分每个输出,使得输出的总和等于 1。
softmax函数的输出等效于分类概率分布,它告诉您任何类别为真的概率。
where 0 is a vector of the inputs to the output layer (if you have 10 output units, then there are 10 elements in z). And again, j indexes the output units, so j = 1, 2, …, K.
Softmax函数的属性 -
1.计算出的概率将在 0 到 1 的范围内。
2.所有概率之和等于 1。
Softmax函数用法 –
1.用于多分类逻辑回归模型。
2.在构建神经网络中,在不同层级和多层感知器中使用 softmax 函数。
例子:
Softmax函数将 logits [1.2, 0.9, 0.4] 转化为概率 [0.46, 0.34, 0.20],概率之和为 1。