深度学习系列--03.激活函数
一.定义
激活函数是一种添加到人工神经网络中的函数,它为神经网络中神经元的输出添加了非线性特性
在神经网络中,神经元接收来自其他神经元的输入,并通过加权求和等方式计算出一个净输入值。激活函数则根据这个净输入值来决定神经元是否应该被激活,以及激活的程度,从而决定神经元向后续层传递的输出值。通过引入激活函数,神经网络能够学习和表示更复杂的非线性关系,大大提高了模型的表达能力。
二.工作流程
1.接收输入
神经网络中的每个神经元会接收来自上一层神经元的输出作为输入。这些输入通常是经过加权求和后的结果,即
其中xi是第i个输入,w是对应的权重,b是偏置,n是输入的数量。z这个值就是激活函数的输入。
2. 计算处理
激活函数根据其特定的数学表达式对输入值z进行计算。例如:
3.产生输出
- 经过激活函数的计算后,会得到一个输出值。这个输出值将作为当前神经元的输出,传递给下一层神经元作为输入,继续在神经网络中进行信息传递和处理。
- 在二分类问题中,Sigmoid 函数的输出值可以表示样本属于正类的概率,比如输出 0.8,表示样本有 80% 的概率属于正类。
- 在多分类问题中,Softmax 函数的输出是一个概率分布向量,例如输出,表示样本属于三个不同类别的概率分别为 20%、30% 和 50%。
- ReLU 函数输出的正值会直接传递给下一层,而输出的 0 值可能会导致下一层神经元接收的输入减少,在一定程度上起到了数据筛选和稀疏化的作用。
激活函数通过这样的运作流程,为神经网络引入了非线性因素,使得神经网络能够学习和处理各种复杂的非线性关系,从而提高模型的性能和泛化能力
三.常见激活函数
1.Sigmoid函数
公式:
导数公式:
图像:
作用
- 归一化与概率表示:能将任意实数输入映射到区间(0,1),在二分类问题中,常将输出解释为属于某一类别的概率。比如在判断一封邮件是否为垃圾邮件时,Sigmoid 函数输出值为0.8,就表示该邮件有的概率80%是垃圾邮件。
优点
- 输出范围固定:输出值在(0,1)之间,具有明确的物理意义,便于对结果进行解释和理解,可直接作为概率或比例等使用。
- 平滑可导:函数曲线平滑,处处可导,这使得在神经网络的训练过程中,能够方便地使用梯度下降等算法进行参数更新,保证训练的顺利进行。
- 单调性:函数具有单调性,输入值的增加或减少会导致输出值单调地增加或减少,有助于模型学习输入和输出之间的单调关系。
缺点
- 梯度消失问题:当输入值x的绝对值较大时,函数的导数会趋近于0。在神经网络反向传播过程中,梯度值过小会导致信息传递困难,使得模型训练速度变慢,甚至难以收敛,尤其是在深层神经网络中,这个问题会更加严重。
- 输出非零均值:输出值的均值不为,这可能会导致神经网络在训练过程中出现梯度更新的偏差,使得训练不够稳定,需要更多的技巧和调整来保证训练的效果。
- 计算复杂度相对较高:涉及指数运算,在计算资源有限或对计算速度要求较高的场景下,计算量相对较大,可能会影响模型的训练和推理效率。
2.Tanh函数
公式:
导数:
图像
作用
- 归一化与数据压缩:能将实数域的输入值压缩到区间内,对于一些需要将数据归一化到特定范围的场景非常有用,比如在数据预处理阶段,可将数据映射到合适的区间,便于后续的计算和处理。
- 解决回归问题:在一些回归任务中,函数可以将输出值限制在一定范围内,避免模型输出过大或过小的值,提高模型的稳定性和预测准确性。
优点
- 输出范围合适:输出值在 (-1.1) 之间,相比 Sigmoid 函数,其输出更接近零均值,在神经网络训练中,能使数据分布更加对称,有助于加快训练收敛速度,减少梯度更新的偏差。
- 非线性特性强:具有比 Sigmoid 函数更强的非线性,能够更好地拟合复杂的非线性关系,在处理一些具有高度非线性的数据时,可能会取得更好的效果。
- 平滑可导:函数曲线平滑,处处可导,这使得在使用梯度下降等优化算法进行训练时,能够顺利地计算梯度,保证模型训练的稳定性和收敛性。
缺点
- 梯度消失问题:与 Sigmoid 函数类似,当输入值的绝对值较大时,的导数也会趋近于,在深层神经网络中容易出现梯度消失现象,导致信息在反向传播过程中难以传递,影响模型的训练效果和收敛速度。
- 计算复杂度相对较高:同样涉及指数运算,计算量相对较大,在一些对计算速度要求较高的场景下,可能会影响模型的实时性和效率。
3.ReLU函数
图像
作用
- 缓解梯度消失:在正向传播过程中,当x>0时,梯度为1,不会像 Sigmoid 和 tanh 函数那样在某些区域出现梯度趋近于0的情况,这有助于在神经网络训练过程中,梯度能够更有效地反向传播,缓解了梯度消失问题,使得深层神经网络的训练更加容易。
- 稀疏性激活:它会使一部分神经元的输出为0,从而使神经网络具有稀疏性。这种稀疏性可以减少模型的计算量和存储量,提高模型的运行效率,同时也有助于提取数据中的关键特征,减少特征之间的冗余。
优点
- 计算简单高效:计算过程只需要判断x是否大于0,然后进行简单的取值操作,相比 Sigmoid 和 tanh 函数不需要进行复杂的指数运算,大大降低了计算量,提高了模型的训练和推理速度。
- 收敛速度快:由于其能够缓解梯度消失问题,在使用梯度下降等优化算法进行训练时,模型的收敛速度通常比使用 Sigmoid 或 tanh 函数作为激活函数时更快,能够更快地找到最优解,节省训练时间。
- 生物合理性:在一定程度上模拟了生物神经元的激活特性,当输入信号超过一定阈值时神经元才会被激活,输出非零值,这使得神经网络在生物学上具有一定的合理性,更符合生物神经系统的工作原理。
4.Softmax函数
图像
优点
- 输出概率可解释性强:直观地给出了每个类别被预测为正确类别的概率,方便人们理解模型的决策过程和结果,有助于对模型进行评估和分析。
- 灵活的概率分布表示:能够根据输入数据的不同,灵活地调整各个类别的概率分布,对于不同的分类任务都能提供较为合理的概率输出,适应各种复杂的分类场景。
- 与交叉熵损失函数的完美结合:在训练过程中,Softmax 函数与交叉熵损失函数的组合具有良好的数学性质,能够使得梯度计算和模型优化过程更加稳定和高效,有助于模型快速收敛到较好的结果
缺点
- 计算复杂度高:涉及指数运算,当输入向量的维度较高时,计算量会显著增加,这会导致模型的训练和推理速度变慢,在一些对实时性要求较高的应用场景中可能不太适用。
- 容易出现梯度消失或爆炸:在计算 Softmax 函数的导数时,如果输入值过大或过小,可能会导致指数函数的值过大或过小,进而使得梯度消失或爆炸,这会影响模型的训练稳定性和收敛速度,尤其是在深层神经网络中,这个问题可能会更加严重。
- 对输入的敏感性:Softmax 函数对输入值的变化比较敏感,即使输入值的微小变化也可能导致输出概率分布的较大变化,这可能会使得模型的鲁棒性较差,在面对噪声或数据波动较大的情况时,模型的预测结果可能会不够稳定。
未完待续.....