tf常见的损失函数(LOSS)总结
运算公式
1、均方差函数
均方差函数主要用于评估回归模型的使用效果,其概念相对简单,就是真实值与预测值差值的平方的均值,具体运算公式可以表达如下:
\[Q=\frac{1}{m}\sum_{i=1}^{m}(f(x_i)-y_i)^2
\]
其中\(f(x_i)\)是预测值,\(y_i\)是真实值
在二维图像中,该函数代表每个散点到拟合曲线y轴距离的总和,非常直观。
2、交叉熵函数
出自信息论中的一个概念,原来的含义是用来估算平均编码长度的。在机器学习领域中,其常常作为分类问题的损失函数。
\[Q=-\frac{1}{m}\sum_{i=1}^{m}(y_ilog(f(x_i))+(1-y_i)los(1-f(x_i)))
\]
其中\(f(x_i)\)是预测值,\(y_i\)是真实值
交叉熵函数是怎么工作的呢?假设在分类问题中,被预测的物体只有是或者不是,预测值常常不是1或者0这样绝对的预测结果,预测是常用的做法是将预测结果中大于0.5的当作1,小于0.5的当作0。此时假设如果存在一个样本,预测值接近于0,实际值却是1,那么在交叉熵函数的前半部分:
\[y_ilog(f(x_i))
\]
其运算结果会远远小于0,取符号后会远远大于0,导致该模型的损失函数巨大。通过减小交叉熵函数可以使得模型的预测精度大大提升。
tensorflow种损失函数的表达
1、均方差函数
loss = tf.reduce_mean(tf.square(logits-labels))
loss = tf.reduce_mean(tf.square(tf.sub(logits, labels)))
loss = tf.losses.mean_squared_error(logits,labels)
2、交叉熵函数
loss = tf.nn.sigmoid_cross_entropy_with_logits(labels=y,logits=logits)
#计算方式:对输入的logits先通过sigmoid函数计算,再计算它们的交叉熵
#但是它对交叉熵的计算方式进行了优化,使得结果不至于溢出。
loss = tf.nn.softmax_cross_entropy_with_logits(labels=y,logits=logits)
#计算方式:对输入的logits先通过softmax函数计算,再计算它们的交叉熵,
#但是它对交叉熵的计算方式进行了优化,使得结果不至于溢出。