在前面的文章中,我们已经学习了TensorFlow激励函数的操作使用方法(见文章:快速掌握TensorFlow(三)),今天我们将继续学习TensorFlow。
本文主要是学习掌握TensorFlow的损失函数。
一、什么是损失函数
损失函数(loss function)是机器学习中非常重要的内容,它是度量模型输出值与目标值的差异,也就是作为评估模型效果的一种重要指标,损失函数越小,表明模型的鲁棒性就越好。
二、怎样使用损失函数
在TensorFlow中训练模型时,通过损失函数告诉TensorFlow预测结果相比目标结果是好还是坏。在多种情况下,我们会给出模型训练的样本数据和目标数据,损失函数即是比较预测值与给定的目标值之间的差异。
下面将介绍在TensorFlow中常用的损失函数。
1、回归模型的损失函数
首先讲解回归模型的损失函数,回归模型是预测连续因变量的。为方便介绍,先定义预测结果(-1至1的等差序列)、目标结果(目标值为0),代码如下:
import tensorflow as tf
sess=tf.Session()
y_pred=tf.linspace(-1., 1., 100)
y_target=tf.constant(0.)
注意,在实际训练模型时,预测结果是模型输出的结果值,目标结果是样本提供的。
(1)L1正则损失函数(即绝对值损失函数)
L1正则损失函数是对预测值与目标值的差值求绝对值,公式如下:
在TensorFlow中调用方式如下:
loss_l1_vals=tf.abs(y_pred-y_target)
loss_l1_out=sess.run(loss_l1_vals)
L1正则损失函数在目标值附近不平滑,会导致模型不能很好地收敛。
(2)L2正则损失函数(即欧拉损失函数)
L2正则损失函数是预测值与目标值差值的平方和,公式如下:
当对L2取平均值,就变成均方误差(MSE, mean squared error),公式如下:
在TensorFlow中调用方式如下:
# L2损失
loss_l2_vals=tf.square(y_pred - y_target)
loss_l2_out=sess.run(loss_l2_vals)
# 均方误差
loss_mse_vals= tf.reduce.mean(tf.squar