tensorflow学习笔记——常用的代价函数

二次代价函数

                                                              C=\frac{1}{2n}\sum_{i}^{n}\left \| y(x_{i})-a \right \|^{2}

  • 其中,C表示代价函数,x表示样本,y表示实际值,a表示对应的输出值,n代表样本总数。
  • a=\sigma(z),z=\sum w_{j}*x_{i}+b    
  • \sigma是激活函数

这时,每一个样本的损失函数为:C=\frac{(y-a)^{2}}{2}

假如我们使用梯度下降法来调整权值参数的大小,权值w和偏置值b的梯度如下:

                                                                 \frac{\partial C}{\partial w}=(a-y)\sigma ^{'}(z)x

                                                                 \frac{\partial C}{\partial b}=(a-y)\sigma ^{'}(z)

可以看出,w和b的梯度根激活函数的梯度成正比,激活函数梯度越大,w和b的大小调整得越快,训练收敛得就越快。

#二次代价函数
loss = tf.reduce_mean(tf.square(y_data-y))

交叉熵代价函数

                                                        C=-\frac{1}{n}\sum_{i}^{n}[ylna+(1-y)ln(1-a)]

  • 其中,C表示代价函数,x表示样本,y表示实际值,a表示对应的输出值,n代表样本总数。
  • a=\sigma(z),z=\sum w_{j}*x_{i}+b    
  • \sigma是激活函数

权值w和偏置值b的梯度如下:

                                                          \frac{\partial C}{\partial w_{j}}=-\frac{1}{n}\sum_{i}^{n}\frac{\sigma ^{'}(z)x_{i}}{\sigma (z)(1-\sigma (z))}(\sigma (z)-y)

                                                          \frac{\partial C}{\partial b_{j}}=-\frac{1}{n}\sum_{i}^{n}\frac{\sigma ^{'}(z)}{\sigma (z)(1-\sigma (z))}(\sigma (z)-y)

如果使用sigmoid激活函数,即有\sigma ^{'}=\sigma (z)(1-\sigma (z)),带入化简得:

                                                                 \frac{\partial C}{\partial w_{j}}=\frac{1}{n}\sum_{i}^{n}x_{i}(\sigma (z)-y)

                                                                 \frac{\partial C}{\partial b_{j}}=\frac{1}{n}\sum_{i}^{n}(\sigma (z)-y)

可以看出,w和b的梯度和预测值与真实值之差成正比,即预测值与真实值差距越大,w和b的大小调整得越快,训练收敛得就越快。和激活函数的梯度无关。(注意这里是在只有一个激活函数的情况下无关)

 

二次代价函数更适合于激活函数为线性的情况,而交叉熵代价函数更适合于激活函数为s型的情况。

TensorFlow中:

loss = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(labels,logits))#表示跟sigmoid搭配使用的交叉熵。

loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels,logits))#表示跟softmax搭配使用的交叉熵。

对数释然代价函数

常搭配softmax激活函数使用,比较适合one-hot类型输出。

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值