Los anteriores desafíos de golf de redes neuronales ( esto y aquello ) me inspiraron a plantear un nuevo desafío:
El reto
Encuentra la red neuronal feedforward más pequeño de tal manera que, dado cualquier vector 4-dimensional de entrada con las entradas de número entero en , las salidas de la red con Un error de coordenadas estrictamente menor que .
Admisibilidad
Para este desafío, una red neuronal de avance se define como una composición de capas . Una capa es una función que se especifica mediante una matriz de pesos , un vector de sesgos y una función de activación que se aplica coordenada- sabio:
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.
Tangente hiperbólica.
Sigmoideo.
En general, una red neuronal admisible toma la forma para algunos , donde cada capa está especificada por los pesos , sesgos , y una función de activación de la lista anterior. Por ejemplo, la siguiente red neuronal es admisible (aunque no satisface el objetivo de rendimiento de este desafío, puede ser un gadget útil):
Este ejemplo exhibe dos capas. Ambas capas tienen sesgo cero. La primera capa usa activación ReLU, mientras que la segunda usa activación de identidad.
Puntuación
Tu puntaje es el número total de cero pesos y sesgos .
(Por ejemplo, el ejemplo anterior tiene una puntuación de 16 ya que los vectores de sesgo son cero).
fuente
Respuestas:
Octava ,
96 88 87 84 76 5450 pesos y sesgosEsta red neuronal de 6 capas es esencialmente una red de clasificación de 3 pasos construida a partir de una red
min
/max
componente muy simple . Es básicamente la red de ejemplo de wikipedia como se muestra a continuación, con una pequeña modificación: las dos primeras comparaciones se realizan en paralelo. Para evitar números negativos a través de ReLU, solo sumamos 100 primero, y luego restamos 100 nuevamente al final.Entonces, esto solo debe considerarse como una línea de base, ya que es una implementación ingenua. Sin embargo, ordena todos los números posibles que no tienen una magnitud demasiado grande perfectamente. (Podemos ajustar el rango reemplazando 100 con otro número).
Pruébalo en línea!
componente max / min
Hay una manera (
considerablemente menos elegante, más elegante ahora, ¡gracias @xnor!) De encontrar el mínimo y el máximo de dos números usando menos parámetros:Esto significa que tenemos que usar muchos menos pesos y sesgos.
Gracias @Joel por señalar que es suficiente hacer que todos los números sean positivos en el primer paso y revertirlo en el último, lo que hace -8 pesos. ¡Gracias @xnor por señalar un método máximo / mínimo aún más corto que genera -22 pesos! ¡Gracias @ DustinG.Mixon por la sugerencia de combinar ciertas matrices que resultan en otros -4 pesos!
Pruébalo en línea!
fuente
(a - relu(a-b), b + relu(a-b))
?