我正在尝试创建一个可用于信用评分的示例神经网络。由于这对我来说是一个复杂的结构,我试图先从小处学习它们。
我使用反向传播创建了一个网络 - 输入层(2 个节点)、1 个隐藏层(2 个节点 +1 个偏差)、输出层(1 个节点),它使用 sigmoid 作为所有层的激活函数。我首先尝试使用 a^2+b2^2=c^2 对其进行测试,这意味着我的输入是 a 和 b,目标输出是 c。
我的问题是我的输入和目标输出值是实数,范围可以从(-/infty,+/infty)。因此,当我将这些值传递给我的网络时,我的错误函数将类似于(目标网络输出)。那是正确的还是准确的?从某种意义上说,我得到了网络输出(范围从 0 到 1)和目标输出(很大)之间的差异。
我已经读过解决方案是首先规范化,但我不确定如何做到这一点。在将输入和目标输出值输入网络之前,我是否应该对其进行标准化?最好使用什么归一化函数,因为我阅读了不同的归一化方法。在获得优化的权重并使用它们来测试一些数据后,由于 sigmoid 函数,我得到了一个介于 0 和 1 之间的输出值。我应该将计算值恢复为未标准化/原始形式/值吗?或者我应该只标准化目标输出而不是输入值?这真的让我困了好几个星期,因为我没有得到想要的结果,也不确定如何将标准化思想融入我的训练算法和测试中。
非常感谢!!