¿Qué sucede si hacemos que la forma de una función de activación sea diferente en cada capa, permitiendo que también se aprenda su forma, si las capas superiores tienen menos unidades, haciéndolas más no lineales?

Todos estamos esperando su artículo sobre cómo dejar que una capa (o una sola unidad neuronal) seleccione y aprenda una función de activación particular para sus unidades de un conjunto potencialmente infinito de ellas. Nunca lo descubrimos, aparte de seleccionar una familia específica de funciones de activación que se parametrizan mediante parámetros que se pueden aprender (que generalmente se denominan “pesos” y “sesgos”).

Snarkiness a un lado … 🙂


El teorema de aproximación universal establece que un grupo (llamémoslo una capa ) de unidades con una clase particular de funciones de activación puede aproximar cualquier función continua en un subconjunto compacto de los reales. Ese es un teorema muy poderoso , ya que establece claramente que siempre se puede aproximar una función deseada (dadas las restricciones continuas y compactas), independientemente de con qué se aproxima: la función deseada se puede aprender y aproximar, y resulta que se puede aprender a través del descenso de gradiente en el espacio de parámetros.

Sorpresa: eso es exactamente lo que estamos haciendo desde el principio del campo.

Además, Hornik en un artículo bien conocido (o, pensándolo mejor, quizás no tan conocido) publicado en 1991: Las capacidades de aproximación de las redes de alimentación multicapa [1] abrieron la puerta a métodos de aproximación de funciones de varias capas, mostrando que una sola capa (o conjunto) de neuronas no podían aprender (hay un gran conjunto de funciones que una sola capa no puede aprender), una pila completa de ellas ciertamente podría hacer.

Bienvenido, Deep Learning y sus muchas variantes.


TL; DR:

P: ¿Podemos hacer que las unidades neuronales individuales aprendan funciones arbitrarias individuales?

R: No sabemos cómo, salvo mediante parámetros de aprendizaje en una única función específica (una por neurona). Además, parece muy probable que, excepto en casos muy simples, no podamos.

P: ¿Necesitamos hacerlo?

A: en realidad no. Tanto Kolmogorov como Hornik mostraron que podemos aproximar cualquier función (dentro de algunos límites) dado un conjunto de unidades neuronales parametrizadas uniformes, o capas de las mismas. Cuando se usan varias capas, no tienen que ser idénticas, ya sea en funciones de activación, parámetros o tamaño: ¡reglas de arquitectura!

Notas al pie

[1] http://zmjones.com/static/statis…

More Interesting

Cómo modelar el problema de un número de generación matka usando machine learning

Cómo crear un conjunto de datos a partir de imágenes

Word2vec: ¿Cómo puede el método de entrenamiento jerárquico soft-max de CBOW garantizar su autoconsistencia?

Estoy tratando de construir un proyecto de aprendizaje automático para predecir el precio del automóvil usado. ¿Dónde puedo obtener una base de datos para la reventa de los autos usados?

¿Cómo se utiliza el aprendizaje automático en el análisis de sentimientos?

Si ya hemos conocido una función, ¿podemos generar una red neuronal para la inferencia, sin pasar por el proceso de capacitación que consume tiempo y energía?

¿Puede una red neuronal LSTM aprender a reescribir un código C en C ++ sabiendo que lo entrené con un conjunto de datos equivalente a la instrucción C / C ++?

¿Cuál es la relación entre relevancia y aprendizaje automático?

¿Cuál es el gradiente de la función de probabilidad logarítmica en la regresión logística multinomial?

¿Cómo podría el posmodernismo cambiar el aprendizaje automático?

¿Qué es un buen algoritmo de recomendación de películas?

¿Se pueden usar las colecciones LETOR para una recuperación ad hoc?

¿Cuáles son los 10 mejores algoritmos de minería de datos o aprendizaje automático? En 2006, la Conferencia IEEE sobre minería de datos identificó los 10 algoritmos principales. ¿Siguen siendo válidos?

¿Cuáles son las herramientas basadas en redes neuronales disponibles ahora para el consumidor?

¿Cuál es la mejor manera de hacer reconocimiento / clasificación de múltiples objetos en tiempo real usando OpenCV y GPU (CUDA)?