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类型输出。

tensorflow学习笔记——常用的代价函数_第1张图片

你可能感兴趣的:(tensorflow)