1

我正在第一次真正深入研究神经网络,我正在尝试构建经典的“数字识别网络”,而无需任何外部数据库。经过一些初步测试后,我遇到了我的网络保持所有权重非常低的问题,因此输出几乎为零。我明白为什么会发生这种情况(每次程序在 10 个输出中有 9 个正确!)但显然这是我需要阻止发生的事情。

有人对我如何解决这个问题有提示吗?我正在为前馈神经网络使用 sigmoid 激活函数和交叉熵成本函数,我想知道是否有更好的选择可以让程序更显着地考虑正确数字中的错误。

4

1 回答 1

0

您可以利用动量学习率来促进对梯度下降优化算法的探索,并使用权重通过将计算的梯度乘以权重来提高少数类样本对损失函数的贡献。对于您的 sigmoid 激活函数和交叉熵成本函数,您可以像这样实现它。

标签 * -log(sigmoid(logits)) * pos_weight + (1 - 标签) * -log(1 - sigmoid(logits))

于 2020-03-24T15:58:24.510 回答