常用激活函数的总结与比较

转自:https://livc.io/176


本文为 CS231n 中关于激活函数部分的笔记。

激活函数(Activation Function)能够把输入的特征保留并映射下来。

Sigmoid

Sigmoid 非线性函数将输入映射到 (0,1)(0,1) 之间。它的数学公式为:σ(x)=11+exσ(x)=11+e−x

历史上,sigmoid 函数曾非常常用,然而现在它已经不太受欢迎,实际很少使用了,因为它主要有两个缺点:

1. 函数饱和使梯度消失

sigmoid 神经元在值为 0 或 1 的时候接近饱和,这些区域,梯度几乎为 0。因此在反向传播时,这个局部梯度会与整个代价函数关于该单元输出的梯度相乘,结果也会接近为 0 。

这样,几乎就没有信号通过神经元传到权重再到数据了,因此这时梯度就对模型的更新没有任何贡献。

除此之外,为了防止饱和,必须对于权重矩阵的初始化特别留意。比如,如果初始化权重过大,那么大多数神经元将会饱和,导致网络就几乎不学习。

2. sigmoid 函数不是关于原点中心对称的

这个特性会导致后面网络层的输入也不是零中心的,进而影响梯度下降的运作。

因为如果输入都是正数的话(如 f=wTx+bf=wTx+b 中每个元素都 x>0x>0 ),那么关于 ww 的梯度在反向传播过程中,要么全是正数,要么全是负数(具体依据整个表达式 ff 而定),这将会导致梯度下降权重更新时出现 z 字型的下降。

当然,如果是按 batch 去训练,那么每个 batch 可能得到不同的信号,整个批量的梯度加起来后可以缓解这个问题。因此,该问题相对于上面的神经元饱和问题来说只是个小麻烦,没有那么严重。

tanh

tanh 函数同样存在饱和问题,但它的输出是零中心的,因此实际中 tanh 比 sigmoid 更受欢迎。

tanh 函数实际上是一个放大的 sigmoid 函数,数学关系为:tanh(x)=2σ(2x)1tanh⁡(x)=2σ(2x)−1

ReLU

ReLU 近些年来非常流行。它的数学公式为:f(x)=max(0,x)f(x)=max(0,x)

ww 是二维时,ReLU 的效果如图:

ReLU 的优点:

  1. 相较于 sigmoid 和 tanh 函数,ReLU 对于 SGD 的收敛有巨大的加速作用(Alex Krizhevsky 指出有 6 倍之多)。有人认为这是由它的线性、非饱和的公式导致的。
  2. 相比于 sigmoid/tanh,ReLU 只需要一个阈值就可以得到激活值,而不用去算一大堆复杂的(指数)运算。

ReLU 的缺点是,它在训练时比较脆弱并且可能“死掉”

举例来说:一个非常大的梯度经过一个 ReLU 神经元,更新过参数之后,这个神经元再也不会对任何数据有激活现象了。如果这种情况发生,那么从此所有流过这个神经元的梯度将都变成 0。

也就是说,这个 ReLU 单元在训练中将不可逆转的死亡,导致了数据多样化的丢失。实际中,如果学习率设置得太高,可能会发现网络中 40% 的神经元都会死掉(在整个训练集中这些神经元都不会被激活)。

合理设置学习率,会降低这种情况的发生概率。

Leaky ReLU

Leaky ReLU 是为解决“ ReLU 死亡”问题的尝试。

ReLU 中当 x<0 时,函数值为 0。而 Leaky ReLU 则是给出一个很小的负数梯度值,比如 0.01。

有些研究者的论文指出这个激活函数表现很不错,但是其效果并不是很稳定。

Kaiming He 等人在 2015 年发布的论文 Delving Deep into Rectifiers 中介绍了一种新方法PReLU,把负区间上的斜率当做每个神经元中的一个参数来训练。然而该激活函数在在不同任务中表现的效果也没有特别清晰。

Maxout

Maxout 是对 ReLU 和 Leaky ReLU 的一般化归纳,它的函数公式是(二维时):max(wT1+b1,WT2+b2)max(w1T+b1,W2T+b2)。ReLU 和 Leaky ReLU 都是这个公式的特殊情况(比如 ReLU 就是当 w1,b1=0w1,b1=0时)。

这样 Maxout 神经元就拥有 ReLU 单元的所有优点(线性和不饱和),而没有它的缺点(死亡的ReLU单元)。然而和 ReLU 对比,它每个神经元的参数数量增加了一倍,这就导致整体参数的数量激增。

如何选择激活函数?

通常来说,很少会把各种激活函数串起来在一个网络中使用的。

如果使用 ReLU,那么一定要小心设置 learning rate,而且要注意不要让你的网络出现很多 “dead” 神经元,如果这个问题不好解决,那么可以试试 Leaky ReLU、PReLU 或者 Maxout.

最好不要用 sigmoid,可以试试 tanh,不过可以预期它的效果会比不上 ReLU 和 Maxout.

参考资料

  1. http://cs231n.github.io/neural-networks-1/
  2. https://zhuanlan.zhihu.com/p/21462488
  3. http://blog.youkuaiyun.com/cyh_24/article/details/50593400

<think>嗯,用户想了解TCN中常用激活函数。我需要先回忆一下TCN的结构和相关论文中的内容。根据之前的引用,比如引用[2]提到了σ(·)和ReLU(),而引用[3]提到TCN块中使用ReLU激活函数。还有引用[4]中的MS-TCN可能也用了类似的激活函数。首先,TCN通常使用一维卷积,特别是因果卷积,保证时间上的因果关系。激活函数方面,ReLU应该是最常见的,因为它能缓解梯度消失问题,计算效率高。比如在TCN的每个卷积层后接ReLU,这在很多模型中都是标准做法。 然后,可能还有其他激活函数,比如Leaky ReLU,用来解决ReLU的神经元死亡问题。还有引用中提到FC层后有ReLU,比如在输入处理部分。另外,有些变体可能会用GELU,但不确定是否属于“常用”范畴。还需要考虑残差连接中的激活函数位置,通常是在卷积之后,归一化之前还是之后?比如先卷积,再激活,再归一化,或者相反。不过根据引用[3],FC层后是层归一化加ReLU,可能结构是FC→层归一化→ReLU。而TCN块中的结构可能类似,卷积后接激活函数。另外,是否在每一层都使用激活函数?比如每个膨胀卷积单元后都跟ReLU。论文中的描述可能需要确认,但用户问题比较宽泛,所以可以概括主要使用的类型,并举例说明。还要注意是否有论文中提到其他激活函数的应用,比如Sigmoid或Tanh,但这类可能在TCN中较少见,因为ReLU更适合深层网络。不过如果用户问的是“常用”,重点还是ReLU及其变体。 总结一下,TCN常用激活函数包括ReLU、LeakyReLU,可能还有GELU。需要引用相关文献支持,比如引用[2]和[3]中的内容。此外,可以提到激活函数的位置和应用场景,比如在卷积层后或全连接层后使用。</think>### TCN中常用激活函数 在时间卷积网络(Temporal Convolutional Network, TCN)中,激活函数的选择直接影响模型的非线性表达能力和训练效率。以下是TCN中常用激活函数及其应用场景: 1. **ReLU(Rectified Linear Unit)** - **公式**: $f(x) = \max(0, x)$ - **特点**: 计算高效,能缓解梯度消失问题,是TCN中最常见的激活函数。例如,TCN的卷积层后通常接ReLU以增强非线性[^2][^3]。 - **应用场景**: 用于卷积层、全连接层后,如TCN块中的一维因果卷积单元后[^3]。 2. **Leaky ReLU** - **公式**: $f(x) = \begin{cases} x & \text{if } x \geq 0 \\ \alpha x & \text{if } x < 0 \end{cases}$($\alpha$为小常数,如0.01) - **特点**: 解决ReLU的“神经元死亡”问题,适用于需要更稳定梯度的场景。 - **应用场景**: 部分TCN变体在深层网络中替换ReLU以提升鲁棒性。 3. **GELU(Gaussian Error Linear Unit)** - **公式**: $f(x) = x \cdot \Phi(x)$($\Phi(x)$为标准正态分布的累积分布函数) - **特点**: 通过概率建模引入非线性,适合复杂时序依赖建模。 - **应用场景**: 部分改进型TCN(如结合自适应注意力的模型)可能采用[^3]。 4. **Sigmoid/Tanh** - **特点**: 在TCN中使用较少,因饱和区梯度消失问题明显,但可能用于特定输出层(如二分类任务)。 --- ### 激活函数在TCN中的典型结构示例 以引用[3]中的TCN块为例,其结构如下: 1. 输入经过一维因果膨胀卷积。 2. 卷积输出通过**ReLU激活函数**。 3. 应用层归一化(LayerNorm)。 4. 重复堆叠N个此类块以构建深层网络。 --- ### 总结 - **最常用**: ReLU及其变体(如Leaky ReLU)是TCN的核心激活函数,因其平衡了效率和性能[^2][^3]。 - **扩展应用**: 改进模型中可能尝试GELU等新型函数,但需结合具体任务验证效果。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值