Apprentissage automatique: entrée unique sur un nombre variable de sorties

8

Existe-t-il un algorithme d'apprentissage automatique qui mappe une entrée unique à une liste de sortie de longueur variable? Si oui, existe-t-il des implémentations de l'algorithme pour un usage public? Sinon, que recommandez-vous comme solution de contournement?

Dans mon cas, l'entrée est un seul scalaire et la sortie est une liste de scalaires de longueur variable. Par exemple, supposons que je veuille produire une liste de ceux-ci étant donné la longueur de la liste en entrée. Alors <entrée, sortie> pourrait être <1, [1]>, <2, [1, 1]>, etc. Un petit ajustement fournirait la racine carrée de la longueur, auquel cas <2, [1, 1 , 1, 1]> serait une réponse. Remarque: l'entrée n'a pas besoin d'être liée directement à la sortie.


Pour un exemple plus complexe, supposons que je veuille apprendre la séquence du look-and-say . Les paires <entrée, sortie> valides seraient: <1, [1]>, <2, [1, 1]>, <3, [2, 1]>, <4, [1, 2, 1, 1] >, <5, [1, 1, 1, 2, 2, 1]>, etc. Mon problème est également similaire en ce sens que je peux générer plus d'exemples; Je ne suis pas limité à un ensemble fini d'exemples.

ricksmt
la source
Pouvez-vous donner un exemple de ce que vous voulez dire? Je ne sais pas si vous demandez une seule variable d'entrée mappée à plusieurs variables de sortie différentes, ou une seule variable d'entrée mappée à une liste de la même variable.
NBartley
2
Tous les exemples que vous avez montrés jusqu'à présent ont une seule sortie qui peut être mappée de manière déterministe à une liste de longueur variable. Voici la seule entrée / sortie unique: <1,1>, <2,2>, <2,4> et un simple script déterministe peut transformer cela en <1, [1]>, <2, [1,1 ]>, <2, [1,1,1,1]>. Je vous suggère de diviser le problème entre la pièce d'apprentissage automatique et la pièce déterministe.
AN6U5
Merci pour l'information supplémentaire. Cependant, je ne pense pas qu'il y ait suffisamment d'informations fournies pour formuler une réponse au-delà d'une discussion heuristique de haut niveau, comme le montre la réponse fournie. La limite illimitée exclut les algorithmes de classification comme discuté ci-dessous, donc cela ressemble plus à un problème pour un modèle de Markov caché. Mais l'exemple que vous avez fourni manque toujours d'une composante statistique qui pointe vers la solution par une méthode d'apprentissage statistique. Est-ce que la «séquence de choix» est le vrai problème ou existe-t-il un ensemble de données distribué statistiquement avec lequel vous travaillez vraiment?
AN6U5
Le vrai problème qui m'intéresse, c'est la Collatz Conjuecture . En particulier, quelles informations puis-je tirer d'un algorithme d'apprentissage essayant d'apprendre < nombre de Mersenne , séquence de grêlons>.
ricksmt
1
Hors sujet car la question est un problème déterministe de mathématiques pures refondu sous couvert de machine learning. Un échantillon statistique n'est pas fourni, mais un petit ensemble de cas d'une série mathématique infinie est référencé. L'OP espère retrouver une relation non linéaire entre l'entité en entrée et la liste des nombres premiers correspondant au numéro de Mersenne de l'entité en entrée. Ce n'est pas bien posé et cela ne fait pas partie de la liste des sujets de science des données.
AN6U5

Réponses:

2

J'essaierais de définir un algorithme de classification multi - étiquettes et de faire la norme de sortie en ajoutant des zéros. Donc, si vos données sont comme ceci: <1, 1 >, <2, [1, 1]>, <3, [2, 1]>, <4, [1, 2, 1, 1]>, <5 , [1, 1, 1, 2, 2, 1]>. Le nombre maximal de sortie est de 6. Vous pouvez donc transformer vos données en quelque chose comme: <1, [1,0,0,0,0,0]>, <2, [1, 1,0,0,0, 0]>, <3, [2, 1,0,0,0,0]>, <4, [1, 2, 1, 1,0,0]>, <5, [1, 1, 1, 2, 2, 1]>

Une autre option qui me vient à l'esprit est d'ajouter dynamiquement la limite. Disons que vous avez votre formation et votre test. Vous pouvez rechercher la plus grande longueur et créer un algorithme qui ajoute les zéros aux deux jeux de données. Supposons alors que les nouvelles données que vous souhaitez prédire aient une plus grande longueur, vous devrez alors recalculer tous les entraînements et tester pour cette nouvelle prédiction. Vous pouvez même vérifier comment l'extension de la limite affecte votre modèle.

hoaphumanoïde
la source
Ce n'est pas possible s'il n'y a pas de longueur maximale, n'est-ce pas?
ricksmt
oui, c'est un problème si vous n'avez pas de limite. Permettez-moi de modifier la réponse
hoaphumanoid
C'est une solution de contournement raisonnable. Une réponse à la première question? Existe-t-il un algorithme qui peut produire un nombre variable de sorties?
ricksmt
Je suis désolé mais ça ne me vient pas à l'esprit. Je ne sais pas comment une sortie variable pourrait être gérée mathématiquement. J'ai toujours travaillé avec des entrées et sorties fixes.
hoaphumanoid
Pas de soucis. Je n'ai jamais entendu parler d'un tel algorithme, donc je ne suis pas surpris qu'il n'ait pas encore été fait. Et pour autant que je sache, la plupart des ensembles de données qui intéressent les gens sont ou peuvent être configurés avec des longueurs d'entrée et de sortie fixes. J'attendrai quelques jours au cas où quelqu'un d'autre sache quelque chose que nous ignorons, mais c'est à peu près ce à quoi je m'attendais.
ricksmt
1

Donc, quelques façons qui peuvent être conçues:

  1. @Miguel Gonzalez-Fierro's réponse de 0-padding. probablement le plus facile à mettre en œuvre et logique.
  2. Si le remplissage n'est pas adapté à votre problème, si votre sortie est une série chronologique, vous pouvez apprendre une sorte de modèle de traduction neuronale et avoir un jeton STOP / END dans votre sortie.
  3. Avoir un modèle basé sur un générateur (comme une modification sur un VAE), puis générer tout un tas d'entrées possibles, et vous pouvez prendre n'importe quel nombre de tirages qui suffisent à certains critères (comme un mode avec peu de décalage ayant des informations conditionnelles calculées).

Il y en a probablement d'autres, mais je ne peux pas y penser en ce moment.

mshlis
la source