Aprendizaje automático: entrada única a un número variable de salidas

8

¿Existe un algoritmo de aprendizaje automático que asigne una sola entrada a una lista de salida de longitud variable? Si es así, ¿hay implementaciones del algoritmo para uso público? Si no, ¿qué recomienda como solución alternativa?

En mi caso, la entrada es un escalar único y la salida es una lista de escalares con longitud variable. Por ejemplo, supongamos que quisiera generar una lista de las unidades dada la longitud de la lista como entrada. Entonces <input, output> podría ser <1, ​​[1]>, <2, [1, 1]>, etc. Un pequeño ajuste proporcionaría la raíz cuadrada de la longitud en cuyo caso <2, [1, 1 , 1, 1]> sería una respuesta. Nota: la entrada no necesita estar directamente vinculada a la salida.


Para un ejemplo más complejo, supongamos que quiero aprender la secuencia de mirar y decir . Los pares válidos de <entrada, salida> serían: <1, [1]>, <2, [1, 1]>, <3, [2, 1]>, <4, [1, 2, 1, 1] >, <5, [1, 1, 1, 2, 2, 1]>, etc. Mi problema también es similar porque puedo generar más ejemplos; No estoy restringido a un conjunto finito de ejemplos.

ricksmt
fuente
¿Puedes dar un ejemplo de lo que quieres decir? Estoy confundido si está preguntando acerca de una sola variable de entrada asignada a múltiples variables de salida diferentes, o una sola variable de entrada asignada a una lista de la misma variable.
NBartley
2
Todos los ejemplos que ha mostrado hasta ahora tienen una única salida que puede asignarse determinísticamente a una lista de longitud variable. Aquí está la entrada única / salida única: <1,1>, <2,2>, <2,4> y un script determinista simple puede convertir esto en <1, [1]>, <2, [1,1 ]>, <2, [1,1,1,1]>. Le sugiero que divida el problema en la pieza de aprendizaje automático y la pieza determinista.
AN6U5
Gracias por la informacion adicional. Sin embargo, no creo que haya suficiente información provista para formular una respuesta más allá de una discusión heurística de alto nivel como se ve en la respuesta que se proporciona. El límite ilimitado excluye los algoritmos de clasificación como se describe a continuación, por lo que esto se parece más a un problema para un modelo de Markov oculto. Pero el ejemplo que proporcionó aún carece de un componente estadístico que apunte a la solución mediante un método de aprendizaje estadístico. ¿Es la 'secuencia de mirar y decir' el verdadero problema o hay un conjunto de datos estadísticamente distribuido con el que realmente está trabajando?
AN6U5
El problema real que me interesa es la coyuntura de Collatz . En particular, ¿qué información puedo obtener de un algoritmo de aprendizaje que intenta aprender < número de Mersenne , secuencia de granizo>.
ricksmt
1
Fuera de tema porque la pregunta es un problema determinista de matemática pura reformulado en forma de aprendizaje automático. No se proporciona una muestra estadística, sino que se hace referencia a un pequeño conjunto de casos de una serie matemática infinita. El OP espera recuperar una relación no lineal entre la función de entrada y la lista de números primos correspondientes al Número Mersenne de la función de entrada. Esto no está bien planteado, ni cae dentro de la lista de temas de ciencia de datos.
AN6U5

Respuestas:

2

Intentaría establecer un algoritmo de clasificación de múltiples etiquetas y hacer el estándar de salida agregando ceros. Entonces, si sus datos son así: <1, 1 >, <2, [1, 1]>, <3, [2, 1]>, <4, [1, 2, 1, 1]>, <5 , [1, 1, 1, 2, 2, 1]>. El número máximo de salida es 6. Por lo tanto, podría transformar sus datos en algo como: <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]>

Otra opción que se me ocurre es agregar el límite dinámicamente. Digamos que tiene su conjunto de entrenamiento y prueba. Puede buscar la longitud más grande y crear un algoritmo que agregue los ceros a ambos conjuntos de datos. Luego, supongamos que los datos nuevos que desea predecir tienen una longitud mayor, entonces deberá volver a calcular todo el entrenamiento y probar con esta nueva predicción. Incluso puede comprobar cómo la extensión del límite afecta a su modelo.

hoaphumanoid
fuente
Esto no es factible si no hay una longitud máxima, ¿correcto?
ricksmt
Sí, eso es un problema si no tienes un límite. Déjame editar la respuesta
hoaphumanoid
Esa es una solución razonable. ¿Alguna respuesta a la primera pregunta? ¿Existe un algoritmo que pueda producir un número variable de salidas?
ricksmt
Lo siento pero no se me ocurre. No sé cómo una salida variable podría manejarse matemáticamente. Siempre he trabajado con entradas y salidas fijas.
hoaphumanoid
Sin preocupaciones. Nunca he oído hablar de tal algoritmo, así que no me sorprende que aún no se haya hecho. Y hasta donde yo sé, la mayoría de los conjuntos de datos que interesan a las personas son o pueden configurarse con longitudes de entrada y salida fijas. Esperaré unos días en caso de que alguien más sepa algo que nosotros no, pero esto es más o menos lo que esperaba.
ricksmt
1

Entonces, hay un par de formas que se pueden concebir:

  1. Respuesta de @Miguel Gonzalez-Fierro de 0-padding. probablemente el más fácil de implementar y tiene sentido.
  2. Si el relleno no es adecuado para su problema, si su salida es una serie de tiempo, podría aprender una especie de modelo de traducción neural y tener un token STOP / END en su salida.
  3. Tenga un modelo basado en un generador (como una alteración en un VAE) y luego genere un montón de posibles entradas, y puede tomar cualquier cantidad de sorteos que cumplan con algún criterio (como un modo con poco cambio que tiene información condicional calculada).

Probablemente hay otros, pero no puedo pensar en ellos en este momento.

mshlis
fuente