Eu tenho mexido no playground tensorflow . Um dos conjuntos de dados de entrada é uma espiral. Quaisquer que sejam os parâmetros de entrada que eu escolher, não importa quão ampla e profunda seja a rede neural que eu crie, não consigo encaixar na espiral. Como os cientistas de dados se encaixam em dados dessa forma?
neural-networks
classification
tensorflow
Souradeep Nanda
fonte
fonte
Respostas:
Existem muitas abordagens para esse tipo de problema. O mais óbvio é criar novos recursos . As melhores características que posso apresentar é transformar as coordenadas em coordenadas esféricas .
Eu não encontrei uma maneira de fazer isso no playground, então acabei de criar alguns recursos que devem ajudar com isso (recursos de pecado). Após 500 iterações, ele irá saturar e flutuar na pontuação de 0,1. Isso sugere que nenhuma melhoria adicional será feita e, provavelmente, eu devo aumentar a camada oculta ou adicionar outra camada.
Não é surpresa que, após adicionar apenas um neurônio à camada oculta, você obtenha facilmente 0,013 após 300 iterações. O mesmo ocorre com a adição de uma nova camada (0,017, mas após 500 iterações significativamente mais longas. Também não é surpresa, pois é mais difícil propagar os erros). Provavelmente, você pode jogar com uma taxa de aprendizado ou fazer um aprendizado adaptável para torná-lo mais rápido, mas esse não é o ponto aqui.
fonte
Idealmente, as redes neurais devem ser capazes de descobrir a função por si mesmas, sem fornecermos os recursos esféricos. Após algumas experiências, consegui alcançar uma configuração em que não precisamos de nada, exceto e . Essa rede convergiu após cerca de 1500 épocas, o que é bastante longo. Portanto, a melhor maneira ainda é adicionar recursos adicionais, mas estou apenas tentando dizer que ainda é possível convergir sem eles.X1 1 X2
fonte
Trapaceando ...arctan(y,x) r (x2+y2)−−−−−−−−√
theta
é , é .Em teoria, e devem funcionar, mas, na prática, eles de alguma forma falharam, embora, ocasionalmente, funcione.x2 y2
fonte
Este é um exemplo do playground de baunilha Tensorflow sem recursos adicionais nem modificações. A corrida para Spiral foi entre 187 e ~ 300 Epoch, dependendo. Usei a Lasso Regularization L1 para eliminar os coeficientes. Reduzi o tamanho do lote em 1 para evitar que a saída caísse demais. No meu segundo exemplo, adicionei algum ruído ao conjunto de dados e, em seguida, levantei o L1 para compensar.
fonte
A solução que cheguei após uma hora de teste geralmente converge em apenas 100 épocas .
Sim, eu sei que ele não tem o limite de decisão mais suave, mas converge muito rápido.
Aprendi algumas coisas com esse experimento em espiral:
Por coincidência, a solução que encontrei é muito semelhante à fornecida por Salvador Dali .
Por favor, adicione um comentário, se você encontrar mais intuições ou raciocínios.
fonte