첫 번째에 대한 질문)탄력 역 전파 신경망 - 내가 신경 네트워크에 정말 새로운 그리고 난 아주 잘 이해하지 못하는 것을 말하고 싶은 그라데이션
나는의 처음 C#을 구현했습니다 backpropagation 신경망. 나는 그것을 XOR을 사용하여 테스트했으며 작동하는 것처럼 보인다.
이제 탄력적 인 backpropagation (Rprop - http://en.wikipedia.org/wiki/Rprop)을 사용하도록 구현을 변경하고 싶습니다.
정의는 말한다 : "Rprop 계정에 모든 패턴 (안 크기)을 통해 편미분의 부호를 취하고, 각각 독립적으로 작용한다"무게 "
이누군가가 나를 부분 어떤 유도체 이상 말할 수 없습니다. 모든 패턴은 내가 은닉층의 뉴런에 대한
감사 많은이 편미분을 계산하는 방법을
UPDATE :?.이 자바 코드에
내 구현하는 base : 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; j++)
{
error = 0.0;
for (int k = 0; k < outputsNumber; k++)
{
error = error + output_deltas[k] * weightsOutputs[j, k];
}
hidden_deltas[j] = Dsigmoid(activationsHidden[j]) * error;
}
//update output weights
for (int j = 0; j < hiddenNumber; j++)
{
for (int k = 0; k < outputsNumber; k++)
{
change = output_deltas[k] * activationsHidden[j];
weightsOutputs[j, k] = weightsOutputs[j, k] + learningRate * change + momentumFactor * lastChangeWeightsForMomentumOutpus[j, k];
lastChangeWeightsForMomentumOutpus[j, k] = change;
}
}
// update input weights
for (int i = 0; i < inputsNumber; i++)
{
for (int j = 0; j < hiddenNumber; j++)
{
change = hidden_deltas[j] * activationsInputs[i];
weightsInputs[i, j] = weightsInputs[i, j] + learningRate * change + momentumFactor * lastChangeWeightsForMomentumInputs[i, j];
lastChangeWeightsForMomentumInputs[i, j] = change;
}
}
// calculate error
error = 0.0;
for (int k = 0; k < outputsNumber; k++)
{
error = error + 0.5 * (targets[k] - activationsOutputs[k]) * (targets[k] - activationsOutputs[k]);
}
return error;
}
그래서이 노래에 대해 검사 구배 (편미분)로 change = hidden_deltas[j] * activationsInputs[i]
변수를 사용합니까?
구현을 디버깅하는 데 어제 저녁을 보냈습니다.이 알고리즘을 이해할 수 없다는 우려가 나타납니다. 당신은 그것의 좋은 설명을 알고 있습니까? –