常用损失函数及Tensorflow代码实现

损失函数(loss):用来表示预测值(y)与已知答案(y_)的差距。在训练神经网络时,通过不断 改变神经网络中所有参数,使损失函数不断减小,从而训练出更高准确率的神经网络模型。

常用的损失函数有均方误差、自定义和交叉熵等。 

1.均方误差 mse

n 个样本的预测值 y 与已知答案 y_之差的平方和,再求平均值。

                                                      

在 Tensorflow 中用 loss_mse = tf.reduce_mean(tf.square(y_ - y))

2.自定义损失函数

根据问题的实际情况,定制合理的损失函数。

例如:

对于预测酸奶日销量问题,如果预测销量大于实际销量则会损失成本;如果预测销量小于实际销量则 会损失利润。在实际生活中,往往制造一盒酸奶的成本和销售一盒酸奶的利润是不等价的。因此,需 要使用符合该问题的自定义损失函数。

自定义损失函数为

 

其中,损失定义成分段函数:

 

损失函数表示,若预测结果 y 小于标准答案 y_,损失函数为利润乘以预测结果 y 与标准答案 y_之差; 若预测结果 y 大于标准答案 y_,损失函数为成本乘以预测结果 y 与标准答案 y_之差。

用 Tensorflow 函数表示为: loss = tf.reduce_sum(tf.where(tf.greater(y,y_),COST(y-y_),PROFIT(y_-y)))

3.交叉熵(Cross Entropy)

表示两个概率分布之间的距离。交叉熵越大,两个概率分布距离越远,两 个概率分布越相异;交叉熵越小,两个概率分布距离越近,两个概率分布越相似。

交叉熵计算公式::

用 Tensorflow 函数表示为 ce= -tf.reduce_mean(y_* tf.log(tf.clip_by_value(y, 1e-12, 1.0)))

例如: 两个神经网络模型解决二分类问题中,已知标准答案为 y_ = (1, 0),第一个神经网络模型预测结果为y1=(0.6, 0.4),第二个神经网络模型预测结果为 y2=(0.8, 0.2),判断哪个神经网络模型预测的结果更接 近标准答案。

常用损失函数及Tensorflow代码实现_第1张图片

你可能感兴趣的:(人工智能篇,机器学习)