1

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

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

有人可以详细说明吗?

谁来做这个调整?

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

Δ weight_i = learning_rate * local_gradient * input_i

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

4

1 回答 1

1

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

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

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

于 2012-12-14T13:37:21.300 回答