El reto
Encuentre la red neuronal feedforward más pequeña de manera que, dado cualquier vector de entrada tridimensional con entradas enteras en , la red genera la raíz más grande (es decir, "más positiva") de la raíz polinomio con error estrictamente menor que .
Admisibilidad
La noción de admisibilidad en mi anterior desafío de golf de red neuronal parecía un poco restrictivo, por lo que para este desafío, estamos utilizando una definición más liberal de red neuronal de alimentación directa:
Una neurona es una función que se especifica mediante un vector de pesos , un sesgo , y una función de activación de la siguiente manera:
Una red neuronal de alimentación directa con nodos de entrada es una función de que se puede construir a partir de una secuencia de neuronas, donde cada toma entradas de y genera un escalar . Dado un conjunto específico de nodos de salida , entonces la salida de la red neuronal es el vector .
Dado que las funciones de activación pueden ajustarse para cualquier tarea dada, necesitamos restringir la clase de funciones de activación para mantener este desafío interesante. Se permiten las siguientes funciones de activación:
Identidad.
ReLU.
SoftPlus.
Sigmoideo.
Sinusoide.
En general, una red neuronal admisible se especifica mediante nodos de entrada, una secuencia de neuronas y nodos de salida, mientras que cada neurona se especifica mediante un vector de pesos, un sesgo y una función de activación de la lista anterior. Por ejemplo, la siguiente red neuronal es admisible, aunque no cumple con el objetivo de rendimiento de este desafío:
Nodos de entrada:
Neuronas: para
Nodos de salida:
Esta red consta de 8 neuronas, cada una con sesgo cero y activación de identidad. En palabras, esta red calcula la secuencia generalizada de Fibonacci generada por y y luego genera los números 5, 9 y 10 de esta secuencia, en ese orden.
Puntuación
Dado un número real con terminación de expansión decimal, sea el número entero no negativo más pequeño para el cual , y sea el número entero no negativo más pequeño para cuál es entero. Entonces decimos que es la precisión de .x
Por ejemplo, tiene una precisión de , mientras que tiene una precisión de .
Su puntaje es la suma de las precisiones de los pesos y sesgos en su red neuronal.
(Por ejemplo, el ejemplo anterior tiene una puntuación de 16).
Verificación
Si bien las raíces se pueden expresar en términos de la fórmula cúbica , la raíz más grande es quizás más fácilmente accesible por medios numéricos. Siguiendo la sugerencia de @ xnor, calculé la raíz más grande para cada elección de enteros , y los resultados se pueden encontrar aquí . Cada línea de este archivo de texto tiene la forma . Por ejemplo, la primera línea informa que la raíz más grande de es aproximadamente .x 3 - 10 x 2 - 10 x - 10 10.99247140445449a,b,c,root
Editar: el archivo original que publiqué tenía errores en los casos en que el polinomio exhibía una raíz múltiple. La versión actual debe estar libre de tales errores.
a
un valor distinto de cero, o incluso solo 1. Además, recomendaría poner algunos casos de prueba, dando raíces a una alta precisión para que podamos verificar que los nuestros estén dentro de 0.1. También sería bueno tener salidas para todas las entradas posibles, probablemente en un enlace, ya que eso es mucho para la publicación.
x -> a * sin(b * softplus(x) + c)
puede sobreajustar cualquier número finito de puntos de datos con x
una precisión de entero a arbitraria utilizando una frecuencia extremadamente grande y precisa.
a=0
y el cuadrático tiene dos raíces complejas?