🐋激活函数
2021-11-15
| 2023-8-6
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
Property
 
 
激活函数(activation function)通过计算加权和并加上偏置来确定神经元是否应该被激活, 它们将输入信号转换为输出的可微运算, 大多数激活函数都是非线性的

Sigmoid激活函数

对于一个定义域在, sigmoid函数将输入变换为区间(0, 1)上的输出。 因此,sigmoid通常称为挤压函数: 它将范围(-inf, inf)中的任意输入压缩到区间(0, 1)中的某个值:
notion image
在最早的神经⽹络中,科学家们感兴趣的是对“激发”或“不激发”的⽣物神经元进⾏建模。因此,这⼀领域的先驱,如⼈⼯神经元的发明者麦卡洛克和⽪茨,从他们开始就专注于阈值单元。阈值单元在其输⼊低于某个阈值时取值0,当输⼊超过阈值时取值1。
当⼈们的注意⼒逐渐转移到基于梯度的学习时,sigmoid函数是⼀个⾃然的选择,因为它是⼀个平滑的、可微的阈值单元近似。当我们想要将输出视作⼆分类问题的概率时,sigmoid仍然被⼴泛⽤作输出单元上的激活函数(可以将sigmoid视为softmax的特例)。然而,sigmoid在隐藏层中已经较少使⽤,它在⼤部分时候已经被更简单、更容易训练的ReLU所取代。
下⾯绘制sigmoid函数,当输⼊接近0时,sigmoid函数接近线性变换
notion image
notion image
 
 

Tanh激活函数

与sigmoid函数类似, tanh(双曲正切)函数也能将其输入压缩转换到区间(-1, 1)上。 tanh函数的公式如下:
notion image
输入接近0时,tanh的导数接近最大值1。 与sigmoid类似, 输入在任一方向上越远离0点,导数越接近0。
notion image
notion image
 
 

ReLU激活函数

最受欢迎的激活函数是修正线性单元(Rectified linear unit,ReLU), 因为它实现简单,同时在各种预测任务中表现良好。 ReLU提供了一种非常简单的非线性变换。 给定元素,ReLU函数被定义为该元素与0的最大值:
通俗地说,ReLU函数通过将相应的活性值设为0,仅保留正元素并丢弃所有负元素。
notion image
notion image
notion image
使⽤ReLU的原因是,它求导表现得特别好:要么让参数消失,要么让参数通过。这使得优化表现得更好,并且ReLU减轻了困扰以往神经⽹络的梯度消失问题。
ReLU函数有许多变体,包括参数化ReLU(Parameterized ReLU,pReLU)函数 [He et al., 2015]。该变体为ReLU添加了⼀个线性项,因此即使参数是负的,某些信息仍然可以通过:
 
 

激活函数目的是引入非线性

notion image
表示 个样本的小批量, 其中每个样本具有个输入特征。对于具有个隐藏单元的单隐藏层多层感知机, 用表示隐藏层的输出, 称为隐藏表示。在数学或代码中,H也被称为隐藏层变量隐藏变量。 隐藏层和输出层都是全连接的。
有隐藏层权重和隐藏层偏置以及输出层权重和输出层偏置形式上,按如下方式计算单隐藏层多层感知机的输出
上面的隐藏单元由输入的仿射函数给出, 而输出(softmax操作前)只是隐藏单元的仿射函数。 仿射函数的仿射函数本身就是仿射函数, 但是之前的线性模型已经能够表示任何仿射函数。
 
可以证明这一等价性,即对于任意权重值, 只需合并隐藏层,便可产生具有参数等价单层模型:
但是一般来说,有了激活函数,就不可能再将多层感知机退化成线性模型:
为了构建更通用的多层感知机, 可以继续堆叠这样的隐藏层, 例如 , 一层叠一层,从而产生更有表达能力的模型。
  • PyTorch
  • DNN和前向传播算法 反向传播算法(BP)
    目录