Cómo definir un problema de IA

Definición de problemas de IA

Una mejor manera de hacer una pregunta sobre IA/ML

Towfiqu barbhuiya en Unsplash

Con más de 25 años de experiencia en ingeniería de software, he respondido muchas preguntas de desarrolladores de software que están comenzando con la inteligencia artificial (IA) y el aprendizaje automático (ML), así que pensé en compartir algunos consejos sobre cómo publicar preguntas sobre IA/ML en foros de chat como Slack y Discord.

Antecedentes

Un error común de algunos usuarios es que pueden simplemente “publicar” una pregunta. Sin embargo, los foros de chat son diferentes en principio de los foros en línea como Stack Overflow. Un foro de chat tiende a ser más personalizado, por lo que requiere más tiempo y esfuerzo para responder una pregunta. Por lo tanto, es mejor invertir un poco de tiempo al principio para describir adecuadamente el problema, especialmente al enviar un mensaje directo (DM). De lo contrario, es probable que recibas una respuesta incorrecta (lo cual es bastante común).

Ten en cuenta los antecedentes y la experiencia de los usuarios que te brindan consejos. Muchos usuarios de Discord son estudiantes de secundaria y universidad sin experiencia en IA/ML o ingeniería de software. Yo menciono mis credenciales en mi perfil (divulgación completa).

El primer paso para resolver un problema de IA/ML es poder describir y comprender el problema en detalle.

Resumen

Aquí tienes un resumen de mis consejos para describir un problema de IA/ML [1]:

  1. Da una breve descripción de tus antecedentes y experiencia.
  2. Describe el problema, incluyendo la categoría del problema de ML.
  3. Describe el conjunto de datos detalladamente y muestra disposición para compartir tus conjuntos de datos.
  4. Describe cualquier preparación de datos y pasos de ingeniería de características que hayas realizado.
  5. Describe los modelos que has probado.
  6. Da prioridad a texto y tablas en lugar de gráficos y diagramas.
  7. Evita pedir a los usuarios que te ayuden a depurar tu código.

Dado que algunos usuarios acceden a Discord utilizando dispositivos móviles, es mejor compartir la descripción del problema y/o fragmentos de código a través de GitHub Gist, Pastebin, etc., y compartir el enlace en el foro.

Usualmente es mejor compartir archivos a través de DM o crear un hilo para que otros usuarios no tengan que buscar en los canales tus archivos y publicaciones. Ten en cuenta que el contenido de los canales de Discord no está estructurado, por lo que puede ser difícil buscar en los canales para encontrar tus publicaciones originales.

Si alguien se ofrece voluntariamente para ayudarte, puede ser útil copiar/pegar tu publicación original si les envías un DM.

Si tienes problemas de programación, es mejor compartir un enlace al código/algoritmo fuente y mencionar que tienes problemas con la implementación en lugar de publicar fragmentos de código y preguntar “¿qué está mal en mi código?”

Detalles

Deberías proporcionar brevemente lo siguiente (1-2 frases por elemento) en tu publicación en el foro:

1. Da una breve descripción de tus antecedentes y experiencia.

Es mejor que los usuarios sepan desde el principio si estás en la secundaria, universidad, escuela de posgrado, investigador, profesional experimentado, etc.

Muchos usuarios de Discord no se dan cuenta de que muchas preguntas requieren mucho tiempo de investigación para brindar una respuesta. Por lo tanto, es justo que des una breve descripción de tus antecedentes.

Aprendí esta lección después de pasar un tiempo considerable intentando ayudar a principiantes (desconocidos para mí) que procedieron a resolver el problema incorrecto utilizando el algoritmo incorrecto.

2. Describe el problema.

En pocas frases, describe el problema, incluyendo el tipo de problema de ML si se conoce (Numérico: clasificación, regresión; Imagen: clasificación de objetos, detección de objetos, reconocimiento de objetos; Texto: análisis de sentimientos, modelado de temas, generación de texto, etc.).

Este paso puede incluir una revisión bibliográfica. Sin embargo, si puedes encontrar algunos artículos que resuelvan el mismo problema, eso debería funcionar por ahora.

Parte de la formulación del problema es decidir si estás tratando con aprendizaje supervisado, no supervisado, aprendizaje por refuerzo, etc. [1].

¿Cuál es el objetivo del modelo? Clasificar, predecir, detectar, traducir, etc.

¿Cuál es el objetivo del proyecto? Investigación, ingeniería, aplicación comercial, hobby, etc.

3. Describe el conjunto de datos en detalle y esté dispuesto a compartir su conjunto de datos.

Describa el conjunto de datos, incluyendo las características de entrada y las características objetivo.

Es mejor compartir estadísticas resumidas de los datos, incluyendo recuentos de características discretas o categóricas, incluyendo la característica objetivo.

Es mejor compartir el conjunto de datos completo (si desea que alguien le ayude, debe ser abierto y honesto).

Si, por alguna razón, no puede compartir el conjunto de datos, debe indicar claramente esto y por qué no puede compartir el conjunto de datos.

Tenga en cuenta que los usuarios de Discord están más que dispuestos a donar su tiempo para brindar asesoramiento gratuito, pero es poco ético intentar hacer preguntas vagas con el fin de obtener consejos gratuitos en un proyecto comercial o de investigación por el cual se le paga. Si este es el caso, debe ser diligente en afirmar este hecho de manera repetida (no espere que otros usuarios de Discord busquen datos para encontrar su publicación original).

4. Describa cualquier preparación de datos y pasos de ingeniería de características que haya realizado.

Los pasos y técnicas para la preparación y limpieza de datos variarán según el conjunto de datos.

Los pasos más comunes son: corregir errores estructurales, manejar datos faltantes o duplicados y filtrar valores atípicos.

La ingeniería de características se puede utilizar para ayudar a un algoritmo y mejorar el rendimiento del modelo, lo cual incluye crear nuevas características, combinar clases dispersas, eliminar características no utilizadas y agregar variables ficticias.

Algunos algoritmos de aprendizaje automático funcionan mucho mejor si todas las variables se escalan al mismo rango utilizando técnicas de normalización o estandarización.

5. Describa los modelos que ha probado (debe haber probado al menos uno).

Después de realizar la preparación de datos y la ingeniería de características, el primer paso debería ser evaluar varios modelos de referencia que se utilizarán más adelante para realizar comparaciones. Los modelos finales que seleccione deben tener un mejor rendimiento en su conjunto de datos que los modelos de referencia.

6. Prefiera el texto y las tablas en lugar de los gráficos y las visualizaciones.

Es mejor no trazar más de una métrica en un gráfico, ya que las bibliotecas como matplotlib ajustarán automáticamente los ejes para mostrar mejor la diferencia en los valores (para ejemplos, consulte Cómo diagnosticar el sobreajuste y el subajuste).

Aquí hay algunos problemas comunes con gráficos y visualizaciones:

  • Las tablas se utilizan para comparar modelos y compartir estadísticas resumidas.
  • Los gráficos y las visualizaciones se pueden utilizar para visualizar los resultados del modelo, pero no se deben usar para evaluar y comparar los resultados del algoritmo.
  • Los gráficos y las visualizaciones son difíciles de ver en dispositivos móviles (muchos usuarios acceden a Discord utilizando dispositivos móviles).
  • Los gráficos y las visualizaciones pueden ser engañosos, ya sea intencionalmente o no (consulte Lecciones sobre cómo mentir con las estadísticas).
  • Muchas bibliotecas, como Matplotlib, volverán a escalar automáticamente los ejes cuando sea posible para mostrar la diferencia en los valores, lo cual tiene pros y contras.

La mejor práctica (y enfoque utilizado por la mayoría de las herramientas de ML) es calcular varias métricas de rendimiento (consulte Métricas de error de aprendizaje automático) en lugar de trazar gráficos.

Figura 1: Métricas de error para la regresión usando Orange.

El único gráfico que se utiliza comúnmente en ML es un gráfico de pérdida de entrenamiento/validación para verificar la convergencia del proceso de entrenamiento del modelo. Por lo general, las tablas se utilizan para comparar modelos y compartir estadísticas resumidas. Si decide presentar los resultados como un gráfico, es mejor incluir una tabla con los valores reales de las métricas de rendimiento.

Dado que los modelos de IA/ML son dinámicos/estocásticos por naturaleza, obtendrá resultados ligeramente diferentes cada vez que entrene y ajuste su modelo. Por lo tanto, debe ejecutar todo el proceso (entrenar y ajustar el modelo, luego evaluar el modelo mediante el cálculo de las métricas de rendimiento) muchas veces (digamos 10 veces). Finalmente, calcule el promedio de los valores de las métricas. También puede ser útil calcular estadísticas resumidas sobre las métricas, como la media, la mediana y la desviación estándar.

Figura 2: Métricas de error promedio para 10 pruebas.

Aquí hay algunos artículos de J. Brownlee que muestran algunas formas de presentar los resultados de ML:

Pronóstico de series de tiempo multivariables con LSTMs en Keras

Cómo desarrollar modelos de pronóstico de series de tiempo multivariables de múltiples pasos para la contaminación del aire

7. Evita pedir a los usuarios que ayuden a depurar el código.

En general, el problema generalmente no es la implementación del algoritmo, sino la preparación de los datos y la ingeniería de características de tu conjunto de datos.

Si te encuentras atrapado depurando código, esto debería ser una señal de advertencia de que necesitas refactorizar o, más probablemente, elegir un modelo más simple (Navaja de Occam).

Referencias

[1] S. Russell y P. Norvig, Inteligencia Artificial: Un Enfoque Moderno, 4ta ed. Upper Saddle River, NJ: Prentice Hall, ISBN: 978–0–13–604259–4, 2021 (principalmente Sección 19.9).

[2] E. Alpaydin, Introducción al Aprendizaje Automático, 3ra ed., MIT Press, ISBN: 978–0262028189, 2014 (principalmente Capítulo 19).

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Inteligencia Artificial

Una forma más rápida de enseñar a un robot

Una nueva técnica ayuda a un usuario no técnico a entender por qué un robot falló, y luego ajustarlo con un esfuerzo ...

Inteligencia Artificial

Alibaba libera el modelo de IA de código abierto para competir con Meta y potenciar a los desarrolladores

En un desarrollo significativo, Alibaba, el gigante chino del comercio electrónico, ha decidido abrir su potente mode...

Inteligencia Artificial

Las 10 mejores herramientas para detectar ChatGPT, GPT-4, Bard y Claude.

Las mejores herramientas gratuitas para detectar tesis, trabajos de investigación, asignaciones, documentación y blog...

Inteligencia Artificial

Aprendizaje automático con MATLAB y Amazon SageMaker

Esta publicación está escrita en colaboración con Brad Duncan, Rachel Johnson y Richard Alcock de MathWorks. MATLAB e...