一. 什么是激活函数
获取输出节点的一种函数[2]
二. 为何在神经网络中使用激活函数
神经网络通过激活函数的使用,可将输出限定到一定的范围内。帮助模型适应更多样的数据,并区分输出。
在神经网络中,若神经元接收D个输入,此时将输入看为向量,并用净输入(Net Input)来表示一个神经元所获得的输入信号x的加权和[1]。
;w是权重(weight),b是偏置(bias)
该式子是一个线性的公式可看作。为了将其转换为非线性,则在z的输入后添加激活函数。
典型的神经元结构如图所示:
非线性函数根据弧度或者输出范围来分类
三,Sigmoid型函数
3.1Sigmoid函数(Logistic 函数)
sigmoid函数的值域为,适用于预测概率的场景。并适用于多分类场景。
例如:如果一个人随机选择一星期7天中的一天,选择星期日的发生比[4](odds)是
即为: ,使用log将区间改为后 :
,此时映射区间为[0, 1] .假定输入 :
此时P(x),即为sigmoid函数;导数为:
sigmoid的导数曲线如图:
Sigmoid函数的导数刚好属于正态分布,在大部分的输入都转化为在区间[-1,1]的输出。
问题类型 | 激活函数 | 损失函数(Loss) |
二分类(binary) | sigmoid | nn.BCELoss():模型最后一层需要经过torch.sigmoid()函数 |
多分类,单标签(Multiclass) | softmax | nn.CrossEntropyLoss():无需手动做softmax |
多分类,多标签(Multilabel) | sigmoid | sigmoid+nn.BCELoss():模型最后一层要经过sigmoid函数 |
3.1.1. Softmax
softmax 是将一个向量作为输入[5],
每个输入所对应的概率,所对应的输入向量X的概率则为:
不同于二分类问题,多分类中若运用sigmoid函数,我们会获得孤立的概率,而非所有预测类别的概率分布。
为了将输入X转换为概率分布,将其使用于指数函数。
此时发生比则为
将每个发生比相加后,得到:
将其运用于输入X后,得到的输出概率则为:
该输出的概率分布之和为1。
3.2 Tanh函数
如图所示:相对于sigmoid函数来讲,Tanh函数的值域为(-1, 1)。
Tanh函数的导数如图:
四、ReLU函数及其变体
4.1 Leaky ReLU
五、激活函数总结
激活函数的导数图像:
Reference:
2. Activation Functions in Neural Networks
3.Activation Functions in Neural Networks [12 Types & Use Cases]
4. 发生比