Apprendimento automatico: input singolo per numero variabile di output


8

Esiste un algoritmo di apprendimento automatico che associa un singolo input a un elenco di output di lunghezza variabile? In tal caso, esistono implementazioni dell'algoritmo per uso pubblico? In caso contrario, cosa mi consiglia come soluzione alternativa?

Nel mio caso, l'input è un singolo scalare e l'output è un elenco di scalari con lunghezza variabile. Ad esempio, supponiamo che volessi produrre un elenco di quelli dati la lunghezza dell'elenco come input. Quindi <input, output> potrebbe essere <1, [1]>, <2, [1, 1]>, ecc. Un piccolo ritocco fornirebbe la radice quadrata della lunghezza nel qual caso <2, [1, 1 , 1, 1]> sarebbe una risposta. Nota: l'ingresso non deve essere collegato direttamente all'uscita.


Per un esempio più complesso, supponiamo che io voglia imparare la sequenza look-and-say . Le coppie <input, output> valide sarebbero: <1, [1]>, <2, [1, 1]>, <3, [2, 1]>, <4, [1, 2, 1, 1] >, <5, [1, 1, 1, 2, 2, 1]>, ecc. Anche il mio problema è simile in quanto posso generare più esempi; Non sono limitato a una serie limitata di esempi.


Puoi fare un esempio di cosa intendi? Sono confuso se stai chiedendo di una singola variabile di input mappata a più variabili di output diverse o se una singola variabile di input viene mappata su un elenco della stessa variabile.
NBartley,

2
Tutti gli esempi che hai mostrato finora hanno un singolo output che può essere mappato in modo deterministico in un elenco di lunghezza variabile. Ecco il singolo input / singolo output: <1,1>, <2,2>, <2,4> e un semplice script deterministico può trasformarlo in <1, [1]>, <2, [1,1 ]>, <2, [1,1,1,1]>. Ti suggerisco di dividere il problema nel pezzo di apprendimento automatico e nel pezzo deterministico.
AN6U5,

Grazie per le informazioni aggiuntive Tuttavia, non credo che ci siano abbastanza informazioni fornite per formulare una risposta al di là di una discussione euristica di alto livello, come si vede nella risposta fornita. Il limite illimitato preclude gli algoritmi di classificazione come discusso di seguito, quindi questo sembra più un problema per un modello di Markov nascosto. Ma nell'esempio che hai fornito manca ancora una componente statistica che punta alla soluzione con un metodo di apprendimento statistico. La "sequenza look-and-say" è il vero problema o esiste un set di dati distribuito statisticamente con cui stai davvero lavorando?
AN6U5,

Il vero problema che mi interessa è la Conjuecture di Collatz . In particolare, quali intuizioni posso ottenere da un algoritmo di apprendimento cercando di apprendere < numero di Mersenne , sequenza di grandine>.
ricksmt,

1
Fuori tema perché la domanda è un problema matematico deterministico puro rifuso nelle vesti dell'apprendimento automatico. Non viene fornito un campione statistico, piuttosto viene fatto riferimento a una piccola serie di casi di una serie matematica infinita. L'OP spera di recuperare una relazione non lineare tra la funzione di input e l'elenco dei numeri primi corrispondenti al numero di Mersenne della funzione di input. Questo non è ben posizionato, né rientra nell'elenco degli argomenti di data science.
AN6U5,

Risposte:


2

Vorrei provare a impostare un algoritmo di classificazione multilabel e rendere lo standard di output aggiungendo zeri. Quindi se i tuoi dati sono così: <1, 1 >, <2, [1, 1]>, <3, [2, 1]>, <4, [1, 2, 1, 1]>, <5 , [1, 1, 1, 2, 2, 1]>. Il numero massimo di output è 6. Quindi puoi trasformare i tuoi dati in qualcosa del tipo: <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]>

Un'altra opzione che mi viene in mente è quella di aggiungere il limite in modo dinamico. Supponiamo che tu abbia il tuo set di allenamento e test. È possibile cercare la lunghezza maggiore e creare un algoritmo che aggiunge gli zeri a entrambi i set di dati. Quindi diciamo che i nuovi dati che vuoi prevedere hanno una lunghezza maggiore, quindi dovrai ricalcolare tutti gli allenamenti e testare con questa nuova previsione. Puoi anche verificare in che modo l'estensione del limite influisce sul tuo modello.


Questo non è fattibile se non c'è lunghezza massima, giusto?
ricksmt,

sì, questo è un problema se non hai un limite. Consentitemi di modificare la risposta
hoaphumanoid,

È una soluzione ragionevole. Qualche risposta alla prima domanda? Esiste un algoritmo in grado di produrre un numero variabile di output?
ricksmt,

Mi dispiace ma non mi viene in mente. Non so come un output variabile possa essere gestito matematicamente. Ho sempre lavorato con input e output fissi.
hoaphumanoid,

Nessun problema. Non ho mai sentito parlare di un tale algoritmo, quindi non mi sorprende che non sia stato ancora fatto. E per quanto ne so, la maggior parte dei set di dati a cui le persone sono interessate sono o possono essere impostati con lunghezze di input e output fisse. Aspetterò qualche giorno nel caso in cui qualcun altro sappia qualcosa che noi non sappiamo, ma questo è più o meno quello che mi aspettavo.
ricksmt,

1

Quindi un paio di modi che possono essere concepiti:

  1. La risposta di @Miguel Gonzalez-Fierro di 0-padding. probabilmente il più semplice da implementare e ha senso.
  2. Se il padding non è sensato per il tuo problema, se il tuo output è una serie temporale, potresti imparare una sorta di modello di traduzione neurale e avere un token STOP / END nel tuo output.
  3. Avere un modello basato su un generatore (come un'alterazione su un VAE) e quindi generare un sacco di possibili input, e puoi prendere qualsiasi numero di disegni che bastano alcuni criteri (come una modalità con piccolo spostamento con alcune informazioni condizionate calcolate).

Probabilmente ce ne sono altri, ma non riesco a pensarli in questo momento.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.