Si estás pensando en implementar tu primera solución de inteligencia artificial, este artículo te interesa
El aprendizaje profundo (deep learning) es un subconjunto de los algoritmos de aprendizaje autónomo, que se ha convertido en un estándar de facto y es una de las primeras opciones a considerar cuando se aborda un nuevo problema. Internet está lleno de información sobre por qué hacerlo, cómo hacerlo y quién está dando el salto a lo profundo. En este momento es como el martillo que todo lo ve como un clavo. No sobra una aclaración, no pretendo decir que el aprendizaje profundo sea inútil o que no sea un gran avance, porque indiscutiblemente lo es. Por el contrario, el propósito de este artículo es explicar a una audiencia fuera de la ciencia de datos, ¿Cuándo el Deep Learning es la mejor opción? y cuándo es mejor optar por un enfoque más convencional. Si está pensando en implementar su primera solución de inteligencia artificial, este artículo le interesa.
Machine Learning y aprendizaje profundo
A modo de introducción y para dar algo de contexto, explicaré brevemente algunos conceptos. En primer lugar, el aprendizaje autónomo (machine learning) agrupa un conjunto de algoritmos y herramientas estadísticas para que un SISTEMA DESEMPEÑE UNA TAREA SIN SER PROGRAMADO explícitamente en la forma de resolverla. Los modelos de aprendizaje autónomo aprenden de la experiencia. En este contexto, experiencia significa “datos” (principalmente ejemplos resueltos y etiquetados de la tarea a realizar). Aunque existe un conjunto amplio de posibilidades entre estos algoritmos, las redes neuronales son probablemente las más conocidas.
El aprendizaje profundo se refiere estrictamente a las redes neuronales profundas, es decir, aquellas redes que tienen más de una capa de entrada y una de salida. También es posible decir que son aquellas redes con una capa oculta o más. En la práctica, se va mucho más allá de estos números. Más de 50 capas y millones de parámetros están detrás de los grandes titulares de la inteligencia artificial (conducción autónoma, visión por computador, procesamiento de lenguaje natural, reconocimiento de voz, entre muchos más ejemplos). Cada capa adicional le brinda al modelo de reconocer patrones más complejos detectando patrones en la capa anterior. La imagen a continuación busca explicar este concepto.
By Sven Behnke – Own work, CC BY-SA 4.0, MULTIPLE LEVELS OF ABSTRACTION in Deep Learning
En el ejemplo se observa que las capas iniciales están basadas en conceptos simples como rectas, pero estas van evolucionando (profundizando) a conceptos más complejos como figuras geométricas, hasta llegar a conceptos del contexto del problema que se está abordando (en este caso, representaciones de animales).
Retos y dificultades del aprendizaje profundo
-Exigencia por grandes volúmenes de datos
El incremento de capas hace a las redes más flexibles, de manera que, con la arquitectura adecuada, pueden modelar un gran numero de patrones y funciones. Su capacidad de representación crece con cada capa y estos modelos pueden resultar bastante grandes. De hecho, este es el primer problema que se puede presentar: estos son modelos de peso pesado. Las redes neuronales profundas necesitan cantidades gigantescas de información para entrenar sus decenas de capas y millones de parámetros.
-Así que la primera regla sería “no use aprendizaje profundo si no tiene información para alimentarlo”.
Ahora es donde vienen las objeciones de ¿y la transferencia de aprendizaje (transfer learning)? Sí, es una opción. La transferencia de aprendizaje toma un modelo existente funcional y entrena de nuevo parte de él para un nuevo propósito. No obstante, el desempeño de la solución lograda usando transferencia de aprendizaje depende también de la cantidad de datos. Entrenar exitosamente solo las capas finales del modelo también necesita una cantidad significativa de datos (aunque menor que para entrenar la red entera).Hago un paréntesis para profundizar un poco en la transferencia de aprendizaje (transfer learning). Ésta es una técnica en la que una red neuronal entrenada para una tarea es adaptada para cumplir otra función. Por ejemplo, una aplicación para reconocer gatos puede ser adaptada para en su lugar, reconocer leones o algún otro animal. El principio es que las capas más bajas de la red aprenden a reconocer bordes y otros patrones, mientras que el conocimiento necesario para separar un gato de un león depende de características más complejas y, por ende, más adelante en el proceso. Para hacer la transferencia, se “congelan” las capas más bajas de la red y se usan ejemplos de la nueva tarea para continuar el entrenamiento de las capas superiores, aprovechando lo que el modelo ya ha aprendido en niveles más básicos.
-Sobreajuste vs generalización: El segundo problema que puede presentarse con el aprendizaje profundo es el sobreajuste (overfitting). Un modelo con sobreajuste ha aprendido *demasiado* bien de los datos de entrenamiento, llegando así a un modelo que no generaliza suficientemente bien y presenta un desempeño más bajo en los casos generales. Las redes neuronales, sobre todo las más grandes, son propensas al sobreajuste por su gran cantidad de parámetros a entrenar. Por supuesto, existen muchos métodos para solucionar esto y obtener un modelo de buen desempeño, pero se salen del alcance de este texto.
-Dificultad para interpretar cómo funciona el modelo: Ahora bien, hay suficientes datos, hay cómo solucionar el sobreajuste, ¿usamos aprendizaje profundo? No tan rápido. Los modelos de aprendizaje profundo son cajas negras en su mayoría. Con la excepción de algunas aplicaciones de visión por computador, es difícil, si no imposible, saber qué está haciendo el modelo internamente. Si se requiere comprensión del modelo por parte de las personas, opte por algo más convencional como un árbol de decisión o cualquier otro modelo “traducible” para los seres humanos.
-Poder de cómputo exigido: Parece que ya lo hemos revisado todo, pero aún nos falta un punto crítico: el poder de cómputo necesario para el entrenamiento. Hemos hablado del tamaño gigantesco de estos modelos, de la cantidad de datos que requieren y un par de cosas más. Bueno, todo lo anterior se traduce en una demanda enorme de poder de procesamiento para entrenar un modelo de aprendizaje profundo. No es extraño escuchar tiempos de entrenamiento de días o meses. Más poder de cómputo significa casi siempre menos tiempo de entrenamiento y, entre más grande sea la red a entrenar, más lento será su entrenamiento. Es necesario prever el costo de una estación de trabajo equipada con varias GPUs (tarjetas gráficas) o estar dispuesto a rentar en la nube una máquina como ésta por horas.
CONCLUSIONES
En resumen, ¿Qué se debe tener en cuenta antes de dar un salto a lo profundo? Aquí está la lista de chequeo:
» HAY SUFICIENTES DATOS.
» HAY COMO SUPERAR EL SOBREAJUSTE.
» NO ES NECESARIO COMPRENDER EL FUNCIONAMIENTO INTERNO DEL MODELO.
» HAY PODER DE CÓMPUTO PARA ENTRENAR (O CÓMO PAGARLO).
¿ESTÁ TODO? ¡FELICITACIONES! DÉ EL SALTO Y DISFRUTE DE LAS VENTAJAS DEL APRENDIZAJE PROFUNDO. ¿FALTA UNO DE LOS CUATRO PUNTOS?
Piénselo, tal vez hay otras alternativas de solución a lo que busca. Pero si faltan dos o más puntos, mi sugerencia es antes de sumergirse en lo profundo, nadar en la orilla.
VISIT OUR KNOWLEDGE CENTER
We believe in democratized knowledge
Understanding for everyone: Infographics, blogs, and articles
Let’s tackle your business difficulties with technology
” There’s a big difference between impossible and hard to imagine. The first is about it; the second is about you “
Marvin Minsky, Professor pioneer in Artificial Intelligence