1、Sigmoid 和 Tanh 激活函数的局限性
2、ReLU(Rectified Linear Activation Function)
3、如何实现ReLU
4、ReLU的优点
5、使用ReLU的技巧
一个神经网络由层节点组成,并学习将输入的样本映射到输出 。对于给定的节点,将输入乘以节点中的权重,并将其相加 。此值称为节点的summed activation 。然后,经过求和的激活通过一个激活函数转换并定义特定的输出或节点的“activation” 。
最简单的激活函数被称为线性激活,其中根本没有应用任何转换 。一个仅由线性激活函数组成的网络很容易训练 , 但不能学习复杂的映射函数 。线性激活函数仍然用于预测一个数量的网络的输出层(例如回归问题) 。
非线性激活函数是更好的,因为它们允许节点在数据中学习更复杂的结构。两个广泛使用的非线性激活函数是 sigmoid函数和 双曲正切激活函数 。
Sigmoid 激活函数,也被称为 Logistic函数神经网络 , 传统上是一个非常受欢迎的神经网络激活函数 。函数的输入被转换成介于0.0和1.0之间的值 。大于1.0的输入被转换为值1.0,同样,小于0.0的值被折断为0.0 。所有可能的输入函数的形状都是从0到0.5到1.0的 s 形 。在很长一段时间里,直到20世纪90年代早期,这是神经网络的默认激活方式 。
双曲正切函数 , 简称 tanh,是一个形状类似的非线性激活函数,输出值介于-1.0和1.0之间 。在20世纪90年代后期和21世纪初期,由于使用 tanh 函数的模型更容易训练,而且往往具有更好的预测性能,因此 tanh 函数比 Sigmoid激活函数更受青睐 。
Sigmoid和 tanh 函数的一个普遍问题是它们值域饱和了。这意味着 , 大值突然变为1.0,小值突然变为 -1或0 。此外,函数只对其输入中间点周围的变化非常敏感 。
无论作为输入的节点所提供的求和激活是否包含有用信息,函数的灵敏度和饱和度都是有限的 。一旦达到饱和状态,学习算法就需要不断调整权值以提高模型的性能 。
最后,随着硬件能力的提高 , 通过 gpu 的非常深的神经网络使用Sigmoid 和 tanh 激活函数不容易训练 。在大型网络深层使用这些非线性激活函数不能接收有用的梯度信息 。错误通过网络传播回来 , 并用于更新权重 。每增加一层,错误数量就会大大减少 。这就是所谓的 消失梯度 问题,它能有效地阻止深层(多层)网络的学习 。
虽然非线性激活函数的使用允许神经网络学习复杂的映射函数,但它们有效地阻止了学习算法与深度网络的工作 。在2000年代后期和2010年代初期,通过使用诸如波尔兹曼机器和分层训练或无监督的预训练等替代网络类型 , 这才找到了解决办法 。
为了训练深层神经网络,需要一个激活函数神经网络,它看起来和行为都像一个线性函数 , 但实际上是一个非线性函数 , 允许学习数据中的复杂关系。该函数还必须提供更灵敏的激活和输入,避免饱和 。
因此,ReLU出现了, 采用 ReLU 可以是深度学习革命中为数不多的里程碑之一。ReLU激活函数是一个简单的计算,如果输入大于0,直接返回作为输入提供的值;如果输入是0或更小,返回值0 。
我们可以用一个简单的 if-statement 来描述这个问题,如下所示:
对于大于零的值,这个函数是线性的,这意味着当使用反向传播训练神经网络时,它具有很多线性激活函数的理想特性 。然而,它是一个非线性函数,因为负值总是作为零输出 。由于矫正函数在输入域的一半是线性的 , 另一半是非线性的,所以它被称为 分段线性函数(piecewise linear function )。
推荐阅读
- mongodb网址是多少,mongodb mongos
- 显卡里面没有说明书怎么办,显卡没有说明书吗
- 理发店如何营销客户经验,理发店怎么营销
- js数组的key,js数组的key是字符串
- linux的判断命令 linux shell 判断
- oracle查询一月份数据,oracle查询每月数据
- 什么时候看考研视频,什么时候看考研视频比较好
- vb.net视觉编程的简单介绍
- 如何营销自助餐,自助餐怎么营销