Machine Learning: entrada única para número variável de saídas

8

Existe um algoritmo de aprendizado de máquina que mapeia uma única entrada para uma lista de saída de comprimento variável? Em caso afirmativo, existem implementações do algoritmo para uso público? Caso contrário, o que você recomenda como solução alternativa?

No meu caso, a entrada é um escalar único e a saída é uma lista de escalares com comprimento variável. Por exemplo, suponha que eu deseje exibir uma lista de outras, considerando o tamanho da lista como entrada. Então <entrada, saída> pode ser <1, ​​[1]>, <2, [1, 1]>, etc. Um pequeno ajuste forneceria a raiz quadrada do comprimento, caso em que <2, [1, 1 , 1, 1]> seria uma resposta. Nota: a entrada não precisa estar ligada diretamente à saída.


Para um exemplo mais complexo, suponha que eu queira aprender a sequência de dizer e dizer . Os pares válidos <entrada, saída> seriam: <1, [1]>, <2, [1, 1]>, <3, [2, 1]>, <4, [1, 2, 1, 1] >, <5, [1, 1, 1, 2, 2, 1]>, etc. Meu problema também é semelhante, pois posso gerar mais exemplos; Não estou restrito a um conjunto finito de exemplos.

ricksmt
fonte
Você pode dar um exemplo do que você quer dizer? Estou confuso se você está perguntando sobre uma única variável de entrada mapeada para várias variáveis ​​de saída diferentes ou uma única variável de entrada sendo mapeada para uma lista da mesma variável.
NBartley
2
Todos os exemplos que você mostrou até agora têm uma única saída que pode ser mapeada deterministicamente para uma lista de comprimento variável. Aqui está a entrada única / saída única: <1,1>, <2,2>, <2,4> e um script determinístico simples pode transformar isso em <1, [1]>, <2, [1,1 ]>, <2, [1,1,1,1]>. Sugiro que você divida o problema na peça de aprendizado de máquina e na peça determinística.
AN6U5
Obrigado pela informação adicional. No entanto, acho que não há informações suficientes fornecidas para formular uma resposta além de uma discussão heurística de alto nível, como visto na resposta fornecida. O limite ilimitado exclui os algoritmos de classificação, conforme discutido abaixo; portanto, isso parece mais um problema para um modelo de Markov oculto. Mas o exemplo que você forneceu ainda carece de um componente estatístico que aponte para a solução por um método de aprendizado estatístico. A 'sequência de olhar e dizer' é o problema real ou existe um conjunto de dados estatisticamente distribuído com o qual você realmente está trabalhando?
AN6U5
O problema real que me interessa é a Conferencia Collatz . Em particular, que idéias posso obter de um algoritmo de aprendizado que tenta aprender < número de Mersenne , seqüência de granizo>.
ricksmt
1
Fora do tópico porque a questão é um problema determinístico de matemática pura reformulado sob o pretexto de aprendizado de máquina. Uma amostra estatística não é fornecida, mas um pequeno conjunto de casos de uma série matemática infinita é referenciado. O OP espera recuperar um relacionamento não linear entre o recurso de entrada e a lista de números primos correspondentes ao Número Mersenne do recurso de entrada. Isso não está bem colocado, nem se enquadra na lista de tópicos de ciência de dados.
AN6U5

Respostas:

2

Eu tentaria definir um algoritmo de classificação de vários rótulos e tornar a saída padrão adicionando zeros. Portanto, se seus dados forem assim: <1, 1 >, <2, [1, 1]>, <3, [2, 1]>, <4, [1, 2, 1, 1]>, <5 , [1, 1, 1, 2, 2, 1]>. O número máximo de saída é 6. Portanto, você pode transformar seus dados em 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]>

Outra opção que me ocorre é adicionar o limite dinamicamente. Digamos que você tenha seu treinamento e teste definidos. Você pode procurar o maior tamanho e criar um algoritmo que adicione zeros aos dois conjuntos de dados. Então, digamos que os novos dados que você deseja prever tenham um tamanho maior, será necessário recalcular todo o treinamento e testar com essa nova previsão. Você pode até verificar como a extensão do limite afeta seu modelo.

hoaphumanoid
fonte
Isso não é viável se não houver comprimento máximo, correto?
ricksmt
Sim, isso é um problema se você não tiver um limite. Deixe-me editar a resposta
hoaphumanoid
Essa é uma solução razoável. Alguma resposta à primeira pergunta? Existe um algoritmo que pode produzir um número variável de saídas?
ricksmt
Sinto muito, mas isso não me ocorre. Não sei como uma saída variável pode ser gerenciada matematicamente. Eu sempre trabalhei com entradas e saídas fixas.
hoaphumanoid
Não se preocupe. Eu nunca ouvi falar desse algoritmo, então não estou surpreso que ainda não tenha sido feito. E até onde eu sei, a maioria dos conjuntos de dados nas quais as pessoas estão interessadas são ou podem ser configuradas com comprimentos fixos de entrada e saída. Vou esperar alguns dias para que outra pessoa saiba algo que não sabemos, mas isso é aproximadamente o que eu esperava.
ricksmt
1

Então, algumas maneiras que podem ser concebidas:

  1. @Miguel Gonzalez-Fierro respondeu com 0-padding. provavelmente o mais fácil de implementar e faz sentido.
  2. Se o preenchimento não for sensível ao seu problema, se sua saída for uma série temporal, você poderá aprender um tipo de modelo de tradução neural e ter um token STOP / END na saída.
  3. Tenha um modelo baseado em gerador (como uma alteração em um VAE) e, em seguida, gere várias entradas possíveis, e você pode fazer qualquer # de draws que seja suficiente para algum critério (como um modo com pouca mudança com algumas informações condicionais calculadas).

Provavelmente existem outros, mas não consigo pensar neles agora.

mshlis
fonte