想象一下,你有一个带有Sigmoids的神经网络。它有一个输入x,因此节点会将tanhx输出到连接。然后连接将输出w * tanhx,其中w是连接的权重。
问题是,如果输入为0并且期望输出应该是1,那该怎么办?如果输入为0,则连接的输出将为w * tanh0 = 0。因此,如果输入为0,那么无论您添加多少个节点或连接,或者连接的权重是多少,输出始终为0。
如何建立一个简单的网络,输入0会给你一个0以外的东西?
答案 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形曲线移动到所需位置的压缩和平移的工具。