Machine learning 输入为0的神经网络

Machine learning 输入为0的神经网络,machine-learning,neural-network,Machine Learning,Neural Network,想象一下,你有一个带有乙状结肠的神经网络。它有一个输入x,因此节点将输出tanh⁡x连接到一个连接。然后该连接将输出w∗tanhx,其中w是连接件的重量 问题是,如果一个输入是0,而期望的输出应该是类似于1的东西,该怎么办?如果输入为0,那么连接的输出为w∗tanh0=0。因此,如果输入为0,那么无论添加多少节点或连接,或者连接上的权重有多大,输出都将始终为0 如何创建一个简单的网络,其中输入0将提供除0以外的其他内容?您应该添加一个值为常量1的伪输入。然后,该输入可以用作第一层神经元的加权偏倚

想象一下,你有一个带有乙状结肠的神经网络。它有一个输入x,因此节点将输出tanh⁡x连接到一个连接。然后该连接将输出w∗tanhx,其中w是连接件的重量

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


如何创建一个简单的网络,其中输入0将提供除0以外的其他内容?

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

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

-1*tanh(x)+1

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

旁白

需要注意的一点是,每个层的函数应采用以下形式:

z=转置(W)*X
输出=tanh(z)

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

第一条路

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

因此,如果您有伪代码:
number\u of_inputs=10
,那么您应该使用伪代码:
number\u of_inputs=11;输入[10]=1

这允许您的输出函数采用与上面相同的形式

第二种方式

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

z=转置(W)*X
输出=tanh(z)+b


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

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