Neural network sigmoid反向传播神经网络

Neural network sigmoid反向传播神经网络,neural-network,logistic-regression,backpropagation,activation-function,Neural Network,Logistic Regression,Backpropagation,Activation Function,我试图创建一个样本神经网络,可以用于信用评分。因为这对我来说是一个复杂的结构,我试着先学习它们 我使用反向传播创建了一个网络——输入层(2个节点)、1个隐藏层(2个节点+1个偏差)、输出层(1个节点),它使用sigmoid作为所有层的激活函数。我试着先用a^2+b2^2=c^2测试它,这意味着我的输入是a和b,目标输出是c 我的问题是,我的输入值和目标输出值是实数,其范围为(-/infty,+/infty)。因此,当我将这些值传递给我的网络时,我的错误函数类似于(目标-网络输出)。这是正确的还是

我试图创建一个样本神经网络,可以用于信用评分。因为这对我来说是一个复杂的结构,我试着先学习它们

我使用反向传播创建了一个网络——输入层(2个节点)、1个隐藏层(2个节点+1个偏差)、输出层(1个节点),它使用sigmoid作为所有层的激活函数。我试着先用a^2+b2^2=c^2测试它,这意味着我的输入是a和b,目标输出是c

我的问题是,我的输入值和目标输出值是实数,其范围为(-/infty,+/infty)。因此,当我将这些值传递给我的网络时,我的错误函数类似于(目标-网络输出)。这是正确的还是准确的?在这个意义上,我得到的是网络输出(范围从0到1)和目标输出(这是一个大数字)之间的差异

我已经读到解决方案是首先正常化,但我不确定如何做到这一点。我是否应该在将输入值和目标输出值馈送到网络之前将其标准化?什么样的归一化函数最适合使用,因为我阅读了不同的归一化方法。在得到优化的权重并使用它们测试一些数据之后,由于使用了sigmoid函数,我得到了一个介于0和1之间的输出值。我是否应该将计算值还原为未规范化/原始形式/值?或者我应该只标准化目标输出而不是输入值吗?这真的让我陷入了数周的困境,因为我没有得到预期的结果,也不知道如何将规范化思想纳入我的训练算法和测试中


非常感谢

因此,要回答您的问题:

  • Sigmoid函数正在将其输入压缩到间隔(0,1)。它通常在分类任务中很有用,因为您可以将其输出解释为某个类的概率。您的网络执行回归任务(您需要近似实值函数)-因此,最好将线性函数设置为上一个隐藏层的激活(在您的情况下,也是第一个:)
  • 我建议您不要在隐藏层中使用sigmoid函数作为激活函数。最好使用
    tanh
    relu
    非线性。详细的解释(以及一些有用的提示,如果你想保持乙状结肠作为你的激活)可能会被找到
  • 了解您的网络体系结构不适合您试图解决的任务也很重要。您可以了解一些不同网络可能学到的知识
  • 在标准化的情况下:您应该标准化数据的主要原因是不向您的网络提供任何spourius的事先知识。考虑两个变量:<代码>年龄< /代码>和<代码>收入>代码>。第一个从5到90不等。第二个从1000到100000不等。
    收入
    的平均绝对值比
    年龄
    大得多,因此,由于模型中的线性变换,ANN在训练开始时将
    收入
    视为更重要(因为随机初始化)。现在考虑一下,你正在试图解决一个任务,你需要对一个有灰色头发的人进行分类:)<代码>收入>代码>这个任务真的更重要的变量?
  • 关于如何规范化输入数据,有很多经验法则。一种是将所有输入压缩到
    [0,1]
    间隔。另一种方法是使每个变量具有
    mean=0
    sd=1
    。当给定变量的分布类似于正态分布时,我通常使用第二种方法,在其他情况下使用第一种方法
  • 当涉及到规范化输出时,在解决回归任务时(特别是在多元回归情况下),规范化输出通常也很有用,但它不像在输入情况下那么重要
  • 您应该记住保留恢复输入和输出的原始大小所需的参数。您还应该记住仅在训练集上计算它们,并将其应用于训练集、测试集和验证集

  • 因此,要回答您的问题:

  • Sigmoid函数正在将其输入压缩到间隔(0,1)。它通常在分类任务中很有用,因为您可以将其输出解释为某个类的概率。您的网络执行回归任务(您需要近似实值函数)-因此,最好将线性函数设置为上一个隐藏层的激活(在您的情况下,也是第一个:)
  • 我建议您不要在隐藏层中使用sigmoid函数作为激活函数。最好使用
    tanh
    relu
    非线性。详细的解释(以及一些有用的提示,如果你想保持乙状结肠作为你的激活)可能会被找到
  • 了解您的网络体系结构不适合您试图解决的任务也很重要。您可以了解一些不同网络可能学到的知识
  • 在标准化的情况下:您应该标准化数据的主要原因是不向您的网络提供任何spourius的事先知识。考虑两个变量:<代码>年龄< /代码>和<代码>收入>代码>。第一个从5到90不等。第二个从1000到100000不等。
    收入
    的平均绝对值比
    年龄
    大得多,因此,由于模型中的线性变换,ANN在训练开始时将
    收入
    视为更重要(因为随机初始化)。现在考虑一下,你正在试图解决一个任务,你需要对一个有灰色头发的人进行分类:)<代码>收入>代码>这个任务真的更重要的变量?
  • 关于如何规范化输入数据,有很多经验法则。一我