损失函数是用来度量模型一次预测结果的好坏
我们规定输入值为X,则f(X)为预测值,y为真实值。这个时候我们需要一个衡量预测值和真实值之间的差距的函数,我们就称这个函数为损失函数,记作L(y,f(X))

用于回归问题

均方误差

N个平方损失函数之和再求平均值

M S E = 1 N ∑ i = 1 N ( y ( i ) ) − f ( x ( i ) ) ) 2 MSE = \frac{1}{N}\sum_{i=1}^{N}(y^{(i))} - f(x^{(i)}))^{2} MSE=N1i=1N(y(i))f(x(i)))2

标准误差

将“均方误差”开根号

R M S E = M S E = 1 N ∑ i = 1 N ( y ( i ) ) − f ( x ( i ) ) ) 2 RMSE = \sqrt{MSE} = \sqrt{\frac{1}{N}\sum_{i=1}^{N}(y^{(i))} - f(x^{(i)}))^{2}} RMSE=MSE =N1i=1N(y(i))f(x(i)))2

平均绝对误差

N个平方损失函数之和在求平均值

M A E = 1 N ∑ i = 1 N ∣ y ( i ) ) − f ( x ( i ) ) ∣ MAE = \frac{1}{N}\sum_{i=1}^{N}|y^{(i))} - f(x^{(i)})| MAE=N1i=1Ny(i))f(x(i))

用于分类问题

交叉熵损失函数

交叉熵主要用于度量两个概率分布间的差异信息。交叉熵越小,代表“损失值”越小,常用于分类问题

H ( p , q ) = − ∑ i = 1 N p ( x i ) l o g ( q ( x i ) ) H(p,q) = - \sum_{i=1}^{N}p(x_{i})log(q(x_{i})) H(p,q)=i=1Np(xi)log(q(xi))

  • p:代表真实值 q:代表预测值 p,q越接近,损失越小
  • one-hot编码 + softmax + 交叉熵损失函数:处理分类问题(p=1时,q越接近于0,损失越大;p=0时,忽略)

用于比较人脸相似度

余弦相似度

常用于比较2个向量之间的相似程度,与损失函数不同的是,余弦相似度越大,“损失越小”公式如下:

s i m = 0.5 + 0.5 ∗ a ∗ b ∣ a ∣ ∗ ∣ b ∣ sim = 0.5 + 0.5 * \frac{a * b}{|a| * |b|} sim=0.5+0.5abab

  • 比较a、b个向量的相似度
  • 输出sim 为相似度,范围为0.5 - 1.0,完全一样则为1
keras中代码
model.compile(loss='mean_squared_error',optimizer='sgd') # 均方误差  随机梯度下降
或者:
from keras import losses
model.compile(loss=losses.mean_squared_error,optimizer='sgd')
  • 不同的损失函数,只需要修改loss = ‘mean_squared_error’中的值
Logo

更多推荐