Eu tenho um conjunto de dados contendo 34 colunas de entrada e 8 colunas de saída. Uma maneira de resolver o problema é pegar as 34 entradas e criar um modelo de regressão individual para cada coluna de saída. Gostaria de saber se esse problema pode ser resolvido usando apenas um modelo, particularmente usando a Rede Neural.
Eu usei um perceptron de múltiplas camadas, mas isso precisa de vários modelos, assim como a regressão linear. O aprendizado de sequência para sequência 1 pode ser uma opção viável? Eu tentei usar o TensorFlow, ele não parece ser capaz de lidar com valores flutuantes.
Qualquer sugestão para resolver esse problema usando apenas um modelo unificado, especialmente usando redes neurais, será apreciada.
- Ilya Sutskever, Oriol Vinyals e Quoc V. Le (2014). Aprendizagem sequência a sequência com redes neurais. Avanços nos sistemas de processamento de informações neurais , 27. ( pdf )
Respostas:
Uma rede neural com múltiplos resultados assume a forma
Ou seja, você estaria assumindo que cada resultado compartilha TODOS os parâmetros nas camadas ocultas e possui apenas parâmetros diferentes para pegar a variável derivada mais alta e relacioná-la ao resultado.
Essa é uma suposição realista para o seu contexto?
fonte
No começo, pensei que o comentário do generic_user era um impedimento, mas percebi que não era:
Se eu treinar d redes diferentes em d saídas diferentes, então cada um vai estar apto para essa dimensão sem se importar com os outros.
Mas se eu treinar uma rede com saídas d e usar todas as saídas para retropropagação, cada peso em cada camada da rede será ajustado para que todas as saídas d sejam mais precisas.
Ou seja: cada parâmetro de rede será ajustado por uma soma de gradientes (como cada saída varia com uma " alternância " neste parâmetro), de modo que ajustá-lo na direção escolhida para cima ou para baixo causa uma saída mais precisa em geral - mesmo se você ajustar o o peso dessa maneira faz com que algumas dimensões da saída sejam menos precisas.
Então, sim, o que finalmente distingue cada saída é apenas uma equação linear codificada na última camada, mas no treinamento de uma rede de várias saídas cada camada se tornará melhor em apresentar essa última camada com algo que permita que ele faça seu trabalho melhor . E, portanto, segue-se que os relacionamentos entre saídas serão contabilizados por essa arquitetura.
Você pode fazer melhor do que uma rede totalmente conectada, fazendo sua arquitetura refletir quaisquer relacionamentos conhecidos na saída, assim como redes profundas se saem melhor do que as rasas, explorando relacionamentos "composicionais" entre as entradas .
fonte
Você pode fazer isso com apenas uma rede neural. Mas sua rede neural deve ficar assim:
Camada de entrada: 34 nós (um por sua coluna de entrada)
Camada de saída: 8 nós (um por sua coluna de saída)
Você pode adicionar quantas camadas ocultas quiser na Rede Neural. Portanto, a Rede Neural gera 8 valores previstos e cada valor será uma regressão diferente das entradas.
fonte
Eu estava imaginando o mesmo; aqui estão minhas idéias:
Suponho que, se as saídas compartilham alguns padrões ocultos, o treinamento pode se beneficiar do aprendizado simultâneo da regressão para todas as saídas.
Seria interessante tentar uma arquitetura em que você construa uma rede neural para cada saída, mas todas as redes neurais compartilham algumas camadas (a primeira metade das camadas, por exemplo). Em seguida, você pode treinar cada rede neural ao mesmo tempo: dentro do ciclo de aprendizado, cada rede neural é treinada uma etapa (com um lote) sequencialmente.
Isso seria semelhante à transferência de conhecimento, mas com a diferença de que na transferência de conhecimento cada rede neural é totalmente treinada antes de reutilizar parte dela para treinar outra rede neural.
Aposto que alguém já pensou nisso antes, mas não tenho referência a isso.
fonte