Des réseaux bayésiens aux réseaux neuronaux: comment transposer une régression multivariée en un réseau multi-sorties

20

J'ai affaire à un modèle linéaire hiérarchique bayésien , ici le réseau qui le décrit.

Modèle graphique décrivant le problème

Y représente les ventes quotidiennes d'un produit dans un supermarché (observé).

X est une matrice connue de régresseurs, y compris les prix, les promotions, le jour de la semaine, la météo, les vacances.

1S est le niveau d'inventaire latent inconnu de chaque produit, ce qui pose le plus de problèmes et que je considère comme un vecteur de variables binaires, une pour chaque produit avec indiquant rupture de stock et donc l'indisponibilité du produit. Même si en théorie inconnu, je l'ai estimé par un HMM pour chaque produit, il doit donc être considéré comme connu sous le nom de X. Je viens de décider de ne pas le masquer pour un formalisme approprié.1

η est un paramètre d'effet mixte pour tout produit unique où les effets mixtes considérés sont le prix du produit, les promotions et les ruptures de stock.

b 1 b 2β est le vecteur des coefficients de régression fixes, tandis que et sont les vecteurs du coefficient d'effets mixtes. Un groupe indique la marque et l'autre indique la saveur (c'est un exemple, en réalité j'ai de nombreux groupes, mais je n'en rapporte ici que 2 pour plus de clarté).b1b2

Σ b 1 Σ b 2Ση , et sont des hyperparamètres sur les effets mixtes.Σb1Σb2

Puisque j'ai des données de comptage, disons que je traite chaque vente de produit comme une distribution de Poisson conditionnelle aux régresseurs (même si pour certains produits l'approximation linéaire tient et pour d'autres un modèle gonflé à zéro est meilleur). Dans un tel cas, j'aurais un produit ( c'est juste pour ceux qui s'intéressent au modèle bayésien lui-même, passez à la question si vous le trouvez sans intérêt ou non trivial :) ):Y

ΣηIW(α0,γ0)

Σb1IW(α1,γ1)

Σb2IW(α2,γ2) , connus.α0,γ0,α1,γ1,α2,γ2

ηN(0,Ση)

b1N(0,Σb1)

b2N(0,Σb2)

βN(0,Σβ) , connu.Σβ

λtijk=βXti+ηiXppsti+b1jZtj+b2kZtk ,

YtijkPoi(exp(λtijk))

i1,,N , ,j1,,m1k1,,m2

ZiMatrice des effets mixtes pour les 2 groupes, indiquant le prix, la promotion et la rupture de stock du produit considéré. indique des distributions de Wishart inverses, généralement utilisées pour les matrices de covariance des a priori multivariés normaux. Mais ce n'est pas important ici. Un exemple d'un possible pourrait être la matrice de tous les prix, ou on pourrait même dire . En ce qui concerne les a priori de la matrice variance-covariance à effets mixtes, je voudrais juste essayer de conserver la corrélation entre les entrées, de sorte que soit positif si et sont des produits de la même marque ou de l'un des même saveur. XppsiIWZiZi=Xiσijij

L'intuition derrière ce modèle serait que les ventes d'un produit donné dépendent de son prix, de sa disponibilité ou non, mais aussi des prix de tous les autres produits et des ruptures de stock de tous les autres produits. Comme je ne veux pas avoir le même modèle (lire: même courbe de régression) pour tous les coefficients, j'ai introduit des effets mixtes qui exploitent certains groupes que j'ai dans mes données, via le partage de paramètres.

Mes questions sont:

  1. Existe-t-il un moyen de transposer ce modèle dans une architecture de réseau neuronal? Je sais qu'il y a beaucoup de questions à la recherche des relations entre le réseau bayésien, les champs aléatoires markoviens, les modèles hiérarchiques bayésiens et les réseaux de neurones, mais je n'ai rien trouvé allant du modèle hiérarchique bayésien aux réseaux neuronaux. Je pose la question sur les réseaux de neurones car, ayant une dimensionnalité élevée de mon problème (considérons que j'ai 340 produits), l'estimation des paramètres via MCMC prend des semaines (j'ai essayé juste pour 20 produits exécutant des chaînes parallèles dans runJags et cela a pris des jours) . Mais je ne veux pas aller au hasard et donner simplement des données à un réseau de neurones sous forme de boîte noire. Je souhaite exploiter la structure de dépendance / indépendance de mon réseau.

Ici, je viens d'esquisser un réseau de neurones. Comme vous le voyez, les régresseurs ( et indiquent respectivement le prix et la rupture de stock du produit ) en haut sont entrés dans la couche cachée, tout comme les produits spécifiques (ici, j'ai considéré les prix et les ruptures de stock). PiSii(Les bords bleus et noirs n'ont pas de signification particulière, c'était juste pour rendre la figure plus claire). De plus, et pourraient être fortement corrélés tandis queY1Y2Y3pourrait être un produit totalement différent (pensez à 2 jus d'orange et du vin rouge), mais je n'utilise pas ces informations dans les réseaux de neurones. Je me demande si les informations de regroupement sont utilisées uniquement dans l'initialisation du poids ou si l'on peut personnaliser le réseau en fonction du problème.

exemple de marionnette d'un réseau neuronal

Edit, mon idée:

Initialisation possible?

Mon idée serait quelque chose comme ceci: comme auparavant, et sont des produits corrélés, tandis que est totalement différent. Sachant cela a priori je fais 2 choses:Y1Y2Y3

  1. Je préalloue certains neurones de la couche cachée à n'importe quel groupe que j'ai, dans ce cas j'ai 2 groupes {( ), ( )}.Y 3Y1,Y2Y3
  2. J'initialise des poids élevés entre les entrées et les nœuds alloués (les bords en gras) et bien sûr je construis d'autres nœuds cachés pour capturer le «caractère aléatoire» restant dans les données.

Merci d'avance pour votre aide

Tommaso Guerrini
la source
@Tomasso Guerrini ici est possible la réponse pour vous: stats.stackexchange.com/questions/4498/…
Anton Danilov
merci @AntonDanilov, malheureusement, la réponse acceptée dit: "Bien que les réseaux de neurones contiennent des" graphiques ", ils ne codent généralement pas les informations de dépendance et les nœuds ne représentent pas des variables aléatoires": /
Tommaso Guerrini
1
Avez-vous essayé Stan , ou ce n'est pas possible pour votre problème? Le Monte Carlo hamiltonien peut être de plusieurs ordres de grandeur plus rapide que l'échantillonnage de Gibbs, et s'adapte bien à des centaines (voire des milliers) de variables.
lacerbi
1
Avez-vous essayé de poser les mêmes questions à la liste de diffusion des utilisateurs Stan ? Ils sont généralement extrêmement utiles avec les aspects techniques pour faire fonctionner un modèle. Par exemple, il est possible que les problèmes dans votre cas puissent être résolus avec un meilleur paramétrage. ( Hamiltonian Monte Carlo devrait se mélanger beaucoup plus rapidement que l'échantillonnage de Gibbs.)
lacerbi
1
Il vaut probablement mieux dire que j'ai spammé cette liste de diffusion .. Merci beaucoup Luigi au fait .. Je suis dans cette situation où je n'ai plus le temps de creuser les problèmes comme je le devrais, car j'ai une date limite. Il semble que STAN soit un excellent outil, mais la courbe d'apprentissage est un peu raide pour vraiment réaliser ses performances incroyables (à partir de maintenant, j'ai réalisé sa vitesse par rapport aux JAGS)
Tommaso Guerrini

Réponses:

1

Pour mémoire, je ne vois pas cela comme une réponse, mais juste un long commentaire! La PDE (équation de chaleur) utilisée pour modéliser le flux de chaleur à travers une tige métallique peut également être utilisée pour modéliser la tarification des options. Personne à ma connaissance n'a jamais essayé de suggérer un lien entre le prix des options et le flux de chaleur en soi. Je pense que la citation du lien de Danilov dit la même chose. Les graphes bayésiens et les réseaux neuronaux utilisent le langage des graphes pour exprimer les relations entre leurs différentes pièces internes. Cependant, les graphiques bayésiens nous renseignent sur la structure de corrélation des variables d'entrée et le graphique d'un réseau neuronal indique comment construire la fonction de prédiction à partir des variables d'entrée. Ce sont des choses très différentes.
Diverses méthodes utilisées dans DL tentent de «choisir» les variables les plus importantes, mais c'est un problème empirique. Il ne nous renseigne pas non plus sur la structure de corrélation de l'ensemble des variables ou des variables restantes. Cela suggère simplement que les variables survivantes seront les meilleures pour la prédiciton. Par exemple, si l'on regarde les réseaux neuronaux, on sera conduit à l'ensemble de données de crédit allemand, qui a, si je me souviens bien, 2000 points de données et 5 variables dépendantes. Par essais et erreurs, je pense que vous constaterez qu'un filet avec seulement 1 couche cachée et utilisant seulement 2 des variables donne les meilleurs résultats pour la prédiction. Cependant, cela ne peut être découvert qu'en construisant tous les modèles et en les testant sur l'ensemble de test indépendant.

meh
la source
Je n'ai pas votre comparaison avec l'application du même modèle sur des données différentes: ici les données sont les mêmes et le modèle n'est pas l'inverse. De plus, je n'essaie pas de faire de l'inférence sur la structure de corrélation de mes variables en utilisant un réseau neuronal, qui est déjà bien réalisé grâce à l'inférence bayésienne postérieure. Le graphique était juste pour illustrer ce qui se passe dans le modèle hiérarchique, donc je ne comprends pas le truc du 'langage des graphiques' (Pourtant je vous ai peut-être induit en erreur avec le titre, mais j'en avais besoin d'un accrocheur: D)
Tommaso Guerrini
Et peut-être que je ne comprends pas votre question. Je pense toujours que le fait est que la façon dont les bords sont créés dans les deux structures de graphe n'a rien à voir l'un avec l'autre. On pourrait simplement définir un réseau neuronal avec un ensemble donné d'arêtes et de poids, mais on n'a aucune raison de penser qu'un tel réseau sera soit précis soit utile. Le cœur de la création d'un réseau neuronal est d'utiliser quelque chose qui ressemble à la rétropropagation pour laisser les données déterminer les poids «corrects».
meh
"Le graphique était juste pour illustrer ce qui se passe dans le modèle hiérarchique". Nous convenons que dans un cas, nous définissons la structure de covariance et que le modèle est très bien interprétable a posteriori, tandis que dans l'autre, nous laissons la descente en gradient faire le travail et même s'il n'est pas interprétable, il donne généralement (comme dans mon cas) de bonnes performances. Ma question est: existe-t-il un moyen de maintenir l'interprétabilité sans perdre la performance de prédiction? C'est pourquoi j'ai posé cette question sur la pile et c'est pourquoi je propose cette idée dans le montage, je cherche des idées. J'espère maintenant que c'est clair pour vous.
Tommaso Guerrini
On ne peut pas prouver un négatif, donc je ne peux pas affirmer de façon concluante qu'il n'y a pas de lien entre les graphiques des réseaux bayésiens et ceux des réseaux de neurones. Je peux dire que je n'ai aucune connaissance d'une telle connexion et que je suis profondément sceptique à l'égard de toute connexion. Alors que l'on peut utiliser la structure graphique du réseau bayésien pour donner la structure graphique du réseau neuronal, d'un point de vue du réseau neuronal, cela ne semble pas raisonnable. Je n'ai pas actuellement le temps de travailler sur les détails, mais en tant qu'expérience de réflexion, imaginez un ensemble de données où les variables indépendantes étaient toutes statistiquement
meh
Je n'ai pas actuellement le temps de travailler sur les détails, mais comme expérience de pensée, imaginez un ensemble de données où les variables indépendantes étaient toutes statistiquement significatives, mais n'étaient pas toutes corrélées. Par exemple où avec A très grand en valeur absolue et la fonction d'activation (non linéaire) du réseau. En raison de la relation non linéaire de y et de z, il se pourrait que la corrélation entre y et soit approximativement nulle. Pourtant, ils devraient faire partie de tout bon modèle. z i = A × σ - 1 ( x i ) σ z iy=xi+zizi=A×σ1(xi)σzi
meh