Como os pesos são atualizados no método de aprendizado em lotes nas redes neurais?

15

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?
Rika
fonte
1
O método "correto" depende do contexto. Acontece que, em muitos casos, a atualização dos pesos apenas uma vez por época convergirá muito mais lentamente que a atualização estocástica (atualização dos pesos após cada exemplo). Acrescentarei que há um consenso de que você geralmente desejará usar alguma forma de atualização em lote, mas com muito mais frequência que 1x por época.
Tahlor 16/10

Respostas:

9

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:

Δwij=αEwij

μEnnμEnw

Δwij=α(nμ)wij=αnμwij

ΔwΔW

Sean Easter
fonte
1
A descida do gradiente de mini-lote é a mesma descida do gradiente de lote? Eu estou perdido aqui! se não, qual é a diferença entre estes? Corrija-me se eu estiver errado, no modo Lote, todo o conjunto de dados precisa ser lido em lotes, os gradientes são calculados e, quando todos são lidos, eles são calculados como média e os parâmetros são atualizados, enquanto, no minilote, cada o lote é lido, os gradientes são calculados e os parâmetros atualizados, e o próximo mini lote é lido até a época terminar.
Rika
1
Essa é a definição geralmente fornecida: atualize os parâmetros usando um subconjunto dos dados de treinamento por vez. (Existem alguns métodos nos quais os mini-lotes são amostrados aleatoriamente até a convergência, ou seja, o lote não será percorrido em uma época.) Veja se isso é útil.
Sean Easter
0

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.

jlimahaverford
fonte
obrigado, mas se eles são realmente iguais, por que se preocupar desperdiçando tanta memória em manter as atualizações acumulativas para cada padrão, quando podemos somar os erros que seriam apenas uma variável simples?
Rika