Comment automatiser le choix de la topologie d'un réseau neuronal pour un problème arbitraire?

14

Supposons que je veuille résoudre un problème avec un réseau de neurones que je ne peux pas adapter à des topologies déjà existantes (perceptron, Konohen, etc.) ou je ne suis tout simplement pas conscient de leur existence ou je ne peux pas comprendre leur la mécanique et je compte sur ma propre place.

Comment automatiser le choix de la topologie (c'est-à-dire le nombre de couches, le type d'activations, le type et la direction des connexions, etc.) d'un réseau neuronal pour un problème arbitraire?

Je suis un débutant, mais j'ai réalisé que dans certaines topologies (ou, au moins dans les perceptrons), il est très difficile, voire impossible, de comprendre la mécanique interne car les neurones des couches cachées n'expriment aucun contexte mathématiquement significatif.

Zoltán Schmidt
la source

Réponses:

11

Je pense que dans ce cas, vous voudrez probablement utiliser un algorithme génétique pour générer une topologie plutôt que de travailler seul. J'aime personnellement NEAT (NeuroEvolution of Augmenting Topologies) .

Le document NEAT d'origine implique des poids évolutifs pour les connexions, mais si vous ne voulez qu'une topologie, vous pouvez utiliser un algorithme de pondération à la place. Vous pouvez également mélanger les fonctions d'activation si vous ne savez pas lequel utiliser. Voici un exemple d'utilisation de la rétropropagation et de plusieurs types de neurones.

DanTheMan
la source
5

L'autre réponse mentionne NEAT pour générer des poids ou des topologies de réseau. L'article NeuroEvolution: L'importance de l'évolution des fonctions de transfert et des réseaux hétérogènes , qui donne également un bref résumé des techniques de neuroévolution, propose une approche alternative au NEAT. Il utilise la programmation génétique cartésienne pour faire évoluer plusieurs fonctions d'activation.

NietzscheanAI
la source