[PYTHON] Introduction à Bayes non paramétrique 2 (processus de buffet indien et modèle de fonction latente)

Processus de buffet indien et modèle de fonctionnalité latente

IBP (processus de buffet indien) est utilisé pour implémenter le modèle de fonctionnalité latente.

motivation

Le but est d'implémenter un modèle de caractéristiques latentes à l'aide d'IBP. Tout d'abord, j'utiliserai un exemple de recommandation courant pour expliquer le modèle d'entités latentes (modèle à facteur linéaire?) Ici. Tout d'abord, supposons que vous ayez une matrice (X) avec des personnes verticalement et des types de films horizontaux. (Quant au composant, (i, j) est l'évaluation de j par i) À ce moment, la caractéristique latente peut être connue en se décomposant bien avec X = UV comme indiqué ci-dessous. image Par exemple, les fonctionnalités potentielles incluent des composants d'aventure, des composants mystère et des composants romance. (C'est juste une image) À ce stade, U représente le goût d'une personne pour ces composants, et V représente le type de composant de chaque film. (Utilisé pour prédire les valeurs manquantes dans le système de recommandation réel) Dans d'autres situations de traitement du langage naturel, nous pensons à la même chose pour une matrice constituée de types de documents et de mots, et dans le traitement de la voix, nous utilisons le même modèle dans le cadre de la séparation des sources sonores.

Mais combien de fonctionnalités latentes dois-je avoir? Avec un modèle déterministe, le nombre de caractéristiques latentes peut être bien déterminé, mais avec un modèle bayésien, il devient difficile de déterminer le nombre de caractéristiques latentes. Par conséquent, la motivation est d'utiliser un processus stochastique de dimension infinie (IBP) pour déterminer automatiquement le nombre de caractéristiques latentes. À première vue, ce n'est pas facile à comprendre, mais le résultat de la prévision réelle de Z est montré dans la figure ci-dessous. La gauche est le vrai Z, et la droite est le Z prédit par l'échantillonnage de gibbs. image À première vue, il peut sembler que quelque chose est différent, mais comme la position (colonne) du montant de la caractéristique est à l'origine un modèle échangeable, vous pouvez voir qu'il peut être prédit après 33 étapes.

Dans cet article, après une explication un peu plus formelle, nous passerons à la partie implémentation. Après cela, en tant que théorie, j'aborderai le processus bêta, qui est étroitement lié à l'IBP. Enfin, j'écrirai sur des exemples d'application.

la mise en oeuvre

Vous pouvez le faire en implémentant le livre non para du Dr. Sato [1] tel quel. C'est facile à comprendre, je vous recommande donc de le lire. Le code est donné ici. https://github.com/Ma-sa-ue/practice/tree/master/machine%20learning(python)/nonparabayes

Indian buffet process

Comme son nom l'indique, il représente la situation dans un restaurant indien. Lorsque j'essaye de l'échantillonner, cela ressemble à celui ci-dessous. image

Vous pouvez également obtenir ce qui précède en générant une matrice composée de 0 et de 1 comme suit.

C'est sensuellement facile et cela montre comment les gens prennent leurs plats préférés dans l'ordre. Plus précisément, les gens sont verticaux et la nourriture est horizontale. Les gens viennent à tour de rôle et prennent autant de plats qu'ils sont populaires, et j'en ai marre, alors je répète demander de nouveaux plats. $ \ Alpha $ est un hyper paramètre qui indique le degré de diffusion, et vous pouvez voir que plus il est grand, plus les plats en sortiront. À ce rythme, il semble qu'il y ait un problème d'échangeabilité, mais il est important que l'IBP soit en fait une distribution de l'histoire de la matrice binaire du modèle de génération bêta-bernoulli.

Modèle d'entités latentes à prendre en compte cette fois

Quand $ x_ {k} $ est un vecteur D-dimensionnel x_{k}\sim N(0,\sigma_{X}^{2}I),y_{k}\sim N(\sum_{k=0}^{\infty}z_{i,k}x_{k},\sigma_{y}^{2}I) Supposons que vous ayez un processus de buffet indien comme priorité de Z. En notation matricielle, $ Y = ZX + E $.

la mise en oeuvre

Tout d'abord, considérez les situations suivantes. Dans la situation ci-dessus, la gauche est Y, le milieu est Z et la droite est X. Notez que seul Y est observé. image La politique consiste à extraire les échantillons Z et X le long de la distribution conditionnelle dans l'ordre. Si vous répétez l'échantillonnage gibbs, ce sera comme suit. image Puisque les fonctionnalités sont interchangeables, vous pouvez voir qu'elles sont bien prédites. En réalité, c'est rarement que ça va comme ça.

Théorie

J'écrirai sur la relation entre l'échantillonnage du processus bêta et le processus IBP et bêta. Pour plus de détails, voir [4] et [6]. Levy process

Le processus de prélèvement est un processus stochastique avec des incréments stables et indépendants. Il s'agit d'un processus stochastique assez général et comprend divers processus stochastiques. Premièrement, la décomposition de Levy-ito permet de diviser le processus de prélèvement en un mouvement brownien avec dérive et un processus de saut. Le processus de saut est le sujet principal de cette période. Le processus de saut inclut le processus de poisson, le processus bêta, le processus gamma dans un processus de probabilité comme le saut. Tout d'abord, en tant que prémisse majeure, le processus de prélèvement qui saute de manière monotone comme celui-ci correspond à la mesure aléatoire. Et le processus de prélèvement peut être caractérisé par la mesure de prélèvement. La correspondance entre la mesure de prélèvement et la mesure aléatoire (processus de prélèvement) est importante lorsque vous souhaitez échantillonner, et vous pouvez configurer la mesure aléatoire (processus de prélèvement) par le processus de poisson tel que la mesure de prélèvement comme mesure moyenne.

Poisson process

Prenons une simulation à partir du processus de Poisson. Il existe essentiellement deux façons de simuler. La première est une méthode d'échantillonnage des personnes les unes après les autres en supposant que les gens viennent en ordre. La seconde est une méthode pour décider à l'avance du nombre de personnes qui viendront dans l'ordre et les organiser selon la mesure moyenne. Ce dernier est utilisé lors de l'échantillonnage à partir du processus Beta. Voir [7] et [8] pour plus de détails.

Beta process Envisagez un processus bêta sur $ \ Omega $. Dans le processus Beta, il s'agit de $ B (d \ omega) \ sim Beta (c \ mu (d \ omega), c (1- \ mu (d \ omega))) $. À ce stade, la mesure de prélèvement correspondant au processus bêta est lorsque $ B_ {0} $ est utilisé comme mesure de base. \nu(d\omega,dp) = cp^{-1}(1-p)^{c-1}dp B_{0}(d\omega) est. En d'autres termes, le processus bêta: B est issu du processus poisson $ (\ omega_ {i}, p_ {i}) (i = 1,2, ..) $ avec la mesure de prélèvement ci-dessus comme mesure moyenne à $ B = \ sum_ {i} Il se compose de p_ {i} \ delta_ {\ omega_ {i}} $. Malheureusement, l'intégration de (0,1) dans $ p ^ {-1} (1-p) ^ {c-1} $ n'est pas finie, nous allons donc considérer une bonne méthode. Nous avons donc constaté que $ \ nu $ peut être décomposé en utilisant $ \ pi ^ {-1} = \ sum_ {k = 0} ^ {\ infty} (1- \ pi) ^ {k} $ Je vais. Puis \nu = \sum_{k=0}\nu_{k} \nu_{k}(d\pi, d\omega)=Beta(1,c(\omega )+k)d\pi \mu_{k}(d\omega ) \mu_{k} = \frac{c(\omega)}{c(\omega)+k)}\mu(d\omega) Ce sera. Utilisez ceci pour l'échantillonnage.

Échantillonnage à partir du processus bêta

Suite à ce qui précède, l'algorithme ressemble à ceci:

  1. sample the number of points many times : n_{k}\sim Poisson(\int_{\Omega}\mu_{k}(d\omega))
  2. for each k, sample n_{k} points from \mu_{ki}:\omega_{ki}\sim\frac{\mu_{k}}{\int_{\Omega}\mu_{k}(d\omega)}
  3. sample p_{ki}\sim beta(1,c(\omega_{ki})+k)
  4. then \cup_{k=0}^{\infty }{(\omega_{ki},p_{ki})} is a realization

Par exemple, si $ \ mu_ {k} $ est uniforme, $ \ Omega = [0,1] $, $ \ int_ {\ Omega} \ mu_ {k} (d \ omega) $ est $ \ gamma $ Vous pouvez dessiner le graphique suivant. image

De plus, si vous échantillonnez plusieurs fois $ \ gamma = 10,0 $, la moyenne de $ B (\ Omega) $ sera d'environ 10.

Relation entre le processus bêta et l'IBP

Les détails sont décrits dans [4]. Dans cet article, la méthode d'échantillonnage du processus bêta est également dérivée de la relation avec ibp. Selon le théorème de De Finetti, la séquence d'observation échangeable $ Z_ {1}, ..., Z_ {n} $ P(Z_{1},...,Z_{n} )= \int[\prod_{i=1}^nP(Z_{i}|B)]dP(B) est devenu. Dans IBP, P (B) correspond au processus beta et $ P (Z_ {i} | B) $ correspond au processus poisson.

Généralisation par deux paramètres

IBP peut être généralisé davantage en ayant deux paramètres pour la distribution bêta bernoulli dans un modèle de distribution à un paramètre. Il prend également en charge la modification de c et $ \ gamma $ dans le processus bêta.

Exemple d'application

Ce n'est pas un exemple d'application d'IBP mais un exemple d'application d'un modèle d'entités latentes par décomposition matricielle, mais il est répertorié de différentes manières. C'est un résumé léger de la critique [3] de Griffiths.

Chose générale

Les modèles de facteurs linéaires tels que l'ACP probabiliste, l'analyse factorielle et le codage clairsemé sont résumés ci-dessous. http://qiita.com/masasora/items/431afb71eae60a1c826b

Système de recommandation

Il existe déjà de nombreuses pages ([10], [11], [12]) qui résument une bonne littérature, mais je vais les expliquer pour le moment. Il existe généralement trois façons de créer un système de recommandation. La première consiste à utiliser les statistiques de base telles quelles. Par exemple, recommander un magasin qui vend ou un produit qui se vend tel quel. Le second est le co-filtrage. Il existe des utilisateurs et des éléments. Par exemple, s'il est basé sur l'utilisateur, afin de prédire l'évaluation d'un certain produit (B) d'une certaine personne (A), c'est comme prendre l'évaluation de B d'une personne similaire à A et prédire l'évaluation de B par A. La troisième méthode est la décomposition matricielle. Lorsque la méthode la plus basique est X = SVD par décomposition matricielle par SVD, la matrice est décomposée en décomposant X en S et VD comme décrit ci-dessus. Cependant, en réalité, il y a des valeurs manquantes et les évaluations négatives sont étranges, il y a donc de nombreuses façons de développer davantage cela (n'est-ce plus SVD?). Bien que cela dépende de l'application, la méthode basée sur 3 est fondamentalement supérieure en ce qui concerne les performances de prédiction simples. Vous pouvez également utiliser la matrice décomposée pour découvrir des utilisateurs similaires et des films similaires. Revenant au sujet principal, IBP peut être utilisé selon 3 méthodes.

Traitement de la voix

Une application typique du traitement de la voix est le problème de la séparation des sources sonores. Notez que le prieur de X n'est pas gaussien. Par exemple, il a une distribution laplace ou une distribution t.

la biologie

La première application est la décomposition de la matrice (Z) qui représente le niveau d'expression des gènes et des cellules. Que le gène i soit exprimé ou non dans la cellule k est $ z_ {ik} $. Une autre application consiste à étudier les interactions protéiques. Que la protéine $ i $ appartienne ou non au complexe $ k $ est $ z_ {ik} $. Vous pouvez trouver des protéines similaires en utilisant la matrice décomposée. (Autrement dit, plus $ \ sum z_ {ik} z_ {jk} $ est grand, plus il est similaire.)

Les références

  1. Le livre non para du professeur Sato Les algorithmes et les questions théoriques sont résumés de manière très concise. http://www.kspub.co.jp/book/detail/1529151.html
  2. Diapositive du Dr Sato http://www.slideshare.net/issei_sato/ss-37837949
  3. Lorsque vous étudiez IBP, vous verrez certainement une critique https://cocosci.berkeley.edu/tom/papers/indianbuffet.pdf
  4. Comment créer un processus bêta hiérarchique qui décrit la relation entre le processus bêta et IBP http://www.cs.berkeley.edu/~jordan/papers/thibaux-jordan-aistats07.pdf
  5. Diverses choses sont écrites comme nonpara pour l'apprentissage automatique, y compris le processus bêta. Même auteur que ci-dessus. (Disciple de Jordan) http://digitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2008-130.pdf
  6. Il décrit la méthode d'échantillonnage du processus Beta et du processus gamma. http://people.ee.duke.edu/~lcarin/Yingjian_ICML_2012.pdf
  7. Le processus de Poisson est étonnamment facile à comprendre. (Wikipédia) https://en.wikipedia.org/wiki/Poisson_point_process#Simulation
  8. A propos du processus poisson Matériel de cours à RIKEN? http://toyoizumilab.brain.riken.jp/hideaki/res/lecture/point_process.html
  9. Il existe un chapitre cohérent sur le modèle factoriel linéaire. (Livre d'apprentissage en profondeur de Bengio et al.) http://www.deeplearningbook.org/contents/linear_factors.html
  10. Le modèle recommandé est organisé de manière simple à comprendre. Http://ameblo.jp/principia-ca/entry-10980281840.html
  11. Le modèle recommandé est organisé de manière simple à comprendre. http://smrmkt.hatenablog.jp/entry/2014/08/23/211555
  12. Manuel de cours Coursera Il y a une partie qui résume le modèle recommandé http://infolab.stanford.edu/~ullman/mmds/book.pdf
  13. Si la théorie de la probabilité théorique de la mesure est un livre japonais, williams est une norme dans le livre étranger de M. Funaki (je n'ai jamais étudié strictement le livre du processus de probabilité du temps continu, mais en mouvement brownien, le livre de hereve est commun Je pense que la personne qui dit «pour la finance» n'est pas stricte, mais c'est facile à lire. Qu'est-ce qu'un bon manuel de processus de point?)
  14. Manuel de markov chain monte calro Le processus de point est également soigneusement rédigé du point de vue des statistiques de calcul http://www.mcmchandbook.net/HandbookTableofContents.html

Recommended Posts

Introduction à Bayes non paramétrique 2 (processus de buffet indien et modèle de fonction latente)
Introduction aux baies non paramétriques
[Introduction au modèle de maladie infectieuse] J'ai essayé de m'adapter et de jouer
[Introduction à Tensorflow] Comprendre correctement Tensorflow et essayer de créer un modèle
[Introduction à Python3 Jour 1] Programmation et Python