当存在两个或更多隐藏层时,如何计算神经网络中第一个隐藏层的增量?

问题描述

当XOR问题只有一个隐藏层时,我能够计算反向传播。反向传播时,我通过将隐藏层(a2)的参数乘以输出增量来计算该层的误差。然后将其乘以该层的导数。以下代码是该项目的代码段。 例如:

x = 1x3 matrix
y = 1x1 value
parameters = [[1x3 matrix],[2x3 matrix],[2x3matrix]]
a = [[1x3 matrix],[1x3 matrix],[1x1 matrix]]

delta[3] = a[3] - expected_output    //1x1 matrix
total_delta[3] = delta[3].T * a[2]    //1x3 matrix

sigmoid_derivative[2] = a[2] - (1 - a[2])    // = 1x2 matrix,excludes bias unit
delta[2] = parameters[3] .* delta[3] .* sigmoid_derivative[2]    // 1x2 matrix
total_delta[2] = delta[2].T * a[2]    //2x3 matrix

sigmoid_derivative[1] = a[1] - (1 - a[1])    //1x2 matrix,excludes bias unit
delta[1] = parameters[1] .* delta[2] * sigmoid_derivative[1]   //2x3 matrix
total_delta[3] = delta[1].T * x_input    //results in an error as a 3x2 matrix(delta[1]) cannot be multiplied by a 1x3 matrix(x_input])

我的过程如下图所示。但是,当有两层时,第一个隐藏层的总增量太大/大小错误。我不确定自己在做什么错。上面的代码不是我的项目中实现的确切代码,但是它是一个近似值,对于只有一个x和y值进行训练的神经网络已进行了简化。

picture of the neural network layout

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)