Hinton Neural Networks课程笔记1c:几种激活函数Linear、Binary、ReLU、Stochastic binary neurons

本章简单介绍了一些神经元的激活函数,包括Linear、Binary、ReLU和一些概率统计方面的变种。
笔者在刷CS231n的时候也记录了相关内容,贴在这里方便比较:CS231n课程笔记5.1:神经网络历史&激活函数比较

为什么激活函数都相对简单

首先说明idealize具有很多实际意义:某件事物本身是复杂的,其内可能包含许多没有应用价值的小细节,idealize可以去繁化简,从而可以更好的把握主旨;idealize之后就方便使用数学方法计算,并且对其他类似的系统做模拟;一旦能够了解主旨之后,加入细节是一个相对简单的过程。(笔者印象中最有名的idealize的例子应该就是牛顿定律和相对论了)
综上,idealize虽然得到的结果不准确,但很有意义。神经网络就是对神经元群的idealize,具体可以表现为使用实数值模拟离散的spike活动,激活函数用一些简单函数进行模拟。

激活函数

线性函数 Linear

Linear
如上图所示,就是输入的加权和再加上bias。这个函数十分简单,但是功能也很有限。(如果神经网络中仅使用线性激活函数,那么其只能学习到线性函数,因为多个矩阵连乘还是矩阵)。

Binary Threshold Neurons

Binary
如上图所示,对于大于某个threshold的输入,输出1,否则输出0。Hinton有提到这是受到Von Neumann在设计计算机过程中的思想影响提出的激活函数。(笔者个人觉得该函数满负荷自己对神经元的直观理解的,即当足够的化学信号接收到之后,相应个神经元的细胞膜打开离子门,产生一个spike。但明显这种激活函数在绝大多数(/除了threshold点以外)区域导数为0,而唯一的变化点也没有经典导数,不适合用于现代神经网络中)。Binary Threshold Neurons有两种等价表达式如下:
binary eq

Rectified Linear Neurons/Units (ReLU)

ReLU
其公式形式如上图。ReLU是现在最常见的用于神经网络内的激活函数了,简单操作,耗时少,又具有非线性特性,并减免了梯度消失的问题。(现在也有很多ReLU的变种,2016-2017年左右刚出了一个SeLU,有时间再去刷刷这个论文)

Sigmoid

Sigmoid
这个函数也是相当的经典,在神经网络初始阶段被广泛应用,方程式是经典的逻辑斯蒂函数。这个函数全部区域可导,而且导数易求;输出在0到1之间。但是相比于tanh,其输出均为正数,所以输出的均值不为0,而这又被证实不易于神经网络学习收敛;其次对于接近于0和1的部分,其导数接近于0,所以有明显的梯度衰减问题。故而在深度神经网络内已经很少使用其作为激活函数。

随机二值神经元 Stochastic Binary Neurons

这种神经元的输出仍是只有0或1,但与Binary Threshold不同的是,它把sigmoid的输出当做概率,并根据其按照一定概率输出0或1。类似的也可以把ReLU的输出当做Poisson rate。
stochastic

### 关于ReLU激活函数的研究论文 ReLU(Rectified Linear Unit)是一种广泛应用于神经网络中的激活函数,因其简单性高效性而备受关注。最早的ReLU概念可以追溯到NairHinton的工作,在他们的研究中首次提出了ReLU作为一种有效的非线性变换方法[^2]。 #### ReLU 的原始出版物 ReLU的最初定义可以在以下论文中找到: - **"Rectifier Nonlinearities Improve Neural Network Acoustic Models"** by Xavier Glorot, Antoine Bordes, and Yoshua Bengio (2011)[^6]。这篇论文探讨了不同类型的非线性激活函数对语音识别模型的影响,并指出ReLU相比传统的Sigmoid或Tanh函数具有更好的性能。 此外,另一篇重要的文章是: - **"Deep Sparse Rectifier Neural Networks"** by Vinod Nair and Geoffrey Hinton (2010)[^7]。这篇文章详细介绍了ReLU的设计理念及其在深层神经网络中的应用效果。 #### ReLU 变体的发展 除了标准的ReLU之外,还有多种变体被提出以解决其潜在缺陷,例如梯度消失问题。以下是几个常见的ReLU变体及相关文献: - **Leaky ReLU**: 提出了允许少量负输入传递的小正梯度机制,防止训练过程中梯度完全消亡的情况发生。 - 文献推荐:"Understanding the difficulty of training deep feedforward neural networks" by Xavier Glorot et al.[^8] - **Parametric ReLU (PReLu)**: 这种自适应版本允许学习参数控制斜率值,从而提高灵活性。 - 推荐阅读:“Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification” by Kaiming He et al.[^9] - **Exponential Linear Units (ELUs)** 其他改进型激活函数也逐渐成为研究热点之一。 #### 经典CNN架构中的应用实例 在许多经典的卷积神经网络结构设计里,比如GoogLeNet以及ResNet等都采用了基于ReLU或者它的变形形式作为主要激活单元[^5]。这些成功的案例进一步验证了该类激活方式的有效性与普适价值。 ```python import torch.nn as nn class SimpleNN(nn.Module): def __init__(self): super(SimpleNN, self).__init__() self.fc = nn.Linear(100, 50) self.relu = nn.ReLU() def forward(self, x): x = self.fc(x) x = self.relu(x) # 使用ReLU激活函数处理数据流 return x ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值