tensorflow中代价函数

本文介绍了TensorFlow中常见的三种损失函数:二次代价函数,强调了其公式和梯度下降的影响;交叉熵代价函数,说明了它与激活函数导数的关系以及在Sigmoid激活下的适用性;对数似然代价函数,特别是与softmax函数结合在多分类问题中的应用。总结了如何根据激活函数选择合适的代价函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

tensorflow中常用的损失函数有二次代价函数、交叉熵、对数似然代价函数。

二次代价函数

二次代价函数表达式:
C=12n∑x[y(x)−a(x)]2C=\frac{1}{2n}\displaystyle\sum_{x}^{} [y(x)-a(x)]^2C=2n1x[y(x)a(x)]2
在该表达式中,C表示cost,即代价函数;n表示样本个数,x表示样本,y(x)表示真实值,a(x)表示预测值,即a=σ(z)a=σ(z)a=σ(z)z=∑wjxj+bz=\displaystyle\sum_{}^{} w_jx_j+bz=wjxj+b
为了简单起见,我们假设只有一个样本,即C=12(y−a)2C=\frac{1}{2} (y-a)^2C=21(ya)2
现在使用梯度下降法来调整权值和偏执值的大小,
在这里插入图片描述
梯度就是我们说的导数,w和b的梯度跟激活函数的梯度成正比(不考虑梯度的方向,即导数的正负),激活函数的梯度越大,w和b的大小调整得越快,训练收敛的就越快。如果我们希望模型快速收敛,那就需要激活函数的导数稍微大些。如果激活函数的导数很小,接近于0,那w和b的调整就几乎为0,即w和b几乎没有调整,这就是我们经常说的梯度消失的问题。
在这里插入图片描述
我们以sigmoid激活函数为例来解释梯度,sigmoid曲线如上图所示。在B点,激活函数到导数几乎为0,那w和b的调整就几乎为0,基本没有什么变化。
假如我们目标是使激活函数的值收敛到1。A点为0.82离目标比较远,梯度比较大,权值调整比较大。B点为0.98离目标比较近,梯度比较小,权值调整比较小。调整方案合理。
假如我们目标是使激活函数的值收敛到0。A点为0.82离目标比较近,梯度比较大,权值调整比较大。B点为0.98离目标比较远,梯度比较小,权值调整比较小。调整方案不合理。

交叉熵代价函数

交叉熵代价函数的表达式:
在这里插入图片描述
同样,在该表达式中,C表示cost,即代价函数;n表示样本个数,x表示样本,y表示真实值,a表示预测值,即
在这里插入图片描述
其中,激活函数使用的是sigmoid函数,sigmoid表达式为
在这里插入图片描述
所以,
在这里插入图片描述
现在使用梯度下降法来调整权值和偏执值的大小,
在这里插入图片描述
由上述两个表达式可知,权值和偏置值的梯度与激活函数的导数无关,即在交叉熵代价函数中,权值和偏执值的调整和激活函数的导数是没有关系
同时,在表达式中,σ(z)−yσ(z)-yσ(z)y表示输出值与实际值的误差,所以在交叉熵代价函数中,权值和偏执值的调整是和输出值与预测值的差值成正比的,即当误差越大时,梯度就越大,参数w和b的调整就越快,训练的速度也就越快。调整方案非常合理。
注意:
如果输出神经元(即激活函数)是线性的,可以选择使用二次代价函数。如果输出神经元是S型函数(即激活函数),那么比较适合用交叉熵代价函数。

对数似然代价函数

对数似然代价函数的表达式:
C=−∑xy(x)∗lna(x)C=-\displaystyle\sum_{x}^{} y(x)*lna(x)C=xy(x)lna(x)
在该表达式中,C表示cost,即代价函数;x表示样本;y表示真实值;a表示预测值。
在这里插入图片描述
对数似然函数常用来作为softmax回归的代价函数,如果输出层神经元是sigmoid函数,可以采用交叉熵代价函数。而深度学习中更普遍的做法是将softmax作为最后一层,此时常用的代价函数是对数释然代价函数。
对数似然代价函数与softmax的组合和交叉熵与sigmoid函数的组合非常相似。对数释然代价函数在二分类时可以化简为交叉熵代价函数的形式。
如果几乎函数是softmax,而y是one-hot,则对数似然代价函数就设计的非常好。softmax、对数似然代价、one-hot三者是绝配。
用法:
tf.nn.sigmoid_cross_entropy_with_logits()来表示跟sigmoid搭配使用的交叉熵。
tf.nn.softmax_cross_entropy_with_logits()来表示跟softmax搭配使用的交叉熵。
注意:
(1)如果激活函数是sigmoid,就选择交叉熵代价函数。
(2)如果激活函数是softmax,就选择对数似然代价函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值