¿Qué formación matemática se necesita para aprender Deep Learning?

Para la investigación de aprendizaje profundo, una formación científica y de ingeniería típica debe incluir las matemáticas necesarias. En resumen, esto es:

  • Álgebra lineal
  • Cálculo multivariable (vector)
  • Probabilidades y estadísticas
  • Optimización básica
    • Digo “básico”, porque> 95% del trabajo tiende a usar variantes simples de descenso de gradiente (por ejemplo, RMSprop, Adagrad, Adadelta). Esto es algo que puede recoger por su cuenta en un par de tardes. Sin embargo, creo que el campo está comenzando a moverse lentamente más allá de esto. Ver https://arxiv.org/pdf/1301.3641

Creo que una educación en física o ingeniería eléctrica es especialmente adecuada para la investigación de aprendizaje profundo. Esto es especialmente cierto ya que tiende a existir una buena dosis de conceptos de procesamiento de señales que se incorporan a las arquitecturas de aprendizaje profundo (por ejemplo, eliminación de ruido, convoluciones, etc.) y para el procesamiento de datos. Si las redes de dominio del tiempo más biológicamente realistas (redes de picos) comienzan a despegar eventualmente, verá que el aprendizaje profundo continuará pareciéndose más a la neurociencia / física / EE, y menos a la ciencia de la computación.

Comienza con una transformación lineal, luego funciones de activación, luego función de costo, luego optimización. Asi que:

  • Probabilidad y estadística (para regresiones lineales y logísticas y el estimador de máxima verosimilitud)
  • Cálculo multivariante (para todas las derivadas parciales y reglas de cadena en la propagación inversa)
  • Optimización convexa (para descenso de gradiente estocástico)
  • Álgebra lineal (esto es imprescindible para el aprendizaje automático en general, para sentirse cómodo con la matriz de características, la notación matricial, etc.)

cualquier otra cosa hará tu vida más fácil.

Cualquier formación técnica, especialmente ingeniería, es suficiente. Así que si eres ingeniero no hay problema. El nivel de fondo de matemáticas que necesita es en realidad más simple de lo que piensa, no. Puede escapar usando DL como un recuadro negro. Realmente no hay habilidades especiales aparte de la capacidad de hacer llamadas API básicas en bibliotecas ML como TensorFlow.

Cualquiera puede escribir código ML con unas pocas líneas de código usando Python y una biblioteca ML adecuada. Entonces, la pregunta aquí es ambigua en el sentido de que no establece el propósito previsto del OP, ¿es implementar o diseñar sistemas DL?

Para la implementación, cualquiera puede hacerlo como se describe anteriormente, lo mínimo que necesita es una simple habilidad de programación en cualquier lenguaje, preferiblemente Python, rápido con unas pocas líneas de código, usted hace que las cosas funcionen especialmente con TensorFlow, puede escribir rápidamente un reconocedor OCR MNIST con aproximadamente 99.2 % de precisión con solo unas pocas líneas de código, nada mal.

Para el diseño de sistemas DL, las cosas se ponen algo complicadas y se requiere mucho esfuerzo. Sin embargo, los antecedentes en matemáticas que son útiles no son tan complicados, solo álgebra lineal básica, como manipulaciones matriciales, cálculo diferencial simple de estadísticas y optimización numérica . Estos cuatro normalmente se enseñan en niveles avanzados (niveles A) antes de los cursos de ingeniería, son realmente simples.

Espero que esto ayude.

Cálculo vectorial (para problemas de optimización)
Álgebra lineal (los pesos son multidimensionales, se usan mucho en descomposiciones de matriz, por ejemplo, SVD, PCA)

Cálculo (p. Ej., Propagación hacia atrás con regla de cadena)
Optimización matemática (por ejemplo, descenso de gradiente, método de Newton)
Estadísticas (especialmente bayesianas) (por ejemplo, redes neuronales bayesianas, prioridades bayesianas)
Cadenas de Markov (algoritmos MCMC)
Análisis real (necesario para la teoría de la medida)
Teoría de la medida (se usa mucho en estadísticas, agregando vectores aleatorios juntos, debe asegurarse de que todavía sea medible)
Teoría de la información (por ejemplo, longitud mínima de descripción, divergencia de KL, entropía, información mutua)
Procesamiento de señal (por ejemplo, convolución, eliminación de ruido)
Proceso aleatorio (el proceso gaussiano es un tipo de proceso aleatorio)

Cálculo de variaciones (por ejemplo, métodos variacionales)
Teoría óptima del transporte (por ejemplo, GAN)

Geometría de la información (p. Ej., Gradientes naturales)

Procesos de decisión de Markov (por ejemplo, aprendizaje por refuerzo)

Prolly mucho más de lo que no estoy al tanto.

En esencia, todo lo que necesita comprender para el aprendizaje profundo es:

  • Cálculo diferencial : para comprender completamente la propagación de la espalda (el algoritmo más importante para el entrenamiento de la red neuronal) necesita tener una base en el cálculo diferencial. También es importante para comprender las propiedades de las diferentes funciones de salida (por ejemplo, softmax, ReLU, tanh, etc.).

Se recomienda pero no se requiere tener conocimiento de:

  • Álgebra lineal y matrices : aunque no es estrictamente necesario, si desea escribir código que se ejecute en GPU y cosas como convoluciones, es útil poder expresarlas como operaciones matriciales.
  • Métodos estocásticos : cada vez más, la gente no está utilizando algoritmos deterministas, sino los estocásticos donde se muestrea. Comprender la aproximación utilizando métodos estocásticos también sería útil.