【问题标题】:Neural Network with input of 0输入为 0 的神经网络
【发布时间】:2016-06-18 02:28:48
【问题描述】:

假设您有一个带有 Sigmoid 的神经网络。它有一个输入 x,因此一个节点会将 tanh⁡x 输出到一个连接。然后连接将输出 w∗tanhx,其中 w 是连接的权重。

问题是,如果输入为 0,而期望的输出应该是 1,该怎么办?好吧,如果输入为 0,则连接的输出将是 w∗tanh0=0。因此,如果输入为 0,那么无论您添加多少节点或连接,或者连接上的权重有多少,输出都将始终为 0。

你将如何创建一个简单的网络,其中输入 0 会给你带来 0 以外的东西?

【问题讨论】:

  • 您忘记了偏差,因此输出可能不为零。 NN 是非线性函数。你的输出方程也是错误的。

标签: machine-learning neural-network


【解决方案1】:

一边

需要注意的是,每一层的函数应该是这样的形式:

z = transpose(W) * X output = tanh(z)

在传递给传递函数 (tanh) 之前,您要乘以权重向量。但是,这并不能回答您的问题或解决您的问题。

第一种方式

要回答您的问题,您应该在输入中添加一个偏差单元。这样做的一种方法是使用常量输入 1 作为输入。

因此,如果您有伪代码:number_of_inputs = 10,那么您将改为使用伪代码:number_of_inputs = 11; input[10] = 1。

这允许你的输出函数与上面的形式相同。

第二种方式

您还可以在传递函数之外添加偏置单元。也就是说,您的输出可能是以下形式:

z = transpose(W) * X output = tanh(z) + b

b 的更新规则将基于您的损失的导数,而不是您的转移的导数。

【讨论】:

    【解决方案2】:

    您应该添加一个值为常数 1 的伪输入。然后,此输入可用作第一层神经元的加权偏差。

    【讨论】:

      【解决方案3】:

      sigmoid函数不限于tanh(x);更一般的形式是 w*tanh(ax+c) + b。你的可能看起来像这样,低 x 值给出接近 1.0 的结果:

      -1 * tanh(x) + 1

      权重和偏差是概括将 sigmoid 曲线移动到所需位置的压缩和平移的工具。

      【讨论】:

        猜你喜欢
        • 2012-10-05
        • 2017-06-13
        • 2010-10-13
        • 2020-08-10
        • 2020-12-28
        • 2012-03-29
        • 2012-01-23
        • 1970-01-01
        相关资源
        最近更新 更多