二次代价函数
- 其中,C表示代价函数,x表示样本,y表示实际值,a表示对应的输出值,n代表样本总数。
- 是激活函数
这时,每一个样本的损失函数为:
假如我们使用梯度下降法来调整权值参数的大小,权值w和偏置值b的梯度如下:
可以看出,w和b的梯度根激活函数的梯度成正比,激活函数梯度越大,w和b的大小调整得越快,训练收敛得就越快。
#二次代价函数
loss = tf.reduce_mean(tf.square(y_data-y))
交叉熵代价函数
- 其中,C表示代价函数,x表示样本,y表示实际值,a表示对应的输出值,n代表样本总数。
- 是激活函数
权值w和偏置值b的梯度如下:
如果使用sigmoid激活函数,即有,带入化简得:
可以看出,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类型输出。