¿Una red ReLu de una sola capa sigue siendo un aproximador universal?

¡Sí lo es!

Técnicamente, el “aproximador universal” es engañoso. Puedo construir una función que una red neuronal no puede aproximarse a una precisión arbitraria. Se demostró que aproxima funciones continuas con precisión arbitraria. En realidad, una función que es continua en casi todos los puntos puede aproximarse de manera arbitraria.

Veamos por qué puede aproximar cualquier función razonable

Aquí tenemos alguna función arbitraria. Verá a continuación que podemos aproximarlo arbitrariamente de cerca usando rectángulos.

Imagen de: Riemann sum – Wikipedia

Eso significa que si podemos aproximar estos rectángulos de manera arbitraria, podemos aproximarnos a casi cualquier cosa de manera arbitraria.

¡Oh mira! ¡Aquí está uno de esos rectángulos ahora!

En realidad, mentí. Eso no es un rectángulo. Esa es en realidad una combinación lineal de cuatro activaciones ReLU.

x = 0: 0,01: 5;
plot (x, 100 * (max (0, x-1) -max (0, x-1.01) – (max (0, x-2) -max (0, x-2.01))))

Solo se necesitan dos líneas de código MATLAB.

De hecho, si desea un rectángulo de altura [matemática] h [/ matemática] en [matemática] [a, b] [/ matemática], puede hacer lo siguiente:

[matemáticas] \ frac {h} {\ epsilon} * (max (0, xa) -max (0, x- (a + \ epsilon)) – max (0, xb) + max (0, x- (b + \ epsilon))) [/ math]

¡Y eso es!

Aquí puedes ver que en realidad no son rectángulos. Para el tercero, hice epsilon más grande y marcó una gran diferencia.

rect = @ (h, a, b, epsilon) h / epsilon * (max (0, xa) -max (0, x- (a + epsilon)) – max (0, xb) + max (0, x- (b + épsilon)))
plot (x, rect (1,1,2, .01) + rect (2,2,3,0.1) + rect (0.5,3,4,0.5))

Mire, incluso podemos aproximarnos [math] \ sin (x) [/ math]

Mentí de nuevo. Esa fue la aproximación. Utilicé muchas ReLU para obtenerlo y es mucho mejor de lo que debería ser, pero ese es exactamente el punto de aproximación arbitraria.

El código MATLAB para el falso [math] \ sin (x) [/ math]

x = 0: 0,01: 5;
z = 0: 0,001: 5;
sin_approx = ceros (tamaño (z));
rect = @ (h, a, b, epsilon) h / epsilon * (max (0, za) -max (0, z- (a + epsilon)) – max (0, zb) + max (0, z- (b + épsilon)));
para i = 2: (numel (x) -1)
sin_approx = sin_approx + rect (sin (x (i)), (x (i) + x (i-1)) / 2, (x (i) + x (i + 1)) / 2, 0.01);
fin
plot (z, sin_approx)

¡ESPERE! ¡Pero solo has estado usando una sola variable! ¡Mi conjunto de datos tiene miles de ellos!

Eso es cierto, pero en realidad no es difícil extender estos mismos resultados en arbitrariamente muchas dimensiones. Solo reconoce que los prismas rectangulares ahora hacen el trabajo de rectángulos y muestra que puede aproximarlos de manera arbitraria.

Me encantaría proporcionarles imágenes bonitas, pero mi software de renderizado 253453-dimensional no funciona. Actualizaré esta respuesta cuando se solucione.

Ah, y una bonificación:

Necesitábamos cuatro ReLU, pero esto se hizo con solo dos sigmoides. Eso NO significa que sigmoide es una mejor función de activación. Si su red realmente está haciendo la aproximación de esta manera, entonces no se generalizará bien. En la práctica, su red producirá una aproximación mucho más eficiente que nunca con rectángulos.

sigmoide = @ (x) 1./(1+exp(-x));
x = -3: 0,1: 3;
parcela (x, sigmoide (50 * x) + sigmoide (50 * (1-x)) – 1)
ylim ([- 0.5,1.5])

notar los años 50? Hazlos más grandes para obtener una mejor aproximación del rectángulo.

¿Una red ReLu de una sola capa sigue siendo un aproximador universal?

La respuesta de Conner lo captura visualmente al construir funciones escalonadas a partir de unidades Relu ( Michael Nielson ilustra lo mismo usando sigmoides en su blog interactivo Redes neuronales y aprendizaje profundo )

Sin embargo, como Conner menciona que una red neuronal se aproxima a una función de una manera más óptima (que también se generaliza) y no mediante la construcción de funciones escalonadas y apilándolas lado a lado .

El modelo 1d de Andrej Karpathy ( que nos ayuda a codificar y ver directamente en el navegador ), puede ayudar a desarrollar una intuición de cómo una red neuronal realmente se aproxima a cualquier función ( otro modelo que tiene hace lo mismo con datos 2D para la clasificación; podemos examinar qué los pesos y sesgos aprendidos en cada capa hacen a la salida ).

Podemos visualizar usando su modelo, lo que hace cada nodo en una capa. Específicamente, las siguientes instantáneas de su modelo ilustran

  • que el aprendizaje ocurre en la parte de transformación lineal de un nodo NN – g ( w x + b ) – esa es la parte w * x + b donde w y b son los parámetros que se están aprendiendo y x es la entrada, g – es el no lineal función. Gráficamente w provoca una escala / volteo / rotación, yb una traslación hacia arriba / abajo.
  • Relu, sigmoid, tanh realizan la transformación no lineal.
  • El primer ejemplo a continuación se elige específicamente para tener puntos debajo del eje x para ilustrar el hecho de que es el aprendizaje de los parámetros de transformación lineal donde ocurre el “trabajo real”: el ReLu solo ofrece la no linealidad, simplemente corta el región debajo del eje x.
  • Las transformaciones lineales posteriores a una capa ReLu, aprenden parámetros que ayudan a voltear porciones de la primera transformación lineal que sobrevivió al recorte, para aproximar las curvas debajo del eje x.

El código que genera la línea anterior que pasa por esos puntos

El NN generado por el código anterior. La transformación lineal y no lineal se muestran por separado como círculos y cuadrados. Los pesos y los sesgos son instantáneas después de que se haya producido algún entrenamiento. El ajuste de la curva anterior lo realizan 3 neuronas en capa oculta.

Figura a continuación: la salida después de la primera transformación lineal es esencialmente líneas de diferentes pendientes, una de cada nodo, con pendientes controladas por w e intersecciones controladas por b.

Figura a continuación: la transformación no lineal de ReLu simplemente recorta esas líneas debajo del eje x. Los parámetros de inclinación y sesgo de la figura anterior se ajustan con entrenamiento para ajustar el punto debajo del eje x como se ilustra a continuación.

Figura a continuación: el último paso es una transformación de línea nuevamente donde una combinación de volteretas y sesgo negativo permite la aproximación de la curva que está debajo del eje x.

La función completa exacta que generó la curva anterior ( se puede inferir al observar los pesos y sesgos NN en la ventana de depuración en Chrome para los nodos – examinar los campos de sesgos y filtros en cada capa “fc” – ignorar los valores de la capa de entrada ).

Especificándolo en un formato para cortar y pegar fácilmente en una ventana de Wolfram para trazar.

gráfico max (0, (-. 57) x + 4.45) * 1.11 -5.399 + max (0, (-. 28) x + 2.19) * (. 54) -5.399 + max (0, (- 1.09) x + 1,53) * (- 1,09) – 5,399

En la misma red anterior, si reemplazamos el ReLu con sigmoide, la salida de cada capa

Figura a continuación: Salida de la primera capa, similar a la red ReLu.

Figura a continuación: después de la aplicación Sigmoid ( similar a ReLu, recortada debajo del eje x )

Figura a continuación: la suma ponderada final ( transformación lineal ) de las curvas anteriores en rojo.

Ahora las salidas de cada capa si las reemplazamos con tanh .

Figura a continuación: salida de la primera capa

Figura siguiente -Después de la transformación no lineal por tanh. A diferencia de ReLu y sigmoide, no hay recorte debajo del eje x.

Figura a continuación: suma ponderada final o transformación lineal de las curvas anteriores en rojo.

Las instantáneas a continuación muestran un recorte de activación ReLu para una red de 2 capas ocultas con 10 neuronas cada una. Al igual que arriba, la transformación lineal aprendida hace el trabajo – ReLu hace la operación no lineal – recortando debajo del eje x.

Figura debajo – Salida de la primera capa – líneas con diferentes pendientes y sesgos (10 neuronas).

Figura a continuación -Luego ReLu hace el recorte

Figura debajo – Segunda capa – suma ponderada de las curvas rojas desde arriba – tenga en cuenta que los pesos negativos invierten las curvas en algunos casos debajo del eje además del desplazamiento ( información que se pierde por una transformación ReLU ).

Figura a continuación: recorte de la segunda capa por ReLU. La salida de la segunda capa son curvas de diferentes formas en contraste con la salida de la primera capa, que eran solo líneas con diferentes pendientes. Si bien podríamos haber hecho un ajuste para estos puntos con solo una capa de nodos, esto muestra la creciente complejidad de la salida a medida que aumentan las capas.

Figura debajo de la suma ponderada final (los pesos y sesgos negativos ayudan a ajustar los puntos debajo del eje x).

si pongo alguna función de activación, ¿es un aproximador universal? ¿O depende de qué función pongo?

La referencia de Florent a las capacidades de aproximación en papel de Hornik de 1991 de las redes de alimentación de múltiples capas responde a esta parte de la pregunta.

  • La conclusión clave del artículo que Florent citó es que no es la elección de la función de activación ( siempre que sea continua y no lineal ) sino la arquitectura de alimentación de múltiples capas que les da a las redes neuronales el potencial de ser aproximadores de funciones universales.
  • Esta conclusión tiene sentido a partir de los ejemplos anteriores: es la parte lineal donde ocurre el aprendizaje.
  • Christopher Olah ilustra esto muy bien en su blog (se muestra a continuación ) en un problema de clasificación donde los datos que no son linealmente separables en el espacio de entrada están sujetos a
    1. transformación lineal seguida de una
    2. traducción y luego
    3. una transformación no lineal final por la función de activación, que luego hace que los datos sean linealmente separables en el espacio transformado. Los parámetros aprendidos por el modelo son solo en la parte lineal. La función de activación proporciona el mapeo no lineal del espacio de entrada a salida, pero el aprendizaje ocurre en la parte lineal ( es decir, los valores de peso y sesgo que influyen en las transformaciones lineales en los pasos ayb anteriores ).
    • En otras palabras, si imaginamos que la línea de límite curva entre las dos regiones sombreadas ( en la figura de Olah a continuación ) es la función que estamos tratando de aproximar, las tres transformaciones transforman colectivamente esa línea de límite curva en un plano en una línea recta en la curva múltiple ( o un hiperplano en dimensiones superiores cuando el espacio de entrada tiene más dimensiones ) en el espacio de salida.
    • El enlace de video que Florent publicó también ilustra este mismo concepto: no es solo la función de activación la que se aproxima a una función.
    • En resumen, parece que el único requisito para que una función sirva como función de activación es que sea no lineal y continua. Por ejemplo, la siguiente función de activación del blog de Micheal Nielson es un candidato para una red de aproximación de función universal. Redes neuronales y aprendizaje profundo. El artículo de 1991 concluye, sin embargo, al señalar que la elección real en la práctica está determinada por otros factores, como la eficiencia computacional. Como sabemos, ReLU parece ser un candidato ampliamente utilizado ahora.

    —————————————————————————————————————

    El texto y las imágenes son del blog de Christoper Olah Redes neuronales, colectores y topología

    Por ejemplo, si la imagen de arriba son datos en su representación “en bruto” y queremos separar los datos.

    Cada dimensión corresponde al disparo de una neurona en la capa

    La capa oculta aprende una representación para que los datos sean linealmente separables.

    Hay una variedad de diferentes tipos de capas utilizadas en redes neuronales. Hablaremos de las capas de tanh para un ejemplo concreto. Una capa de tanh tanh (Wx + b) [matemática] tanh⁡ (Wx + b) [/ matemática] consiste en:

    1. Una transformación lineal por la matriz de “peso” W [matemática] W [/ matemática]
    2. Una traducción por el vector b [matemáticas] b [/ matemáticas]
    3. Aplicación puntual de tanh.

    Podemos visualizar esto como una transformación continua, de la siguiente manera (esta es una animación gif, no funciona aquí, por lo que pegar instantáneas separadas):

    Redes neuronales, colectores y topología

    Sí lo es. Puede encontrar las condiciones en la función de activación para que el teorema de aproximación universal se mantenga aquí Teorema de aproximación universal – Wikipedia (esto se demostró en un artículo de K. Hornik en 1991).

    También puede encontrar una buena explicación aquí.