文章目录

  1. 1. 分类问题
  2. 2. 回归问题
  3. 3. 参考资料

一般来说,损失函数,又称为代价函数,用来评价模型的预测值与真实值的不一致程度,它是一个非负实值函数。如果损失函数越小,模型的性能就越好。

神经网络解决的现实问题主要有两大类:分类问题与回归问题。

分类问题

分类问题,指的是将不同的样本划分到已知的类别中,如经典的识别手写数字,就是将图片分类到 0~9 中。这种类型的问题,通过概率来判断属于哪一类别,概率最大的就是结果。针对概率,一般是用交叉熵来作损失函数,交叉熵描述了两个概率分布之间的距离,当交叉熵越小说明二者之间越接近。

这里,来看一个案例。其中,tf.reduce_mean表示函数求解平均数,tf.clip_by_value表示函数将一个张量的数值限制在一个范围内,代码中将 q 的值限制在 (1e-10, 1.0) 之间。

# y_:真实值,y:原始输出
loss = -tf.reduce_mean(y_ * tf.log(tf.clip_by_value(y, 1e-10, 1.0)))

但是,网络的输出不一定是概率分布。因此,需要将网络前向传播的结果转换成概率分布。其中,常用方法是 Softmax 回归。

因为交叉熵一般会与 Softmax 回归一起使用,所以 TensorFlow 对这两个功能进行了统一封装,做一层额外的处理层,进行概率分布的转换。

# y_:真实值,y:原始输出
loss = tf.nn.softmax_cross_entropy_with_logits(y, y_)

回归问题

回归问题,一般是具体数值的预测,如房价预测、销量预测等都是回归问题。对于回归问题,最常用的是均方差损失函数。

# y_:正确值,y:预测值
loss = tf.reduce_mean(tf.square(y_ - y))

参考资料

(完)

微信公众号

文章目录

  1. 1. 分类问题
  2. 2. 回归问题
  3. 3. 参考资料