损失函数

神经网络模型的效果和优化的目标是通过损失函数(loss function)来定义的。
如何判断一个输出向量和期望向量有多接近呢?交叉熵(cross entropy)是常用的评判方法之一。交叉熵刻画了两个概率分布之间的距离,是分类问题中使用比较广泛的一种损失函数。
通过q来表示p的交叉熵为:
在这里插入图片描述
交叉熵刻画的是两个概率之间的距离,但是神经网络的输出并不一定是一个概率分布。
如何将神经网络前向传播得到的结果也变成概率分布呢?Softmax回归是一个非常常用的方法。
在tf中,softmax将神经网络的输出变成一个概率分布。
在这里插入图片描述
从交叉熵的公式中可以看出交叉熵函数不是对称的(H(p,q)≠H(q,p)),他刻画的是通过概率分布q来表达概率分布p的困难程度。当交叉熵作为神经网络的损失函数时,p代表的是正确答案,q代表的是预测值。交叉熵越小,两个概率分布越接近。

tf.reduce_mean(input_tensor,axis=None,keepdims=None,name=None,reduction_indices=None,keep_dims=None)

axis=None,不写的时候默认求取整体的平均值

>>> v=tf.constant([[1.0,2.0,3.0],[4.0,5.0,6.0]])
>>> tf.reduce_mean(v).eval()

axis=0,按列求取平均值

>>> v=tf.constant([[1.0,2.0,3.0],[4.0,5.0,6.0]])
>>> tf.reduce_mean(v,0).eval()
array([2.5, 3.5, 4.5], dtype=float32)

axis=1,按行求取平均值

>>> v=tf.constant([[1.0,2.0,3.0],[4.0,5.0,6.0]])
>>> tf.reduce_mean(v,1).eval()
array([2., 5.], dtype=float32)

对于回归问题,最常用的损失函数是均方误差MSE(mean squared error),它的定义如下:
在这里插入图片描述
其中yi为一个batch中第i个数据的正确答案,而yi’为神经网络给出的预测值。
mse=tf.reduce_mean(tf.square(y_-y))
这里的“-”法也是两个矩阵中对应元素的减法,同“*”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值