输入为0

时间:2016-06-16 03:47:19

标签: machine-learning neural-network

想象一下,你有一个带有Sigmoids的神经网络。它有一个输入x,因此节点会将tanh⁡x输出到连接。然后连接将输出w * tanhx,其中w是连接的权重。

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

如何建立一个简单的网络,输入0会给你一个0以外的东西?

3 个答案:

答案 0 :(得分:2)

你应该添加一个值为常数1的伪输入。这个输入可以用作第一层神经元的加权偏差。

答案 1 :(得分:2)

<强>除了

需要注意的一点是,每个图层的功能应该是以下形式:

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 :(得分:0)

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

  

-1 * tanh(x)+ 1

权重和偏差是推广将S形曲线移动到所需位置的压缩和平移的工具。