我见过类似问题/问题的帖子,但我没有发现这个问题。
假设我使用以下成本函数训练NN:
J(theta)= 1 / m * sum(sum(-y * log(h(x)) - (1-y)* log(1-h(x))))
并且还使用sigmoid函数作为激活函数。
现在,例如对于癌症检测,对于CV测试我得到0.6精度和0.6召回。如果我想获得另一个精度和召回率(例如,更低的精度但更高的召回率),我可以只改变预测函数的阈值(即h(output_layer)>阈值)。我想我也可以: - 改变NN架构, - 改变训练集, - 改变正则化参数,我会得到不同的结果。
但是,如果我不想改变NN的任何架构,该怎么办?改变预测功能的门槛真的很聪明吗?我是这样看的:我们使用sigmoid函数训练我们的NN(如果某个节点的激活低于或高于0.5,则粗略地说这种检查)。然后,在我们使用低于或高于0.5的方法训练网络之后,我们将最后的预测阈值更改为其他值。 我不认为这将是某种训练集和NN架构可能达到的最佳精度/回忆率(或F1得分)。换句话说,我认为我们并没有走过去。最佳ROC曲线。这是对的吗?
我对如何提出更好的解决方案的想法:
1。)更改激活功能。要么是完全不同的函数要么改变sigmoid函数(例如sigmoid new = 0.1 + sigmoid original)。所以我也会得到更多的激活,我想最后回想一下。
2.)更改成本函数(!)。例如。到
J(θ)= 1 / m *和(总和(ALPHA * -y * log(h(x)) - (1-y)* log(1-h(x))))。利用这个Alpha(标量),我可以更多地(α> 1)或更小(α<1)惩罚-y * log(h(x))误差。但是,如果我改变成本函数,我还需要改变反向传播和/或梯度计算吗?
我很感激这个主题的每一个帮助,链接或想法:-)
最佳,沃尔夫冈