Uma Estrutura para Execução de Redes Neurais Evolutivas na GPU
Autores
6793 |
3038,312
|
|
6794 |
3038,312
|
Informações:
Publicações do PESC
Em neuroevolução, redes neurais são treinadas utilizando algoritmos evolutivos ao invés de utilizar o método do gradiente descendente. Uma das vantagens em relação ao método do gradiente descendente, é que torna possível além de definir o valor dos pesos de uma rede neural, também sua estrutura. Na otimização de redes neurais evolutivas com mesmo peso, são avaliadas todas as redes neurais de uma população para verificar qual é o valor da função fitness que cada rede neural irá possuir e com este valor, verificar quais são as redes neurais que irão passar para a próxima geração. O GPU (Graphic Processor Unit) é bastante utilizado nos treinos de redes neurais, devido a sua alta capacidade de paralelismo [1]. Porém, devido a sua arquitetura ser diferente de um processador comum, alguns algoritmos precisam ser executados de maneira diferente para aproveitar o aumento de desempenho que a arquitetura pode oferecer. Neste trabalho é criada uma arquitetura que seja capaz de diminuir o tempo de treino das redes neurais evolutivas através da junção dos pesos de toda população por camada fazendo com que cada camada represente os pesos de toda população. Desta forma é possível vetorizar as funções de avaliação de redes neurais. No treino para classificar o dataset MNIST, esta estrutura conseguiu obter um ganho de desempenho de até 64% nas redes neurais MLP e um speedup de 20 no cálculo do fitness.
In neuroevolution, neural networks are trained using evolutionary algorithms instead of the gradient descent method. One of the advantages over the gradient descent method is that it makes it possible not only to define the value of the weights of a neural network, but also its structure. In the optimization of evolutionary neural networks with the same weight, all neural networks of a population are evaluated to verify what is the value of the fitness function that each neural network will possess and with this value, to verify which are the neural networks that will move on to the next generation. The GPU (Graphic Processor Unit) is widely used in neural network training due to its high parallelism capability [1]. However, because their architecture is different from a common processor, some algorithms need to be executed differently to take advantage of the increased performance that the architecture can provide. In this work an architecture is created that is able to reduce the training time of evolutionary neural networks by joining the weights of all population by layer making each layer represent the weights of the entire population. In this way it is possible to vectorize the evaluation functions of neural networks. In training to classify the MNIST dataset, this structure has achieved a performance gain of up to 64% in neural networks MLP and a speedup of 20 in fitness calculation.