神经网络模型能否使用加权均值(Sum)平方误差作为其损失函数?

时间:2017-12-21 18:49:08

标签: python neural-network keras

我在这个研究领域很吵,这可能是一个非常愚蠢的问题。我想构建一个普通的ANN,但我不确定是否可以使用加权均方误差作为损失函数。 如果我们不是平等地处理每个样本,我的意思是我们更关心某些类别的样本的预测精度比其他样本更多,那么我们想要形成加权损失函数。 可以说,我们有一个分类特征cii是样本的索引,为简单起见,我们假设此特征采用二进制值,0或1.因此,我们可以形成损失函数

(ci + 1)(yi_hat - yi)^2

#and take the sum for all i

反向传播是否会出现任何问题?我没有看到计算渐变或更新图层之间权重的任何问题。 而且,如果没有问题,我如何在Keras中编程这种损失功能?因为看起来损失函数只需要两个参数y_truey_pred,我如何插入向量c

1 个答案:

答案 0 :(得分:1)

这绝对没有错。函数可以自己声明常量,甚至可以从外部范围中获取常量:

import keras.backend as K

c = K.constant([c1,c2,c3,c4,...,cn])

def weighted_loss(y_true,y_pred):
    loss = keras.losses.get('mse')
    return c * loss(y_true,y_pred)

与你的完全一样:

def weighted_loss(y_true,y_pred):

    weighted = (c+1)*K.square(y_true-y_pred)
    return K.sum(weighted)