Cómo aprender IA

Aprender IA

Markus Spiske en Unsplash

Un error común de los principiantes es pensar que pueden aprender IA/ML a partir de unos pocos tutoriales que implementan los últimos algoritmos, así que pensé en compartir algunas notas y consejos sobre cómo aprender IA. También tengo un repositorio en GitHub con muchas notas y enlaces a artículos de IA/ML sobre diversos temas. LearnAI.

Antecedentes

Como ingeniero de IA profesional con más de 25 años de experiencia en ingeniería de software, he diseñado e implementado una amplia variedad de aplicaciones y tecnologías de software. Por lo tanto, he utilizado e implementado cientos (quizás miles) de bibliotecas, frameworks y APIs de software. También tengo un M.S. en Matemáticas y una MSCS en Inteligencia Artificial, por lo que estoy más que calificado para ser mentor y enseñar cursos de matemáticas y ciencias de la computación a nivel de pregrado, así como muchos cursos de posgrado en Matemáticas/CS.

El estudiante de IA debe asegurarse de aprender la historia de la IA, que está llena de exageraciones y alquimia, haciendo afirmaciones infundadas sobre lo que la IA puede hacer, como AGI. Por lo tanto, un estudiante de IA también necesita una buena dosis de escepticismo [8].

Dado que este es un sitio web de IA, asumiré que la mayoría de los lectores tienen los siguientes objetivos:

  • Estás interesado en convertirte en un ingeniero de IA/ML.
  • Estás interesado en aprender las mejores prácticas de ingeniería de software [1][2].

Cómo convertirse en un ingeniero de Inteligencia Artificial

Prerrequisitos

Aquí hay algunos prerrequisitos de pregrado que debes conocer antes de aprender IA/ML:

  • Cálculo
  • Matemáticas Discretas
  • Álgebra Lineal Avanzada
  • Probabilidad y Estadística
  • Programación Estadística

Los siguientes cursos generalmente son requeridos para obtener un título en ciencias de la computación:

  • Algoritmos y Estructuras de Datos
  • Organización de Computadoras
  • Redes de Computadoras
  • Sistemas Operativos
  • Computación Distribuida

Lo que Google recomienda que hagas antes de tomar su curso de Aprendizaje Automático o Ciencia de Datos

Aquí hay algunos recursos sobre matemáticas que me han parecido útiles:

  • Repaso de Matemáticas para Científicos e Ingenieros
  • Manual de Trigonometría
  • Lecciones sobre Cómo Mentir con Estadísticas
  • Una Introducción a las Redes Neuronales Recurrentes y las Matemáticas que las Impulsan
  • Aprende Ciencia de Datos Gratis

Errores Comunes a Evitar

Aquí hay algunos errores comunes para principiantes a evitar al aprender ML [5][6][10]:

  • Preguntar “¿Cuál es el mejor algoritmo para el problema X?”
  • Intentar codificar algoritmos de ML desde cero.
  • Usar conjuntos de datos personalizados y/o resolver problemas del mundo real mientras se aprende IA.
  • Intentar aprender IA a partir de documentos de investigación.
  • Usar redes neuronales (solo como último recurso)

Evita codificar algoritmos desde cero

En matemáticas aplicadas, el énfasis está en la aplicación de las matemáticas en lugar de la derivación de las fórmulas. De manera similar, la ingeniería de IA es la aplicación de algoritmos para resolver problemas. Por lo tanto, el énfasis está en saber qué algoritmos están disponibles para un problema dado, cómo funcionan y cómo obtener el máximo provecho de ellos, no en los detalles de implementación.

Cualquier ingeniero de software competente puede implementar cualquier algoritmo de aprendizaje automático — Profesor de la Universidad Lewis

¿Por qué? Simplemente hay demasiados algoritmos de ML como para que un desarrollador de software los pueda codificar desde cero y entender todos los detalles necesarios para implementarlos correctamente. De hecho, constantemente se están desarrollando más algoritmos. Concentrarse solo en los algoritmos “más interesantes” o SOTA es una receta para el desastre y un error común de los principiantes. De hecho, hay muchos otros conceptos que son más importantes que saber cómo implementar un algoritmo de ML (ver Conceptos Fundamentales de IA).

Una vez que hayas dominado el uso de los algoritmos de IA, puedes volver más adelante y tratar de entender cómo funcionan internamente codificándolos a mano, si es necesario.

Evita intentar aprender IA a partir de documentos de investigación

Los documentos de investigación no son una buena fuente para aprender un tema. Se supone que el lector ya conoce la teoría principal y los conceptos que se tratan en los libros de texto. Por lo tanto, el mejor enfoque para aprender IA es un buen libro de texto.

Ten en cuenta que los resultados de los artículos de investigación en IA son, en su mayoría, irreproducibles. De hecho, existe un grave problema de integridad en la investigación en IA en este momento. Cuanto más te alejes de publicaciones reputadas como IEEE, peor será.

Esto se discute con más detalle en Russell y Norvig [8] y otros libros de texto de posgrado.

Consejos para aprender

Aquí tienes algunos consejos para aprender IA:

  • Prefiere algoritmos más simples en lugar de algoritmos más complejos (Navaja de Occam). Por lo tanto, los modelos de aprendizaje profundo deberían ser tu última opción.
  • No existe algo como “lo mejor”, solo “lo suficientemente bueno” (Teorema del Almuerzo Gratis).
  • Saber cuándo no utilizar IA.
  • Listas de verificación de IA.

Conceptos fundamentales de IA

Aquí tienes algunos conceptos clave de IA que debes aprender:

  • ¿Cómo definir el problema?
  • ¿Cómo seleccionar un conjunto de datos?
  • ¿Cómo realizar la preparación de datos?
  • ¿Cómo realizar la ingeniería de características?
  • ¿Cómo seleccionar un algoritmo?
  • ¿Cómo elegir una métrica de rendimiento?
  • ¿Cómo entrenar un modelo?
  • ¿Cómo presentar resultados?
  • ¿Cómo diseñar e implementar la solución?
  • ¿Cómo depurar modelos?

En la escuela de posgrado, se nos enseña que la técnica adecuada para aprender IA es la visión de caja negra [7] de los algoritmos de ML (enfoque de arriba hacia abajo), ya que es mejor no perder tiempo intentando codificar algoritmos (enfoque de abajo hacia arriba), especialmente cuando estás comenzando.

A menos que estés desarrollando una biblioteca de software de IA comercial, descubrirás que hay muy poco que aprender al centrarte en la implementación interna de un algoritmo. Es más importante centrarse en aprender cómo utilizar e implementar algoritmos de IA.

En ingeniería de software, hay muchos principios conocidos, como DRY, KISS y la Navaja de Occam. Quizás el principio más importante sea “no reinventar la rueda” (DRTW). Sin embargo, parece que todo principiante en aprendizaje automático intenta implementar una red neuronal desde cero. Un ingeniero de IA necesita conocer el mejor uso de TODAS las bibliotecas de software, API y algoritmos que se utilizan en una aplicación, no solo las bibliotecas de IA.

Navaja de Occam: La solución más simple que se ajusta a los datos suele ser la mejor.

Un ingeniero de IA profesional sabe que la mejor práctica actual es un enfoque centrado en los datos en lugar de un enfoque centrado en el modelo para IA/ML. Por lo tanto, un principiante debe centrarse en aprender la preparación de datos, la ingeniería de características, la reducción de dimensionalidad y otros conceptos y técnicas clave en lugar de los detalles de implementación de un modelo/algoritmo en particular. Además, se requiere un cambio de mentalidad para ser efectivo en IA, pasando de tratar de encontrar el “mejor” modelo/enfoque a “lo suficientemente bueno”.

Hoy en día, la automatización del ciclo de vida completo de desarrollo de software es una gran parte del desarrollo de software de IA (MLOps), por lo que es dudoso que implementes e implementes un algoritmo codificado a mano. De hecho, hay multitud de razones para evitar escribir código personalizado cuando hay bibliotecas y frameworks robustos disponibles.

En resumen, es mejor comprender la imagen general (enfoque de arriba hacia abajo) del proceso de ingeniería de IA antes de adentrarse en los detalles de implementación.

Cómo elegir un modelo

Ha habido ocasiones en las que he intentado ayudar a principiantes solo para descubrir que han pasado cientos de horas codificando a partir de un tutorial (o peor aún, un ejemplo de la documentación de Tensorflow/PyTorch) utilizando el modelo equivocado y/o resolviendo el problema equivocado. De hecho, generalmente se muestran reacios a escuchar cuando se les dice que han cometido un error, lo cual llamo fijación en el código.

Cuando aprendas IA, primero debes dedicar tiempo a encontrar varios buenos tutoriales/ejemplos que resuelvan un problema similar y que hayan sido escritos por alguien con buenas credenciales.

A continuación, debes dedicar tiempo a comprender tu conjunto de datos para asegurarte de que se está modelando correctamente. Por ejemplo, el hecho de que tus datos sean datos de acciones o tengan una característica temporal no significa necesariamente que los datos se deban modelar como una serie temporal y/o utilizando redes neuronales.

Por último, evalúa muchos modelos simples en tu conjunto de datos (o en un subconjunto de tus datos si tu conjunto de datos es muy grande) utilizando una herramienta de AutoML como Orange para encontrar el modelo o modelos de mejor rendimiento que se utilizarán como referencia para la comparación. Ten en cuenta que tu modelo elegido final debería tener un rendimiento mucho mejor que todos los modelos de referencia más simples.

En general, incluso los modelos SOTA más complejos solo lograrán una pequeña mejora en el rendimiento (digamos un 3-5%), lo cual no es suficiente para justificar su uso en la resolución de problemas del mundo real.

Tutoriales y Libros

Elegir un recurso de aprendizaje de ML es principalmente una cuestión de preferencia personal. En general, recomiendo que consultes más de un recurso (además de la documentación) al aprender IA. Tengo un artículo de VoAGI, Recursos de Aprendizaje de IA, que tiene una lista de algunos recursos de IA que me han resultado útiles. Dado que la ingeniería de IA es una extensión de la ingeniería de software, debes desarrollar una comprensión exhaustiva de los conceptos clave presentados en SWEBOK.

¿Necesito una Maestría?

Si vas a dedicar el tiempo necesario para estudiar IA, debes considerar un título en línea, lo cual aumentará considerablemente tus oportunidades profesionales (y es un requisito para casi todos los puestos de ingeniería de IA). Parece que muchas personas olvidan que la IA se considera un tema de nivel de posgrado. De hecho, la ingeniería de IA es una disciplina de ingeniería. La mayoría de las disciplinas de ingeniería requieren un título especializado, pero por alguna razón, la ingeniería de software no lo requiere, lo cual probablemente explique por qué el 85% o más de los proyectos de IA fracasan [6].

Aquí hay algunos artículos que pueden ayudarte a decidir:

  • ¿Necesitas una Maestría en Ciencia de Datos?
  • ¿Tienes el Título que se Necesita para Ser Contratado como Científico de Datos?
  • Por qué los Ingenieros de Aprendizaje Automático están Reemplazando a los Científicos de Datos
  • Los Ingenieros de Aprendizaje Automático Podrían Reemplazar a los Científicos de Datos: ¿Por qué?
  • Máster en Inteligencia Artificial: Los 10 Mejores Programas
  • MSCS en Inteligencia Artificial de la Universidad Lewis

Conclusión

Este artículo fue motivado principalmente por ayudar a muchos usuarios de foros de Slack y Discord interesados en un enfoque de autoaprendizaje. Sin embargo, si vas a dedicar el tiempo necesario para estudiar IA/ML, sería prudente invertir en un título en línea, lo cual aumentará considerablemente tus oportunidades profesionales.

Referencias

[1] P. Bourque y R. E. Fairley, Guía para el Cuerpo de Conocimientos de Ingeniería de Software, v. 3, IEEE, 2014.

[2] Código de Ética del IEEE

[3] Código de Ética de la ACM

[4] J. Brownlee, ” 5 Errores que los Programadores Cometen al Comenzar en Aprendizaje Automático,” Machine Learning Mastery, 39 de enero de 2014.

[5] J. Brownlee, ” Deja de Codificar Algoritmos de Aprendizaje Automático desde Cero,” Machine Learning Mastery, 5 de octubre de 2016.

[6] T. Shin, ” 4 Razones por las que no Deberías Usar Aprendizaje Automático,” Towards Data Science, 5 de octubre de 2021.

[7] E. Gamma, R. Helm, R. Johnson y J. Vlissides, Patrones de Diseño: Elementos de Software Orientado a Objetos Reutilizable, 1ª ed., Addison-Wesley Professional, ISBN-10: 0201633612, 1994.

[8] S. Russell y P. Norvig, Inteligencia Artificial: Un Enfoque Moderno, 4ª ed., Upper Saddle River, NJ: Prentice Hall, ISBN: 978-0-13-604259-4, 2021.

[9] M. Hunter, ” 6 Técnicas de Estudio Poderosas para Ayudarte a Dominar los Temas más Difíciles en Ciencia de Datos,” Towards Data Science, 10 de junio de 2022.

[10] A. Joury, ” Olvídate de los Algoritmos y Modelos — Aprende a Resolver Problemas Primero,” Towards Data Science, 9 de septiembre de 2022.