¿Por qué es tan fácil el aprendizaje profundo?

Me pregunté lo mismo media hora después de saber qué era una red neuronal. Mi experiencia era una maestría en matemática pura, por lo que todo tenía mucho sentido.

  1. Especifique una estructura y una función de pérdida para optimizar.
  2. Optimízalo usando el gradiente de descenso.
    1. La red se alimenta solo con multiplicación de matrices y activaciones puntuales.
    2. La red se propaga utilizando la regla de la cadena multivariante.
    3. Actualice los pesos en consecuencia
  3. ???
  4. Lucro

Luego comencé a aplicarlo a problemas difíciles y rápidamente me di cuenta de que comprender cómo funciona el aprendizaje profundo es muy diferente de aplicarlo realmente con éxito. Hay toneladas de trampas a tener en cuenta.

“Pero eso es algo que requiere práctica y experiencia”, pensé. “Una vez que tengo eso, es fácil”.

Bueno, no tanto. Resulta que no importa cuánta experiencia tenga, todavía hay muchas dificultades. Lograr que una red profunda haga exactamente lo que quieres significa

  • Estructura de optimización
  • Prevención sobre o debajo del ajuste.
  • Conseguir que converja (a un mínimo local de alta calidad)
  • Asegurarse de tener la función de pérdida correcta
  • Hacer el aumento de datos correctamente (a veces no es tan fácil)
  • Preprocesamiento adecuado
  • Etc …

Se requiere una gran cantidad de trabajo y las pruebas son muy costosas desde el punto de vista informático. Puede tomar una semana probar una sola idea. Cuando hay tantas variaciones diferentes para probar, eso no es práctico. Incluso si solo toma unos minutos probar una idea, ese tiempo se acumula muy rápidamente.

¡Pero eso es solo lo aplicado!

¡Las matemáticas también son desafiantes!

Sí, lo básico de cómo funciona es muy simple, pero la vanguardia del campo es todo lo contrario. Como regla general, la vanguardia de cualquier campo será muy difícil. Si no fuera así, ya lo habríamos resuelto y tendríamos una nueva vanguardia que es más difícil.

Como dije antes, mi experiencia es una maestría en matemáticas. Al leer algunos de los artículos recientes sobre aprendizaje profundo, a menudo encuentro matemáticas con las que no estoy familiarizado o que no he usado desde esa clase de geometría diferencial que no recuerdo. Algunos documentos que leí recientemente hicieron un uso intensivo de

  • Geometría hiperbólica
  • Análisis funcional
  • Sistemas dinámicos
  • Teoría de matrices aleatorias
  • Etc …

Su estudiante de ingeniería promedio probablemente pueda implementar algunas de estas ideas simplemente siguiendo las fórmulas en el documento, pero no tiene la base matemática para desarrollarlas.

Entonces, sí, si profundiza, encontrará que todas las áreas de aprendizaje profundo son desafiantes una vez que supera los aspectos básicos.

Siendo yo mismo un aprendiz en esta área, permítame informarle sobre mi experiencia. Cuando comencé, fue difícil para mí comprender los conceptos, ya que nunca imaginé que conceptos como la diferenciación, el álgebra estadística y la teoría de números podrían ser útiles en aplicaciones del mundo real.

Dicho esto, el aprendizaje automático está más relacionado con las estadísticas, ya que implica extrapolar conceptos de estadísticas clásicas, pero esto no sucede exactamente en el aprendizaje profundo.

El aprendizaje profundo, por otro lado, tiene sus raíces más cerca de cómo funcionan nuestros cerebros (redes neuronales) en términos de análisis de datos, visión, análisis del habla, etc. Nuestro cerebro es una red neuronal muy compleja con millones de neuronas, millones de capas de activación y enorme poder de procesamiento.

Ahora contesta tu pregunta :

Las personas generalmente terminan pensando que el aprendizaje profundo es muy fácil:

  1. Construya un gráfico de cálculo usando Tensorflow o Keras o PyTorch
  2. Especifique una función de optimización que desee reducir
  3. Elija cualquier optimizador (Gradient / Adam / Ada) y una tasa de aprendizaje
  4. Conjunto de datos divididos al azar
  5. Iterar sobre el conjunto de datos hasta que se minimice la pérdida

Pero no siempre funciona así

Hay una estrategia cuidadosamente pensada que se necesita en cada paso para que realmente termines construyendo un modelo que sea utilizable.

El aprendizaje profundo puede ser un verdadero dolor de recuperación en caso de que no entiendas los conceptos básicos que se introducen en el interior. A continuación se presentan algunos de estos desafíos:

  1. Iterar 5k veces contra iteraciones de 500k: si elige una tasa de aprendizaje incorrecta o una estrategia de decadencia pobre, puede terminar entrenando por una duración de hasta 100 veces más que la mejor posible.
  2. Aumento de datos deficiente: por ejemplo, en problemas de visión por computadora si sus datos no se aumentan correctamente, puede terminar ajustando demasiado el conjunto de entrenamiento y validación después de 12 horas de entrenamiento. Solo se dará cuenta una vez que lo produzca.
  3. Problema de pérdida explosiva: las personas que son novatas en DL y conocen a Adam a través de cursos en línea, etc., generalmente tienden a comenzar con AdamOptimizer y son víctimas del problema de pérdida explosiva específico de Adam si entrenan durante mucho tiempo con muy poca LR.
  4. Creación de un modelo eficiente : el número aleatorio de neuronas y capas para el entrenamiento en realidad puede matar el tiempo de entrenamiento y puede obtener un número adicional de horas de entrenamiento que podrían haberse realizado en minutos con neuronas menores (tal vez una tasa de entrenamiento más baja)
  5. Depuración : Hace unos días me enfrentaba a un problema muy general, mi red profunda estaba divergiendo con el gradiente de descenso, pasé 2 días pero no pude averiguar qué estaba mal. Tuve que imprimir varios registros en Tensorflow, pero al final fue solo mi conocimiento de cómo funcionan las NN, lo que me ayudó a descubrir dónde podría estar yendo mal. Esto no solo puede ser abordado por un estadístico, sino que necesita un conocimiento profundo de la propagación e inicialización de NNs.
  6. Re usabilidad . La parte más crucial en el aprendizaje profundo es la reutilización, las personas no quieren diseñar una red profunda cada vez que tienen un caso de uso. Proponer un diseño general para N número de problemas suele ser un problema en estos días.

A continuación se detallan las áreas bajo DNN que luchan con estos problemas y que aún se investigan todos los días:

  1. Imagen (visión) : los problemas de visión por computadora comenzaron a tomar buena forma solo después del nacimiento de las redes convolucionales (CNN), que les tomó casi una década a los científicos comprender cómo una computadora puede generalizar mejor sobre varias imágenes. Conceptos como la agrupación máxima, la convolución son el resultado de una inmensa investigación realizada en el área de la detección de la visión. Incluso hoy en día, crear un CNN desde cero implica un buen conocimiento no solo de las matemáticas sino también de la informática (programación paralela), ya que un entrenamiento de CNN es un proceso que requiere muchos recursos, si su CNN tiene un número aleatorio de capas o neuronas, es más probable que espere semanas adicionales esperando que termine el entrenamiento.
  2. Videos (Visión): Esto es aún más complejo ya que involucra los conceptos de imágenes a videos, considere un video de 30 fps de 100 segundos. Tendría 3000 cuadros, analizarlos con eficiencia con una CNN es un verdadero desafío.

Espero haber ayudado a iluminar algunas áreas, en las que deberíamos pensar al saltar al mundo de DNN y por qué aún es complejo.

Gracias

Eh, no es difícil hacer que funcione lo suficientemente bien, si sigue el libro de cocina (es decir, imágenes → ConvNets, abandono, más capas …) en una tarea bien definida para la que es sencillo obtener datos. Sin embargo, tenga en cuenta que hasta ahora el salto cualitativo realmente impresionante del rendimiento del aprendizaje profundo afecta principalmente a las aplicaciones de procesamiento de imágenes y visión por computadora. También es impresionante porque es bastante fácil de demostrar. En otros campos (procesamiento del lenguaje natural, por ejemplo), el aumento en el rendimiento ha sido mucho más gradual, aunque diría que se espera que siga mejorando.

Yo diría que hay dos partes difíciles. Primero: si no funciona lo suficientemente bien, y ha probado todas las cosas estándar, debe diagnosticar realmente lo que está haciendo la red, e interpretar incluso las visualizaciones bien diseñadas sigue siendo difícil. (En realidad, el diagnóstico de NN es un tema de investigación en sí mismo).

La segunda parte difícil, o más creativa que difícil, y realmente basada en la experiencia (que aún no tengo) es: tengo este problema específico, y la parte difícil es algo que parece ser solucionable con el aprendizaje profundo . ¿Cómo lo vuelvo a lanzar en términos de entradas y salidas para que DL sea viable?

Esto no es estrictamente un aprendizaje profundo en sí, sino un diseño experimental y, sobre todo, creatividad en la adquisición y el procesamiento previo de datos para que tenga una oportunidad realista de hacer que funcione. Eso comienza a requerir al menos algo de conocimiento de “panorama general” más allá de las operaciones matriciales. Por ejemplo, un truco para obtener más datos de imagen es volver a enmarcar su problema como un clasificador de píxeles en lugar de un clasificador de imágenes, y de repente tiene conjuntos de datos de órdenes de magnitud más grandes y, a menudo, un espacio de salida mucho más simple. Pero, debe comenzar a preocuparse acerca de cómo seleccionar qué píxeles clasificar para que realmente obtenga información utilizable de cada punto de datos, por lo que debe sumergirse en la teoría de la información y cómo interactúa con el proceso de optimización, y de repente se convierte en Mucho más complejo. Esta parte del uso de métodos de DL (conectarlos a su problema del mundo real para que lo resuelva) se hace especialmente difícil por la comprensión teórica irregular de DL, y es más prueba y error que cualquier otra cosa.

Luego están los sospechosos habituales: aprendizaje no supervisado, modelos generativos (a pesar de que ha habido avances significativos allí con métodos variacionales y redes adversas generativas, pero que yo sepa, estos son todavía bastante frágiles, difíciles de entrenar), aprendizaje de refuerzo y los misterios del proceso de aprendizaje en sí. Las NN aún no están muy bien fundamentadas en teoría: hay muy pocos resultados sólidos y generales sobre la convergencia de los algoritmos de optimización de NN, y la clase de funciones que las redes más profundas aprenden es poco conocida (lo que, por supuesto, no impide que estos métodos funcionen realmente bueno, solo que es un área difícil). Por ejemplo, no estoy seguro de si a alguien se le ocurrió la matemática de por qué es tan importante mezclar las muestras de entrenamiento, además de algunas intuiciones básicas como “puede que te salgas del proceso de aprendizaje al principio”.

Entonces: sí, es relativamente fácil construir un clasificador de imágenes que funcione o cualquier modelo supervisado, dada una formulación de problemas bien definida y el conjunto de datos correcto (y una GPU o veinte). Más allá de eso, estás en un territorio mal trazado.

Citando de Richard Feynman, “Lo que no puedo crear, no lo entiendo”.

El aprendizaje profundo puede parecer fácil a primera vista, especialmente cuando tantos universitarios ahora ponen “TensorFlow” en su capacidad lingüística y proyectos geniales basados ​​en el aprendizaje profundo en su currículum en su segundo año. Pero la naturaleza misma de la razón fundamental o la limitación de implementación del aprendizaje profundo es mucho más complicada de lo que parece. Parece tan fácil principalmente gracias a la buena práctica de desarrollo de software que la academia y la industria han seguido, que es la modularidad, la portabilidad y la escalabilidad. Caffe hace posible que entrene una red neuronal sin escribir una sola línea de código (modularidad) que se ejecute en su estación de trabajo local o en su VM en la nube armada con cientos de GPU (portabilidad, escalabilidad) y entrene sus propias redes neuronales basadas en módulos pre-capacitados, las personas contribuyeron en línea sin siquiera comprender cómo funciona realmente la propagación hacia atrás (modularidad). Si no le da mucha importancia a la precisión, descargue una ResNet pre-entrenada y aplíquela directamente en ImageNet, ¡boom !, obtendrá una precisión de clasificación del 97%. Al descargar un conjunto de ResNet pre-entrenadas, entrenarlas por separado y clasificar su imagen según los votos de la mayoría masiva, ¡boom !, obtiene otro aumento de precisión del 0.5%.

El verdadero problema aquí, como lo expresó Richard Feynman, es “lo que no puedo crear, no lo entiendo”. En el campo actual de aprendizaje profundo, sabemos cómo las redes toman decisiones / clasificaciones / segmentaciones, pero no podemos depurarlo cuando comete un error. Cuando un automóvil autónomo de aprendizaje de extremo a extremo tomó la decisión de pisar el acelerador cuando hay un perro cruzando la calle frente a él, los ingenieros no tienen una manera de depurar el comportamiento. Seguramente pueden explorar diferentes capas de redes neuronales y ver cómo se ve cada mapa de activación en cada capa y cómo se vincula con la decisión final, pero no hay forma de entender cómo terminó nuestro entrenamiento anterior: básicamente le dijimos a la neuronal redes a través del entrenamiento que “cuando hay un perro frente a ti (auto sin conductor), atropella” sin decirlo explícitamente. Más trágicamente, no hay una manera fácil de modificar la red, especialmente en tiempo de transmisión, para corregir el mal comportamiento. Si nosotros, como ingenieros, ni siquiera podemos crear redes neuronales que puedan ser depuradas cuando funcionan de manera funky, ¿cómo tenemos la confianza para jugar las redes neuronales como bloques de lego y decir que lo entendemos?

Soy un aficionado al aprendizaje profundo entusiasta. Como extraño, me importan menos los detalles de ajustar los hiperparámetros, crear una nueva arquitectura, etc. Lo que me preocupa es la emoción que las personas están adquiriendo sobre la capacidad que el aprendizaje profundo parece ser capaz de ofrecer, y, por lo tanto, implementarlo en escenarios de alto riesgo y misión crítica. Creo que todavía hay un largo camino para que se vuelva más y más maduro. Y cuando todos persiguen las tendencias, debería haber personas que se destaquen, que hagan un descanso y que griten en voz alta el lado peligroso que puede traer el aprendizaje profundo.

Recomiende el artículo de la revisión tecnológica del MIT:

Hay un gran problema con la IA: incluso sus creadores no pueden explicar cómo funciona

No es posible llegar a conclusiones después de trabajar con bibliotecas de abstracción como Keras.

Me temo que debo decir que el aprendizaje profundo no es tan fácil como se podría suponer. Además, no es un jugador nuevo en la industria tecnológica. El aprendizaje profundo existe desde mediados del siglo pasado. El problema que tuvieron que enfrentar los ingenieros de aprendizaje profundo fue este:

No fue fácil entrenar redes neuronales profundas en el pasado. Las redes tenían que ser profundas, con más capas ocultas para dar cuenta de la complejidad de los problemas que tenían que abordar. Pero cuanto más se profundizaban las redes, continuaban olvidando lo que habían aprendido del otro lado de las redes ( Gradiente de fuga ). Esto afectó fuertemente la capacidad de aprendizaje de las redes neuronales. Y se volvieron casi imposibles de entrenar durante esos días.

Luego, hubo estos genios investigadores (incluido LeCun , el tipo de inteligencia artificial actual en Facebook ) que presentó la máquina de Boltzmann restringida, y todo lo que culminó con la complejidad del gradiente de fuga. En consecuencia, los ANN se hicieron más populares como lo son hoy y son capaces de realizar tareas inimaginables.

A partir de esos días, la comunidad de IA ha contribuido activamente al campo.

El problema anterior es solo uno de muchos. Desde entonces, se han realizado muchas mejoras y mejoras en el campo, en varios aspectos.

Y todo lo que dije es solo para recordarle el hecho de que se necesitaron autores intelectuales para resolver estas cosas y son muy matemáticas. Las ecuaciones juegan con múltiples dimensiones de datos, lo que, por supuesto, las hace complejas.

Además, no es posible llegar a conclusiones después de trabajar con bibliotecas de abstracción como Keras . Te recomiendo que pruebes TensorFlow y tengas plena libertad aprovechando todo el asunto fuera de las redes neuronales.

Savio

Hay varias formas de entender el aprendizaje profundo. La siguiente es una historia de moralidad ficticia moderna que ilustra las diferencias. Cualquier parecido con cualquier persona o corporación viva o muerta es pura coincidencia.

Comprensión casual:

Leí sobre un GitHub para hacer arte al estilo de diferentes artistas. Parecía genial, así que cloné el repositorio y ejecuté las demos. No había suficiente documentación, pero logré resolver todas las dependencias. Cambié algunos parámetros y vi lo que sucedió, y ahora lo entiendo.

Me puse a pensar que esto podría funcionar en otros lugares. Sé que el jefe de mi cónyuge siempre está buscando formas de utilizar el exceso de capacidad de la granja de servidores durante los momentos de inactividad, así que les mencioné esto. Mi cónyuge comenzó a pensar ‘¿Quizás algo en el cuidado de la salud?’ Fue bastante fácil comenzar a correr.

Comprensión empresarial:

La compañía que poseo almacena, busca y recupera datos durante todo el día. Tenemos granjas de servidores, pero los servidores no siempre se utilizan al 100%. Esta mañana, uno de mis informes me llegó con un artículo sobre análisis genético, y decía ‘¿Por qué no intentamos usar el aprendizaje profundo en esto? Podríamos usar nuestro exceso de capacidad, ya que la respuesta no tiene que estar dentro de milisegundos como nuestras búsquedas ‘. Sí, lo entiendo. Configure una unidad de negocios para manejar eso. Será muy fácil

“Ingeniero de aprendizaje automático” que integra paquetes de aprendizaje automático en otros procesos:

Mi empleador quería diversificar, y dado que tenemos mucha experiencia con el almacenamiento y la recuperación de datos de bases de datos, y la atención médica está en las noticias, decidieron que debería aplicar el aprendizaje profundo al análisis genómico. La unidad de negocios ya había mantenido conversaciones preliminares con una compañía para recolectar muestras de ADN, y tenía algunos datos de ejemplo que obtuve y comencé a limpiarlos. Hablé con otras personas, busqué en Google sobre aprendizaje profundo y secuencias, y miré algunos documentos. Envié un correo electrónico a uno de los coautores de un artículo sobre el aprendizaje de secuencia a secuencia. Fueron súper amables, muy serviciales señalando su GitHub.

Bueno, no necesitaba más ayuda que eso, ya que había hecho muchas de estas integraciones antes. Como utilicé TensorFlow, cloné el GitHub y conseguí la demostración en funcionamiento. El primer conjunto de datos que revisé no funcionó muy bien: convergía tan lentamente que parecía que nunca se haría. Pero sabía cómo lidiar con eso. Revisé, modifiqué el ciclo de entrenamiento por lotes para usar datos de Hadoop, amplié la red a nuestro tamaño de datos, distribuí el algoritmo de manera heterogénea en varias granjas de servidores y escribí código para cambiar sistemáticamente los hiperparámetros, la regularización y los métodos de optimización.

Todos los días en el scrum informaba mi progreso. Mi jefe sabía que mi progreso era bueno, por lo que nuestro socio comercial se inscribió rápidamente. Como tenían bastantes datos, escribí una interfaz RESTful para extraer automáticamente nuevos datos de su base de datos. El software que modifiqué descubrió muchos genes nuevos que nadie se dio cuenta de que estaban involucrados con ciertos tipos de enfermedades. Después de unas pocas semanas, conseguí que funcionara bastante bien. En este momento, Marketing había estado trabajando con ellos para tener nuestro nombre en la recopilación de datos. Comenzamos a obtener una gran cantidad de datos, pero como tratamos con eso todo el tiempo, la parte difícil había terminado. El aprendizaje profundo es fácil: es solo álgebra lineal y algo de código.

“Ingeniero de aprendizaje automático” experimentado:

Miré por encima de lo que habían estado haciendo. Intentaron varias cosas, pero no entendieron las estadísticas de las pruebas de significancia de datos de alta dimensión cuando tienes muchos menos datos que características. Estaban usando word2vec como un paso de preprocesamiento; fue un milagro que lo hicieran funcionar, realmente un testimonio de la potencia computacional de corte, y de alguna manera estaban usando CNN con abandono de vainilla antes de la normalización del lote. Supongo que habían leído que CNN podía hacer todo, y que la deserción y la normalización de lotes eran buenas cosas ”.

Algunas modificaciones a su algoritmo y la convergencia fueron tan buenas como antes y requirieron órdenes de magnitud menos recursos, pero la generalización fue terrible, como se esperaba. Después de poner una simple corrección de Bonferroni, mostré a la gerencia cómo la mayoría de las interacciones genéticas que habían “descubierto” eran espurias.

La administración en realidad no estaba tan contenta como esperaba sobre la reducción de la utilización de recursos (contaban con que esta aplicación cancelara algunos gastos generales del servidor), pero se alegraron cuando la consideraron como una aceleración. No estaban contentos en absoluto cuando escucharon que los resultados no tenían sentido. Me preguntaron qué podían hacer para obtener resultados estadísticamente válidos, y les describí un camino para que llegaran allí. Pusieron una cara optimista e inmediatamente comenzaron a preparar ideas de marketing para el algoritmo mejorado. Bueno, es hora de echar un vistazo a los títulos de los próximos 100 documentos de aprendizaje automático que llegaron hoy. El aprendizaje profundo es mucho más difícil de lo que pensaban. No entienden que los documentos todavía se escriben en algoritmos de álgebra lineal hoy en día , lo que, por supuesto, es fácil.

“Ingeniero de aprendizaje automático” con conocimiento de dominio:

Además de solucionar sus problemas de algoritmos, también les mostré cómo la FDA tenía una visión débil de hacer reclamos sin validación estadística. cómo la privacidad del paciente era realmente un gran problema para la FDA, y algunas formas de corregir su relación con la FDA. Parecían más preocupados acerca de cómo transferir la pérdida de tanto tiempo y dinero a su junta. En realidad, esto podría hundir la unidad de negocios, pero tienen la oportunidad de arreglar las cosas antes de que empeoren, y aún así podrían recuperarse y llegar a la cima.

  • ¿Cuántas personas pensaron que entendieron el problema?
  • ¿Cuántas personas tenían el título de “Ingeniero de aprendizaje automático”?
  • ¿Cuántos de los “Ingenieros de Aprendizaje Automático” estaban aprendiendo ingeniería de máquinas y cuántos en su lugar se ocupaban de otros problemas?
  • ¿En qué algoritmo confiarías con la vida de tu abuela?
  • ¿En quién confiarías para solucionar el problema si algo saliera mal?
  • ¿En quién confiarías para resolver un nuevo problema sin resolver?
  • ¿No sería mejor que varias personas con diferentes conjuntos de habilidades aborden este problema, uno de los cuales era un ingeniero experimentado en aprendizaje automático con conocimiento de dominio?

TL; DR: Si crees que lo que haces es difícil y lo que el otro hace es fácil, es posible que tengas razón o que no sepas lo que está haciendo el otro.

Puedo entender perfectamente por qué uno podría pensar eso.

Si está aprendiendo Deep Learning por su cuenta, entonces es probable que esté siguiendo uno de esos cursos en línea. He estado haciendo algunos de esos yo mismo. He aquí por qué hacer cursos como esos podría hacer que el aprendizaje profundo sea “aparentemente” fácil:

  • En primer lugar, muchos de estos cursos utilizan marcos como TensorFlow o Keras para implementar redes neuronales y algoritmos de optimización como el descenso de gradiente. Intente implementar estos con nada más que NumPy o SciPy. ¿Aún lo encuentras fácil? Esperaré.
  • Muchos de los cursos se centran en una comprensión “intuitiva” de las matemáticas en lugar de las cosas hardcore reales. Recuerdo haber hecho el renombrado curso de ML de Andrew Ng donde, en muchos casos, se mostraba la implicación de varias ecuaciones en lugar de describir cómo se derivaron. ¡Me encontré derivando algunos de ellos solo por curiosidad!

  • Finalmente, mucha gente no comprende la importancia de los buenos conjuntos de datos en Deep Learning y Machine Learning en general. Tendrá que pasar bastante tiempo adquiriendo, limpiando y representando o codificando los datos. Si ha estado implementando redes neuronales con conjuntos de datos preparados de repositorios en línea, puedo ver por qué todo esto puede parecerle fácil. ¡Crear un conjunto de datos adecuado para la capacitación es más del 50% del trabajo!

La conclusión es que los cursos en línea y también algunos libros populares resumen mucha información. Estos recursos, tal como los veo, están destinados a despertar un interés en ML para que esté motivado a profundizar. El uso de TensorFlow podría ser diversión y juegos, ¡pero piensa en los chicos que realmente crearon el marco!

TL; DR; El aprendizaje profundo es como cocinar, fácil de aprender, difícil de dominar.

En la vida real, no hay cookies gratuitas y Deep Learning no es una excepción.

Creo que se obtendrá una mejor comprensión de las dificultades del Aprendizaje Profundo al usar una analogía con algo similar pero bien conocido por todos.

Para nuestro ejemplo, el aprendizaje profundo sería un método para usar el calor para cocinar, TensorFlow sería el horno construido con una variedad de utensilios, el parámetro de entrenamiento y la selección de la red de aprendizaje profundo sería la receta, el conjunto de datos de entrenamiento serían ingredientes de entrada, mientras que el modelo entrenado sería la comida de salida.

Resolver un problema bien comprendido en el aprendizaje profundo con TensorFlow sería como comprar un horno y espaguetis en el supermercado, usar una receta de spagetti bien conocida y obtener algunos spagetti “decentes”.

Así que ahora digamos, nuestro estudiante universitario hizo un puesto de comida en la calle. Al principio, la gente escuchó que un puesto de cocina puede cocinar spagetti (que representa un problema común), por lo que traen spagettis o ramen crudos a nuestro cocinero (que representa tipos de conjuntos de datos bien entendidos), y el cocinero hace algunos spagettis bien. Los clientes están contentos y nuestro cocinero también.

Sin embargo, las personas se cansan rápidamente de los spagetti (que es como que todos entiendan bien y tengan una buena solución para problemas comunes). La gente quiere otros alimentos / cosas (que es como tener un resultado diferente) cómo (restricciones de fecha límite), mientras que tiene una cantidad y calidad diferente de ingredientes (representa la entrada y el presupuesto).

Esto es lo que sería un día típico en la vida de nuestro cocinero:

El primer cliente del día solicita un pastel dulce (tenga en cuenta una salida específica), mientras que trae una bolsa de cebollas (con algo de entrada limpia). Nuestro cocinero pierde un tiempo valioso tratando de hacer el pastel sin resultados (malgastando el presupuesto). Después de esperar un tiempo, el cliente se va enojado sin cebolla ni pastel (plazos fallidos y malgastando el presupuesto).

Algunas veces más tarde, otro cliente viene con una gran bolsa de verduras mixtas no tan frescas (no datos limpios), solicitando zanahorias al vapor en 10 minutos (presupuesto ajustado). Si bien es relativamente fácil preparar vegetales al vapor, no es posible extraer vegetales útiles (datos de limpieza) y hacer zanahorias al vapor durante un período corto. Entonces, una vez más, nuestro cocinero tiene un cliente hambriento y enojado. Nuestro cocinero trata de justificar al cliente que le dieron una bolsa llena de basura, lo que lo enfurece aún más.

Durante la cena, un hombre viene con un trozo de hierro (un nuevo tipo de datos) y un yeso para una espada, pidiéndole a nuestro cocinero que haga una espada (nueva producción). Si bien es posible tener un mejor horno (mejor marco / infraestructura / comprensión del aprendizaje profundo), nuestro cocinero desperdicia el tiempo del cliente en intentarlo, y luego dice al final que esto es imposible.

Algún tiempo después, una mujer viene a pedir un bistec. “Finalmente puedo hacer feliz a un cliente”, piensa. Sin embargo, hay una trampa. A la mujer le siguieron 20 camionetas de diferentes carnes (conjunto de datos limpio muy grande), y quería un bistec mejor que su abuela pueda hacer usando su barbacoa (algún sistema personalizado especializado para un problema en particular). Si bien es posible, nuestro cocinero necesitaría un ejército de cocineros y hornos bastante buenos (requisitos de gran infraestructura) y algún tipo de proceso específico para que todos estos cocineros compartan su experiencia y progreso (uso personalizado de infraestructura / algoritmo novedoso) técnicas), para satisfacer las solicitudes de nuestros clientes. Una vez más un fracaso y un cliente enojado.

Al final del día, una niña (un intermediario) viene queriendo que le hagas una pizza. Su madre (el cliente real) le dio la receta (problema bien conocido), con ingredientes (buenos datos de entrada) y una descripción de la salida. Nuestro cocinero quemó la corteza de pizza (no pudo ajustar el algoritmo / no eligió una buena red neuronal). Si bien nuestra cocinera obtuvo algunos resultados, que parecen satisfactorios para la niña, ciertamente no son para su madre.

Así que pasó un día completo sin un solo cliente satisfecho. “¿Por qué todo salió mal?”, Reflexiona nuestro cocinero. Cocinar spagetti fue muy simple, pero ni un solo cliente está contento.

El aprendizaje profundo parece fácil para los observadores externos en este momento, porque la comunidad de la visión todavía está pasando por la fase de ‘profundizar’ los algoritmos y sistemas tradicionales.

A medida que finaliza esa fase (¡pronto!), Uno no podrá publicar documentos simplemente anteponiendo ‘profundo’ a un algoritmo. Una vez más se necesitarán las percepciones / creatividad / habilidades de ingeniería de sistemas que los investigadores de la visión siempre han necesitado desarrollar.

Ya comienzan a aparecer ejemplos de tales documentos: tinghuiz / SfMLearner, toda la investigación de refuerzo profundo, aprendizaje profundo multimodal, etc.

Hmm, solo parece fácil porque ya sabes las respuestas (alguien las encontró por ti). Piense en la expresión, “todo es fácil cuando sabes cómo hacerlo”. Uno podría hacer la misma observación sobre la física de partículas teórica, “oye, las matemáticas son fáciles, es solo álgebra lineal y algo de teoría de grupos de pregrado”.

Lo que es realmente difícil, ya que lleva tiempo, es el descubrimiento del conocimiento en la ciencia. En general, es difícil resolver cosas nuevas porque no puede verificar sus respuestas, y estará construyendo capas de información sobre capas de información, y si algo está ligeramente mal en el camino puede invalidar algunas de sus suposiciones posteriores.

Otra dificultad en la investigación científica es que hay muchas rutas de solución diferentes que podría elegir explorar, pero la mayoría terminará siendo infructuosa. A menudo no es posible decir a priori cuáles son.

Las personas que siguen los tutoriales y el trabajo del código original de los investigadores podrían encontrar fácilmente que el aprendizaje profundo es tan fácil. ¡El problema es que cada detalle importa! (3 puntos para imporatace)

Tres partes se consideran las más difíciles,

  1. primero es la estructura del marco. Debe decidir qué hacer con el formato de datos riguroso, binario (genial), imagen (ok), imagen en movimiento (¿ok?), Sonido no consecutivo (¿espera?). Luego, desde el preprocesamiento hasta el ajuste de hiperparámetros, queda mucho trabajo por hacer. ¿Tamaño del lote? ¿Tasa de aprendizaje? Método de optimización? Método de normalización? Unidad Neural? Todos esos parámetros necesitan experiencia práctica, un investigador maduro necesita cientos de proyectos para recibir capacitación. Npt para mencionar la optimización del algoritmo si desea tener alguna aplicación práctica real. Esos pequeños tornillos importan.
  2. Datos. Lo que está haciendo en este momento se proporciona con datos clasificados supervisados ​​de alta calidad, ¿ha pensado en lo difícil que sería crear un conjunto de datos? No todos los proyectos te piden que identifiques gatos o perros o que hagas frente a la expresión. Por ejemplo, si necesita diseñar una condición de entrada simple, hay personas y automóviles y sus acciones instantáneas basadas en su movimiento, su acción también podría depender de lo que hayan pasado en el pasado. Por lo tanto, recopilar los datos para conectarse con el caso real es el segundo problema.
  3. Algoritmo de introspección. La mayoría del algoritmo que ha utilizado hoy ha sido probado empíricamente por cientos de personas en la frontera. El problema es, ¿alguna vez has pensado que tal vez las personas van por el camino equivocado? ¿Por qué necesitamos establecer demasiadas capas para ignorar la causalidad de diferentes factores? ¿Es la forma real del pensamiento humano? Esta parte es la más difícil, cualquier conocimiento, cualquier experiencia se pule con la reflexión. Sería mucho más simple si la gente se detuviera en algún lugar de la montaña y creyera que ha estado en la cima del mundo. No es cómo entendemos el mundo y no cómo crecemos.

Quisiera señalar que la pregunta debilita a todos los académicos e investigadores industriales que están trabajando duro. Aquí están mis razones.

  • El entrenamiento sigue siendo difícil:
    Tomemos, por ejemplo, la inicialización del peso en redes neuronales. Ahora sabemos que la inicialización de Xavier es una buena inicialización y la prueba [1] de la inicialización puede parecer obvia en retrospectiva. Sin embargo, rebobinar antes del documento, no era obvio en absoluto. No lo llamaría obvio incluso ahora. Las diferentes bibliotecas usan diferentes inicializaciones predeterminadas. No llamaría entrenamiento ‘fácil’.
  • Escala: muy pocas personas (o empresas) pueden permitirse ejecutar redes extremadamente grandes y profundas en varias GPU.
  • La relatividad de “Obvio”:
    Lo que es obvio para uno puede no serlo para otro. Si considera que las matemáticas detrás del aprendizaje profundo son demasiado fáciles, ¡debería invertir más tiempo en mejorar el aprendizaje profundo!
  • Superficie
    Hoy en día, puede construir un modelo de red neuronal con una línea de código, eligiendo alguna técnica de inicialización aleatoria, optimizadores de descenso de gradiente y otras cosas. No es necesario que entiendas realmente lo interno. Es más un enfoque plug-play. Esta superficialidad puede inducirlo a pensar por qué la gente incluso luchó para construir modelos de aprendizaje profundo,

Notas al pie

[1] http://proceedings.mlr.press/v9/

¿Qué quiere decir con éxito en este campo?

Hay una gran diferencia entre poder implementar modelos y obtener buenos resultados para realizar una buena investigación.

He dado conferencias a estudiantes de la industria y de pregrado, y puedo decir que es difícil para ellos comprender realmente los modelos y la motivación detrás de ellos. Los estudiantes en su mayoría construyen una variante del modelo conocido para diferentes conjuntos de datos.

Hoy en día, creo que estamos llegando a una era en la que implementar un enfoque profundo para una tarea clásica de PNL / Visión no será suficiente para las conferencias de primer nivel. Para tener éxito en el campo, uno debe tener nuevas ideas, respaldadas con teoría o superando modelos profundos de vanguardia para tareas profundas conocidas. Esto sigue siendo un desafío, especialmente en un campo tan lleno de gente.

La declaración de “DL es fácil” es válida según su punto de vista. Si tu,

  • Simplemente consuma los modelos previamente entrenados y haga sus cosas sin ningún esfuerzo para crear su propio conjunto de datos

Entonces es fácil, por supuesto. Solo requiere algunas líneas de código para lograr el trabajo que le interesa.

En los últimos años, muchas personas han aprovechado los beneficios del aprendizaje de extremo a extremo sin pensar en la ingeniería de características. Sin embargo, esto se debió al diseño inteligente de la estructura base NN. Por lo tanto, se hizo fácil implementar una solución sin preocuparse por determinar las características subyacentes.

Sin embargo, saber algo es muy diferente a estar familiarizado. El aprendizaje profundo requiere arquitecturas inteligentes y cada arquitectura viene con su filosofía que proviene de una idea muy novedosa o transformada. No se debe olvidar que el aprendizaje se lleva a cabo mediante el uso de estructuras matemáticas y DL está casi lleno de matemáticas.

Intente comprender el álgebra lineal, la teoría de optimización o el cálculo detrás de él. ¿Seguirás pensando igual que antes? No lo creo.

Desafortunadamente, el aprendizaje automático a menudo se enseña de manera “intuitiva” en todo el mundo y la matemática subyacente no se da en muchos casos. Esto llevó a los estudiantes a comprender el NM de una manera superficial. Por lo tanto, para mí, la declaración sujeta a esta publicación es el resultado de este hecho.

Recordemos el hecho; ¡saber algo es muy diferente a estar familiarizado!

En los primeros días de aprendizaje profundo era un deporte extremadamente difícil. Construir un modelo de aprendizaje profundo desde cero sigue siendo una tarea muy difícil, quizás aún más difícil con todas las nuevas innovaciones.

La razón por la que se ha vuelto aparentemente “fácil” es en realidad la increíble coordinación de la comunidad de código abierto y las inyecciones monetarias masivas en esta comunidad por parte de las compañías progresivas de sillicon valley.

Simplemente escribiendo la siguiente línea de python “de keras.layers import Conv2D” reunirá de inmediato una gran cantidad de paquetes de python desarrollados por una comunidad académica e industrial global increíblemente bien organizada de científicos / ingenieros de github de código abierto.

¡Agradezca a todas estas personas por facilitarle la vida y permitirle alcanzar estos resultados mágicos sin esfuerzo 🙂 y recuerde devolver!

Su cerebro consta de alrededor de 100 mil millones de neuronas con 100 billones de conexiones, en términos muy generales. El cableado no está programado, en el sentido de estar especificado, ya que solo tenemos 20,000 genes, por lo que sería imposible. Como un niño pequeño, entre otras hazañas, aprende sin esfuerzo sobre 5o palabras al día. Entonces, cualesquiera que sean los algoritmos que se estén utilizando, tienen que ser muy, muy fáciles. Esto se aplicará también a las inteligencias artificiales basadas en el aprendizaje profundo.

El hecho de que los procesos simples pueden conducir a resultados increíblemente complejos se ha conocido a lo largo del siglo XX, comenzando con el trabajo de Turing sobre la morfogénesis, luego modelos simples de caos, fractales, etc.

Deep Learning da la ilusión de ser fácil porque es fácil comenzar a usarlo. Sin embargo, una vez que te gradúas a problemas del mundo real, se vuelve complicado. En mi opinión, el aprendizaje profundo es DURO debido a las siguientes razones:

  • Los modelos de aprendizaje profundo son una composición compleja de funciones: este hecho es la razón por la cual el aprendizaje profundo es poderoso y difícil. Esta compleja composición presenta muchos desafíos de optimización numérica como gradientes de desaparición y explosión. Muchos marcos lo ocultan de la vista cuando está haciendo modelos simples. Sin embargo, tan pronto como te mueves a redes más exóticas y comienzas a mezclar cosas, regresa y te golpea fuerte.
  • La teoría va a la zaga de los resultados empíricos: en realidad no tenemos explicaciones matemáticamente fundamentadas para cosas como la generalización y la capacidad del modelo. Lo mejor que puede hacer es ejecutar la red con un montón de configuraciones diferentes y elegir la mejor.
  • Aprendizaje de representación : el aprendizaje profundo no requiere ingeniería de características ya que los modelos aprenden automáticamente representaciones útiles de datos sin procesar. Pero, esto también hace que la depuración o comparación de modelos sea realmente DIFÍCIL. Si lee las secciones de Resultados de los documentos, están llenos de hipótesis y visualizaciones onduladas a mano sobre por qué el modelo A es mejor que el modelo B.
  • Las matemáticas no son suficientes: el aprendizaje profundo requiere que seas bueno en matemáticas. Sin embargo, también requiere que tenga un conocimiento práctico de las GPU y que tenga habilidades de ingeniería de software descendente para que pueda obtener grandes cantidades de datos. Ejecutar modelos de juguetes en MNIST es genial, pero saturar su GPU para la plena utilización de su gran conjunto de datos que no cabe en la memoria es un juego de pelota diferente.

Volviendo anónimo para escribir algunos pensamientos personales últimamente.

Siento exactamente lo mismo que el aprendizaje profundo es tan fácil ayer. Como estudiante de segundo año en la universidad, pasé solo 2 días el último receso de invierno y terminé la especialización de aprendizaje profundo de Andrew Ng, y el nuevo capítulo hace varios días cuando salió. Tengo experiencia en Tensorflow, Pytorch, Keras, y puedo construir modelos de vanguardia como subtítulos de imágenes con atención, GAN, aprendizaje de refuerzo … Incluso tuve muchos diseños nuevos de arquitecturas de red. Algunas de esas arquitecturas resultan ser muy similares a las publicaciones recientes que nunca he leído antes. Antes de hoy, estaba listo para ser el Newton en el aprendizaje profundo y ser el Ph.D. estudiante que desafía todas las ideas de Geoffrey Hinton y revoluciona el campo.

Pero estoy completamente equivocado.

Estoy realmente contento de haberme dado cuenta lo suficientemente temprano. Sí, el aprendizaje profundo en sí mismo es simple y no es demasiado para aprender. Incluso los investigadores más famosos no están tan seguros de por qué las cosas funcionan y por qué no. Sin embargo, nosotros, los recién llegados al campo, no podemos ver la imagen completa del aprendizaje profundo, y estamos contentos con el hecho de que podemos hacer algunos trabajos similares como los investigadores más famosos en el campo más avanzado.

Aquí hay por qué estamos equivocados:

1. La implementación de modelos de vanguardia con marcos como Keras no es única y especial, especialmente cuando seguimos un tutorial en línea y simplemente cambiamos los datos a los nuestros.

2. Subir y comprender las cosas detrás de esas arquitecturas es extremadamente difícil. Necesitamos una comprensión completa de la teoría de la probabilidad, la teoría de la información, el cálculo … simplemente para comprender las ideas principales. Todas las ideas innovadoras de Geoffrey Hinton provienen de una combinación de matemáticas, ciencias neuronales y filosofía. Las GAN son bastante intuitivas, pero solo hasta que Ian Goodfellow

3. El aprendizaje profundo será mucho más difícil. Es como la alquimia en este momento, pero pronto se convertirá en una ciencia rigurosa que debemos probar y justificar por qué todo funciona.

Personalmente, estoy tratando de ponerme al día con las matemáticas y estadísticas rigurosas, y también volver a esos viejos documentos para descubrir las ideas detrás de todo. Espero que planees hacer lo mismo.

¡Buena suerte!

Depende de qué tipo de problemas vamos a resolver con el aprendizaje profundo. Fue iniciado por reconocimientos como dígitos e imágenes escritos a mano. Luego pasar a la detección y problemas más complejos. Comenzar es fácil. Una vez que uno comprende las redes neuronales básicas, la función coss / objetivo, la optimización del descenso del gradiente, la propagación hacia atrás y las regularizaciones, entonces comienza a reproducir muchos modelos probados que resolvieron problemas específicos heurísticamente. Sin embargo, surgirán muchas preguntas cuando profundicemos para ver más problemas.

Primero, los estudios menos teóricos realmente abordan problemas conocidos de modelos profundos. Digamos, la estabilidad del entrenamiento para una arquitectura específica, o el impacto de la profundidad en la precisión, la aproximación del término de máxima entropía, etc. Incluso para las redes neuronales simples de avance o convolucionales, aún podemos plantear muchas preguntas y no encontrar las respuestas adecuadas. Supuse que esto se debe a la falta de estudios teóricos válidos que prueben bien los experimentos empíricos. No solo con estadísticas básicas y probabilidad, necesitamos más teóricos para abordar los problemas y hacer teoremas generales como guías para diseñar y entrenar modelos profundos.

En segundo lugar, en realidad progresamos menos hacia el verdadero aprendizaje no supervisado. Incluso con modelos recientes como la red de escalera, las redes de confrontación generativas y los codificadores automáticos variacionales, tenemos la responsabilidad del primer problema, ya que realmente no entendemos teóricamente. Este es un bloqueador para una mayor exploración, ya que continuaremos haciendo enfoques heurísticos.

Tercero. La naturaleza del aprendizaje profundo requiere grandes conjuntos de datos y la naturaleza de los problemas siempre tiene menos datos (o tal vez solo datos sin etiquetar). Con el progreso actual en las técnicas de aprendizaje profundo, todos tienen hambre de trabajar en tareas de aprendizaje más avanzadas, sin embargo, los datos son costosos y caros. Para el habla y el lenguaje natural, por ejemplo. Solo unas pocas empresas tienen la oportunidad de obtener los modelos acústicos y de lenguaje a bajo precio. Una solución prometedora para esto son los modelos generativos profundos, para generar más datos de muestras de conjuntos existentes. Y nuevamente, este es un problema difícil de resolver.

¡Espero que esto ayude!

Supongo que para responder realmente a su pregunta, depende de lo que quiera decir con “éxito”. Es posible aplicar el aprendizaje profundo con éxito a una tarea sin una sólida formación en aprendizaje automático. Si las contribuciones son significativas y sustanciales, eso suele ser más difícil, aunque no necesariamente imposible. Honestamente, no hay mucha diferencia entre un estudiante universitario y un estudiante graduado. Los estudiantes de posgrado generalmente toman clases de posgrado y ya han terminado los cursos de pregrado, por lo que existe una mayor probabilidad de que sean más efectivos para hacer una contribución significativa. Pero hay mucha fruta baja en el aprendizaje automático porque el campo es muy nuevo. Definitivamente hay áreas que son mucho más difíciles y requieren mucha más comprensión. También depende de su definición de “difícil”. Si pasa un tiempo en ML, sin duda, eventualmente, con suerte, lo aprenderá. Las personas típicamente aprenden a un ritmo diferente y tienen diferentes estilos de aprendizaje. Algunas áreas en ML requieren una cantidad considerable de antecedentes antes de hacer una contribución significativa. Algunas áreas requieren un gran conocimiento de las matemáticas avanzadas, etc. Depende de su definición de “difícil”; hay áreas que requieren un considerable conocimiento de fondo de ML o matemáticas avanzadas, y otras posibles “frutas bajas” que no requieren una gran cantidad de conocimiento externo para aplicar potencialmente ML / Deep Learning con éxito.

More Interesting

¿Cuáles son algunas buenas charlas sobre fragmentación?

¿Cuál es la mejor arquitectura de red neuronal para procesar video?

Cómo hacer un bot que pueda ser entrenado para jugar juegos simples usando Python

¿Vale la pena desarrollar un algoritmo de minería de datos más rápido que otros de código abierto y comerciales existentes? Si vale lo suficiente, ¿qué valor tiene ser el algoritmo más rápido?

¿Es posible que un ingeniero de procesamiento de señales se involucre en el campo del aprendizaje automático?

En Python, ¿cómo puedo probar y asegurarme de que mi modelo predice datos correctamente? (principiante preguntando)

¿Cómo podemos estimar múltiples parámetros de un clasificador?

¿Cómo se eligieron las palabras sesgo y varianza (Machine Learning)?

¿Por qué a la gente le gusta la red profunda con menos parámetros de aprendizaje incluso cuando el rendimiento de la prueba es peor que otros?

¿Cuántas imágenes necesito para entrenar una red neuronal convolucional?

¿Cuál es la diferencia entre un modelo paramétrico y un modelo no paramétrico?

Soy nuevo en la programación de Python. Quiero aprender el aprendizaje automático. ¿Qué libros son buenos?

¿Cómo debo entrenar mi modelo de tren con un modelo de regresión?

¿Por qué algunos profesores dicen que nunca entendieron realmente las matemáticas o las estadísticas hasta que primero enseñaron un curso sobre ese tema?

¿Por qué necesitamos tasas de aprendizaje adaptativo para Deep Learning?