Pergunta

Para o meu projeto universitário Estou criando uma rede neural que pode classificar a probabilidade de que uma transação com cartão de crédito é fraudulento ou não. Estou treinando com backpropagation. Estou escrevendo isso em Java. Eu gostaria de aplicar multithreading, porque meu computador é um i7 quad-core. me incomoda-o a passar horas treinando e ver a maior parte da minha núcleos ociosos.

Mas como eu ia aplicar multithreading para backpropagation? Retropropagação funciona ajustando os erros para trás através da rede. Uma camada deve ser feito antes que o outro pode continuar. Existe alguma maneira que eu posso modificar o meu programa para fazer pano de fundo multicore?

Foi útil?

Solução

Em primeiro lugar, não use backpropagation. Há muitas outras opções lá fora. Eu sugeriria Rprop tentando (propagação resistente). Não vai ser tão grande de modificação para o seu algoritmo backpropagation. Você não precisa especificar taxa de aprendizagem ou impulso. Sua realmente quase como se você tem um indivíduo, variável, taxa de aprendizagem para cada conexão na rede neural.

Quanto à aplicação multithreading para backpropagation. Eu escrevi um artigo sobre este tema.

http://www.heatonresearch.com/encog/mprop/compare.html

Basicamente, eu criar um número de tópicos e dividir os dados de treinamento para que cada segmento tem uma quantidade igual próximo. Estou cálculo dos gradientes em cada thread e eles são somados em uma etapa de reduzir. Como os gradientes são aplicadas aos pesos depende do algoritmo de treinamento de propagação utilizado, mas a atualização de peso é feito em uma seção crítica.

Quando você tiver consideravelmente treinando mais amostras do que os pesos o código passa muito mais tempo no cálculo gradiente de multi-threaded que a atualização crítica peso seção.

Eu forneço alguns dos resultados de desempenho no link acima. Ele realmente acelerar as coisas!

Outras dicas

Para usar mais núcleos de CPU com Java você pode apenas tentar mais opções para JVM sem alterar o código:

  • -server
  • -d64
  • XX: -UseParallelGC

e outras opções em http://java.sun.com/javase /technologies/hotspot/vmoptions.jsp

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top