Python 机器学习:如何规范输出并强制它们远离0?

Python 机器学习:如何规范输出并强制它们远离0?,python,tensorflow,machine-learning,deep-learning,regularized,Python,Tensorflow,Machine Learning,Deep Learning,Regularized,我正在训练Tensorflow的深度CNN模型,并试图最大化真实标签和预测之间的皮尔逊相关性。例如,对于真正的标签y_-true=[1.0,2.0,3.0,4.0],我想预测类似y_-pred=[0.9,1.8,3.0,4.1],因为这会产生很高的皮尔逊相关性 然而,我的预测都非常接近于0,类似于y_pred=[0.0001,0.0002,0.0003,0.0004]。虽然在这种情况下,pearson相关性很高,但在计算pearson损失时,该模型在数值上不稳定(例如抛出NaN误差) 因此,我想

我正在训练Tensorflow的深度CNN模型,并试图最大化
真实标签
预测
之间的皮尔逊相关性。例如,对于真正的标签
y_-true=[1.0,2.0,3.0,4.0]
,我想预测类似
y_-pred=[0.9,1.8,3.0,4.1]
,因为这会产生很高的皮尔逊相关性

然而,我的预测都非常接近于0,类似于
y_pred=[0.0001,0.0002,0.0003,0.0004]
。虽然在这种情况下,pearson相关性很高,但在计算pearson损失时,该模型在数值上不稳定(例如抛出NaN误差)


因此,我想知道我能做些什么来强制输出具有更大的值,使其不接近0?也许输出上的某种正则化器可以将其放大?

也许您可以尝试将您的问题建模为回归问题。将你的损失定义为

(true_labels - predictions)^2
由于您将显式地最小化标签和预测之间的平方差,因此它们也将高度相关。您可以保留Pearson相关性的原始损失,并将其添加为正则化器,以保持预测也接近真实标签。比如:

pearson_Loss + lambda * (true_labels - predictions)^2

通过网格搜索或随机搜索的交叉验证,您可以通过微调“lambda”找到正则化器的最佳强度。

谢谢!我还可以用它来调整输出吗?我试过了,但没有效果……据我所知,活动正则化器将l2或l1范数损失应用于网络输出。若你们将l2活动正则化器直接应用于输出,它将把它们拉向零;l1活动正则化器倾向于将一些输出很快拉到零,并引入稀疏性。如果将l2活动正则化器应用于(真预测),理论上它应该可以完成这项工作。但我不知道它是否能通过预测正确地支持梯度,这应该得到测试。