Diferenças entre técnicas de retropropagação

17

Apenas por diversão, estou tentando desenvolver uma rede neural.

Agora, para retropropagação, vi duas técnicas.

O primeiro é usado aqui e em muitos outros lugares também.

O que ele faz é:

  • Ele calcula o erro para cada neurônio de saída.
  • Ele o retropropõe na rede (calculando um erro para cada neurônio interno).
  • Ele atualiza os pesos com a fórmula: (onde está a mudança de peso, a velocidade de aprendizado, o erro do neurônio que recebe a entrada da sinapse e sendo a saída enviada na sinapse).
  • Ele se repete para cada entrada do conjunto de dados, quantas vezes for necessário.

No entanto, a rede neural proposta neste tutorial (também disponível no GitHub) usa uma técnica diferente:

  • Ele usa uma função de erro (o outro método tem uma função de erro, mas não a usa para treinamento).
  • Possui outra função que pode calcular o erro final a partir dos pesos.
  • Minimiza essa função (através da descida do gradiente).

Agora, qual método deve ser usado?

Eu acho que o primeiro é o mais usado (porque vi exemplos diferentes usando), mas funciona também?

Em particular, eu não sei:

  • Não está mais sujeito a mínimos locais (já que não usa funções quadráticas)?
  • Como a variação de cada peso é influenciada pelo valor de saída de seu neurônio de saída, as entradas do conjunto de dados que produzem valores mais altos nos neurônios (não apenas os de saída) influenciam mais os pesos do que as outras entradas?

Agora, prefiro a primeira técnica, porque acho mais simples de implementar e mais fácil de pensar.

No entanto, se houver os problemas que mencionei (o que espero que não exista), existe algum motivo real para usá-lo no segundo método?

Aspie96
fonte

Respostas:

6

Os dois exemplos apresentam essencialmente a mesma operação:

  • Nos dois casos, a rede é treinada com descida gradiente usando o erro quadrado retropropagado calculado na saída.
  • Ambos os exemplos usam a função logística para ativação do nó (a derivada da função logística sé s(1 - s). Essa derivada é obviamente muito fácil de calcular, e isso é parte do motivo pelo qual foi tão amplamente usada (atualmente a função de ativação ReLU é mais popular). , especialmente com redes convolucionais).
  • O primeiro método também usa impulso .

A principal diferença que posso ver é que, no primeiro caso, a retropropagação é iterativa, enquanto no segundo exemplo, é executada no modo em lote.

O último vídeo da série de Welch Labs apresenta um método quase newtoniano que oferece a vantagem de encontrar o mínimo da função de custo calculando o Hessian (matriz de derivadas de segunda ordem do erro em relação aos pesos). No entanto, isso parece comparar maçãs e laranjas - a descida do gradiente de baunilha não usa informações de segunda ordem.

cantordust
fonte