2 points par GN⁺ 2025-05-17 | 1 commentaires | Partager sur WhatsApp
  • Brève introduction à la structure et à l’objectif d’une machine de Boltzmann
  • Définition de la fonction d’énergie et de la distribution de probabilité à l’aide de formules
  • Dérivation par différentiation des règles de mise à jour des poids et des biais
  • Explication de la méthode d’approximation de l’espérance du modèle via les phases positive et négative et l’échantillonnage de Gibbs
  • Enfin, présentation d’ensemble de l’algorithme de divergence contrastive (Contrastive Divergence)

Concepts de machine de Boltzmann et de Contrastive Divergence

  • Dans une machine de Boltzmann, on dispose d’une couche d’entrée (visible layer), d’une couche cachée (hidden layer), ainsi que d’une matrice de poids qui les relie et des vecteurs de biais propres à chacune des deux couches

Fonction d’énergie et distribution de probabilité

  • La fonction d’énergie est définie sous forme matricielle comme suit

    E(v, h) = -ΣiΣj wij vi hj - Σi bi vi - Σj cj hj
    • v : vecteur de la couche visible, h : vecteur de la couche cachée, w : poids, b/c : biais de chaque couche
  • La distribution jointe d’une machine de Boltzmann est

    P(v, h) = (1/Z) * exp(-E(v, h))
    • Z (fonction de partition) sert à normaliser la distribution de probabilité

Log-vraisemblance (log-likelihood) et dérivation

  • L’apprentissage progresse en maximisant la vraisemblance des données d’entraînement

    log(P(v)) = log(Σh exp(-E(v, h))) - log(Z)
  • La dérivée partielle de la log-vraisemblance par rapport au poids wij est

    ∂(log P(v))/∂wij = <vi hj>data - <vi hj>modèle
    • < · >data : espérance sur les données réelles
    • < · >modèle : espérance sur les données générées par le modèle

Règles d’apprentissage des poids et des biais

  • Les poids et les biais sont mis à jour comme suit
    • Δwij = η(<vi hj>data - <vi hj>modèle)
    • Δbi = η(<vi>data - <vi>modèle)
    • Δcj = η(<hj>data - <hj>modèle)
    • η est le taux d’apprentissage

Algorithme de Contrastive Divergence

  • Comme l’espérance du modèle < · >modèle est difficile à calculer directement, on utilise l’échantillonnage de Gibbs
  • Contrastive Divergence l’approxime selon la procédure suivante
    1. Phase positive : échantillonner la couche cachée h(0) à partir de P(h | v(0)=données)
    2. Phase négative : répéter k fois l’échantillonnage de Gibbs
    • En alternance, échantillonner v(t+1) ~ P(v | h(t)), h(t+1) ~ P(h | v(t))
  • Au moment de la mise à jour, on utilise la différence entre l’espérance sur les données et l’espérance du modèle
    • Δwij = η(<vi hj>data - <vi hj>modèle)
    • Δbi = η(<vi>data - <vi>modèle)
    • Δcj = η(<hj>data - <hj>modèle)

Résumé

  • L’essence de l’apprentissage d’une machine de Boltzmann, en tant que modèle fondé sur l’énergie, consiste à réduire l’écart entre l’espérance des données réelles et celle de la distribution générée par le modèle
  • La Contrastive Divergence est la méthode d’entraînement clé qui permet une approximation rapide et efficace de cet écart
  • Grâce à l’échantillonnage de Gibbs, elle relie la distribution du modèle aux données réelles et, en répétant ce processus, met à jour les poids et les biais pour que la machine de Boltzmann représente bien les données

1 commentaires

 
GN⁺ 2025-05-17
Commentaire Hacker News
  • Si je comprends bien, le Harmonium (Smolensky) a été la première restricted Boltzmann machine, sauf qu’au lieu de minimiser l’« energy », l’idée était de maximiser la « harmony ». Quand Smolensky, Hinton et Rumelhart collaboraient, ils appelaient cela la « goodness of fit ». L’article sur le Harmonium est vraiment une lecture impressionnante. Hinton est devenu une superstar de l’IA, et Smolensky a écrit un long livre lié à la linguistique. Je me demande si quelqu’un en sait plus sur cette histoire

  • Présentation d’un article intéressant sur David Ackley. Le T2 Tile Project vaut aussi le détour

    • L’essentiel, c’est qu’un très grand nombre de personnes participent à ce genre d’avancées importantes. Les doctorants apportent énormément de contributions, et leurs travaux sont ensuite développés davantage. Je ne comprends pas pourquoi on considère la recherche comme du gaspillage aux États-Unis, alors qu’elle a fait progresser énormément de choses
  • C’est l’auteur. Merci pour les nombreux commentaires, je ne m’attendais pas à ce que cela devienne aussi populaire. Je corrige des fautes de frappe, des problèmes d’espacement, de défilement, etc., merci de les avoir signalés

    • Les fautes de frappe ont été corrigées, et c’est maintenant bien plus agréable à consulter sur mobile
  • J’ai lu le titre comme « A Tiny Boltzmann Brain ». Mon cerveau naturel a immédiatement résolu la confusion. J’ai supposé qu’il s’agissait d’une expérience visant à voir si l’on pouvait faire quelque chose de significatif en attribuant aléatoirement des poids à un tout petit modèle. Je me disais que plus le modèle est petit, plus la probabilité relative d’obtenir quelque chose d’intéressant par génération aléatoire est élevée. Mon intuition était fausse, mais je ne me décourage pas. Je propose une nouvelle famille de modèles, l’« Unbiased-Architecture Instant Boltzmann Model » (UA-IBM). J’imagine qu’un jour, avec un ordinateur quantique suffisamment grand, on pourra superposer dans un état quantique l’ensemble du dataset ainsi que tous les paramètres et toutes les architectures du modèle, puis faire l’inférence d’un seul coup. Quelqu’un aurait-il des qubits en trop pour tenter cette expérience ? (Il y a d’ailleurs une certaine ironie au fait que tout est quantique, mais qu’il reste encore difficile d’en tirer un usage réellement efficace. Et je m’amuse aussi à imaginer par quels chemins sociaux et technologiques passerait une civilisation extraterrestre qui évoluerait d’un simple capteur quantique unique vers des êtres dotés d’un système nerveux entièrement quantique)

    • Pauvres formes de vie quantiques. Elles seraient condamnées à toujours attendre longtemps des calculs, faute de pouvoir accéder à des modèles d’exécution plus rapides que leur propre vitesse de pensée
    • Quelqu’un fait remarquer que les ordinateurs quantiques ne fonctionnent pas comme ça
  • L’explication est excellente. À noter toutefois que le défilement à la souris est beaucoup trop sensible (j’imagine que sur mobile, ça va sans doute). À chaque mouvement de scroll, j’étais propulsé à la première ou à la dernière page, ce qui était gênant. Heureusement, j’ai pu tout lire normalement avec les touches du clavier

  • Si je comprends bien, contrairement aux réseaux de neurones utilisés aujourd’hui, il faut ici du Gibbs sampling pour mettre à jour les poids, plutôt qu’une passe forward/backward basée sur le gradient. Je me demande si quelqu’un sait pourquoi

    • À mon avis, le Gibbs sampling sert à approximer l’espérance sous la distribution du modèle. Pour calculer le gradient de la log-vraisemblance, il faut intégrer sur la distribution, ce qui est impossible à faire directement. C’est un peu comme dans les VAE, où l’on tire des échantillons représentatifs via MCMC. En deep learning, on estime le gradient à partir de batches du dataset, mais dans un RBM, on a besoin de l’espérance d’une distribution de probabilité explicitement modélisée
    • Je ne suis pas expert, mais j’ai reçu une petite formation formelle en bayésien. On utilise souvent Gibbs quand le gradient n’est pas clair, ou quand on veut reconstruire la distribution elle-même. Chaque nœud visible dépend des nœuds cachés, et les nœuds cachés influencent eux aussi les nœuds visibles, ce qui rend le gradient très complexe. Utiliser l’échantillonnage de Gibbs à partir de la vraisemblance marginale est donc bien plus simple
    • Je peux me tromper, mais je pense que c’est dû à la structure non dirigée des RBM. Contrairement à un réseau feed-forward, on ne peut pas construire de computational graph
  • Ce texte m’a rappelé de vieux souvenirs. En 1990, j’avais implémenté en C une Boltzmann machine et un perceptron, après avoir créé des nœuds de réseau neuronal en tableau avec des void pointers. À l’époque, les usages de l’« IA » consistaient à prédire la note suivante dans une mélodie MIDI, ou à reconnaître des formes de notes comme des rondes, des noires ou des croches dans une grille de points 5x9. Un taux de reconnaissance de 85 % était alors considéré comme suffisamment « bon »

    • C’est amusant de reconnaître des formes de notes sur une grille de 5x9 points. On retrouve un peu l’esprit des exemples de réseaux de neurones de 3Blue1Brown, où l’on construit tout soi-même depuis zéro. En combinant ça avec quelque chose comme Chuck, on pourrait aujourd’hui faire ce genre de programme côté client dans le navigateur
    • Je me demande aussi si le résultat sonnait musicalement correct
  • Le texte était simple et clair. Cela a fait remonter beaucoup de souvenirs. Petite autopromo un peu honteuse : j’avais fait il y a quelque temps une vidéo qui visualise le processus d’apprentissage d’un RBM

  • Démo vraiment très propre. Cela m’a rappelé avoir suivi plusieurs cours de Geoff Hinton sur les Boltzmann machines dans ses enseignements sur les réseaux de neurones. Un point à signaler toutefois : une formulation du type « une restricted Boltzmann machine n’a pas de connexions entre les neurones visibles et cachés » est trompeuse. Elle peut donner l’impression que les nœuds visibles et cachés ne sont pas reliés entre eux. Plus exactement, il n’y a pas de connexions au sein d’un même type, c’est-à-dire ni entre visibles, ni entre cachés. On peut aussi dire que les nœuds visibles et cachés n’ont pas de connexions internes avec les nœuds de leur propre type

    • En lisant « il n’y a pas de connexions internes entre neurones visibles/cachés », je me suis demandé en quoi c’était différent d’un simple MLP. Puis j’ai réalisé un peu tard qu’il fallait remonter vers l’introduction. Et je suis assez d’accord avec l’idée qu’il n’est pas très souhaitable de réinventer ou de bricoler le défilement