Les réseaux de neurones artificiels sont une classe d'algorithmes qui comprennent de nombreux types d'algorithmes différents basés sur des graphiques, donc je ne détaillerai pas ici au-delà de ce que vous avez demandé car il y a trop à dire, car il y a tellement de types d'ANN.
Le premier type de réseaux de neurones artificiels, les fameux neurones McCulloch-Pitts, étaient linéaires , ce qui signifie qu'ils ne pouvaient résoudre que des problèmes de décision linéaires (c'est-à-dire des ensembles de données qui pouvaient être linéairement séparables en traçant une ligne). Au fil du temps, ce modèle de réseau de neurones linéaire est devenu connu sous le nom de Perceptron ou Adaline (selon la façon dont vous calculez la mise à jour des poids).
Les réseaux de neurones linéaires sont simplement composés d'un graphe bipartite, où les nœuds du côté gauche sont les entrées et les nœuds du côté droit la sortie. Seuls les poids des bords entre ces nœuds sont appris (le seuil d'activation des nœuds peut également être ajusté mais cela est rarement fait).
Un grand pas a été franchi lorsque les réseaux neuronaux peu profonds ont été inventés: au lieu de n'avoir qu'un graphe biparti, nous utilisons un graphe tripartite: la "couche" d'entrée, la "couche" de sortie et une "couche cachée" entre elles. Grâce à la couche cachée, le réseau peut désormais prendre des décisions non linéaires et résoudre des problèmes tels que le XOR canonique.
Notez que le terme "peu profond" a été inventé rétrospectivement lorsque le réseau neuronal profond (également appelé réseaux neuronaux à n couches ) a été inventé. Il s'agit de s'opposer aux réseaux de neurones avec une seule couche cachée, aux réseaux de neurones profonds avec n couches cachées . Comme vous pouvez le deviner, l'utilisation de couches plus cachées permet de décider de jeux de données plus complexes car il y a plus de couches pour moduler la décision (c'est-à-dire que vous augmentez la dimensionnalité de votre frontière de décision, ce qui peut conduire à un sur-ajustement).
Vous pouvez vous demander: pourquoi personne n'a-t-il essayé auparavant d'utiliser des réseaux de neurones multicouches (profonds)? En fait, ils l'ont fait, dès 1975 par Fukushima avec le Cognitron et le Neocognitron (qui est en fait un réseau neuronal convolutif, mais c'est une autre histoire). Cependant, le problème était que personne ne savait comment apprendre efficacement de tels réseaux, le gros problème étant la régularisation . Les AutoEncoders de Hinton ont ouvert la voie, et plus tard les unités linéaires rectifiées de LeCun ont définitivement réglé le problème.
Qu'en est-il des réseaux de croyances profondes (DBN)? Ce ne sont que des machines Boltzmann multicouches semi-restreintes. Ils sont donc une sorte de réseau neuronal profond, mais avec un modèle de réseau de base différent (c'est-à-dire: la couche, c'est le modèle qui se répète): les machines Boltzmann sont différentes des autres réseaux en ce qu'elles sont génératives , ce qui signifie qu'elles sont généralement sert à apprendre de vos données pour les reproduire ("les générer"), tandis que les réseaux de neurones profonds habituels sont utilisés pour séparer vos données (en traçant une "frontière de décision").
En d'autres termes, DNN est idéal pour classer / prédire une valeur à partir de votre ensemble de données, tandis que DBN est idéal pour "réparer" une donnée corrompue (quand je dis réparer, ce n'est pas seulement à partir de données corrompues, il peut aussi être sur une donnée parfaitement fine que vous voulez juste corriger un peu pour être plus stéréotypé que pour le reconnaître plus facilement avec un autre réseau de neurones, comme des chiffres manuscrits).
En fait, pour bien résumer, vous pouvez dire que les AutoEncoders sont une forme plus simple de Deep Belief Network. Voici un exemple d'un DBN formé pour reconnaître les visages mais PAS les nombres, les nombres sont automatiquement effacés (c'est l'effet "fixant" du DBN):
Donc au final, DBN et DNN ne sont pas opposés: ils sont complémentaires. Par exemple, vous pouvez imaginer un système pour reconnaître les caractères manuscrits qui alimenteront d'abord l'image d'un personnage vers un DBN pour le rendre plus stéréotypé, puis alimenteront l'image stéréotypée vers un DNN qui affichera ensuite le caractère que l'image représente.
Une dernière note: les réseaux Deep Belief sont très proches des machines Deep Boltzmann: les machines Deep Boltzmann utilisent des couches de machines Boltzmann (qui sont des réseaux neuronaux bidirectionnels, également appelés réseaux de neurones récurrents), tandis que les réseaux Deep Belief utilisent des machines Boltzmann semi-restreintes (semi restreint signifie qu'ils sont modifiés en unidirectionnel, ce qui permet d'utiliser la rétropropagation pour apprendre le réseau, ce qui est beaucoup plus efficace que l'apprentissage d'un réseau récent). Les deux réseaux sont utilisés dans le même but (régénération de l'ensemble de données), mais le coût de calcul est différent (les machines Deep Boltzmann sont beaucoup plus coûteuses à apprendre en raison de leur nature récurrente: il est plus difficile de "stabiliser" les poids).
Bonus: sur les réseaux de neurones convolutifs (CNN), vous trouverez de nombreuses affirmations contradictoires et déroutantes, et vous constaterez généralement qu'il ne s'agit que de réseaux de neurones profonds. Cependant, il semble que le consensus soit d'utiliser la définition originale du néocognitron de Fukushima: un CNN est un DNN qui est forcé d'extraire différentes caractéristiques à différents niveaux hiérarchiques en imposant une convolution avant l'activation (ce qu'un DNN peut naturellement faire, mais en le forçant à le faire). en définissant une fonction de convolution / activation différente sur différentes couches du réseau peut donner de meilleurs résultats, du moins c'est le pari de CNN):
Et enfin, pour une chronologie plus rigoureuse de l'intelligence artificielle, voir ici .