神经网络常用损失函数loss

神经网络中常用以下三种损失函数:

均方误差:

MSE(y_, y)= (Σn (y – y_ )2)/n

其中y_ 代表标准值,y代表预测值

Tensorflow 代码:

Loss = tf.reduce_mean(tf.square(y_,y))

 

自定义损失函数:

Loss = Σn f(y_,y)

如,将损失定义为分段函数:

其中profit、cost 为常数,y_ 代表标准值,y代表预测值

Tensorflow 代码:

Loss = tf.reduce_sum(tf.where(tf.greater(y,y_), COST*(y-y_),PROFIT*(y_-y)))

表示y是否大于y_ 是则返回COST*(y-y_),否则返回PROFIT*(y_-y)

 

交叉熵:ce(Cross Entropy): 表征两个概率分布之间的距离

H (y_, y) = -Σ y_* logy

y_表示标准答案的概率分布,y表示预测结果的概率分布,如y_=(1,0)代表y_是一个二分类,第一种情况发生的概率是1,第二种情况发生的概率是0。

交叉熵越大两个概率分布越远,交叉熵越小两个概率分布越近

在Tensorflow中,一般让模型的输出经过softmax函数,获取输出预测值的概率分布,再与标准值对比,求出交叉熵。

Softmax函数: 将n分类的n个输出(y1,y2,…,yn)变为满足以下概率分布的函数:

P(X=x)∈[0,1] 且 Σ Px(X=x) = 1

Softmax函数表示为:

代码如下:

ce = tf.nn.sparse_softmax_cross_entropy_with_logits(logits = y, lables = tf.argmax(y_, 1))

loss = tf.reduce_mean(ce)  #loss取交叉熵的平均值

你可能感兴趣的:(tensorflow)