相关疑难解决方法(0)

理解神经网络反向传播

更新:更好地解决问题.

我试图以XOR神经网络为例来理解反向传播算法.对于这种情况,有2个输入神经元+ 1个偏置,隐藏层中的2个神经元+ 1个偏置,以及1个输出神经元.

 A   B  A XOR B
 1    1   -1
 1   -1    1
-1    1    1
-1   -1   -1
Run Code Online (Sandbox Code Playgroud)

XOR神经网络示例

我正在使用随机反向传播.

在阅读了一点之后我发现输出单元的错误传播到隐藏层...最初这是令人困惑的,因为当你到达神经网络的输入层时,每个神经元都会得到一个错误调整来自隐藏层中的两个神经元.特别是,首先很难掌握错误的分配方式.

步骤1计算每个输入实例的输出.
步骤2计算输出神经元(在我们的例子中只有一个)和目标值(s)之间的误差:
步骤2 http://pandamatak.com/people/anand/771/html/img342.gif
步骤3我们使用步骤2中的错误计算每个隐藏单元的错误h:
步骤3 http://pandamatak.com/people/anand/771/html/img343.gif

"权重kh"是隐藏单元h和输出单元k之间的权重,这是令人困惑的,因为输入单元没有与输出单元相关联的直接权重.在盯着公式几个小时后,我开始思考求和意味着什么,并且我开始得出结论,连接到隐藏层神经元的每个输入神经元的权重乘以输出误差并总结.这是一个合乎逻辑的结论,但公式似乎有点令人困惑,因为它清楚地说明了'权重kh'(在输出层k和隐藏层h之间).

我在这里正确理解了一切吗?任何人都可以证实吗?

什么是输入层的O(h)?我的理解是每个输入节点有两个输出:一个进入隐藏层的第一个节点,另一个进入第二个节点隐藏层.应该将两个输出中的哪一个插入O(h)*(1 - O(h))公式的一部分?
第3步http://pandamatak.com/people/anand/771/html/img343.gif

computer-science machine-learning backpropagation neural-network

47
推荐指数
2
解决办法
1万
查看次数

弹性反向传播神经网络 - 关于梯度的问题

首先我想说我对神经网络真的很陌生,我不太了解它;)

我已经实现了反向传播神经网络的第一个 C# 实现。我已经使用 XOR 对其进行了测试,它看起来很有效。

现在我想更改我的实现以使用弹性反向传播(Rprop - http://en.wikipedia.org/wiki/Rprop)。

定义说:“Rprop 只考虑所有模式的偏导数的符号(而不是幅度),并且独立地作用于每个“权重”。

有人能告诉我所有模式的偏导数是什么吗?我应该如何为隐藏层中的神经元计算这个偏导数。

非常感谢

更新:

我的实现基于此 Java 代码:www_.dia.fi.upm.es/~jamartin/downloads/bpnn.java

我的 backPropagate 方法如下所示:

public double backPropagate(double[] targets)
    {
        double error, change;

        // calculate error terms for output
        double[] output_deltas = new double[outputsNumber];

        for (int k = 0; k < outputsNumber; k++)
        {

            error = targets[k] - activationsOutputs[k];
            output_deltas[k] = Dsigmoid(activationsOutputs[k]) * error;
        }

        // calculate error terms for hidden
        double[] hidden_deltas = new double[hiddenNumber];

        for (int j = 0; j < hiddenNumber; …
Run Code Online (Sandbox Code Playgroud)

backpropagation neural-network

6
推荐指数
1
解决办法
5134
查看次数