Alguém pode me dizer como eu devo construir uma rede neural usando o método batch?
Li que, no modo batch, para todas as amostras do conjunto de treinamento, calculamos os pesos de erro, delta e, portanto, delta para cada neurônio na rede e, em vez de atualizar imediatamente os pesos, os acumulamos e antes de iniciar Na próxima época, atualizamos os pesos.
Também li em algum lugar que, o método em lote é como o método on-line, mas com a diferença, é necessário somar os erros para todas as amostras no conjunto de treinamento e, em seguida, calcular a média e usá-lo para atualizar os pesos da mesma forma que alguém faz no método online (a diferença é exatamente essa média) assim:
for epoch=1 to numberOfEpochs
for all i samples in training set
calculate the errors in output layer
SumOfErrors += (d[i] - y[i])
end
errorAvg = SumOfErrors / number of Samples in training set
now update the output layer with this error
update all other previous layers
go to the next epoch
end
- Qual deles é realmente a forma correta de método em lote?
- No caso do primeiro, acumular todos os pesos delta resulta em um número enorme?
Respostas:
O uso de média ou soma é equivalente, no sentido de que existem pares de taxas de aprendizado para as quais eles produzem a mesma atualização.
Para confirmar isso, primeiro lembre-se da regra de atualização:
fonte
As duas respostas são equivalentes. Eu, pessoalmente, pensaria nisso como erro médio em vez da soma. Mas lembre-se de que a descida do gradiente tem um parâmetro chamado taxa de aprendizado e que apenas uma parte do gradiente do erro é subtraída. Portanto, se o erro é definido como total da média pode ser compensado alterando a taxa de aprendizado.
fonte