【发布时间】:2015-04-06 15:05:33
【问题描述】:
由于算法的实现是正确的(我检查了数百次),我想我误解了一些理论事实。
我想:
假设 j 指的是隐藏层侧,而 k 指的是输出层
∂E/∂wjk 通过以下方式计算:
outputNeuron[k].errInfo=(target[k]-outputNeuron[k].out)*derivate_of_sigmoid(outputNeuron[q].in);
∂E/∂wjk=outputNeuron[k].errInfo*hiddenNeuron[j].out;
对于∂E/∂wij,其中“i”指的是输入层,“j”指的是隐藏层,它有点长。
每个隐藏单元 (Zj, j = 1, ... ,p) 对其求和
增量输入(来自输出层中的单元),
errorInfo_in[j]=summation from k=1 to m(number of output units) of: outputNeuron[k].errInfo*w[j][k]
然后我计算隐藏单元的错误信息:
hiddenNeuron[j].errInfo=errorInfo_in[j]*derivated_sigmoid(hiddenNeuron[j].in);
最后的∂E/∂wij是:
hiddenNeuron[j].errInfo*x[i](其中x[i]是一个输入单元的输出)
我按照此处的描述应用 RPROP http://www.inf.fu-berlin.de/lehre/WS06/Musterererkennung/Paper/rprop.pdf
对于输入和隐藏以及隐藏输出之间的所有权重。
我正在尝试识别由 '#' 和 '-' 组成的字母,9(rows)x7(columns)。
几个时期后,MSE 卡在 172。
我知道 RPROP 是批量学习,但我正在使用在线学习,因为我读到它仍然有效。
【问题讨论】:
标签: artificial-intelligence neural-network gradient-descent