Algorithme génétique et réseau de neurones
Fermé
Sourivore
-
17 oct. 2020 à 11:58
yg_be Messages postés 23405 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 décembre 2024 - 17 oct. 2020 à 20:57
yg_be Messages postés 23405 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 décembre 2024 - 17 oct. 2020 à 20:57
A voir également:
- Algorithme génétique et réseau de neurones
- Entrer les informations d'identification reseau - Guide
- Un robot est sur le même réseau que vous - Forum Windows 10
- Cable reseau du player freebox - Forum Freebox
- Julia s'est fait pirater son compte sur un réseau social. son mot de passe de 8 caractères était facile à deviner à partir des informations que tout le monde peut consulter en ligne sur son profil public. vous devez trouver son mot de passe pour découvrir qui veut devenir l'ami de julia. voici sa page de profil public et le lien pour accéder au réseau social. - Forum Windows
- Ecrire un algorithme qui permet de resoudre ax²+bx+c=0 - Forum Algorithmes / Méthodes
3 réponses
yg_be
Messages postés
23405
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 décembre 2024
Ambassadeur
1 557
Modifié le 17 oct. 2020 à 13:35
Modifié le 17 oct. 2020 à 13:35
bonjour,
dans quel contexte fais-tu ce travail?
il serait utile que tu décrives comment tu as choisi de représenter le réseau de neurones d'un individu.
sur base de quoi écris-tu que les deux premières méthodes que tu décris ne font pas mieux que générer un individu aléatoire?
je suppose que ton choix d'éliminer la troisième méthode sera claire quand tu auras décrit la représentation.
dans quel contexte fais-tu ce travail?
il serait utile que tu décrives comment tu as choisi de représenter le réseau de neurones d'un individu.
sur base de quoi écris-tu que les deux premières méthodes que tu décris ne font pas mieux que générer un individu aléatoire?
je suppose que ton choix d'éliminer la troisième méthode sera claire quand tu auras décrit la représentation.
Il s'agit de créer des individus qui peuvent évaluer la position dans un jeu (pour l'exemple j'ai commencé sur le jeu des batonnets)
Pour être clair, je vais donner un exemple :
{"neurons": [
[
{
"weights": [1, 2, 3],
"bias": -1
},
{
"weights": [4, 5, 6],
"bias": 3
}
],
[
{
"weights": [1, 2],
"bias": 5
}
]
]
Ceci est une représentation possible.
Dans ce cas il y a la couche d'entrée qui est composée de trois paramètres d'entrée, 1 couche intermédiaire qui contient 2 neurons et la couche de sortie.
Donc "neurons" est un tableau de couche de neurones et pour chaque couche nous avons un tableau de neurones qui contient les poids et biais respectifs.
Dans l'exemple si nous avons par exemple en entrée 8, 9 et 10 ([8, 9, 10]) alors le résultat intermédiaire à la première couche est [-1 + 1/exp(8*1+9*2+10*3), 3 + 1/exp(8*4+9*5+10*6)]
Et idem pour la couche finale afin d'avoir un unique résultat.
Dans ce cas une fois qu'on a créé des individus avec son propre réseau de neurone il sera capable de déterminer une évaluation d'une position de jeu (les paramètres d'entrée) afin de pouvoir indiquer la meilleure position possible.
Ensuite je les fait jouer ensemble (on prend chaque coup possible et on joue le coup qui nous amènerait à la meilleure position selon son propre réseau de neurones)
Je les sélectionne ensuite en fonction de leur résultats (pondération), j'en croise quelques uns puis j'effectue éventuellement des mutations (changement de valeur aléatoire) et je remplis avec des nouveaux individus aléatoires.
Et on recommence une nouvelle génération à partir des individus résultants et ainsi de suite.
Pour le moment sans croisement ça ne marche pas trop mal mais pourrait être grandement amélioré avec un croisement efficace, ce qui est compliqué à trouver.
Quant à l'idée de sélectionner au hasard des neurones ou des les mixer n'importe comment cela ne suit aucune logique donc il est évident que ça ne peut pas marcher.
Il suffit par exemple que deux neurones soient inversés afin de complètement faire le contraire du résultat...
Pour être clair, je vais donner un exemple :
{"neurons": [
[
{
"weights": [1, 2, 3],
"bias": -1
},
{
"weights": [4, 5, 6],
"bias": 3
}
],
[
{
"weights": [1, 2],
"bias": 5
}
]
]
Ceci est une représentation possible.
Dans ce cas il y a la couche d'entrée qui est composée de trois paramètres d'entrée, 1 couche intermédiaire qui contient 2 neurons et la couche de sortie.
Donc "neurons" est un tableau de couche de neurones et pour chaque couche nous avons un tableau de neurones qui contient les poids et biais respectifs.
Dans l'exemple si nous avons par exemple en entrée 8, 9 et 10 ([8, 9, 10]) alors le résultat intermédiaire à la première couche est [-1 + 1/exp(8*1+9*2+10*3), 3 + 1/exp(8*4+9*5+10*6)]
Et idem pour la couche finale afin d'avoir un unique résultat.
Dans ce cas une fois qu'on a créé des individus avec son propre réseau de neurone il sera capable de déterminer une évaluation d'une position de jeu (les paramètres d'entrée) afin de pouvoir indiquer la meilleure position possible.
Ensuite je les fait jouer ensemble (on prend chaque coup possible et on joue le coup qui nous amènerait à la meilleure position selon son propre réseau de neurones)
Je les sélectionne ensuite en fonction de leur résultats (pondération), j'en croise quelques uns puis j'effectue éventuellement des mutations (changement de valeur aléatoire) et je remplis avec des nouveaux individus aléatoires.
Et on recommence une nouvelle génération à partir des individus résultants et ainsi de suite.
Pour le moment sans croisement ça ne marche pas trop mal mais pourrait être grandement amélioré avec un croisement efficace, ce qui est compliqué à trouver.
Quant à l'idée de sélectionner au hasard des neurones ou des les mixer n'importe comment cela ne suit aucune logique donc il est évident que ça ne peut pas marcher.
Il suffit par exemple que deux neurones soient inversés afin de complètement faire le contraire du résultat...
yg_be
Messages postés
23405
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 décembre 2024
1 557
17 oct. 2020 à 14:29
17 oct. 2020 à 14:29
tu aurais pu être plus clair ainsi:
{"neurons": [
[
{
"weights": [1, 2, 3],
"bias": -1
},
{
"weights": [4, 5, 6],
"bias": 3
}
],
[
{
"weights": [1, 2],
"bias": 5
}
]
]
yg_be
Messages postés
23405
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 décembre 2024
1 557
17 oct. 2020 à 14:41
17 oct. 2020 à 14:41
tous les neurones ont la même structure, sinon peux-tu donner un second exemple?
quand tu fais un croisement, tu pars de deux pour en obtenir deux autres?
quand tu fais un croisement, tu pars de deux pour en obtenir deux autres?
yg_be
Messages postés
23405
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 décembre 2024
1 557
17 oct. 2020 à 17:20
17 oct. 2020 à 17:20
comment cela s'applique-t'il pour jouer aux bâtonnets?
{"neurons": [
[
{
"weights": [-1, 0, 5],
"bias": 0
},
{
"weights": [8, -1, 1],
"bias": -1
}
],
[
{
"weights": [1, 1],
"bias": 4
}
]
]
Oui c'est ça je dois en obtenir 2 autres comme dans un algorithme génétique classique.
Une solution qui ne résulterait qu'en un seul individu me conviendrait aussi.
yg_be
Messages postés
23405
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 décembre 2024
1 557
17 oct. 2020 à 15:19
17 oct. 2020 à 15:19
que pensais-tu en écrivant "les neurones ne sont pas ordonnés et on ne peut pas déterminer comment les recoller"?
que signifie exp()?
que signifie exp()?
Sourivore
>
yg_be
Messages postés
23405
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 décembre 2024
17 oct. 2020 à 16:41
17 oct. 2020 à 16:41
exp c'est l'exponentielle car j'ai utilisé une régression linéaire et les neurones ne sont pas ordonnés dans le sens où, si on inverse l'ordre de 2 neurones par exemple :
Dans ce cas on obtient un résultat complètement différent, ce qui fait qu'on ne peut pas manipuler efficacement les neurones comme par exemple en splittant le réseau de neurones et en le recollant avec un autre sans avoir un résultat totalement différent des 2 autres.
{"neurons": [
[
{
"weights": [8, -1, 1],
"bias": -1
},
{
"weights": [-1, 0, 5],
"bias": 0
}
],
[
{
"weights": [1, 1],
"bias": 4
}
]
]
Dans ce cas on obtient un résultat complètement différent, ce qui fait qu'on ne peut pas manipuler efficacement les neurones comme par exemple en splittant le réseau de neurones et en le recollant avec un autre sans avoir un résultat totalement différent des 2 autres.
yg_be
Messages postés
23405
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 décembre 2024
1 557
>
Sourivore
17 oct. 2020 à 17:16
17 oct. 2020 à 17:16
tu donnes un exemple qui n'a rien à voir avec le croisement de deux individus, me semble-t-il.
par ailleurs, je ne pense pas qu'il soit utile d'éviter d'obtenir des résultats totalement différents, au contraire.
il ne s'agit pas de manipulation génétique, il s'agit de laisser faire l'évolution naturelle.
tes individus sont, en fait, déterminés par une séquence de 11 nombres.
moi j'utiliserais une méthode de double enjambement, éventuellement avec un calcul aléatoire des positions des pivots.
par ailleurs, je ne pense pas qu'il soit utile d'éviter d'obtenir des résultats totalement différents, au contraire.
il ne s'agit pas de manipulation génétique, il s'agit de laisser faire l'évolution naturelle.
tes individus sont, en fait, déterminés par une séquence de 11 nombres.
moi j'utiliserais une méthode de double enjambement, éventuellement avec un calcul aléatoire des positions des pivots.
Sourivore
>
yg_be
Messages postés
23405
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 décembre 2024
17 oct. 2020 à 20:01
17 oct. 2020 à 20:01
Sauf que si le croisement des individus génère un individu aussi aléatoire que si on avait généré depuis rien un nouvel individu, ça n'a plus d'intérêt de les croiser, autant ne générer que des nouveaux individus...
L'idée c'est quand même de créer des individus à cheval entre les deux parents.
Par exemple si un paramètre est très prépondérant avec des poids importants à chaque neurone pour les deux parents il semble normal que l'enfant garde ce caractère et pas qu'en réalisant les pivot il soit associé à des poids négatifs et fasse complètement le contraire de ses parents...
Dans la sélection naturelle, il est naturel de mixer les gènes mais par contre si on commence à mixer les acides aminés de l'ADN ou mettre des chromosomes sexuels avec des chromosomes classiques, tout ce qu'on aura c'est de la bouillie de vie et non un individu...
C'est pourquoi il est important de se poser la question sur la meilleur façon de croiser la gène afin de garder une cohérence.
L'idée c'est quand même de créer des individus à cheval entre les deux parents.
Par exemple si un paramètre est très prépondérant avec des poids importants à chaque neurone pour les deux parents il semble normal que l'enfant garde ce caractère et pas qu'en réalisant les pivot il soit associé à des poids négatifs et fasse complètement le contraire de ses parents...
Dans la sélection naturelle, il est naturel de mixer les gènes mais par contre si on commence à mixer les acides aminés de l'ADN ou mettre des chromosomes sexuels avec des chromosomes classiques, tout ce qu'on aura c'est de la bouillie de vie et non un individu...
C'est pourquoi il est important de se poser la question sur la meilleur façon de croiser la gène afin de garder une cohérence.
yg_be
Messages postés
23405
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 décembre 2024
1 557
>
Sourivore
17 oct. 2020 à 20:57
17 oct. 2020 à 20:57
as-tu essayé la méthode de double enjambement, peut-être en 4/4/3 ? n'est-ce pas une méthode classique de combinaison dans ce genre d'algorithme? pourquoi considères-tu que cela crée une bouillie?
c'est peut-être alors le modèle en trois couches que tu as choisi qui n'est pas adéquat, d'où ma question de comment cela s'applique au jeu de bâtonnets.
les exemples que tu as donné, il s'agit d'exemples de neurones, ou d'exemples d'individus? si ce sont des exemples de neurones, peux-tu décrire un individu?
qu'appelles-tu une couche?
c'est peut-être alors le modèle en trois couches que tu as choisi qui n'est pas adéquat, d'où ma question de comment cela s'applique au jeu de bâtonnets.
les exemples que tu as donné, il s'agit d'exemples de neurones, ou d'exemples d'individus? si ce sont des exemples de neurones, peux-tu décrire un individu?
qu'appelles-tu une couche?
17 oct. 2020 à 13:34