我正在尝试创建一个可用于信用评分的样本神经网络。因为这对我来说是一个复杂的结构,所以我首先想要先学习它们。
我使用反向传播创建了一个网络 - 输入层(2个节点),1个隐藏层(2个节点+1个偏置),输出层(1个节点),它利用sigmoid作为所有层的激活函数。我试图首先使用^ 2 + b2 ^ 2 = c ^ 2测试它,这意味着我的输入将是a和b,目标输出将是c。
我的问题是我的输入和目标输出值是实数,范围可以是( - / infty,+ / infty)。因此,当我将这些值传递给我的网络时,我的错误函数就像(目标网络输出)。这是正确的还是准确的?从某种意义上说,我得到了网络输出(范围从0到1)和目标输出(这是一个很大的数字)之间的差异。
我已经读过解决方案首先要规范化,但我不确定如何做到这一点。我应该在将输入值和目标输出值馈送到网络之前对其进行标准化吗?什么规范化函数最好使用因为我在规范化中读取了不同的方法。在获得优化的权重并使用它们来测试一些数据之后,由于sigmoid函数,我得到的输出值介于0和1之间。我应该将计算值还原为非标准化/原始形式/值吗?或者我应该只规范目标输出而不是输入值?这真的让我陷入困境数周,因为我没有得到理想的结果,也不确定如何在我的训练算法和测试中加入规范化的想法。
非常感谢!!
答案 0 :(得分:0)
所以回答你的问题:
tanh
或relu
nolinearities会好得多。可能会找到详细的解释(以及一些有用的提示,如果你想让sigmoid作为你的激活)here。age
和income
。第一个不同于例如5至90.第二种不同于例如income
的平均绝对值比age
大得多,因此,由于模型中的线性转换,ANN将income
视为更重要的 在训练开始时(因为随机初始化)。现在考虑你正在尝试解决一个任务,如果给定的人有白发,你需要分类:) income
这个任务真的是更重要的变量吗?rules of thumb
。一种是将所有输入压缩到[0, 1]
间隔。另一个是让每个变量都有mean = 0
和sd = 1
。当给定变量的分布与Normal Distribiution类似时,我通常使用第二种方法,在其他情况下,我通常使用第二种方法。