本节将具体介绍如何刻画不同神经网络模型的效果
神经网络模型的效果以及优化的目标是通过损失函数来定义的
4.2.1讲解适用于分类问题和回归问题的经典损失函数
4.2.2介绍如何根据具体问题定义损失函数
4.2.1经典损失函数
分类问题和回归问题是监督学习的两大种类
在3.4.5小节中,已经通过TensorFlow实现过交叉熵,其代码如下:
其中y_代表正确结果,y代表预测结果.
这一行代码包含了四个不同的运算.
(1)tf.clip_by_value函数可以 将一个张量中的数值限制在一个范围之内,以避免一些运算错误
(2)tf.log函数,这个函数完成对张量中所有元素依次求对数,以下是一个简单的样例:
(3)第三个运算时乘法(元素相乘 *,矩阵相乘用tf.matmul,此处时元素相乘),下面给出了这两个操作的区别
通过上面三个运算完成了对于每一个样例中的每一个类别交叉熵p(x) = logq(x)的计算
这三部步得到一个n x m的二维矩阵,n为一个batch中样例的数量,m为分类的类别数量
以下代码展示了tf.reduce_mean函数的使用方法:
因为交叉熵一般会与softmax回归一起使用,所以TensorFlow对这两个功能进行了统一封装
并提供了tf.nn_softmax_cross_entropy_with_logits函数.
可以直接通过下面的代码来时间使用了softmax回归之后的交叉熵损失函数
与分类问题不同,回归问题解决的是对具体数值的预测,比如房价,销量预测等
这些问题需要预测的不是一个事先定义好的类别,而是一个任意实数
解决回归问题的神经网络一般只有一个输出节点,这个节点就是预测值
对于回顾问题,最常用的损失函数是均方误差,它的定义如下:
4.2.2自定义损失函数
以预测商品销量为例,来介绍如何自定义损失函数
因为一般商品的成本和利润不会严格相等,所以使用4.2.1小节中介绍的均方误差损失函数就
不能够很好的最大化销售利润
比如一个商品的成本是1元,利润是10元,那么少预测一个就少挣10元,而多预测一个才少挣1元