FR 3153915 A1 20250411 FR 2310667 A 20231005 Génération de valeurs aléatoires physiques à l'aide d'un dispositif de mémoire résistive La présente description concerne un dispositif configuré pour générer une valeur aléatoire, le dispositif comprenant : un dispositif de mémoire résistive (102) capable d'être programmé de façon incrémentielle ; et un circuit de commande (104) configuré pour : - effectuer une première opération de programmation avec des premiers paramètres de programmation afin de générer une première variation de conductance d'une première polarité dans le dispositif de mémoire résistive ; - effectuer une deuxième opération de programmation avec les deuxièmes paramètres de programmation afin de générer une deuxième variation de conductance d'une deuxième polarité, opposée à la première polarité, dans le dispositif de mémoire résistive ; et - générer la valeur aléatoire en lisant une valeur de conductance du dispositif de mémoire résistive après les première et deuxième opérations de programmation. Figure pour l'abrégé : Fig. 1 Génération de valeurs aléatoires physiques à l'aide d'un dispositif de mémoire résistive La présente description concerne généralement le domaine des dispositifs électroniques, et en particulier la génération de valeurs ou de nombres aléatoires physiques, ainsi que l'apprentissage automatique utilisant une telle génération de valeurs ou de nombres aléatoires physiques. La génération de nombres aléatoires est utilisée dans diverses applications, allant de la cryptographie à l'apprentissage automatique. Certaines solutions pour générer des nombres aléatoires sont basées sur des dispositifs physiques ayant un comportement variable. Toutefois, les dispositifs physiques proposés dans le passé pour la génération de nombres aléatoires présentent une difficulté : ils ont tendance à manquer d'évolutivité pour les applications dans lesquelles un nombre relativement important de nombres aléatoires doit être généré en parallèle, et/ou ils sont limités en termes de réglage des paramètres de la distribution de probabilité des nombres aléatoires générés, tels que la moyenne et l'écart-type de la distribution de probabilité. Il existe donc un besoin dans l'art pour une solution de génération de valeurs ou de nombres aléatoires physiques qui pallie au moins partiellement un ou plusieurs inconvénients de l'art antérieur. Selon un aspect, il est prévu un dispositif configuré pour générer une valeur aléatoire, le dispositif comprenant : un dispositif de mémoire résistive capable d'être programmé de façon incrémentielle ; et un circuit de commande configuré pour : effectuer une première opération de programmation du dispositif de mémoire résistive avec les premiers paramètres de programmation afin de générer une première variation de conductance d'une première polarité dans le dispositif de mémoire résistive ; effectuer une deuxième opération de programmation du dispositif de mémoire résistive avec les deuxièmes paramètres de programmation afin de générer une deuxième variation de conductance d'une deuxième polarité dans le dispositif de mémoire résistive, la deuxième polarité étant la polarité opposée à la première polarité ; et générer la valeur aléatoire en lisant une valeur de conductance du dispositif de mémoire résistive à la suite des première et deuxième opérations de programmation. Selon un mode de réalisation, le circuit de commande est en outre configuré pour effectuer une conversion analogique-numérique sur la valeur de conductance lue afin de générer une valeur numérique aléatoire. Selon un mode de réalisation, l'amplitude des premiers paramètres de programmation est différente de l'amplitude des deuxièmes paramètres de programmation. Selon un mode de réalisation, le dispositif de mémoire résistive est un dispositif à paroi de domaine, et une largeur d'impulsion, ou un nombre d'impulsions, appliquée au dispositif à paroi de domaine pendant la première opération de programmation est différente d'une largeur d'impulsion, ou d'un nombre d'impulsions, appliquée au dispositif à paroi de domaine pendant la deuxième opération de programmation. Selon un mode de réalisation, le circuit de commande est configuré pour mettre en œuvre une opération de mise à jour du modèle bayésien, dans laquelle l'amplitude de l'une des première ou deuxième opérations de programmation est basée sur l'amplitude d'un gradient de Langevin, et la polarité de ladite une des première et deuxième opérations de programmation est basée sur le signe du gradient de Langevin. Selon un mode de réalisation, l'amplitude de ladite une des première ou deuxième opérations de programmation est proportionnelle à une amplitude de programmation égale à : où est un gradient de Langevin, est un taux d'apprentissage, et est une fonction qui convertit le bruit introduit par l'application du gradient de Langevin en une amplitude de programmation. Selon un mode de réalisation, une valeur des premiers paramètres de programmation est identique à une valeur des deuxièmes paramètres de programmation, le circuit de commande étant en outre configuré pour effectuer une troisième opération de programmation du dispositif de mémoire résistive avant la première opération de programmation ou après la deuxième opération de programmation. Selon un mode de réalisation, le circuit de commande est configuré pour mettre en œuvre une opération de mise à jour du modèle bayésien, dans laquelle l'amplitude de ladite troisième opération de programmation est basée sur l'amplitude d'un gradient de Langevin, et la polarité de la troisième opération de programmation est basée sur le signe du gradient de Langevin. Selon un autre aspect, il est prévu un procédé de génération de valeurs aléatoires, le procédé comprenant : l'exécution, par un circuit de commande, d'une première opération de programmation d'un dispositif de mémoire résistive avec des premiers paramètres de programmation afin de générer une première variation de conductance d'une première polarité dans le dispositif de mémoire résistive, le dispositif de mémoire résistive pouvant être programmé de façon incrémentielle ; l'exécution, par le circuit de commande, d'une deuxième opération de programmation du dispositif de mémoire résistive avec les deuxièmes paramètres de programmation afin de générer une deuxième variation de conductance d'une deuxième polarité dans le dispositif de mémoire résistive, la deuxième polarité étant la polarité opposée à la première polarité ; et la génération de la valeur aléatoire en lisant, par le circuit de commande, une valeur de conductance du dispositif de mémoire résistive à la suite des première et deuxième opérations de programmation. Selon un mode de réalisation, le procédé comprend en outre l'exécution d'une conversion analogique-numérique sur la valeur de conductance lue afin de générer une valeur numérique aléatoire. Selon un mode de réalisation, l'amplitude des premiers paramètres de programmation est différente de l'amplitude des deuxièmes paramètres de programmation. Selon un mode de réalisation, le dispositif de mémoire résistive est un dispositif à paroi de domaine, et une largeur d'impulsion, ou un nombre d'impulsions, appliquée au dispositif à paroi de domaine pendant la première opération de programmation est différente d'une largeur d'impulsion, ou d'un nombre d'impulsions, appliquée au dispositif à paroi de domaine pendant la deuxième opération de programmation. Selon un autre aspect, on prévoit un procédé de mise en œuvre d'une opération de mise à jour d'un modèle bayésien comprenant le procédé ci-dessus, dans lequel l'amplitude de l'une des premières ou deuxièmes opérations de programmation est basée sur l'amplitude d'un gradient de Langevin, et la polarité desdites première et deuxième opérations de programmation est basée sur le signe du gradient de Langevin. Selon un mode de réalisation, une amplitude des premiers paramètres de programmation est la même qu'une amplitude des deuxièmes paramètres de programmation, le procédé comprenant en outre l'exécution, par le circuit de commande, d'une troisième opération de programmation du dispositif de mémoire résistive avant la première opération de programmation ou après la deuxième opération de programmation. Selon encore un autre aspect, on prévoit un procédé de mise en œuvre d'une opération de mise à jour d'un modèle bayésien comprenant le procédé ci-dessus, dans lequel l'amplitude de ladite troisième opération de programmation est basée sur l'amplitude d'un gradient de Langevin, et la polarité de la troisième opération de programmation est basée sur le signe du gradient de Langevin. Ces caractéristiques et avantages, ainsi que d'autres, seront exposés en détail dans la description suivante de modes de réalisation particuliers faite à titre non limitatif en relation avec les figures jointes parmi lesquelles : La FIG. 1 illustre schématiquement un dispositif de génération de valeurs aléatoires selon un exemple de mode de réalisation de la présente description ; La FIG. 2 montre des graphes illustrant un exemple de variations de conductance d'un dispositif de mémoire résistive du dispositif de la FIG. 1 ; La FIG. 3 est un graphe illustrant un exemple de distribution de probabilité pour un changement de position d'une paroi de domaine du dispositif de mémoire résistive de la FIG. 1 ; La FIG. 4 est un organigramme illustrant les opérations d'un procédé de génération d'une valeur aléatoire selon un exemple de mode de réalisation de la présente description ; La FIG. 5 représente des graphes illustrant un exemple de distribution de probabilité pour un changement de position d'une paroi de domaine dans le cas où des opérations de programmation de polarités opposées sont appliquées au dispositif de mémoire résistive ; La FIG. 6 représente des graphes illustrant un autre exemple de distribution de probabilité pour un changement de position d'une paroi de domaine dans le cas où des opérations de programmation de polarités opposées sont appliquées au dispositif de mémoire résistive ; La FIG. 7 représente des graphes illustrant un autre exemple de distribution de probabilité pour un changement de position d'une paroi de domaine dans le cas où des opérations de programmation de polarités opposées, et une opération de programmation supplémentaire, sont appliquées au dispositif de mémoire résistive ; La FIG. 8 représente des graphes illustrant un autre exemple de distribution de probabilité pour un changement de position d'une paroi de domaine dans le cas où des opérations de programmation de polarités opposées et de durées différentes sont appliquées au dispositif de mémoire résistive ; La FIG. 9 est un graphe illustrant un exemple d'algorithme SGLD (de l'anglais "Stochastic Gradient Langevin Dynamics", dynamique de Langevin à gradient stochastique) impliquant un échantillonnage aléatoire ; La FIG. 10 illustre schématiquement un dispositif capable d'apprentissage automatique selon un exemple de mode de réalisation de la présente description ; La FIG. 11 est un organigramme illustrant les opérations d'un procédé de mise en œuvre d'une opération de mise à jour du modèle SGLD selon un exemple de mode de réalisation de la présente description ; La FIG. 11 représente des graphes illustrant une opération de mise à jour du modèle SGLD selon un exemple de mode de réalisation de la présente description ; La FIG. 12 est un graphe représentant des exemples de gradient de Langevin et d'échantillons gaussiens selon un exemple de mode de réalisation de la présente description ; La FIG. 13 illustre schématiquement un réseau de dispositifs de mémoire résistive à paroi de domaine selon un exemple de mode de réalisation de la présente description ; La FIG. 14 est un graphe représentant des distributions de probabilité de niveaux discrets d'un dispositif à paroi de domaine ; La FIG. 15 est un organigramme illustrant des opérations d'un algorithme d'apprentissage automatique basé sur un MCMC selon un exemple spécifique dans lequel il est mis en œuvre à l'aide d'un dispositif à paroi de domaine ; La FIG. 16 est un organigramme illustrant un procédé de génération d'une prédiction selon un exemple de mode de réalisation de la présente description ; La FIG. 17 illustre un exemple de données d'entrée et de sortie de la distribution ; La FIG. 18 est un graphe représentant des résultats en fonction de la précision d'un dispositif DW ; La FIG. 19 est un graphe illustrant l'effet de la taille d'un tableau ; et La FIG. 20 est un graphe illustrant la performance de la détection de l'entrée et de la sortie de la distribution d'un modèle. De mêmes éléments ont été désignés par de mêmes références dans les différentes figures. En particulier, les éléments structurels et/ou fonctionnels communs aux différents modes de réalisation peuvent présenter les mêmes références et peuvent disposer de propriétés structurelles, dimensionnelles et matérielles identiques. Sauf précision contraire, lorsque l'on fait référence à deux éléments connectés entre eux, cela signifie directement connectés sans éléments intermédiaires autres que des conducteurs, et lorsque l'on fait référence à deux éléments reliés (en anglais "coupled") entre eux, cela signifie que ces deux éléments peuvent être connectés ou être reliés par l'intermédiaire d'un ou plusieurs autres éléments. Dans la description qui suit, lorsque l'on fait référence à des qualificatifs de position absolue, tels que les termes "avant", "arrière", "haut", "bas", "gauche", "droite", etc., ou relative, tels que les termes "dessus", "dessous", "supérieur", "inférieur", etc., ou à des qualificatifs d'orientation, tels que les termes "horizontal", "vertical", etc., il est fait référence sauf précision contraire à l'orientation des figures. Sauf précision contraire, les expressions "environ", "approximativement", "sensiblement", et "de l'ordre de" signifient à 10 % près, de préférence à 5 % près. La FIG. 1 illustre schématiquement un dispositif de génération de valeurs aléatoires 100 selon un exemple de mode de réalisation de la présente description. Le dispositif 100 comprend par exemple un dispositif de mémoire résistive 102 et un circuit de commande 104 (CIRCUIT CTRL). Le dispositif de mémoire résistive 102 est par exemple du type qui peut être programmé de façon incrémentielle. Cela signifie en particulier qu'une opération de programmation peut être utilisée pour modifier la conductance à partir d'une valeur de conductance initiale, et que la conductance résultante est fonction de l'amplitude et de la polarité d'un paramètre donné de l'opération de programmation et également de la valeur de conductance initiale. Parmi les exemples de dispositifs de mémoire résistive ayant cette propriété, on peut citer les suivants : 1) les dispositifs magnétiques à parois de domaine (DW), décrits par exemple dans les publications : Kumar, Durgesh, et al. "Domain wall memory : Physics, materials, and devices". Physics Reports 958 (2022): 1-35 ; et Sbiaa, R., et S. N. Piramanayagam. "Multi-level domain wall memory in constricted magnetic nanowires". Applied Physics A 114 (2014): 1347-1351 ; et 2) mémoire à changement de phase telle que décrite dans la publication : La Barbera, Selina, et al. "Narrow Heater Bottom Electrode-Based Phase Change Memory as a Bidirectional Artificial Synapse", Adv. Electron. Mater. 2018, 4, 1800223. La FIG. 1 illustre un exemple dans lequel le dispositif 102 est un dispositif DW, qui comprend par exemple deux couches magnétiques empilées 106 et 108. Un dispositif DW est une mémoire non volatile qui peut être multi-niveaux. Le dispositif comporte trois électrodes 110, 112, 114, chacune étant par exemple reliée au circuit de commande 104. L'électrode 110 est en contact avec la couche supérieure "pincée" 106, qui ne comprend que le spin magnétique haut, représenté par des flèches pointant vers le haut dans la couche 106. Par exemple, l'électrode 110 est en contact avec une surface supérieure de la couche 106. Les électrodes 112, 114 sont en contact avec la couche inférieure "libre" 108 et, par exemple, avec les extrémités latérales de la couche inférieure 108. La couche inférieure 108 comprend une partie à spin magnétique haut, représentée par des flèches pointant vers le haut dans la couche 108, et une partie à spin magnétique bas, représentée par des flèches pointant vers le bas dans la couche 108. Une paroi de domaine (DW) correspond à l'interface entre les parties à spin haut et à spin bas. Dans l'exemple de la FIG. 1 , la partie à spin magnétique haut s'étend de l'électrode 112 à la paroi de domaine DW, et la partie à spin magnétique bas s'étend de l'électrode 114 à la paroi de domaine DW. En faisant passer, à l'aide du circuit de commande 104, au moins une impulsion de courant électrique entre les électrodes 112 et 114, dans un sens ou dans l'autre, la position de la paroi de domaine DW entre les portions de spin magnétique haut et de spin magnétique bas peut être déplacée de façon linéaire vers l'électrode 112, ou vers l'électrode 114, de façon symétrique. En particulier, la polarité de cette au moins une impulsion de courant détermine la direction dans laquelle la paroi de domaine DW se déplace. Par exemple, pendant une opération d'écriture, le circuit de commande 104 est configuré pour relier l'électrode 114 à la masse, pour laisser l'électrode 110 flottante ou à haute impédance, et pour appliquer au moins une impulsion de courant d'écriture positive ou négative à l'électrode 112. En appliquant, à l'aide du circuit de commande 104, une tension entre l'une des électrodes 112, 114 et l'électrode supérieure 110, il est possible de lire le courant qui traverse le dispositif DW, ce courant dépendant de l'amplitude de la magnétorésistance à effet tunnel (TMR) entre les deux couches 106, 108. La TMR elle-même dépend du rapport entre le spin haut dans la couche fixe supérieure 106 et le spin haut dans la couche libre inférieure 108. Par conséquent, en déplaçant la position de la paroi de domaine DW, la conductance du dispositif peut être modifiée de façon linéaire. Cela permet au dispositif de stocker des données de façon non volatile. Par exemple, pour effectuer une opération de lecture, le circuit de commande 104 est configuré pour relier l'électrode supérieure 110 à la masse, pour laisser l'électrode 114 flottante ou à haute impédance, et pour appliquer une impulsion de lecture à l'électrode 112. La conductance du dispositif entre l'électrode 112 et l'électrode supérieure 110 est alors, par exemple, proportionnelle au courant de lecture. Par exemple, en supposant que la paroi de domaine DW est dans une position initiale représentée par une ligne pointillée dans la figure 1, l'application d'une impulsion de courant entre les électrodes 112, 114 provoque par exemple un déplacement de la paroi du domaine, et ce déplacement peut être positif ou négatif en fonction de la polarité du courant. Par exemple, une impulsion de courant positive appliquée à travers la couche 108 de l'électrode 112 à l'électrode 114 provoque le déplacement de la paroi de domaine DW vers l'électrode 114, et une impulsion de courant négative appliquée à travers la couche 108 de l'électrode 112 à l'électrode 114, qui est équivalente à une impulsion de courant positive appliquée de l'électrode 114 à l'électrode 112, provoque le déplacement de la paroi de domaine DW vers l'électrode 112. La FIG. 2 est un graphe illustrant un exemple de variations de la conductance (g) d'un dispositif de mémoire résistive du dispositif de la FIG. 1 en fonction du temps t, et en réponse à des impulsions de courant appliquées au dispositif. Par exemple, la conductance g du dispositif 102 est initialement à un niveau g1. À un moment t1, une impulsion de courant négatif p1 est appliquée à l'électrode 112, provoquant le déplacement de la paroi de domaine DW vers l'électrode 112, et donc la diminution de la conductance jusqu'à un niveau g2. À un moment t2, une impulsion de courant négative p2, dont l'amplitude et la largeur sont similaires à celles de l'impulsion p1, est appliquée à l'électrode 112, ce qui provoque un nouveau déplacement de la paroi du domaine DW vers l'électrode 112, et donc une diminution de la conductance jusqu'à un niveau g3. À un moment t3, une impulsion de courant positif p3 est appliquée à l'électrode 112, provoquant le déplacement de la paroi du domaine DW vers l'électrode 114, et l'augmentation de la conductance. Par exemple, l'impulsion p3 a une amplitude similaire aux impulsions p1 et p2, mais deux fois plus large, et la conductance augmente donc jusqu'à un niveau proche du niveau de conductance initial g1. Cependant, le changement de position de la paroi de domaine DW en réponse à une impulsion de courant est soumis à diverses sources de variabilité. Il est donc plus précis de décrire le changement de position, et donc le changement de conductance, à l'aide d'une distribution de probabilité, comme cela va être décrit en référence à la FIG. 3 . La figure 3 est un graphe illustrant un exemple de distribution de probabilité p( ) pour un changement de position de la paroi du domaine DW du dispositif de mémoire résistive 102 de la figure 1 en réponse à une impulsion de courant positive d'une largeur et d'une amplitude d'impulsion données. La distribution peut par exemple s'étendre entre un déplacement minimal et un déplacement maximal et présente un seul pic, à un déplacement . On a constaté que la forme de la distribution de probabilité est influencée par la largeur et l'amplitude de l'impulsion du courant de programmation. Par exemple, pour une intensité donnée du courant de programmation, plus la largeur de l'impulsion est grande, plus la largeur de la distribution de probabilité est grande, en d'autres termes, la distance entre et . Il a également été constaté que la distribution de probabilité est symétrique en ce qui concerne la polarité de l'impulsion de courant. En d'autres termes, la même distribution de probabilité sera obtenue pour une impulsion négative que pour une impulsion positive, la différence étant que le déplacement de la paroi du domaine se fera par un décalage négatif plutôt que positif. La FIG. 4 est un organigramme illustrant les opérations d'un procédé 400 de génération d'une valeur aléatoire, centrée sur une valeur courante, selon un exemple de mode de réalisation de la présente description. Le procédé de la FIG. 4 est par exemple mis en œuvre par le circuit de commande 104 relié au dispositif de mémoire résistive 102. Dans une opération 401, une première opération de programmation du dispositif de mémoire résistive 102 est effectuée sur la base de premiers paramètres de programmation afin de créer une variation de conductance d'une première polarité. Le terme "polarité" est utilisé en référence à la variation de conductance pour désigner une augmentation ou une diminution de la conductance. Par exemple, dans le cas du dispositif à paroi de domaine, les paramètres de programmation définissent la largeur d'impulsion, l'amplitude et la polarité de l'impulsion de courant, et dans certains cas le nombre d'impulsions de courant, appliquées entre les électrodes 112 et 114 du dispositif, et la variation de conductance est le résultat de la variation de position de la paroi de domaine. Dans d'autres technologies de mémoire résistive, les paramètres de programmation peuvent définir d'autres variables, telles que l'amplitude de la tension. Dans une opération 402, une deuxième opération de programmation du dispositif de mémoire résistive 102 est effectuée sur la base de deuxièmes paramètres de programmation afin de créer une variation de conductance d'une deuxième polarité opposée à la première polarité. En d'autres termes, si la variation de conductance de la première polarité est une augmentation de la conductance (correspondant à une diminution de la résistance), la variation de conductance de la deuxième polarité est une diminution de la conductance (correspondant à une augmentation de la résistance), et vice versa. Dans certains modes de réalisation, les premier et deuxième paramètres de programmation sont égaux et opposés, de sorte que les distributions de probabilité soient également égales et opposées. Par exemple, dans le cas d'un dispositif DW, les première et deuxième opérations de programmation sont toutes deux basées sur des impulsions de courant de même largeur et de même amplitude, mais l'une des impulsions est positive et l'autre négative. Par ailleurs, comme décrit plus en détail ci-dessous, dans certains modes de réalisation, il peut y avoir un décalage entre les premier et deuxième paramètres de programmation afin d'obtenir une distorsion voulue entre les variations de conductance. Dans une opération 403, la conductance programmée du dispositif de mémoire résistive 102 est lue afin de générer une valeur aléatoire. Dans certains modes de réalisation, la valeur aléatoire lue est convertie d'une valeur analogique, telle qu'une tension ou un niveau de courant, en une valeur numérique par un convertisseur analogique-numérique (non illustré) qui, par exemple, fait partie du circuit de commande 104. Avantageusement, cette valeur aléatoire sera fonction d'une distribution de probabilité ayant la forme d'une distribution normale, en d'autres termes une distribution gaussienne, avec une valeur moyenne et un écart type qui peuvent être commandés indépendamment à l'aide des premier et deuxième paramètres de programmation, comme cela sera décrit plus en détail en référence aux figures 5 à 8. Les figures 5 à 8 illustrent des graphes de distributions de probabilités résultant de l'exemple de la programmation d'un dispositif de mémoire à paroi de domaine avec une impulsion de courant de largeur variable. Il est évident pour la personne du métier que des effets similaires peuvent être obtenus en utilisant d'autres types de dispositifs de mémoire résistive capables d'être programmés de façon incrémentielle, tels que les dispositifs PCM mentionnés ci-dessus. La figure 5 représente des graphes illustrant un exemple de distribution de probabilité pour un changement de position d'une paroi de domaine dans le cas où des opérations de programmation de polarités opposées sont appliquées au dispositif de mémoire résistive. En outre, les paramètres de programmation sont sensiblement égaux et opposés et, en particulier, les largeurs et les amplitudes des impulsions de courant sont sensiblement les mêmes. En particulier, la figure 5 représente un graphe 502 de la densité de probabilité associée à la première opération de programmation basée sur une impulsion de courant positive, qui provoque un déplacement positif ( ) de la paroi du domaine, un graphe 504 de la densité de probabilité associée à la deuxième opération de programmation basée sur une impulsion de courant négative, qui provoque un déplacement négatif ( ) de la paroi du domaine, l'impulsion négative ayant la même largeur d'impulsion et la même amplitude que l'impulsion de courant positive, et un graphe 506 représentant la distribution de probabilité résultante des deux opérations de programmation, qui correspond à la loi de sommation normale. En particulier, cette distribution de probabilité p( ) est centrée autour de zéro, ce qui implique que le déplacement moyen est la position initiale de la paroi du domaine. Par exemple, la position de la paroi du domaine échantillonnée peut être exprimée comme suit : où et sont les moyennes des distributions normales du déplacement positif et négatif de la paroi du domaine, respectivement, est une fonction donnant l'écart-type de la normale dépendant de la largeur d'impulsion T, et est la position originale de la paroi du domaine. En faisant varier les largeurs d'impulsion T utilisées pour les paires d'impulsions positives et négatives, il est possible de déterminer l'écart type de la distribution de probabilité utilisée pour générer le nombre aléatoire. Il est important de noter que cet écart type peut être défini indépendamment de la moyenne de la distribution. En outre, pour de petites valeurs de T, il est probable que le rapport de la plage de conductance du dispositif, divisé par l'écart-type minimal réalisable avec la largeur d'impulsion la plus courte, sera relativement élevé. Cela permet par exemple d'obtenir des distributions plus serrées, avec un écart type plus faible, ce qui est utile pour certaines applications. Par exemple, selon l'algorithme SGLD (de l'anglais "Stochastic Gradient Langevin Dynamics", dynamiques de Langevin à gradient stochastique) décrit ci-dessous, le rapport optimal est généralement relativement faible. La figure 6 représente des graphes illustrant un autre exemple de distribution de probabilité pour un changement de position d'une paroi de domaine dans le cas où des opérations de programmation de polarités opposées sont appliquées au dispositif de mémoire résistive. Les graphes 602, 604 et 606 de la figure 6 sont similaires aux graphes 502, 504 et 506 de la figure 5, sauf que les impulsions de courant positives et négatives ont une plus grande largeur d'impulsion dans l'exemple de la figure 6, et donc la distribution de probabilité résultante p( ) est également plus large, avec une moyenne toujours égale à zéro. Dans certains cas, on peut souhaiter que la valeur aléatoire soit sélectionnée à partir d'une distribution de probabilités présentant un décalage moyen par rapport à la valeur initiale. Des solutions pour générer un tel décalage sont décrites en relation avec les figures 7 et 8. La figure 7 représente des graphes illustrant un autre exemple de distribution de probabilité pour un changement de position d'une paroi de domaine dans le cas où des opérations de programmation de polarités opposées, et une opération de programmation supplémentaire, sont appliquées au dispositif de mémoire résistive. En particulier, les graphes 702 et 704 illustrent les distributions de probabilité pour une impulsion de courant positive et une impulsion de courant négative respectivement, similaires aux graphes 502 et 504 de la figure 5. En outre, après avoir effectué les première et deuxième opérations de programmation, une troisième opération de programmation est effectuée, représentée par un graphe 706, et impliquant l'application d'une nouvelle impulsion de courant qui décale d'une quantité delta la distribution de probabilité résultante. Dans l'exemple de la figure 7, la troisième opération de programmation consiste à appliquer une nouvelle impulsion de courant négative. Comme le montre le graphe 708, la distribution de probabilité résultante est la somme des distributions de probabilité des trois graphes 702, 704 et 706 et donc le décalage (OFFSET ) déplace la distribution de probabilité dans le sens négatif. La figure 8 représente des graphes illustrant un autre exemple de distribution de probabilité pour un changement de position d'une paroi de domaine dans le cas où des opérations de programmation de polarités opposées et de durées différentes sont appliquées au dispositif de mémoire résistive. Dans l'exemple de la figure 8, seules deux opérations de programmation sont appliquées, mais les largeurs d'impulsion pendant les première et deuxième opérations de programmation sont différentes. La figure 8 illustre en particulier un exemple d'une impulsion de courant 802 (PUSH) appliquée pendant la première opération de programmation, et un exemple d'une impulsion de courant 804 (PULL) appliquée pendant la deuxième opération de programmation. Les impulsions de courant 802 et 804 ont par exemple la même amplitude. L'impulsion de courant 802, par exemple, a une largeur d'impulsion de et l'impulsion de courant 804, par exemple, a une largeur d'impulsion de + L. La partie de la largeur d'impulsion qui est commune aux deux impulsions 802 et 804 conduit par exemple à une distribution symétrique, centrée sur la valeur courante (par exemple une distribution de probabilité normale p( )) représentée par le graphe 806. La partie supplémentaire L de l'impulsion 804, conduit par exemple à une distribution de probabilité p(L) représentée par le graphe 808, qui modifie la distribution de probabilité globale de façon similaire à ce qui est illustré dans le graphe 708 de la FIG. 7 . La possibilité de définir l'écart type de la distribution de probabilité indépendamment de la moyenne de la distribution rend la solution décrite ici particulièrement avantageuse dans les procédés d'apprentissage automatique Monte Carlo par chaînes de Markov. En effet, la distribution de probabilité est la même quelle que soit la position courante de la paroi de domaine. Des exemples d'application de la solution décrite aux procédés MCMC seront maintenant décrits plus en détail en référence aux figures 9 à 15. La FIG. 9 est un graphe illustrant un exemple de l'algorithme SGLD, qui implique un échantillonnage aléatoire. En particulier, cet algorithme est un type d'approche d'échantillonnage de Monte Carlo par chaînes de Markov (MCMC) largement appliqué dans l'apprentissage automatique. Il s'agit d'une alternative probabiliste aux approches impliquant l'apprentissage de modèles de vraisemblance maximale entièrement basé sur le gradient. Selon l'apprentissage basé sur le gradient, l'algorithme est basé sur une fonction de perte et l'objectif est de déterminer un modèle optimal qui minimise la perte. L'un des principaux inconvénients des approches basées sur les pertes est que, dans le cas de paramètres de modèle de faible précision ou de mises à jour de paramètres, l'algorithme peut ne pas converger vers le modèle optimal. C'est souvent le cas lors de l'apprentissage à l'aide d'un modèle basé sur la mémoire résistive. En revanche, selon l'apprentissage MCMC, l'objectif est d'estimer la densité de probabilité d'une distribution a posteriori. En particulier, comme représenté par la figure 9, l'apprentissage MCMC est basé sur la détermination d'une approximation de la distribution a posteriori 902 de la densité de probabilité (PROBABILITY DENSITY) du modèle . Pour ce faire, à partir d'un modèle initial (INITIAL MODEL), une chaîne d'échantillons aléatoires est générée en utilisant des sauts aléatoires localisés et guidés par le gradient de Langevin. La FIG. 9 illustre un exemple de première opération d'échantillonnage aléatoire dans laquelle un gradient de poids calculé (WEIGHT GRADIENT) est ajouté au modèle initial, et l'échantillon de poids (WEIGHT SAMPLE) correspond à un échantillonnage aléatoire autour du nouveau modèle (NEW MODEL). Ce processus est répété, par exemple sur la base d'une équation de mise à jour de l'algorithme SGLD, jusqu'à ce qu'une approximation de la distribution a posteriori902 ait été générée. Dans certains cas, l'approximation est encore facilitée par des étapes de rejet selon l'algorithme de Langevin ajusté par Metropolis (MALA). Un avantage de l'approche représentée par la FIG. 9 est que l'approximation a posteriori qui en résulte peut être utilisée pour faire des prédictions précises, en particulier avec une petite quantité de données d'apprentissage bruitées, en plus de fournir des estimations d'incertitude bien calibrées liées à ces prédictions. La FIG. 10 illustre schématiquement un dispositif 1000 capable d'apprentissage machine bayésien selon un exemple de mode de réalisation de la présente description. Par exemple, le dispositif 1000 comprend un réseau de mémoires résistives 1002 (RESISTIVE MEMORY ARRAY) 1002, qui est une matrice de dispositifs de mémoire résistive 102 tels que décrits ici. La matrice 1002 est par exemple reliée à un dispositif de traitement 1004 (PROCESSING DEVICE), qui est configuré pour commander les opérations de lecture et d'écriture sur les dispositifs de mémoire résistive de la matrice 1002. Le dispositif de traitement 1004 est également relié, par exemple, à une autre mémoire 1006 (MEMORY), mise en œuvre par un ou plusieurs dispositifs de mémoire non volatile, tels qu'un disque dur et/ou une mémoire Flash, et/ou par un ou plusieurs dispositifs de mémoire volatile, tels qu'une mémoire RAM (de l'anglais "Random Access Memory", mémoire vive). Par exemple, le dispositif de traitement 1004 comprend un ou plusieurs processeurs configurés pour exécuter des instructions stockées dans la mémoire 1006 et effectuer des calculs tels que le calcul de la dérivée partielle d'un paramètre et sa conversion en largeur d'impulsion, qui peut être utilisée pour programmer un dispositif. En outre ou alternativement, les fonctions du dispositif de traitement 1004 pourraient au moins partiellement être mises en œuvre par du matériel, par exemple par un ou plusieurs ASIC (de l'anglais "Application Specific Integrated Circuit", circut intégré à application spécifique). La mémoire 1006 est également configurée, par exemple, pour stocker un ensemble de données d'apprentissage 1008 (TRAINING DATASET) utilisé pour l'apprentissage d'un modèle de réseau neuronal bayésien. Dans certains cas, la mémoire 1006 peut également stocker un modèle de réseau neuronal bayésien 1010 (BAYESIAN NN MODEL) résultant de l'opération d'apprentissage, par exemple dans le cas où la matrice de mémoire résistive 1002 est utilisée pour générer les échantillons pour le modèle, puis un ADC est utilisé pour stocker ces échantillons dans la mémoire 1010. Le modèle NN bayésien, par exemple, stocke également des paramètres liés au NN bayésien, tels que les vecteurs d'activation calculés en appliquant des fonctions d'activation aux courants produit en interne du réseau ou la moyenne d'activation et les écarts types utilisés pour effectuer la normalisation du lot. Dans certains modes de réalisation, le dispositif de traitement 1004 est également relié à une interface de commande 1012 (INTERFACE CTRL). Par exemple, après l'apprentissage, le dispositif 1000 est configuré pour mettre en œuvre une inférence à l'aide du modèle NN bayésien 1010 entraîné. L'interface de commande 1012 est par exemple reliée à un ou plusieurs capteurs (non illustrés) et/ou à un ou plusieurs actionneurs (également non illustrés). Les un ou plusieurs capteurs comprennent par exemple un ou plusieurs capteurs d'image, capteurs de profondeur, capteurs de chaleur, microphones ou tout autre type de capteur. Par exemple, les un ou plusieurs capteurs 320 comprennent un capteur d'image doté d'une matrice linéaire ou bidimensionnelle de pixels. Le capteur d'image est par exemple un capteur d'image à lumière visible, un capteur d'image infrarouge, un capteur d'image à ultrasons ou un capteur de profondeur d'image, tel qu'un capteur d'image LIDAR (de l'anglais "LIght Detection And Ranging", télédétection par laser ou détection et estimation de la distance par laser). Dans ce cas, les échantillons de données d'entrée capturés par les capteurs et fournis au dispositif de traitement 1004 sont des images, et le dispositif de traitement 1004 est configuré pour effectuer un traitement d'image sur les images afin de déterminer une ou plusieurs actions à appliquer par l'intermédiaire des actionneurs. Les un ou plusieurs actionneurs comprennent par exemple un système robotique, tel qu'un bras robotique entraîné à arracher les mauvaises herbes ou à cueillir des fruits mûrs sur un arbre, un système de direction ou de freinage automatique dans un véhicule, ou un actionneur électronique, qui est par exemple configuré pour commander le fonctionnement d'un ou de plusieurs circuits, tel que le réveil d'un circuit en mode veille, l'entrée d'un circuit en mode veille, la génération d'un texte par un circuit, l'exécution d'une opération d'encodage ou de décodage de données, etc. Selon un autre exemple, les un ou plusieurs capteurs sont des capteurs de température intérieure et/ou extérieure d'un système de chauffage et/ou de refroidissement d'un bâtiment, comprenant par exemple une pompe à chaleur comme source d'énergie principale. Dans ce cas, les un ou plusieurs actionneurs sont par exemple des circuits d'activation qui activent les systèmes de chauffage ou de refroidissement. Bien que la FIG. 10 illustre un exemple dans lequel l'apprentissage et l'inférence sont mis en œuvre par un même dispositif, dans d'autres modes de réalisation, ces fonctions pourraient être mises en œuvre par des dispositifs distincts, un dispositif étant utilisé pour l'apprentissage afin de générer le modèle NN 1010, et l'autre dispositif recevant le modèle NN 1010 entraîné, et effectuant l'inférence sur la base de ce modèle. La FIG. 11 est un organigramme illustrant des opérations d'un procédé 1100 de mise en œuvre d'une opération de mise à jour du modèle SGLD selon un exemple de mode de réalisation de la présente description. Le procédé 1100 est par exemple mis en œuvre par le dispositif 1000 de la FIG. 10 . Selon les modes de réalisation décrits ici, une opération de mise à jour du modèle SGLD est par exemple mise en œuvre sur la base de l'équation suivante : où est le modèle mis à jour, est le modèle courant, est un gradient de Langevin du modèle, calculé, par exemple, à partir d'un lot de données par rapport à un ensemble d'étiquettes. Le terme est généralement la somme d'un terme de vraisemblance et de la distribution a priori du modèle. Pour un problème de classification, la vraisemblance pourrait être l'entropie croisée sur un mini-lot de données étiquetées et l'a priori pourrait être défini comme une distribution gaussienne. Le gradient de Langevin est également couramment multiplié par un facteur lorsqu'il est utilisé dans le cadre d'un mini-lot, par exemple égal à N/n, où N est le nombre de points de données dans un ensemble d'apprentissage et n la taille du mini-lot. Dans la pratique, ces quantités sont par exemple calculées dans le domaine logarithmique, ce qui transforme les multiplications en sommes et évite les problèmes de sous-écoulement numérique. Le symbole est un taux d'apprentissage, par exemple compris entre 1e-5 et 1e-3, et est un échantillon gaussien unitaire. Dans certains cas, le taux d'apprentissage, et donc l'écart-type des échantillons gaussiens, est réduit de façon exponentielle. En variante, l'écart-type de l'échantillon gaussien ε est maintenu à une valeur fixe ou est commandé pour passer d'une valeur inférieure à une valeur supérieure en suivant une fonction cosinus. Dans une opération 1101, le gradient de Langevin est par exemple calculé comme la dérivée de l'équation suivante : où l'hyperparamètre permet d'échelonner la contribution de la vraisemblance afin de compenser le bruit des gradients stochastiques, est la vraisemblance du modèle sur les données d'un mini-lot de l'ensemble de données d'apprentissage, qui comprend par exemple des mini-lots contenant d points de données, et est l'a priori sur les paramètres du modèle. Après l'opération 1101, une opération de mise à jour des paramètres est effectuée sur chaque paramètre du modèle sur la base du gradient de Langevin calculé lors de l'opération 1101. Par exemple, cette opération est réalisée à l'aide de trois étapes de programmation 1103, 1104 et 1105 effectuées sur chaque paramètre. Dans l'étape de programmation 1103, un dispositif de mémoire résistive 102 de la matrice 1002 stockant le paramètre est programmé sur la base de premiers paramètres de programmation afin de créer une variation de conductance d'une première amplitude qui est proportionnelle au gradient de Langevin, et d'une première polarité qui est fonction du signe du gradient de Langevin. Par exemple, dans le cas du dispositif à paroi de domaine, l'amplitude est définie par la largeur de l'impulsion, et la polarité de l'impulsion de courant appliquée entre les électrodes 112 et 114 du dispositif définit le signe. Lors de l'étape de programmation 1104, après l'étape de programmation 1103, une deuxième opération de programmation du dispositif de mémoire résistive 102 est effectuée sur la base de deuxièmes paramètres de programmation afin de créer une deuxième variation de conductance d'une deuxième polarité et d'une deuxième amplitude. Par exemple, la deuxième polarité peut être identique ou opposée à la première polarité. Lors de l'étape de programmation 1105, après l'étape de programmation 1104, une troisième opération de programmation du dispositif de mémoire résistive 102 est effectuée sur la base de troisièmes paramètres de programmation afin de créer une variation de conductance d'une troisième polarité opposée à la deuxième polarité. En d'autres termes, si la variation de conductance de la deuxième polarité est une augmentation de la conductance, la variation de conductance de la troisième polarité est une diminution de la conductance, et vice versa. Les deuxième et troisième paramètres de programmation sont par exemple égaux et opposés, de sorte que les distributions de probabilité seront également égales et opposées. Par exemple, dans le cas d'un dispositif DW, les deuxième et troisième opérations de programmation sont toutes deux basées sur des impulsions de courant de même largeur et de même amplitude, mais l'une des impulsions est positive et l'autre négative. Les deuxième et troisième opérations de programmation 1104 et 1105 sont par exemple utilisées pour appliquer le bruit d'échantillonnage de l'opération de mise à jour du modèle SGLD. Par exemple, dans le cas de la programmation d'un dispositif de mémoire à paroi de domaine avec une impulsion de courant de largeur variable, l'amplitude des largeurs d'impulsion des deuxième et troisième opérations de programmation est par exemple proportionnelle à . Dans certains modes de réalisation, il serait également possible de réduire les largeurs d'impulsion des deuxième et troisième opérations de programmation de la partie bruit de la largeur d'impulsion de la première opération de programmation 1103. En d'autres termes, en supposant que la partie totale du bruit corresponde à une largeur d'impulsion E, si l'amplitude de la partie du gradient de Langevin entraîne un bruit correspondant à une largeur d'impulsion de l, les largeurs d'impulsion appliquées pendant les deuxième et troisième opérations de programmation généreront une contribution de bruit égale à (E-l). Ceci est illustré plus en détail à la FIG. 11 . La FIG. 11 représente des graphes illustrant une opération de mise à jour du modèle SGLD selon un exemple de mode de réalisation de la présente description. Le principe du SGLD est illustré par le graphe du côté gauche de la figure 11B montrant la densité de probabilité p(g) d'un modèle g, où les échantillons (croix) sont générés en se déplaçant dans la direction d'un gradient de Langevin (flèche L), puis en perturbant cette mise à jour avec un échantillon provenant d'une distribution de bruit unitaire (distribution ). Les graphes de droite de la figure 11B illustrent comment cette mise à jour peut être réalisée par une paire d'impulsions de courant en opposition de phase push-pull ("push", "pull"), qui permettent d'obtenir un échantillon de la distribution ainsi que le gradient de Langevin . En particulier, dans l'exemple de la figure 11B, l'impulsion de courant "push" met en œuvre la deuxième opération de programmation 1104, et l'impulsion "pull" met en œuvre les première et troisième opérations de programmation 1103, 1105 sous la forme d'une seule impulsion de courant "pull". Par exemple, la durée de l'impulsion de l'impulsion de courant push est égale à : où est une fonction qui convertit le bruit introduit par l'application du gradient de Langevin en une largeur d'impulsion, et cette partie représente la quantité l par laquelle les largeurs d'impulsion peuvent être raccourcies. La durée d'impulsion de l'impulsion de courant de traction est par exemple égale à où est proportionnelle au gradient de Langevin . Plus généralement, que les opérations de programmation soient ou non réalisées par des impulsions de courant ou par d'autres moyens, l'une des opérations de programmation a, par exemple, une amplitude proportionnelle à une amplitude de programmation égale à : où est maintenant une fonction qui convertit le bruit introduit par l'application du gradient de Langevin en une amplitude de programmation correspondante. En se référant à nouveau à la FIG. 11 , dans certains modes de réalisation, une valeur aléatoire est générée en lisant la conductance programmée du dispositif de mémoire résistive 102 à la suite de l'opération de programmation 1105. En outre, cette valeur aléatoire est par exemple convertie d'une valeur analogique, telle qu'une tension ou un niveau de courant, en une valeur numérique par un convertisseur analogique-numérique (non illustré) qui fait par exemple partie du circuit de commande 104. Dans des variantes de modes de réalisation, il serait possible d'effectuer la première opération de programmation 1103 après les deuxième et troisième opérations de programmation 1104, 1105, ou après la deuxième opération de programmation 1104 et avant la troisième opération de programmation 1105 et/ou de combiner la première opération de programmation avec la deuxième ou la troisième opération de programmation. Un avantage du procédé de la figure 11A pour réaliser le SGLD est que tout manque de précision disponible dans la programmation d'un dispositif de mémoire résistive, tel qu'un dispositif DW, est effectivement noyé dans le traitement de l'échantillonnage aléatoire ou même absorbé dans le bruit généré par les deux opérations de programmation, qui sont égales et opposées. Par exemple, en supposant que le facteur d'apprentissage est inférieur à 1, ce qui est généralement le cas, l'opération de racine carrée garantit que le bruit gaussien contribue davantage à la mise à jour en moyenne que le gradient de Langevin. Ce phénomène est illustré à la FIG. 12 . La figure 12 est un graphe représentant des exemples du terme de gradient de Langevin et d'échantillons gaussiens selon un exemple de mode de réalisation de la présente description. En particulier, la FIG. 12 illustre des exemples basés sur une étape typique de mise à jour du SGLD, et l'histogramme de mise à jour du poids pour toutes les synapses d'une couche est représenté. On peut observer que, dans la plupart des cas, le bruit de l'échantillonnage gaussien domine les mises à jour déterministes, ce qui correspond généralement à 95 % des cas. Pour les cas restants, typiquement égaux à environ 5% des cas, bien que la mise à jour de Langevin soit plus importante que la mise à jour du bruit gaussien, parce que le gradient est en fait si grand, il est facile d'obtenir un pas de mise à jour dans la bonne direction malgré la variabilité associée à la programmation de l'appareil. La FIG. 13 illustre schématiquement une matrice 1300 de dispositifs de mémoire résistive à paroi de domaine 102 selon un exemple de mode de réalisation de la présente description. Cette matrice de mémoires DW 1300 fait par exemple partie de la matrice de mémoires résistives 1002 de la FIG. 10 . La matrice de mémoires DW 1300 comprend M colonnes (M COLUMNS), M étant égal à 4 dans l'exemple de la FIG. 13 , et N lignes (N ROWS), N étant égal à 3 dans l'exemple de la FIG. 13 . Dans certains modes de réalisation, chaque ligne de la matrice de mémoires DW 1300 agit comme un échantillon des paramètres d'un neurone dans un réseau neuronal bayésien. Une couche de réseau neuronal entièrement connectée peut être composée d'un certain nombre de ces neurones bayésiens dans une couche, puis de plusieurs couches de ce type. Chaque neurone bayésien peut être stocké et échantillonné à l'aide d'une matrice distincte ou plusieurs neurones bayésiens peuvent partager la même matrice physique dans lequel les différents neurones utilisent différentes plages d'index de ligne pour stocker leurs échantillons. Selon une variante, plusieurs matrices telles que la matrice 1300 peuvent être utilisées comme échantillons multiples d'une couche complète dans le modèle de réseau neuronal. Chaque dispositif 102 fait partie d'une cellule de point croisé dans la matrice 1300 qui comprend également un transistor 1302 et un transistor 1304. Une ligne de tension d'entrée Vin[0] à Vin[M-1] est par exemple associée à chaque colonne, et est par exemple reliée par l'intermédiaire d'une ligne de commande correspondant à l'électrode 112 de chacun des dispositifs 102 de sa colonne correspondante. L'électrode 114 de chacun des dispositifs 102 d'une colonne donnée est par exemple reliée, par l'intermédiaire des nœuds conducteurs principaux de son transistor 1302 correspondant, à une tension de programmation Vprg[0] à Vprg[M-1] fournie sur une ligne de colonne correspondante par une unité de génération d'impulsions (PULSE GEN). Les grilles des transistors 1302 de chaque ligne sont par exemple reliées à un signal de sélection de ligne en programmation correspondant Vsp[0] à Vsp[N-1] fourni sur une ligne de commande correspondante. L'électrode supérieure 110 de chacun des dispositifs 102 d'une ligne donnée est par exemple reliée, par l'intermédiaire des nœuds conducteurs principaux de son transistor 1304 correspondant et les nœuds conducteurs principaux d'un transistor de sortie de colonne 1306, à une ligne de sortie de courant de ligne correspondante fournissant un courant de sortie correspondant iout[0] à iout[N-1]. Les grilles des transistors 1304 d'une colonne donnée sont par exemple reliées à un signal de sélection de colonne en lecture correspondant Vsr[0} à Vsr[M-1] fourni sur une ligne de commande correspondante. Les grilles des transistors 1306 sont par exemple commandées par un signal de sélection N correspondant Vsn[0] à Vsn[N-1] fourni sur une ligne de commande correspondante. L'exemple de la FIG. 13 sera décrit en supposant des paramètres non signés, c'est-à-dire une seule conductance positive par paramètre, et une configuration de matrice qui ne prend pas en charge la multiplication et l'accumulation. Dans le cas de paramètres signés, c'est-à-dire la soustraction de deux conductances positives par paramètre, deux matrices de ce type pourraient être utilisées et les courants produits par chacune pourraient être soustraits, par exemple à l'aide d'un circuit simple basé sur deux miroirs de courant empilés. La personne du métier comprendra comment ces principes peuvent être étendus aux points croisés signés, avec une paire de dispositifs et des matrices capables de MAC. Dans le cas du neurone bayésien où une matrice stocke les échantillons de ses poids d'entrée, chaque colonne de la matrice 1300 stocke par exemple tous les échantillons d'un paramètre, N échantillons étant par exemple générés par paramètre. En mode lecture, la tension Vin est par exemple appliquée à l'une des colonnes. Cette tension correspond par exemple à une caractéristique de données d'entrée. Le signal de sélection en lecture Vsr est appliqué aux grilles des transistors 1304 dans cette colonne, ce qui amène à la sortie d'un courant, iout, du côté droit de la matrice et correspondant à la multiplication de la valeur des données d'entrée par chacun des échantillons d'un paramètre. En itérant sur toutes les colonnes, il est possible d'accéder aux échantillons stockés de toutes les N lignes. Il serait également possible de lire un dispositif d'une ligne à la fois - c'est ce qui serait fait pendant la phase d'apprentissage du modèle. Cela peut par exemple être réalisé en sélectionnant une seule des lignes à l'aide du signal N de sélection Vsn. Pendant la phase d'écriture, c'est-à-dire l'apprentissage du modèle par l'algorithme SGLD, l'unité de génération d'impulsions est par exemple reliée à l'une des N lignes correspondant à l'échantillon courant en réglant le signal de sélection en programmation approprié Vsp. Dans ce cas, la tension d'entrée Vin sert de tension de référence ou de masse virtuelle. L'unité de génération d'impulsions est par exemple configurée pour calculer, pour chacun des M paramètres, la séquence d'impulsions de programmation à appliquer, où la largeur et la polarité des impulsions déterminent par exemple dans quelle mesure la paroi du domaine sera déplacée. Dans certains modes de réalisation, les impulsions sont appliquées en parallèle pour tous les M paramètres de la ligne du réseau en cours de programmation. Tous les autres signaux de sélection sont mis à la terre. Dans certains modes de réalisation, une procédure d'éclaircissement des échantillons à la volée est possible. Selon cette procédure, au lieu d'avancer d'une ligne à la fois, de nombreux échantillons sont produits à chaque ligne avant de passer à la suivante. Par conséquent, seul le dernier échantillon de chaque ligne est stocké dans le tableau, les autres ayant été "éclaircis" à la volée. Lors du passage d'une ligne à l'autre, une étape d'étalonnage est par exemple réalisée afin de rapprocher autant que possible les dispositifs de la ligne n des dispositifs correspondants de la ligne n-1. Cela peut se faire, par exemple, en lisant un dispositif de la ligne n-1 et en appliquant une impulsion au dispositif de la ligne n pour réduire la différence entre leurs conductances, et en répétant ces étapes jusqu'à ce que la différence de conductance se situe dans une tolérance acceptable. Cela peut introduire une légère erreur entre le dernier échantillon de la ligne n-1 et l'échantillon initial de la ligne n. Toutefois, dans la pratique, cette perturbation s'est avérée bénéfique pour les performances du modèle entraîné par le SGLD, car elle facilite une meilleure exploration du modèle a posteriori, en particulier s'il comporte de nombreux modes. Dans certains modes de réalisation, pour que le DW-SGLD fonctionne en continu, au lieu de s'arrêter lorsque le processus arrive à la dernière ligne du tableau, il est possible de revenir à la première ligne, ce qui permet d'écraser l'échantillon qui était précédemment stocké dans la première ligne. Cette solution est intéressante du point de vue de l'apprentissage continu et des changements dans la répartition des domaines. La figure 14 est un graphe représentant les distributions de probabilité (Probability, ) de changements discrets de la paroi du domaine (Domain-wall change, ) d'un dispositif à paroi de domaine. Dans l'exemple de la FIG. 14 , un cas est illustré dans lequel chaque dispositif à paroi de domaine 102 peut être programmé pour avoir l'un des 10 niveaux discrets distinguables avec des impulsions positives et négatives de durées T = 10, 20, 30, 40 et 50 ns, et il est donc possible de générer au moins 14 gaussiennes non chevauchantes. Dans la pratique, on a constaté que le dispositif à paroi de domaine 102 pouvait être programmé pour avoir au moins l'un des 256 niveaux discrets distinguables, ce qui permet de générer au moins 256 gaussiennes non chevauchantes - correspondant à un élément de mémoire de 8 bits. La FIG. 15 est un organigramme illustrant des opérations d'un algorithme d'apprentissage automatique 1500 basé sur MCMC selon un exemple spécifique dans lequel il est mis en œuvre à l'aide du dispositif 1000 de la FIG. 10 et de la matrice de parois de domaine 1300 de la FIG. 13 . Dans une opération 1501, une variable n est par exemple fixée à 0, et une valeur de comptage C est fixée à une valeur initiale thinning_ratio, égale par exemple à 256 ou à une autre valeur. Le rapport d'amincissement est utilisé pour réduire les besoins en mémoire et améliorer le "mélange" de la chaîne. En particulier, au lieu de stocker tous les échantillons, on procède à un amincissement en stockant, par exemple, tous les 1000 échantillons. Dans une opération 1502, par exemple, pour chaque époque e parmi une ou plusieurs époques, et par exemple, pour chaque lot b parmi un ou plusieurs lots, une opération 1503 est mise en œuvre. L'opération 1503 consiste à effectuer, pour chaque point de données d du lot, une série d'opérations 1504 à 1511. L'opération 1504 implique par exemple, pour chaque colonne c de l'ensemble des colonnes de la matrice de mémoire résistive, l'activation du signal N de sélection Vsn[n] et du signal de sélection en lecture Vsr[c], le réglage de Iout[n]=Vin[c]*G[n,c], où G[n,c] est le dispositif unique sélectionné pour la lecture qui peut avoir été précédemment écrit. Le courant de sortie Iout[n,c] est par exemple lu par un DAC et d'autres circuits périphériques connus de la personne du métier de la conception de réseaux de mémoires résistives. L'opération 1505 consiste par exemple à calculer le gradient de Langevin pour G[n]. L'opération 1506 consiste par exemple à convertir les gradients en largeurs d'impulsion T( ) et en polarités d'impulsion sign( ). L'opération 1507 consiste par exemple à désactiver le signal n de sélection Vsn[n] et le signal de sélection en lecture Vsr[c]. L'opération 1508 consiste par exemple à activer le signal de sélection en programmation Vsp[n] et à appliquer les impulsions calculées aux M dispositifs de la ligne de la matrice en parallèle. L'opération 1509 consiste par exemple à appliquer la même paire d'impulsions de polarité positive et négative T( ) à chacun des M dispositifs. L'opération 1510 consiste par exemple à décrémenter la valeur de comptage C (C=C-1). L'opération 1511 consiste par exemple à déterminer si C est égal à 0 (C==0) et, dans l'affirmative, si n est égal au nombre maximal de lignes MAX_ROWS, autrement dit s'il s'agit de la dernière ligne de la matrice, la variable n est ramenée à zéro, sinon n est incrémenté et C est réinitialisé à thinning_ratio, et un étalonnage de la ligne n est effectué. Par exemple, si l'on passe de la ligne n à la ligne n+1, un dispositif de la ligne n+1 sera lu en activant la colonne Vsr correspondante. Sur la base de la différence entre les conductances de ces deux dispositifs, une largeur d'impulsion, ou un nombre d'impulsions fixes, est calculée pour déplacer le dispositif de la ligne n+1 vers celui de la ligne n. Cette impulsion est par exemple appliquée en sélectionnant la ligne correcte à l'aide du signal Vsp, puis en appliquant l'impulsion calculée au dispositif. Cette opération est par exemple réalisée pour chaque dispositif jusqu'à ce qu'un nombre maximal d'itérations ait été atteint ou que la différence de conductance se situe dans une marge d'erreur tolérable. Une autre solution consiste à lire tous les dispositifs d'une ligne, puis à les programmer en parallèle. La FIG. 16 est un organigramme illustrant un procédé 1600 de génération d'une prédiction mise en œuvre à l'aide du dispositif 1000 de la FIG. 10 et de la matrice de murs de domaine 1300 de la FIG. 13 , selon un exemple de mode de réalisation de la présente description. Dans une opération 1601, tous les signaux de sélection n Vsn sont par exemple activés et tous les signaux de programmation de sélection Vsp sont par exemple désactivés. Dans une opération 1602 suivant l'opération 1701, pour chaque colonne c, le signal de sélection en lecture Vsr[c] est par exemple activé, un courant de sortie Iout[:] est par exemple défini comme Vin[c]*G[:c], et le courant de sortie Iout[:] est par exemple stocké, par exemple après une conversion analogique-numérique. Cette valeur est par exemple la distribution de prédiction d'un paramètre. Dans certains modes de réalisation, l'opération 1602 comprend en outre une étape pendant laquelle les valeurs des courants de sortie Iout sont additionnées, par exemple à l'aide d'un accumulateur. Cette somme est ensuite, par exemple, traitée par une activation afin de calculer les vecteurs d'activation séquentiellement pour chaque neurone d'un réseau neuronal, puis de calculer les sorties. Dans une opération 1603, des statistiques sont par exemple générées, telles que les moyennes de distribution (pour les prédictions) et l'entropie. Dans le cas où le modèle est un neurone unique, par exemple un modèle de régression logistique, les statistiques sont par exemple calculées directement dans iout. Dans d'autres cas, on évalue par exemple comment les courants s'additionnent pour former des vecteurs d'activation et comment ces vecteurs d'activation se propagent vers l'avant du modèle, par exemple en générant des tensions pour d'autres réseaux qui stockent les paramètres de ces neurones et couches ultérieurs. Par exemple, l'entropie des prédictions additionnées de chaque échantillon est utilisée pour quantifier l'incertitude du modèle. Les figures 17 à 20 illustrent les résultats obtenus à l'aide du procédé décrit ici. En particulier, l'algorithme décrit a été mis en œuvre à l'aide d'un modèle de dispositif qui limite la plage de conductance et modélise les mises à jour de Langevin comme des échantillons gaussiens dans une plage donnée de précision des bits, c'est-à-dire que deux dispositifs de 4 bits signifient qu'une mise à jour peut atterrir n'importe où dans une distribution gaussienne qui est 1/32 de la plage de conductance (c'est-à-dire qu'à trois écarts-types, la valeur est 1/32 de la plage de conductance). Le modèle est évalué en termes de détection hors distribution MNIST (Mixed National Institute of Standards and Technology) et KMNIST sur sa capacité à classer correctement les chiffres MNIST non vus et à détecter la présence de chiffres qui ne correspondent pas aux classes (celles du KMNIST) observées dans son ensemble d'apprentissage - un exemple de données avec et sans distribution est illustré à la FIG. 17 . La FIG. 18 montre les résultats (résultat - "SCORE/1.0" en fonction du nombre de bits par dispositif - "NO. BITS PER DEVICE") lorsque la précision du dispositif DW passe de 3 bits à 11 bits, et quantifie l'impact de la précision de la mise à jour de Langevin. Les résultats montrent l'impact sur la précision (courbe 1802) et la détection hors distribution (courbe 1804) lorsque la précision du dispositif DW passe de 11 bits à 3 bits. Au-dessus de 3 bits, l'impact sur la précision est négligeable, tandis que la précision plus faible semble en fait favoriser les capacités de détection des erreurs de distribution. La région 1806 de la courbe montre où l'absence de saut des mises à jour du gradient (c'est-à-dire la non programmation du dispositif si la mise à jour est inférieure à un certain seuil) a été importante pour la convergence de l'échantillonneur. La FIG. 19 montre le résultat ("SCORE/1.0") en fonction du nombre d'échantillons ("NO. SAMPLES"), et montre l'effet de la taille de la matrice (c'est-à-dire le nombre d'échantillons stockés - correspondant soit au nombre de lignes, soit au nombre de matrices si on utilise une matrice par échantillon de couche) pour un rapport d'éclaircissement de 256 (courbe 1902) et un rapport d'éclaircissement de 50 (courbe 1904). L'avantage décroissant d'un plus grand nombre d'échantillons est clairement visible, de même que l'importance des grands taux d'éclaircissement à la volée pour la capacité du modèle à détecter les données hors distribution. La précision n'est pas représentée ici, mais l'effet du nombre d'échantillons n'a pas eu d'impact important au-delà de 8 échantillons. La FIG. 20 montre des courbes de sensibilité et de spécificité représentant la précision de la détection à l'intérieur et à l'extérieur de la distribution (IN DIST. ACC./OUT DIST. ACC.), à mesure que le seuil d'entropie est augmenté, du modèle avec 128 échantillons et des mises à jour de Langevin d'une précision de 4 bits par rapport à un modèle déterministe de précision à virgule flottante. La courbe 2002 représente un réseau neuronal bayésien EPI (incertitude épistémique), tandis que la courbe 2004 représente un réseau neuronal Det (modèle déterministe). Ici, une comparaison est faite pour un modèle de précision à virgule flottante à 32 bits, qui démontre que le modèle SGLD, même à 4 bits, est significativement meilleur pour reconnaître les données hors distribution qu'un modèle déterministe entraîné par descente de gradient stochastique. Un point 2006 sur la courbe 2006 représente une lecture AUC LAMA = 0,974, où AUC est l'acronyme de l'anglais "Area Under Curve", l'aire sous la courbe, et un point 2108 sur la courbe 2002 représente une lecture AUC det = 0,915. L'incertitude épistémique de chaque point de données non vu est calculée et comparée à une valeur seuil. Cette courbe est générée par des valeurs de balayage pour la valeur seuil, puis en additionnant l'aire sous la courbe, il est possible de déterminer le nombre AUC . Un avantage des modes de réalisation décrits ici est que la solution basée sur des dispositifs à mémoires résistives pour la génération de valeurs aléatoires est facilement extensible pour les applications dans lesquelles un nombre relativement important de nombres aléatoires doit être généré en parallèle. En outre, il est possible de régler les paramètres de la distribution de probabilité des nombres aléatoires générés, tels que la moyenne et l'écart type de la distribution de probabilité, et en particulier, il est possible de décorréler le réglage de l'écart type de la distribution de probabilité de la moyenne de la distribution de probabilité. Divers modes de réalisation et variantes ont été décrits. La personne du métier comprendra que certaines caractéristiques de ces divers modes de réalisation et variantes pourraient être combinées, et d’autres variantes apparaîtront à la personne du métier. Par exemple, les mises à jour de la paroi du domaine pourraient être réalisées sur la base des nombres d'impulsions au lieu de la largeur d'impulsion. Dans ce cas, une impulsion fixe est par exemple appliquée, avec une certaine polarité, un certain nombre de fois et un très grand nombre d'organisations en matrice et de stratégies de lecture et d'écriture pourraient être utilisées. En outre, l'amincissement pourrait être réalisé d'une façon différente de l'échantillonnage et du comptage. Par exemple, une métrique combinant la vraisemblance de l'échantillon et la distance euclidienne entre les représentations internes du modèle, c'est-à-dire à l'avant-dernière couche du modèle, pourrait être utilisée pour réduire le nombre total d'échantillons à stocker. En outre, au lieu d'utiliser le SGLD, on pourrait utiliser l'algorithme de Langevin ajusté par Metropolis (MALA), selon lequel une étape d'acceptation/de rejet est ajoutée après chaque échantillon. Cette acceptation est par exemple calculée sur la base du produit des rapports des vraisemblances et des priorités des modèles proposés et précédemment acceptés. Toutefois, dans MALA, l'échantillonnage est effectué à chaque fois à partir du même point de départ, alors que certaines technologies de mémoire résistive, telles que les dispositifs DW, n'offrent pas de moyen de stocker cette valeur, qui sera donc oubliée après la première génération de nombres aléatoires, et plus le modèle est échantillonné après des étapes de rejet, plus il s'éloignera du point de départ. Par conséquent, une stratégie d'atténuation pourrait consister à limiter le nombre d'échantillons où, par exemple, le seuil de probabilité est réduit à un nombre plus petit au fur et à mesure que le nombre de rejets augmente. Il convient également de noter que le calcul de l'a priori est un processus relativement coûteux puisqu'il nécessite la lecture de chaque paramètre à chaque mini-lot. Il peut également, dans certains cas, conduire à un taux de rejet élevé qui peut avoir un impact négatif sur l'efficacité de l'algorithme. En tout état de cause, les limites physiques de la conductance imposent naturellement qu'un a priori sur les paramètres aient une troncature uniforme. Dans le cas d'un tel a priori uniforme, puisque tous les paramètres sont également probables, il n'est pas nécessaire de calculer l'a priori. Par conséquent, dans certains modes de réalisation, il peut être préférable d'utiliser un a priori uniforme (en fait aucun a priori) sur le modèle si cela n'est pas important pour la tâche. En outre, des paires d'impulsions non symétriques pourraient être appliquées afin de tenir compte des changements non linéaires de la conductance, qui peuvent se produire dans des technologies telles que la PCM, et en apportant une asymétrie de cette façon, on garantit que la distribution du bruit est symétrique et centrée sur la valeur courante. Enfin, la mise en œuvre pratique des modes de réalisation et variantes décrits est à la portée de la personne du métier à partir des indications fonctionnelles données ci-dessus. Dispositif configuré pour générer une valeur aléatoire, le dispositif comprenant : un dispositif de mémoire résistive (102) capable d'être programmé de façon incrémentielle ; et un circuit de commande (104) configuré pour : - effectuer une première opération de programmation du dispositif de mémoire résistive avec les premiers paramètres de programmation afin de générer une première variation de conductance d'une première polarité dans le dispositif de mémoire résistive ; - effectuer une deuxième opération de programmation du dispositif de mémoire résistive avec les deuxièmes paramètres de programmation afin de générer une deuxième variation de conductance d'une deuxième polarité dans le dispositif de mémoire résistive, la deuxième polarité étant la polarité opposée à la première polarité ; et - générer la valeur aléatoire en lisant une valeur de conductance du dispositif de mémoire résistive après les première et deuxième opérations de programmation. Dispositif selon la revendication 1, dans lequel le circuit de commande (104) est en outre configuré pour effectuer une conversion analogique-numérique sur la valeur de conductance lue afin de générer une valeur numérique aléatoire. Dispositif selon la revendication 1 ou 2, dans lequel une amplitude des premiers paramètres de programmation est différente d'une amplitude des deuxièmes paramètres de programmation. Dispositif selon la revendication 3, dans lequel le dispositif de mémoire résistive est un dispositif à paroi de domaine, et une largeur d'impulsion, ou un nombre d'impulsions, appliquée au dispositif à paroi de domaine pendant la première opération de programmation est différente d'une largeur d'impulsion, ou d'un nombre d'impulsions, appliquée au dispositif à paroi de domaine pendant la deuxième opération de programmation. Dispositif selon la revendication 3 ou 4, dans lequel le circuit de commande (104) est configuré pour mettre en œuvre une opération de mise à jour du modèle bayésien, dans laquelle l'amplitude de l'une des première ou deuxième opérations de programmation est basée sur l'amplitude d'un gradient de Langevin, et la polarité de l'une des première et deuxième opérations de programmation est basée sur le signe du gradient de Langevin. Dispositif selon la revendication 5, dans lequel l'amplitude de ladite une des première ou deuxième opérations de programmation est proportionnelle à une amplitude de programmation égale à : où est un gradient de Langevin, est un taux d'apprentissage, et est une fonction qui convertit le bruit introduit par l'application du gradient de Langevin en une amplitude de programmation. Dispositif selon la revendication 1 ou 2, dans lequel une amplitude des premiers paramètres de programmation est la même qu'une amplitude des deuxièmes paramètres de programmation, le circuit de commande (104) étant en outre configuré pour effectuer une troisième opération de programmation du dispositif de mémoire résistive avant la première opération de programmation ou après la deuxième opération de programmation. Dispositif selon la revendication 7, dans lequel le circuit de commande (104) est configuré pour mettre en œuvre une opération de mise à jour du modèle bayésien, dans lequel l'amplitude de ladite troisième opération de programmation est basée sur l'amplitude d'un gradient de Langevin, et la polarité de la troisième opération de programmation est basée sur le signe du gradient de Langevin. Procédé de génération de valeurs aléatoires, comprenant : - l'exécution, par un circuit de commande (104), d'une première opération de programmation d'un dispositif de mémoire résistive (102) avec des premiers paramètres de programmation afin de générer une première variation de conductance d'une première polarité dans le dispositif de mémoire résistive, le dispositif de mémoire résistive étant capable d'être programmé de façon incrémentielle ; - l'exécution, par le circuit de commande (104), une deuxième opération de programmation du dispositif de mémoire résistive (102) avec les deuxièmes paramètres de programmation afin de générer une deuxième variation de conductance d'une deuxième polarité dans le dispositif de mémoire résistive, la deuxième polarité étant la polarité opposée à la première polarité ; et - la génération de la valeur aléatoire en lisant, par le circuit de commande (104), une valeur de conductance du dispositif de mémoire résistive à la suite des première et deuxième opérations de programmation. Procédé selon la revendication 9, comprenant en outre l'exécution d'une conversion analogique-numérique sur la valeur de conductance lue afin de générer une valeur numérique aléatoire. Procédé selon la revendication 9 ou 10, dans lequel une amplitude des premiers paramètres de programmation est différente d'une amplitude des deuxièmes paramètres de programmation. Procédé selon la revendication 11, dans lequel le dispositif de mémoire résistive est un dispositif à paroi de domaine, et une largeur d'impulsion, ou un nombre d'impulsions, appliquée au dispositif à paroi de domaine pendant la première opération de programmation est différente d'une largeur d'impulsion, ou d'un nombre d'impulsions, appliquée au dispositif à paroi de domaine pendant la deuxième opération de programmation. Procédé de mise en œuvre d'une opération de mise à jour d'un modèle bayésien comprenant le procédé selon la revendication 11 ou 12, dans lequel l'amplitude de l'une des première ou deuxième opérations de programmation est basée sur l'amplitude d'un gradient de Langevin, et la polarité de l'une des première et deuxième opérations de programmation est basée sur le signe du gradient de Langevin. Procédé selon la revendication 9 ou 10, dans lequel une amplitude des premiers paramètres de programmation est la même qu'une amplitude des deuxièmes paramètres de programmation, le procédé comprenant en outre l'exécution, par le circuit de commande (104), d'une troisième opération de programmation du dispositif de mémoire résistive avant la première opération de programmation ou après la deuxième opération de programmation. Procédé de mise en œuvre d'une opération de mise à jour d'un modèle bayésien comprenant le procédé de la revendication 14, dans lequel l'amplitude de ladite troisième opération de programmation est basée sur l'amplitude d'un gradient de Langevin, et la polarité de la troisième opération de programmation est basée sur le signe du gradient de Langevin.