Je suis actuellement en train de terminer les pratiques finales de 7.3 Réseaux de neurones dans le Modélisation prédictive et exploration de texte module dans le Cours JMP STIPS .Ajuster un réseau de neurones et comprendre la fonction de base d'un nœud dans la couche cachée en tant que modèle de régression semble intuitivement facile. Pourtant, je me demande si et j'espère que quelqu'un ayant une plus grande connaissance de la communauté pourra apporter des réponses aux questions que je me pose encore après la formation très basique que je viens de suivre. Pour l'exemple dont je veux discuter, j'ai utilisé le fichier GreenPolymerProduction.jmp et la version standard de JMP. Une copie du dossier comprenant le modèle est jointe.
Le schéma du modèle est présenté ci-dessous. Nous pouvons voir que les données de chacun des huit prédicteurs sont introduites dans chacun des trois nœuds de la couche cachée. Chaque nœud de la couche utilise une fonction d'activation TanH.

J'ai enregistré les formules du modèle dans la table. Les captures d'écran des formules utilisées dans chacun des trois nœuds sont présentées ci-dessous.
Question n°1 : Comment puis-je interpréter le fait que chaque nœud a une formule différente pour la même fonction d'activation ? Intuitivement, il semble naïf de s'attendre à ce que la même formule soit utilisée dans chaque nœud, mais je me demande toujours comment JMP arrive aux résultats présentés ci-dessous. Une interprétation à laquelle j'ai pensé était que chaque nœud reçoit des données d'entrée différentes, ce qui m'amènerait à m'attendre à des formules différentes comme indiqué ci-dessous, mais cette hypothèse peut être totalement fausse.
Question n°2 : Quelqu'un peut-il partager de bonnes références (en utilisant de préférence des explications phénoménologiques) pour lire sur les réseaux de neurones pour les débutants ?



Acclamations @Victor_G , je n'ai aucun doute que cela améliorera ma compréhension. Je l'apprécie.
Salut @Ressel ,
Bonne année à toi !
Concernant vos questions :
- Le théorème d'approximation universelle ( https://en.m.wikipedia.org/wiki/Universal_approximation_theorem ) déclare que les réseaux de neurones avec suffisamment de couches cachées et un nombre suffisant de neurones sont capables de représenter n'importe quelle fonction linéaire ou non linéaire. Ils sont capables d'approcher cette grande variété de fonctions/profils, car ils s'appuient sur une combinaison pondérée de plusieurs fonctions mathématiques simples (TanH, sigmoïde, ...). Chaque nœud essaie simplement d'avoir une pièce utile du puzzle (fonction) qu'il essaie de résoudre, donc les mêmes données entrent, mais différentes parties (de la fonction finale) sont créées pour être combinées et obtenir le résultat souhaité.
Sur votre capture d'écran, trois fonctions TanH sont combinées avec différents poids (et différentes formules mélangeant les entrées) pour arriver à la formule de prédiction finale.
À propos des ressources :
- Vous pouvez consulter ce site qui explique en détail un exemple pour reconstruire une fonction avec des réseaux de neurones : http://neuralnetworksanddeeplearning.com/chap4.html#:~:text=No%20matter%20what%20the%20function,m)%2C%20and%20many%20outputs
- J'aime aussi beaucoup la chaîne YouTube StatQuest, où Josh Starmer a très bien expliqué le fonctionnement interne d'un réseau de neurones sur un cas d'utilisation simple : https://youtu.be/CqOfi41LfDw?si=leA0KeTcgSY3YW70
- Il existe également une page d'apprentissage dédiée aux Réseaux de Neurones réalisée par l'équipe de MLU Explain, vraiment bien faite et facile à suivre : https://mlu-explain.github.io/neural-networks/
- Enfin, vous pouvez également essayer différentes configurations de réseaux de neurones sur différents cas d'utilisation de classification/régression dans ce terrain de jeu interactif de réseaux de neurones, pour voir comment se font l'entraînement et l'ajustement des poids : https://playground.tensorflow.org/#activation=tanh&batchSize=10&dataset=circle®Dataset=reg-plane&learningRate=0.03®ularizationRate=0&noise=0&networkShape=4,2&seed=0.88242&showTestData=false&discretize=false&percTrainData=50&x=true&y=true&xTimesY= faux&xSquared=faux&ySquared =false&cosX=false&sinX=false&cosY=false&sinY=false&collectStats=false&problem=classification&initZero=false&hideText=false
J'espère que cette première réponse vous aidera 