损失函数是用来度量模型一次预测结果的好坏
我们规定输入值为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=N1∑i=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=N1∑i=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=N1∑i=1N∣y(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.5∗∣a∣∗∣b∣a∗b
- 比较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’中的值