Dado el número de heurísticas arbitrarias involucradas, ¿por qué deberíamos tener tanta fe en las redes neuronales profundas?

  1. Muchos objetos del mundo real están diseñados utilizando heurísticas arbitrarias. Como alguien que proviene de un entorno matemático, estoy de acuerdo en que esto puede ser frustrante, pero no olvidemos que en el mundo real no tenemos información perfecta ni tenemos tiempo infinito / recursos computacionales infinitos. Necesitamos hacer esto de manera eficiente para que sean útiles, y en muchos casos usar una heurística razonable es mucho mejor que tratar de evitarlo mediante una gran cantidad de métricas.
  2. Las redes neuronales funcionan, realizan tareas en muchos dominios que están muy por delante de lo que les precedió, incluso si nuestras intuiciones con respecto a ellas son menos concretas. Dicho esto, nos damos cuenta de que, si bien el valor que usamos para la tasa de aprendizaje para un NN puede ser heurístico, el mismo valor parece funcionar bastante bien para muchas tareas dentro del dominio. Esto parece indicar que este valor no es necesariamente heurístico, sino que tal vez tenga una verdadera interpretación teórica que aún no comprendemos / no tenemos la maquinaria o el tiempo para explorar por completo.
  3. Las redes neuronales están respaldadas por la teoría misma. Ya hemos demostrado que son aproximadores universales. Dicho esto, eso no significa que realmente convergerán con lo que queremos que converjan. El hecho es que las matemáticas y la teoría subyacentes aquí están subdesarrolladas, en parte porque son menos puras y, por lo tanto, algunas de las mejores mentes en matemáticas puras están menos inclinadas a trabajar en tareas como esta, y en parte porque son menos puras. ¿Eh? ¿Por qué repitió que es menos puro? Bueno, el hecho es que gran parte del mundo real, con todo el ruido asociado, crear teoría matemática no solo es (posiblemente) menos emocionante, sino que también es mucho más ruidoso por derecho propio. La teoría de aproximación de cosas es en muchos lugares mucho más difícil que encontrar respuestas exactas porque viene con información incompleta / información cualitativa del mundo real que no sabemos cómo formalizar / interpretaciones poco claras en algunos casos de lo que hace una aproximación buena o mala . La mayoría de los matemáticos, especialmente los puros, preferirían morir antes que tener que lidiar con esta cosa sucia y desordenada llamada mundo real. Si bien esto, por supuesto, es una exageración, la verdad es que las personas que son las mejores en teoría no siempre están interesadas en DL, y es por eso que la teoría se desarrolla lentamente, ya que en su mayoría son practicantes de DL, cuyo tiempo a menudo se sirve mejor haciendo DL que son los creadores serios de la teoría y que a menudo no son los que mejor sirven para crearla.
  4. ¿Qué hay de malo en la fe ciega? El hecho de que seamos científicos / matemáticos no significa que se nos permita exigir siempre que se pruebe algo antes de aceptarlo. Somos humanos también en un mundo imperfecto. A veces solo tenemos que aceptar eso y usar valores heurísticos sin saber lo que significan, y lentamente aprenderemos y entenderemos como con todo lo demás. Muy pocos teoremas se entienden puramente. La mayoría proviene del estudio empírico, la exploración de pequeños ejemplos que nos permiten descubrir los patrones para los que luego construimos las explicaciones correctas (o a veces incorrectas). Este es un hecho de cómo pensamos y no debemos tenerle miedo / despreciarlo.

En cierto sentido, es cierto que las redes neuronales son cajas negras que de alguna manera funcionan extremadamente bien. Pero funcionan bien por una razón que se basa fundamentalmente en las matemáticas.

En esencia, una red neuronal es un algoritmo que, dado un montón de ejemplos, aprende a resolver un problema de optimización.

Esto es lo que ocurre al entrenar una red neuronal.

Cada neurona toma una suma de entradas ponderadas y da una salida
[matemática] salida = \ sum_i {x_i w_i} + b, [/ matemática]

donde [math] x_i [/ ​​math] son ​​la salida de las neuronas en la capa anterior, o la entrada si la capa actual es la primera capa de entrada. [matemáticas] w [/ matemáticas] y [matemáticas] b [/ matemáticas] son ​​los pesos y sesgos de cada neurona, que son los parámetros ajustados por nuestro algoritmo de entrenamiento. Como tal, cada capa modifica las salidas de la capa anterior para finalmente dar una salida final.

Considere un ejemplo de reconocimiento de imagen, donde queremos decir si una imagen en escala de grises de 28 * 28 píxeles contiene un perro. La entrada sería un vector de dimensión 28 * 28 = 784, donde cada elemento es el valor de píxel, con 0 representando negro y 255 representando blanco. Llame a esta entrada [math] x [/ math].

Inicialmente, los pesos y sesgos de nuestra red son valores aleatorios, por lo que la salida sería un número sin sentido, llámelo [math] h (x). [/ Math] Puede imaginar que nuestra red neuronal es simplemente una función [math] h [/ math] aplicado a [math] x [/ math].

Por otro lado, [math] y (x) [/ math] es la verdad básica que acompaña a [math] x [/ math]. Si [math] x [/ math] es un perro, entonces [math] y = 1 [/ math]. De lo contrario [matemáticas] y = 0 [/ matemáticas].

Ahora para la optimización. Podemos definir una función de costo [matemática] C (w, b) [/ matemática] que mide qué tan cerca se compara nuestra producción real con la verdad básica. Podemos usar un costo cuadrático simple, en cuyo caso [matemáticas] C = \ sum_x \ frac {1} {n} (y (x) -h (x)) ^ 2 [/ matemáticas], donde n es el número de ejemplos de entrenamiento.

El algoritmo de aprendizaje modifica los pesos y los sesgos de la red de manera que se minimiza el costo. Al hacerlo, la función [matemática] h [/ matemática] cambia de manera que se aproxima a [matemática] y [/ matemática]. Puede pensar en el costo como un proxy de cuán preciso o clasificador de imagen de perro es. Nuestro clasificador funciona mejor cuando [math] y (x) -h (x) [/ math] tiende hacia [math] 0 [/ math]. En otras palabras, cuando los pesos y los sesgos de nuestra red se ajustan de manera que [math] h (x) [/ math] esté cerca de 1 cuando [math] x [/ math] describe un perro, y cerca de 0 cuando [ matemáticas] x [/ matemáticas] no es un perro.

El costo se minimiza numéricamente a través de técnicas como el descenso de gradiente. El descenso de gradiente nos da el gradiente de [matemáticas] C [/ matemáticas] en función de todos los pesos y sesgos en la red, y ‘bajamos’ este gradiente en busca de un mínimo. Puede imaginar que es posible encontrar analíticamente el mínimo, sin embargo, con millones de pesos y sesgos en una red típica, esto no es factible.

Esto nos lleva a comprender por qué una red neuronal puede funcionar asombrosamente bien a veces y fallar por completo en otras ocasiones, y por qué se dedica tanto trabajo a ajustar las heurísticas arbitrarias.

Primero, la técnica de descenso de gradiente numérico no siempre logra encontrar el mínimo global. Considere, por ejemplo, el tamaño del paso que tomamos al ‘bajar’ el gradiente. Si nuestros pasos son demasiado pequeños, puede que tomemos una eternidad. Si son demasiado grandes, podemos perder el mínimo por completo. Además, podemos quedar atrapados en un mínimo local.

En segundo lugar, dada la forma en que se diseña una red (la forma de la red), y dado el problema que uno está tratando de resolver, es posible que ni siquiera exista un buen mínimo global. El problema es que es difícil razonar analíticamente si lo hace o no.

Por lo tanto, entran en juego las heurísticas arbitrarias, que nos dicen aproximadamente qué tipo de redes son buenas para resolver qué tipo de problemas. Estas heurísticas provienen mucho del ensayo y error empírico, pero también de conjeturas matemáticas.

Pero en esencia, creo que las redes neuronales se basan en algunas matemáticas bastante simples pero inteligentes. Y es por eso que no es imprudente confiar un poco en ella.

Aquí hay un texto fantástico que discute los conceptos básicos de las redes neuronales y las matemáticas involucradas: http: // neuralnetworksanddeeplear

More Interesting

¿Has utilizado Google Translate recientemente? ¿Cómo es la calidad de la traducción con su nueva traducción automática neuronal? ¿Cómo es para cualquier par de idiomas?

¿Cuál es el estado de la investigación sobre chatbots y la PNL en 2017?

¿Cómo podemos hacer csv o dataset textual a partir de imágenes?

¿Puedo usar el aprendizaje profundo o ANN para un problema de agrupación como KNN?

¿Cuáles son los mejores software de aprendizaje automático de código abierto para reconocimiento facial?

¿Cómo afectarán herramientas como BigML y Google Prediction API al aprendizaje automático? ¿Reducirá la demanda de científicos de datos?

¿SVM siempre supera a J48? Tengo un caso de uso donde J48 funciona mejor. ¿Significa que algo está mal con mi enfoque / implementación?

¿Puedo usar el aprendizaje por refuerzo para ayudar a las personas a elegir la ruta más barata cuando viajan en avión?

Redes neuronales artificiales: ¿Qué determina si un problema de clasificación no trivial para el aprendizaje profundo se puede dividir en capas convolucionales en lugar de capas completamente conectadas?

¿Qué puede ayudar a averiguar si una función de pérdida es sensible al ruido o no?

¿Qué usos novedosos hay para el aprendizaje de refuerzo profundo?

¿Qué campo es el mejor, big data o machine learning?

Cómo dominar el aprendizaje automático para poder unirme a Google para puestos relacionados con el aprendizaje automático

Cómo calcular la cantidad óptima de datos de entrenamiento para un pronóstico de series de tiempo usando Python

¿Cuáles son los componentes básicos del reconocimiento de voz desde el punto de vista DSP?