O desafio
Encontre a menor rede neural de avanço de forma que, dado qualquer vetor de entrada tridimensional com entradas inteiras em , a rede produz a maior raiz (ou seja, "mais positiva") da polinômio com erro estritamente menor que .
Admissibilidade
A noção de admissibilidade no meu desafio anterior sobre golfe na rede neural parecia um pouco restritiva; portanto, para esse desafio, estamos usando uma definição mais liberal de rede neural feedforward:
Um neurônio é uma função especificada por um vetor de pesos , um viés e uma função de ativação da seguinte maneira: b ∈ R f : R → R
Uma rede neural de feedforward com nós de entrada é uma função de que pode ser criada a partir de uma sequência de neurônios, em que cada recebe entradas de e gera um escalar . Dado um conjunto especificado de nós de saída , a saída da rede neural é o vetor .(
Como as funções de ativação podem ser ajustadas para qualquer tarefa, precisamos restringir a classe de funções de ativação para manter esse desafio interessante. As seguintes funções de ativação são permitidas:
Identidade.
ReLU.
SoftPlus.
Sigmoide.
Sinusóide.
No geral, uma rede neural admissível é especificada por nós de entrada, uma sequência de neurônios e nós de saída, enquanto cada neurônio é especificado por um vetor de pesos, um viés e uma função de ativação da lista acima. Por exemplo, a seguinte rede neural é admissível, embora não atenda à meta de desempenho desse desafio:
Nós de entrada:
Neurônios: para
Nós de saída:
Essa rede consiste em 8 neurônios, cada um com viés zero e ativação de identidade. Em palavras, essa rede calcula a sequência generalizada de Fibonacci gerada por e e, em seguida, gera os números 5, 9 e 10 dessa sequência, nessa ordem.
Pontuação
Dado um número real com expansão decimal final, seja o menor número inteiro não negativo para o qual e seja o menor número inteiro não negativo para qual é um número inteiro. Então dizemos que é a precisão de .x
Por exemplo, tem uma precisão de , enquanto tem uma precisão de .
Sua pontuação é a soma das precisões dos pesos e desvios na sua rede neural.
(Por exemplo, o exemplo acima tem uma pontuação de 16.)
Verificação
Embora as raízes possam ser expressas em termos da fórmula cúbica , a maior raiz talvez seja mais facilmente acessada por meios numéricos. Seguindo a sugestão do @ xnor, calculei a maior raiz para todas as opções de números inteiros , e os resultados podem ser encontrados aqui . Cada linha desse arquivo de texto é do formulário . Por exemplo, a primeira linha informa que a maior raiz de é aproximadamente .x 3 - 10 x 2 - 10 x - 10 10,99247140445449a,b,c,root
Editar: o arquivo original que publiquei teve erros nos casos em que o polinômio exibia uma raiz múltipla. A versão atual deve estar livre de tais erros.
a
diferente de zero, ou mesmo apenas 1. Além disso, eu recomendo colocar alguns casos de teste, dando as raízes à alta precisão para que possamos verificar se os nossos estão dentro de 0,1. Também seria bom ter saídas para todas as entradas possíveis, provavelmente em um link, já que isso é muito para o post.
x -> a * sin(b * softplus(x) + c)
pode super-ajustar qualquer número finito de pontos de dados com x
precisão de número inteiro a arbitrário usando uma frequência extremamente grande e precisa.
a=0
e o quadrático tem duas raízes complexas?