人工神经网络有哪些常见的损失函数?

损失函数(Loss Function)用于评估神经网络的预测输出和实际目标之间的差距,它反应了当前模型对训练数据的拟合程度。常见的损失函数有:

  1. 交叉熵损失(Cross Entropy Loss):适用于多分类任务,常用于Softmax激活的输出层。
cross_entropy_loss = -∑yilog(ŷi)
  1. 二元交叉熵损失(Binary Cross Entropy Loss):适用于二分类任务,常用于Sigmoid激活的输出层。
binary_cross_entropy_loss = -∑[yi*log(ŷi) + (1-yi)log(1-ŷi)] 
  1. 平方误差损失(Mean Squared Error Loss):简单高效,输出无界,对异常值敏感。
mse_loss = ∑(yi - ŷi)2 / n
  1. 绝对值误差损失(Mean Absolute Error Loss):输出无界,比MSE对异常值更鲁棒。
mae_loss = ∑|yi - ŷi| / n
  1. Huber损失(Huber Loss):结合MSE和MAE的优点,对异常值较鲁棒,同时可以得到更平滑的优化过程。
huber_loss = {
    (yi - ŷi)2     if |yi - ŷi| ≤ δ 
δ(|yi - ŷi| - δ/2)   otherwise  

举例:

  • 交叉熵损失用于Softmax输出和多分类:
loss = tf.nn.softmax_cross_entropy_with_logits(logits=outputs, labels=labels)
  • 二元交叉熵损失用于Sigmoid输出和二分类:
loss = tf.nn.sigmoid_cross_entropy_with_logits(logits=outputs, labels=labels)
  • MSE损失用于 Regression 任务:
loss = tf.losses.mean_squared_error(labels, predictions)