¿El aprendizaje profundo hará que otros algoritmos de aprendizaje automático sean obsoletos?

No, diferentes problemas siempre tendrán diferentes métodos que funcionen mejor. Se trata de encontrar el mejor método para sus datos. No existe un método que sea universalmente el mejor para todos los problemas (también conocido como teorema de no almuerzo gratis, vea a continuación los enlaces).

Cada método tiene algún sesgo y alguna variación, cuanto más se acerque su modelo al verdadero modelo subyacente, mejor puede hacerlo en promedio con ese método. Un ejemplo básico es un estimador de la media de una población. Tomar la media de la muestra (promedio de los puntos de datos) es un buen estimador que a menudo se usa, pero esto tendrá un mayor riesgo (posibilidad de estar equivocado) que un estimador que solo devuelve un valor fijo para la media, si resulta que regresa El valor medio subyacente.

Es decir, el estimador fijo tiene un sesgo muy fuerte y una varianza muy baja, pero si su sesgo es correcto, dará los mejores resultados.

Las ideas clave son:

  • sin teorema del almuerzo gratis
    • Lección de aprendizaje automático del día: el teorema “Sin almuerzo gratis”
    • El teorema del almuerzo libre en el aprendizaje automático
    • No hay teoremas de almuerzo gratis
  • equilibrio de sesgo-varianza
    • Compensación sesgo-varianza
    • Comprender el equilibrio de sesgo-varianza

Algunos ejemplos más prácticos:

  1. Por ejemplo, si tiene una serie de valores de respuesta para algunos parámetros de entrada, traza los datos y parece haber una tendencia lineal clara, ¿va a intentar aprender un modelo utilizando una Red de creencias profundas o ajustarlo con ¿Regresión lineal simple?
  2. Al observar las competencias de Kaggle Machine Learning, el método que mejor se desempeña varía de una competencia a otra, muchas veces los bosques aleatorios funcionan mejor incluso en comparación con los métodos de aprendizaje profundo. La mayoría de las veces es un conjunto de una variedad de diferentes categorías de métodos que brinda el mejor resultado.
  3. Aunque los métodos de redes profundas se han vuelto muy populares para tareas de aprendizaje visual como la clasificación de imágenes, diría que los métodos no paramétricos bayesianos (como la asignación de Dirichlet latente y el proceso de Dirichlet jerárquico) son igualmente populares y efectivos para los datos de texto, aunque algunas de las extensiones podrían considerarse el aprendizaje profundo lo abordan desde una perspectiva diferente a la de la red profunda, es decir, menos un cuadro negro y más un modelo conceptual del proceso generativo.

Además, hay muchas otras consideraciones que deben considerarse para elegir un método, ya que otros han mencionado que los métodos pueden elegirse en lugar de enfoques de aprendizaje profundo para satisfacer las necesidades específicas de interpretabilidad, limitaciones de recursos, complejidad de algoritmo / software, mantenimiento del sistema / software, extensibilidad etc.

No. Hay varias razones por las que siempre habrá un lugar para que otros algoritmos sean más adecuados que el aprendizaje profundo en algunas aplicaciones.

Necesidad de ingeniería de características

Hay muchos casos en los que necesita comprender el dominio para obtener resultados óptimos. Si bien algunos defensores del aprendizaje profundo describen su enfoque como de propósito general, no creo que eso sea cierto.

La navaja de Occam

Dados dos modelos que funcionan más o menos por igual, siempre debe preferir el que sea menos complejo. Incluso los autores del libro Deep Learning mencionan esto. Por esta razón, siempre habrá casos en los que no se preferirá Deep Learning, incluso si ha logrado obtener un 1% adicional de precisión en el conjunto de pruebas.

Conjuntos

Incluso en el caso muy improbable de que la mayoría de los problemas de LD terminen siendo adecuados para los enfoques de aprendizaje profundo, siempre habrá un lugar para los conjuntos. Dado el resultado de una predicción de Deep Learning, estoy seguro de que podrá combinarla con algún otro modelo o función para mejorar los resultados.

Un ejemplo simple: ¿fútbol o fútbol?

Imaginemos que su jefe muy exigente le pide que implemente un clasificador de imágenes para detectar si las imágenes deportivas contienen escenas provenientes de un juego de fútbol americano o de un juego de fútbol de asociación. Leen bien la literatura de Deep Learning, por lo que entrena a un clasificador de dos clases utilizando Redes Neuronales Convolucionales (CNN) que le proporciona miles de imágenes etiquetadas que contienen ambos deportes. El clasificador funciona bastante bien y obtienes una precisión de, digamos, 95%.

Le presentas el trabajo a tu jefe y ella está muy impresionada. Lo siguiente que sabes es que tu clasificador profundo se está utilizando en un conjunto de datos de imágenes de España. Ahora, por supuesto, de vez en cuando, la imagen es realmente de baja calidad y borrosa, por lo que el clasificador tiene dificultades. Digamos que encuentra una imagen donde la probabilidad de que sea Fútbol es del 60%, ¿debería decidir clasificarla como tal? ¡Por supuesto no! Una imagen con una probabilidad del 60% de que el fútbol provenga de una base de datos española debe clasificarse como Futbol con seguridad … ¡casi nadie mira fútbol en España!

De hecho, en este ejemplo, un clasificador tonto que simplemente etiqueta todo como Futbol para este conjunto de datos lograría tener una precisión mucho mayor al 95% y funcionaría mucho mejor que su elegante red neuronal profunda.

Entonces, ¿qué está pasando? Bueno, debería haber pensado mejor sobre el problema que tenía a mano y haberse dado cuenta de que no es solo un problema de reconocimiento de imagen. Cosas como “popularidad” o “ubicación” podrían hacer una gran diferencia. Por supuesto, estas son características simples, podrías pensar en muchas más, pero entiendes el punto.

Puede alimentar esas características a su problema utilizando un conjunto como se mencionó anteriormente. O podría usar un simple previo bayesiano. Incluso podría forzarlo como una característica en la Red Neural.

En cualquier caso, este simple ejemplo demuestra que siempre tendrá la necesidad de comprender su dominio y realizar algunas funciones de ingeniería, favorecer modelos simples siempre que sea posible y lo más probable es que use conjuntos.

Escribí una respuesta a una pregunta relacionada: ¿por qué todavía se usa SVM en el aprendizaje automático cuando las redes neuronales son mucho más precisas? – que también encaja aquí:

Esta pregunta me recuerda a un pareado hindi, que dice más o menos “¡No tires la aguja cuando consigas una espada!”

Recientemente se ha demostrado que las redes neuronales son mejores que las SVM en diversas tareas, pero aquí hay un claro sesgo de observación . Las redes neuronales están en tendencia en estos días. Si tiene una tarea en la que puede entrenar a un NN que funciona mejor que los SVM, puede publicar un documento. Por otro lado, si tiene una tarea donde las SVM funcionan mejor que las NN, no podrá publicarla. Entonces solo escuchará un lado de la historia.

Ahora, hay algunas limitaciones obvias de NN en comparación con SVM:

  1. Hambre de datos : para entrenar NNs, necesita grandes cantidades de datos. ¿Qué haces cuando tienes muy pocos datos? Aquí hay un conjunto estándar de conjuntos de datos de referencia: UCI Machine Learning Repository: conjuntos de datos. Elija cualquier conjunto de datos de este conjunto con menos de 1000 ejemplos de entrenamiento e intente entrenar un NN que supere a SVM en esos datos por un amplio margen. Este es, con mucho, el punto más importante en mi opinión.
  2. Gran requisito de recursos computacionales : no puede hacer mucho con NN a menos que tenga GPU. Por otro lado, puede entrenar SVM en máquinas personales sin GPU.
  3. Las CNN requieren propiedad espacial : la operación de convolución realiza una operación en un conjunto de píxeles o una secuencia de palabras / señales de audio cercanas. Mezclar los píxeles / palabras / señales de audio cambiará completamente la salida de la CNN. Es decir, el orden de las características es importante o, en otras palabras, la convolución es una operación “espacial”. Las SVM no se ven afectadas por la combinación aleatoria de funciones. Por lo tanto, los problemas que no tienen la propiedad espacial no se beneficiarán de las CNN.
  4. Optimización de parámetros no trivial : ya he discutido este problema en detalle en otra respuesta. Para SVM, solo necesita ajustar 2–3 parámetros.
  5. Menos interpretable : muchas veces, tiene poca idea de lo que sucede dentro de la red, en particular, en las capas más cercanas a la salida. Esto nuevamente los hace más difíciles de mejorar, ya que no sabes mucho sobre lo que está mal. Las SVM pueden no ser completamente interpretables tampoco, pero son más interpretables que las NN.
  6. Configuración más larga : a menos que esté haciendo algo muy similar a ImageNet, no encontrará un modelo previamente entrenado en la web. Por lo tanto, tendrá que escribir una cantidad significativa de código para capacitar y evaluar un modelo NN razonable, incluso cuando se base en los marcos de aprendizaje profundo estándar. Con SVM, solo descarga LibSVM y puede comenzar a entrenar sus modelos en unos minutos.

La idea no es minimizar NNs vs SVMs. Refiriéndome a la analogía en mi línea de apertura, estos son algoritmos que son similares, pero uno no puede reemplazar al otro por el momento.

Además de SVM, hay muchas más formas de modelar su problema con algoritmos ML convencionales, que podrán superar a los NN en muchos casos, como la configuración de datos bajos.

Supongo que eventualmente llegaremos a un punto en el que probablemente tendremos una combinación de aprendizaje profundo y algoritmos ML convencionales para aplicaciones no triviales, muy similares a AlphaGo, en donde un marco general se define mediante un modelo ML convencional, y un componente en él que es una función se aprende como una red neuronal.

Hay al menos dos sentidos en los que el aprendizaje profundo no hará que otros algoritmos de ML sean obsoletos:

1. Para muchas aplicaciones, algoritmos mucho más simples como la regresión logística o la máquina de vectores de soporte funcionarán bien, y el uso de una red de creencias profundas solo complicará las cosas.

2. Si bien las redes de creencias profundas son uno de los mejores algoritmos agnósticos de dominio, si uno tiene conocimiento de dominio, muchos otros algoritmos (como HMM para reconocimiento de voz, wavelets para imágenes, etc.) pueden superarlos. Se está trabajando para incorporar dicho conocimiento de dominio en los modelos de redes neuronales, pero ciertamente aún no es suficiente para reemplazar completamente todos los demás modelos y algoritmos.

¡No pronto!

Sí, los modelos de aprendizaje profundo tienen una precisión superior a casi todos los demás algoritmos de aprendizaje en casi todas las tareas de aprendizaje. ¡Pero esto no es suficiente en situaciones prácticas!

Hay muchos problemas con el aprendizaje profundo:

1- Necesita enormes conjuntos de datos para aprender de:

Las redes neuronales pueden romper récords en precisión y otras medidas, pero para hacer esto, ¡deben alimentarse bien! Si su conjunto de datos es pequeño o de baja calidad (o ambos), es posible que no tenga suerte con ellos. Esto también es cierto para otros modelos, pero la mayoría de los otros modelos no necesitan tantos datos para alcanzar su máxima precisión posible.

2- Necesita ENORMES recursos computacionales y financieros para que sea efectivo:

Piense en CPU y GPU, muchos de ellos. De lo contrario, consumirá un tiempo impío, y solo crecerá a medida que su conjunto de datos y modelo se hagan cada vez más grandes, ¡incluso en entornos experimentales!

Si crees que el hardware es barato ahora, te equivocas.

No tome mi palabra, aquí está la palabra de un experto en el tema:

Enlace: Nando de Freitas en Twitter

3- Puede ser difícil de sintonizar y domesticar:

Un buen ejemplo de esto son las nuevas redes generativas adversas (GAN).

Enlace: Andrew Ng – GAN (redes de confrontación generativas) es un …

4- El tiempo de predicción puede ser mucho mayor que otros modelos debido a la complejidad:

Esto es de gran importancia, porque eventualmente es lo que más importa en un entorno industrial. El tiempo de predicción no debe ser un cuello de botella para la aplicación en su conjunto.

5- Puede ser difícil encontrar personas con experiencia en aprendizaje profundo:

Son raros, y son caros, la demanda es mucho mayor que la oferta.

Dicho esto, estos problemas no carecen de soluciones, y las personas han encontrado muchas soluciones a estos problemas, pero solo los grandes actores pueden implementarlos debido a la complejidad y la sobrecarga de estas soluciones.

En esencia, hasta que estos problemas se resuelvan de una manera accesible que justifique el esfuerzo de ingeniería puesto en cambiar todos los modelos de aprendizaje automático con aprendizaje profundo, verá la regresión logística (y los gustos) utilizados en muchos lugares.

Arriba hay una representación del Perceptron de 1969. No pude encontrar la representación de Rosenblatt de 1957. Más de medio siglo después, tenemos este debate actual sobre si este Perceptron haría obsoleto cualquier otro algoritmo de Machine Learning inventado desde 1957, incluso antes de que se propusieran. Es decir, medio siglo de investigación arrojado a la papelera porque una idea tan simple en realidad podría ser tan poderosa.

Aún más preocupante es el hecho de que este Perceptrón ni siquiera es cómo funciona realmente una neurona biológica. De hecho, se ha caracterizado por no ser más que una “caricatura” de una neurona real. Sin embargo, funciona sorprendentemente bien. De hecho, ni siquiera es innovador para 1957. Las sumas de productos son los elementos resultantes que tiene cuando multiplica las matrices. La multiplicación de matrices es alrededor de 1812. La función sigmoidea es 1854. De hecho, es solo una función lineal con una función de activación no lineal. Probablemente se podría usar cualquier red diferenciable y también podría funcionar. De hecho, esta es la idea sorprendente, el uso de un gradiente simple decente para actualizar pesos aparentemente funciona muy bien para el entrenamiento.

La simplicidad de este enfoque y el hecho de que se puede compilar apilando capas lo dotan de capacidades que simplemente no tienen comparación con los enfoques de ML monolíticos alternativos. El método de entrenamiento es extremadamente modular, ya que todo lo que se necesita es que cualquier capa sea diferenciable. Además, se puede explotar el conocimiento de la invariancia en los datos para mejorar la capacitación. La componibilidad y la modularidad de las redes neuronales es lo que le da una ventaja insuperable sobre otros métodos de ML alternativos (ver: Jack Rae, Subhasis Das responde para otros ejemplos).

Por lo tanto, debo admitir humildemente que el humilde Perceptron (actualmente rebautizado como Deep Learning) será muy difícil de superar. ¡Es difícil argumentar contra la longevidad!

Si bien nunca puede haber “un algoritmo para gobernarlos a todos”, en mi opinión, es casi seguro que el aprendizaje profundo desempeñará EL papel más importante en tareas como el habla, las imágenes, la PNL, etc., y tal vez en otras. Otras respuestas, especialmente las de Jack Rae, ya han mencionado esto, pero me gustaría explicar un poco más sobre algunas características de las redes neuronales profundas que creo que es un gran problema.

  • Generalización y aprendizaje de transferencia: las redes neuronales profundas capacitadas para la tarea de reconocimiento de imágenes en Imagenet han ocupado las primeras posiciones durante algún tiempo. Sin embargo, un hecho extremadamente interesante es que se ha demostrado que las características producidas por estas redes producen resultados de vanguardia en muchas tareas aparentemente no relacionadas (ver, por ejemplo, http://arxiv.org/abs/1403.6382 ). Lo que esto significa es que ahora yo, un novato completo en visión por computadora, simplemente puedo tomar una de las redes disponibles públicamente previamente capacitadas en Imagenet (por ejemplo, desde aquí: https://github.com/BVLC/caffe/wi …) , trato la segunda capa más alta como características y la aplico a mi tarea favorita, como detección de peatones, detección de gatos, vestido azul / vestido dorado, etc.
  • Facilidad de uso y capacitación: los marcos de aprendizaje profundo también están proliferando día a día, y argumentaré que, de hecho, escribir un programa desde cero para hacer un aprendizaje profundo es una de las cosas más fáciles que uno puede hacer como programador. No hay muchas campanas y silbatos: el campo está en su infancia y puede conocer los consejos y trucos “de vanguardia” en menos de una semana. La capacitación también es súper fácil, no es algo sofisticado, pero sí SGD y backprop (lo que realmente es una diferenciación simbólica dado un nuevo nombre brillante). De hecho, argumentaré que una red neuronal aplicada a un problema a menudo es mucho más simple porque no es necesario pensar en los detalles sangrientos de qué características usar, cómo extraerlas, etc. (lo que estoy de acuerdo puede ser una buena idea) o algo malo dependiendo de cómo lo mires)
  • Invasión rápida en otros dominios: Ok, usted puede decir, ¿qué tal el habla o PNL? ¿Cómo va el aprendizaje profundo allí? Bueno, una red neuronal profunda que toma espectrogramas de voz sin procesar como entrada ( no MFCC) y produce texto como salida ha producido el mejor rendimiento en la detección de voz (Escalado de reconocimiento de voz de extremo a extremo). La escritura en la pared para el reconocimiento de voz parece clara. Un modelo DNN secuencial a secuencia para la traducción ha estado muy cerca de superar el modelo de traducción basado en frases de vanguardia perfeccionado por años de investigación por parte de muchas personas ([1409.0473] Neural Machine Translation by Jointly Learning to Align and Translate) .

Por lo tanto, me parece plausible que el aprendizaje profundo esté listo para convertirse en EL jugador más grande en estos dominios. Si bien ni yo ni nadie más puede predecir lo que sucederá después de otros 10 años, para el futuro próximo, el aprendizaje profundo hará que otros algoritmos competitivos sean obsoletos.

Una cosa que estamos viendo es que, en lugar de que el aprendizaje profundo haga obsoletos otros métodos de aprendizaje automático, se está “ fusionando ” con métodos antiguos: o se usa como una herramienta para mejorar esos métodos, o se usan esos métodos o ideas relacionadas con ellos. para mejorar el aprendizaje profundo. Aquí hay algunos ejemplos en los que se usa como herramienta para mejorar los métodos antiguos en lugar de reemplazarlos:

  • Los modelos espaciales estatales gaussianos son viejos. ¿Cómo podemos obtener un procedimiento de inferencia simple para modelos de espacio de estado gaussianos no lineales? Utilice autoencoders variacionales + RNN “Redes de inferencia estructuradas para modelos de espacio de estado no lineal”
  • Tratar de predecir el tiempo hasta el evento y los tipos de eventos es un viejo problema. ¿Cómo podemos mejorarlo usando el mismo marco básico de supervivencia? Use RNN donde las entradas son los tiempos y tipos de eventos, las salidas se relacionan con la distribución de eventos y tipos futuros. El estado oculto resumirá así la historia y será predictivo del futuro. Use este estado oculto como covariables en un modelo de supervivencia. Procesos de puntos temporales marcados recurrentes: incrustar el historial de eventos en el vector
  • Siempre hemos querido hacer inferencia bayesiana para variables latentes por punto de datos sin conjugaciones condicionales y supuestos de campo medio. El autoencoder variacional y sus extensiones hacen eso.

En cada uno de los casos, en lugar de reemplazar el modelo anterior, el aprendizaje profundo se está fusionando con: modelos de espacio de estado, análisis de supervivencia, inferencia variacional.

No

Pero la verdadera pregunta aquí es en realidad:

“¿todo el aprendizaje (automático) no es convexo”?

El aprendizaje profundo en sí mismo no está tan bien desarrollado, y todavía queda mucho trabajo por hacer utilizando los métodos más tradicionales de optimización convexa y detección comprimida.

Por ejemplo, trabajos recientes muestran que es posible hacer una formulación simple y convexa de NMF

Avances en NMF convexo: programación lineal

que es esencialmente una forma de detección comprimida para la factorización matricial
y es muy similar a un escaso codificador automático

Esto lleva a sospechar que todos los codificadores automáticos podrían ser mejores si fueran escasos y convexos.

Por ejemplo, dado que los codificadores automáticos de estilo RBM usan la formulación de partición logarítmica, podrían reformularse utilizando un método en el espíritu de la aproximación convexa a la energía libre de Bethe:

http://arxiv.org/pdf/1205.2624.pdf

Un buen ejemplo es el método WellSVM para el aprendizaje semi supervisado y débilmente etiquetado. Aquí, toman un problema aparentemente no fundamentalmente convexo, el problema SVM transductivo / semi-supervisado, y lo convierten en un problema min-max fácilmente solucionable mediante una relajación convexa

Aprendiendo de datos débilmente etiquetados
Página en esat.kuleuven.be

Esta es una combinación de técnicas de la vieja escuela (es decir, método de plano de corte) + nueva comprensión de la escuela de la optimización convexa

Ahora, eso no significa que todo el aprendizaje sea simple o que simplemente podamos descartar los métodos no lineales y no convexos. Todavía…

En cuanto a las redes de aprendizaje profundo más complicadas, todavía no estoy convencido de que “todo el aprendizaje no sea convexo” porque la optimización convexa en sí misma es un campo muy amplio e incluso se ha demostrado que es posible reformular un problema aparentemente muy no convexo , la ecuación molecular electrónica de Schrodinger como una optimización convexa (aunque no se puede resolver utilizando métodos estándar de programación semidifinada)
ver: http://news.uchicago.edu/article

Si la química cuántica es convexa, ¿por qué no el aprendizaje automático?

Mi conjetura es que no lo hará. En teoría, cuando hablamos de cuán bueno es un algoritmo, estamos hablando principalmente de ciertas propiedades favorables del mismo, dadas ciertas suposiciones; esto se traduce en un buen rendimiento estándar en el caso promedio. Por ejemplo, hablamos de que los SVM son clasificadores muy fuertes en general; lo que implica que si tuviéramos que probar algunos datos, la mayoría de las veces terminaríamos con buenos resultados. Posiblemente no el mejor , pero bueno. Además de hacerlo bien en el caso promedio, el algoritmo puede tener su propio nicho, lo cual es una ventaja adicional.

Pero para un caso específico, dependiendo del dominio preciso, el tipo de datos que tiene y la cantidad de los datos que tiene otros algoritmos podría mejorar. Por ej. He visto casos en los que algo tan simple como Multinomial Naive Bayes ha superado a las SVM, ha funcionado mejor que preprocesar datos de texto con LSI, etc.

Para aplicaciones en visión y PNL donde la precisión predictiva es lo único que importa, la respuesta parece ser un rotundo sí. Sabemos que los problemas en estos dominios se pueden resolver con alta precisión (los humanos lo hacen de manera rutinaria), lo que significa que la relación señal / ruido es alta, y por lo tanto sabemos que si la red se sobreajusta, simplemente necesitamos más datos / redes más pequeñas. Además, dado que los datos visuales y textuales comparten características importantes en las áreas de aplicación, los investigadores pueden trabajar en el desarrollo de arquitecturas inteligentes que exploten la estructura de los datos para evitar el sobreajuste (las redes son el ejemplo más notable) y probarlas en puntos de referencia públicos.

Para aplicaciones donde p >> n, donde la capacidad de interpretación de los modelos es importante, donde es necesario hacer inferencia sobre datos faltantes y muchos otros casos, las técnicas como bosques aleatorios, regresión regularizada y modelos gráficos son más apropiadas. Este seguirá siendo el caso en el futuro previsible.

No. El aprendizaje profundo es parte de una familia más amplia de métodos de aprendizaje automático basados ​​en representaciones de datos de aprendizaje, a diferencia de los algoritmos específicos de tareas. El aprendizaje puede ser supervisado, semi-supervisado o sin supervisión. Si desea aprender aprendizaje profundo, mejor aprender de los recursos en línea. También puedo sugerirle los mejores cursos en línea de aprendizaje profundo.

# 1 Ciencia de datos: aprendizaje profundo en Python

Este curso le proporciona muchos ejemplos prácticos para que pueda ver realmente cómo se puede utilizar el aprendizaje profundo en cualquier cosa. A lo largo del curso, haremos un proyecto del curso, que le mostrará cómo predecir las acciones del usuario en un sitio web con datos de usuario como si ese usuario está o no en un dispositivo móvil, la cantidad de productos que vieron, cuánto tiempo permanecieron en su sitio, sean o no visitantes recurrentes, y a qué hora del día visitaron.

Otro proyecto al final del curso le muestra cómo puede usar el aprendizaje profundo para el reconocimiento de expresiones faciales. ¡Imagina poder predecir las emociones de alguien solo en base a una imagen!

  • Aprenda cómo funciona el aprendizaje profundo REALMENTE (no solo algunos diagramas y código mágico de recuadro negro)
  • Aprenda cómo se construye una red neuronal a partir de bloques de construcción básicos (la neurona)
  • Codifique una red neuronal desde cero en Python y numpy
  • Codifique una red neuronal usando TensorFlow de Google
  • Describir los diferentes tipos de redes neuronales y los diferentes tipos de problemas para los que se utilizan.
  • Derive la regla de propagación hacia atrás de los primeros principios
  • Cree una red neuronal con una salida que tenga clases K> 2 utilizando softmax
  • Describa los diversos términos relacionados con las redes neuronales, como “activación”, “propagación hacia atrás” y “avance”
  • Instalar TensorFlow

# 2 Aprendizaje profundo práctico con PyTorch

Aunque muchos cursos son de naturaleza muy matemática o demasiado práctica, este curso logra un equilibrio cuidadoso entre los dos para proporcionar una base sólida en el aprendizaje profundo para que pueda explorar más si está interesado en la investigación en el campo del aprendizaje profundo y / o aplicado aprendizaje profundo. Está hecho a propósito para cualquier persona sin una sólida formación en matemáticas. Y para aquellos con una sólida formación, aceleraría su aprendizaje en la comprensión de los diferentes modelos de aprendizaje profundo.

  • Maneje efectivamente PyTorch, un marco de Python primero, para construir sus proyectos de aprendizaje profundo
  • Domine los conceptos de aprendizaje profundo e impleméntelos en PyTorch

Cursos adicionales:

  • Aprendizaje profundo: redes neuronales recurrentes en Python

No lo creo. Vemos redes neuronales profundas que dominan en algunos lugares y otras técnicas que dominan en otros.

En este momento, encontramos redes neuronales profundas que ganan concursos que involucran datos no estructurados (por ejemplo, imágenes, video, EEG). Para imágenes y video, son redes neuronales convolucionales. Para los datos de EEG y otros datos que involucran secuencias, son redes neuronales recurrentes.

Para los problemas de datos estructurados, estamos encontrando ingeniosas funciones de ingeniería combinadas con Gradient Boost Machines (particularmente la implementación XGBoost) está ganando competencias.

Para los problemas de procesamiento del lenguaje natural, es mixto: a veces se trata de redes neuronales recurrentes y, a veces, se trata de enfoques de recuperación de información combinados con XGBoost.

Los defensores de las redes neuronales profundas dicen que eclipsará todos los demás métodos cuando los conjuntos de datos sean “lo suficientemente grandes”. Todavía no hemos visto evidencia de esto en las competencias de Kaggle. Es posible que nuestras competiciones no hayan tenido datos “suficientemente grandes”. Sin embargo, incluso si esto resulta ser cierto, muchas aplicaciones involucran solo datos de tamaño pequeño a mediano.

Como comentario relacionado, hacemos entrevistas a los ganadores en nuestro blog después de la mayoría de las competiciones, donde preguntamos a los ganadores qué enfoque usaron. Lo consideramos como un “diario vivo” de lo que funciona bien en los problemas supervisados ​​de aprendizaje automático. También hemos publicado todas las entrevistas de los ganadores como un conjunto de datos abiertos en Kaggle, por lo que puede usar Kaggle Kernels para explorar tendencias en el aprendizaje automático y donde el aprendizaje profundo es dominante y donde no lo es (por ejemplo, este Kernel simple muestra el aumento de las profundidades aprendizaje en competiciones de Kaggle).

Deep Learning no puede hacer que otros algoritmos de Machine Learning sean obsoletos. Deep Learning es una herramienta poderosa que generalmente se aplica en tareas donde ‘otros’ algoritmos de Machine Learning se han saturado. Daré un ejemplo, el área de Reconocimiento de objetos estaba bastante saturada en el sentido de que con una ingeniería de características pesadas y ajustes solo se podía lograr una pequeña ganancia de rendimiento.

Esto cambió con el uso de Deep Learning, los sistemas de Deep Learning dieron una mejora bastante significativa en Reconocimiento. Lo mismo es en Reconocimiento de voz, traducción. En estas áreas, creo que podemos decir que ‘otros’ algos de ML son obsoletos.

Pero, en general, se utilizan “otros” algos de Machine Learning como antes de la revolución del aprendizaje profundo. En general, se utilizan medios simples para tareas como Regresión simple en un conjunto de datos no tan complicado, clasificación en un conjunto de datos simple separable linealmente o con SVM de límites de decisión simples, Bosque aleatorio. Deep Learning es una herramienta que generalmente se utiliza para llevar el rendimiento del sistema al extremo.

PD: las NN de retropropagación son parte del sistema de aprendizaje profundo

Me gustaría agregar algunos puntos que no creo que nadie haya hecho todavía.

En primer lugar, el aprendizaje automático actualmente opera dentro de un paradigma donde se requieren muchos ejemplos para un buen rendimiento. Esta es una forma aproximada en que funciona el cerebro humano. Sin embargo, los algoritmos que aprenden de los datos también podrían adoptar otra estrategia: detectar y extrapolar a partir de patrones conceptuales percibidos. Este es otro modo que utiliza el cerebro humano, pero para el cual aún no hemos construido muchos algoritmos buenos. Esta es la parte del cerebro que puede adivinar cómo sería un objeto desconocido desde otro ángulo, por ejemplo. Por el momento, el aprendizaje profundo es el mejor algoritmo de ML en términos de rendimiento en muchas de las tareas para las que, como humanos, utilizamos el último mecanismo cerebral, pero no es un ajuste natural.

En segundo lugar, el rendimiento no lo es todo. A medida que los algoritmos se vuelven más comunes en sus roles cotidianos en la vida de las personas, hay cuestiones de responsabilidad e interpretabilidad, así como del rendimiento. El aprendizaje profundo puede tener un alto rendimiento, pero es pobre en otros aspectos, como discutir qué tan robusto es cambiar los patrones de datos o el tipo de explicaciones que puede dar sobre su comportamiento. Por lo tanto, parece poco probable que muchos otros algoritmos, que en muchas tareas tienen un rendimiento muy similar a las redes de varias capas pero sean más fáciles de discutir (por ejemplo, en un tribunal de justicia), desaparezcan totalmente del uso.


Intentaré echar un vistazo a la pregunta desde la perspectiva del procesamiento del lenguaje natural.

Hay una clase de problemas en NLProc, que podrían no beneficiarse del aprendizaje profundo (DL), al menos directamente. Por la misma razón, el aprendizaje automático (ML) no puede ayudar tan fácilmente. Daré tres ejemplos, que comparten más o menos la misma propiedad tan difícil de modelar con ML o DL:

1. Identificar y analizar una polaridad de sentimiento orientada hacia un objeto en particular: persona, marca, etc. Ejemplo: Me gusta phoneX, pero no me gusta phoneY. Si monitorea la situación de los sentimientos del phoneX, esperará que este mensaje sea positivo, mientras que la polaridad negativa del phoneY. Se puede argumentar que es fácil / factible con ML / DL, pero dudo que pueda permanecer únicamente dentro de ese marco. Lo más probable es que necesite un híbrido con sistema basado en reglas, análisis sintáctico, etc., que de alguna manera anula el propósito de DL: ser capaz de entrenar redes neuronales en una gran cantidad de datos sin conocimiento de dominio (lingüista).

2. Resolución de la anáfora. Hay sistemas que usan ML (y, por lo tanto, ¿se puede probar DL?), Como el sistema de correferencia BART, pero la mayor parte de la investigación que he visto hasta ahora se basa en algún tipo de reglas / análisis sintáctico (esta presentación es bastante útil: resolución de la anáfora ) Existe una amplia área de aplicación para AR, que incluye análisis de sentimientos y traducción automática (también extracción de hechos, preguntas y respuestas, etc.).

3. Traducción automática. Desambiguación, anáfora, relaciones de objeto, sintaxis, semántica y más en una sola sopa. Seguramente, puede intentar modelar todo esto con ML, pero los sistemas comerciales en MT se hacen más o menos con reglas (+ ml recientemente). Espero que DL pueda producir avances en MT. Citaré un artículo aquí que usa DL y mejora el SMT basado en frases: [1409.3215] Secuencia a secuencia de aprendizaje con redes neuronales

La lista se puede extender a las bases de conocimiento, etc., pero espero haber hecho mi punto.

Ha habido muchas respuestas excelentes a esta pregunta, pero mis dos centavos son:

  • “Deep Learning” es una gran carpa y describe algo más como un meta-algoritmo para producir funciones en lugar de un algoritmo de aprendizaje automático per se.
  • Como método de aprendizaje de características, puede muy bien hacer obsoletas las características hechas a mano. Los métodos de aprendizaje de características futuras pueden incorporarles algún tipo de aprendizaje profundo.

No estoy seguro de con qué frecuencia ha aparecido un algoritmo que “hace que todos los demás sean obsoletos”. Ha habido grandes avances algorítmicos: discriminantes lineales (Fisher), perceptrones, regresión logística, perceptrones multicapa, bosques aleatorios, impulso, máquinas de vectores de soporte, métodos de kernel, etc. Debemos tener en cuenta que casi todos estos algoritmos en alguna forma o El formulario se ha utilizado junto con el aprendizaje profundo, donde el aprendizaje profundo proporciona características de los ejemplos de datos en los que aplicar estos algoritmos.

El aprendizaje profundo también es un meta-algoritmo de gran tamaño en el sentido de que no existe una formulación de aprendizaje profundo unificada y acordada. Hay una gran cantidad de diferentes formulaciones, funciones de pérdida, arquitecturas, etc., sin una clara igualdad entre ellas. Sin embargo, las máquinas de vectores de soporte y la regresión logística tienen funciones de pérdida claras que las distinguen. Ambos son métodos de “clasificación lineal” pero se consideran separados porque tienen diferentes objetivos subyacentes (y diferentes teorías para su desempeño). El aprendizaje profundo es lo suficientemente amplio como para que no se caracterice por una función de pérdida particular y solo parezca estar separado de las máquinas de vectores de soporte o la regresión logística porque no es un método lineal o de núcleo.

El aprendizaje profundo, sin embargo, ha cambiado el aprendizaje de características. Si bien todavía hay mucho camino por recorrer antes de que ya no usemos HOG / SIFT en la visión por computadora, o los Coeficientes Cepstrales de Frecuencia Mel (MFCC) en el habla, las personas han obtenido resultados de última generación en MNIST, ImageNet sin HOG / SIFT o incluso bordes ( http://papers.nips.cc/paper/4824 …). Además, los mejores resultados en el reconocimiento de voz ahora se obtienen con los coeficientes espectrales de frecuencia de mel que incluyen un paso computacional menos que los coeficientes cepstrales de frecuencia de mel (MFCC) que se usaban tan comúnmente en el pasado ( https: //www.inf.u- szeged.hu/~tot …).

Mi opinión es que las características diseñadas a mano probablemente estén destinadas a seguir el camino de los sistemas expertos de los años 80, lo que no quiere decir que desaparecerán por completo, pero las características que calculamos para nuevos tipos de datos se aprenderán de conjuntos de entrenamiento en lugar de derivados usando intuición y conocimiento expertos. Mi razonamiento es simplemente que los ciclos son más baratos que las sinapsis y el aprendizaje profundo probablemente mostrará que los ciclos pueden ser tan buenos o mejores que las sinapsis en la construcción de características.

Debo señalar que todavía no estamos en este punto. En el reconocimiento de voz, el filtrado de frecuencia de Mel aplicado a los espectrogramas (o PLP) es un paso de preprocesamiento necesario para obtener un rendimiento sólido y, hasta ahora, el aprendizaje profundo directamente en la señal de audio no ha sido tan exitoso. Predigo que esto cambiará en los próximos años a medida que soñemos y experimentemos con arquitecturas de aprendizaje profundo más potentes.

En realidad, el aprendizaje profundo a menudo (¿generalmente?) Se usa en conjunción con algoritmos básicos de aprendizaje automático: la red profunda se usa para aprender un mapa de características a partir de datos sin procesar (o datos ligeramente procesados ​​/ normalizados / pca’d) y luego SVM, regresión logística, aleatorio bosque, etc. se utiliza para realizar la clasificación basada en los vectores de características producidos por la red profunda. Los valores de característica s están dados por las activaciones de la capa de salida final.

Por ejemplo, en el famoso artículo “detector de gatos” de Quoc V Le et. Alabama. (con Google) Página en Stanford, utilizaron el clasificador logístico uno contra todos para hacer la clasificación final.

Por lo tanto, el aprendizaje profundo puede hacer que los extractores de funciones especializadas (como SLIT para imágenes) queden obsoletos con el tiempo, pero en muchos otros casos es complementario.

La historia del aprendizaje profundo para el reconocimiento de voz es muy reveladora. Para mí hay dos mensajes para llevar a casa:

1. El entrenamiento previo no es necesario. Se puede obtener un rendimiento excelente utilizando una simple inicialización aleatoria.
2. Se requiere un buen etiquetado. Se necesita un sistema de reconocimiento de voz tradicional de última generación para generar la verdad básica con un nivel de detalle muy alto.

Si bien las ganancias de rendimiento para ASR han sido enormes, el aprendizaje profundo en este contexto no tiene mucha profundidad. Con una inicialización aleatoria, un DNN es esencialmente un MLP.

La capacitación previa puede ser más importante en otros dominios donde no hay tanta información o donde la verdad básica no está tan bien definida.

Esto se parece mucho a cómo se vieron las redes neuronales a fines de los 80 / principios de los 90. Como son “aproximadores universales”, muchos en el campo creían que otros algoritmos quedarían obsoletos. Después de todo, ¿por qué ejecutar una regresión logística cuando una red neuronal puede hacer todo lo que una regresión logística puede hacer y más? Ya no es necesario probar varios algoritmos.

Obviamente eso no fue lo que sucedió. El primer paso será que el aprendizaje profundo se vuelva lo suficientemente fácil para el uso moderadamente técnico. Eso solo sucederá una vez
1) el aprendizaje profundo comienza a ganar más competencias a medida que el algoritmo “ir a”. Sí, está ganando muchos ahora, pero no de manera rutinaria. Esto despertará el interés de los analistas que se preocupan más por la precisión.
2) sale de R / Python en productos de análisis convencionales (SAS Enterprise Miner, IBM SPSS Modeler, Dell STATISTICA, etc.). Lo que hace que los algoritmos ganen importancia es su adopción generalizada, por lo que no importa qué herramienta uses, está ahí.
3) # 2 aparecerá en la encuesta de herramientas como la encuesta de Rexer Analytics Data Mining y la encuesta de herramienta / algoritmo de KDNuggets.

No espero que esto suceda pronto. La gran mayoría de las personas que realizan modelos predictivos están utilizando enfoques simples de manera muy efectiva. La regresión lineal y logística sigue siendo el pilar de muchas organizaciones y está funcionando bien. Les importa interpretar los modelos más que su precisión. Tienen que navegar a través de la política de la organización, y es más difícil obtener la aprobación de nuevos enfoques.

Pero creo que la pregunta es aún más profunda, lo que me lleva de vuelta a mi primer punto: ¿es un algoritmo verdaderamente, inherentemente, completamente mejor que otro? No lo creo; Siempre he descubierto que probar varios algoritmos en problemas revela diferencias muy interesantes en los patrones que el algoritmo capta bien. Los algoritmos no están de acuerdo con las predicciones porque tienen diferentes formas de ver los datos. Entonces, mientras sigo el debate de aprendizaje profundo y la dirección que está tomando la comunidad, todavía no soy un comprador de las acciones de “solo aprendizaje profundo”. 🙂