损失函数和激活函数是深度学习中的两个关键概念,它们在神经网络的训练和推理过程中分别发挥不同的作用。
1. 损失函数 (Loss Function)
损失函数(又称为代价函数或目标函数)用于衡量模型预测结果与真实标签之间的差距。它反映了模型的预测误差大小,训练的目标就是最小化损失函数,以提高模型的准确度。
主要作用
损失函数用于评估模型的好坏。每一次前向传播后,模型的输出与真实标签进行比较,计算损失值,模型再通过反向传播基于该损失调整参数,使其逐渐优化。
常见的损失函数
-
均方误差 (Mean Squared Error, MSE):
用于回归任务,计算预测值与真实值之间的平方差的平均值。公式如下:
-
交叉熵损失 (Cross Entropy Loss):
用于分类任务,衡量两个概率分布(真实分布和预测分布)之间的差异。公式如下:
-
Huber Loss:
是 MSE 和 MAE(平均绝对误差)之间的折中,适合处理回归任务中的异常值。
作用总结
- 优化目标: 损失函数告诉我们模型预测有多大误差,并指导模型参数的更新方向和幅度。
- 模型评估: 损失函数的值直接反映了模型在给定任务上的表现。
2. 激活函数 (Activation Function)
激活函数是应用在神经网络中每个神经元输出上的非线性变换函数。它的主要作用是引入非线性,使得神经网络能够学习复杂的模式和关系。
主要作用
- 引入非线性: 如果没有激活函数,神经网络的每一层输出是输入的线性变换,最终整个网络仍是线性的,无法学习复杂的非线性映射关系。激活函数引入非线性,使网络可以处理复杂数据和任务。
- 控制输出范围: 激活函数可以将神经元的输出映射到特定的数值范围(如0到1,或-1到1),以便模型更好地进行梯度计算和输出控制。
常见的激活函数
-
Sigmoid 函数:
输出值介于 0 和 1 之间,常用于二分类任务。
-
Tanh 函数:
输出值介于 -1 和 1 之间,相比 Sigmoid,输出值更加平衡,常用于隐藏层神经元。
-
ReLU (Rectified Linear Unit) 函数:
输出值为正值或者0,简单高效,处理梯度消失问题较好,广泛应用于深度网络。
-
Leaky ReLU 函数:
其中 ( \alpha ) 是一个小的正数(通常为 0.01),用于解决 ReLU 的"死亡神经元"问题。
-
Softmax 函数:
用于多分类问题,将输出转换为概率分布。
作用总结
- 非线性变换: 激活函数让神经网络能够表达更复杂的关系和模式。
- 梯度传播: 在反向传播中,激活函数的导数影响了梯度传播过程,影响训练效果。
总结
- 损失函数: 衡量模型预测误差的大小,指导模型参数更新,最终优化模型性能。
- 激活函数: 通过引入非线性,使神经网络能够学习复杂的模式和特征,提升网络的表现能力。