神经网络和反向传播,在MATLAB中删除构造的理由

时间:2012-12-14 13:10:46

标签: matlab neural-network

我想知道,MATLAB有一个removeconstantrows函数,应该应用于前馈神经网络输入和目标输出数据。此函数从数据中删除常量行。例如,如果5输入神经网络的一个输入向量是[1 1 1 1 1],则将其删除。

谷歌搜索,我能找到的最好的解释是(释义)“不需要恒定行,可以通过适当调整输出层的偏差来代替”。

有人可以详细说明吗?

谁做了这个调整?

从我的书中,简单梯度下降的重量调整是:

Δweight_i= learning_rate * local_gradient * input_i

这意味着第一个隐藏层的神经元的所有权重都被调整为相同的量。但他们已经调整好了。

1 个答案:

答案 0 :(得分:1)

我认为存在误导。 “行”不是输入模式,而是一个特征,即所有模式中的第i个组件。很明显,如果某些功能在所有数据集上没有很大的差异,它就不会提供有价值的信息,也不会对网络培训起到明显的作用。

与偏差的比较是可行的(虽然我不同意,这适用于输出层(仅),因为它取决于找到常量行的位置 - 如果它在输入数据中,那么它是正确的好的第一个隐藏层,imho)。如果你记得的话,建议反向传播网络中的每个神经元都有一个特殊的偏置权重,连接到1个恒定信号。例如,如果训练集包含一个全1的行,那么这与附加偏差相同。如果常量行具有不同的值,则偏差将具有不同的效果,但在任何情况下,您都可以简单地消除该行,并将该行的常量值添加到现有偏差中。

免责声明:我不是Matlab用户。我在神经网络方面的背景完全来自编程领域。