Cómo crear nuestra Inteligencia Artificial

28/03/22

Muchas veces hemos hablado de Inteligencia Artificial, pero aún no lo hemos hecho desde el punto de vista de quien quiere acercarse al tema e intentar construir su propia IA.

Hoy, sin embargo, nos acercamos a los más jóvenes tratando de explicarles qué se necesita para crear una IA, qué herramientas son útiles y cómo avanzar paso a paso hacia su objetivo. En este artículo damos por sentado algunos conocimientos, en particular no explicamos qué es una IA. Si al seguir leyendo te das cuenta que necesitas refrescar algunos conceptos, te sugiero leer el artículo "La nueva revolución digital, Deep Learningde Andrea Piras, donde se pueden encontrar las definiciones y explicaciones de la IA, Aprendizaje automático (Machine learning & LLM) e Aprendizaje profundo.

identificar el problema

Puede parecer extraño, pero si desea construir una IA, debe identificar bien el problema que desea resolver. 

Inmediatamente especificamos que un problema que parece simple desde el punto de vista humano puede ser difícil o complejo para una IA y viceversa. La IA suele ser muy eficaz para realizar tareas repetitivas que posiblemente podrían resultar alienantes para una persona. Por ejemplo, suponga que necesita recopilar fotos y dibujos de algunos tipos de frutas (peras y manzanas). Podríamos contratar a una persona capaz de dibujar y enviarla en busca de temas para dibujar. Probablemente Leonardo da Vinci habría recorrido los mercados de la ciudad y el campo, haciendo los dibujos él mismo. O podríamos contratar a un fotógrafo, pidiéndole que tome algunas fotos que luego usaremos para nuestras necesidades. También podríamos contratar a alguien para buscar imágenes en Internet y luego guardarlas en dos carpetas diferentes según el tema. Podríamos, en este último caso, utilizar una IA creada al efecto. Como puede ver, la tarea es relativamente simple, pero la metodología y la tecnología utilizadas son diferentes. 

Del mismo modo, es posible que un mismo problema pueda resolverse utilizando diferentes tipos de Inteligencia Artificial. Por lo tanto, es necesario tratar de definir bien el problema y elegir la mejor metodología para lograr el objetivo. Finalmente, dependiendo del problema, también podría suceder que usar una IA resulte inútil y costoso, pero no nos ocuparemos de este último caso.

Sobre los datos...

Una vez definido el problema, puede resultar tentador pasar a escribir el programa (código) que nos ayude a resolverlo (siempre hablamos de recopilar imágenes, fotos o dibujos de peras y manzanas y clasificarlos). Pero este no es el caso, en primer lugar tenemos que pensar en los datos. Necesitamos tratar de entender qué tipo de datos estamos tratando (estructurados o no estructurados) y cómo debemos catalogarlos: ¿tenemos que dividir las manzanas y las peras o necesitamos hacer algo más complejo, quizás distinguiendo entre frutos de ¿Colores diferentes? El análisis de datos es muy importante y nos será de utilidad en diferentes fases de nuestro proyecto, especialmente en la fase de entrenamiento de nuestra IA, en la práctica cuando se le enseña a realizar la tarea para la que fue creada.

Como dije antes, los datos se pueden dividir en dos categorías macro: estructurados o no estructurados.

Los datos estructurados se ajustan a un modelo, tienen una estructura bien definida, están ordenados y se puede acceder a ellos fácilmente para su uso (ya sea por una persona o por un programa). Por lo general, se almacenan en bases de datos. Si consideramos el ejemplo de las manzanas y las peras presentado anteriormente, podemos asociar las dos frutas con características propias (color, tamaño, forma...) que servirán para distinguirlas y servirán para entrenar el algoritmo. 

Los datos no estructurados, en cambio, son vídeo, fotos, audio… mucho más difíciles de procesar.

el algoritmo

Después de reflexionar sobre el tipo de datos que estaremos tratando, podemos comenzar a pensar en el algoritmo más adecuado para resolver el problema, un algoritmo que se convertirá en el corazón de nuestra IA. 

Podemos dividir los algoritmos en dos categorías llamadas "aprendizaje supervisado" y "aprendizaje no supervisado". 

La primera categoría (aprendizaje supervisado) incluye algoritmos que requieren intervención humana, principalmente para clasificar manualmente los datos que luego se utilizarán para entrenar el algoritmo. Si nuestro problema consistiera en revisar los correos electrónicos entrantes y seleccionar los spam para enviarlos a una carpeta específica, probablemente usaremos un algoritmo de esta categoría usando como ejemplos una gran cantidad de mensajes que los usuarios han clasificado como legítimos o spam. Entre estas técnicas podemos incluir redes neuronales, naive Bayes, regresión lineal, regresión logística, máquina de vectores de soporte (SVM), k-vecino más cercano, bosque aleatorio.

La segunda categoría (aprendizaje no supervisado) incluye algoritmos que no requieren intervención humana para clasificar los datos y hay tres subcategorías: agrupamiento, asociación y reducción de dimensionalidad. También a modo de ejemplo, si nuestro problema consiste en identificar actividades potencialmente maliciosas en una red corporativa, probablemente utilizaremos un algoritmo de clustering para identificar el conjunto de actividades que aparecen muy diferentes a las habituales. 

entrenar IA

El siguiente paso es entrenar el algoritmo para realizar la tarea. Para volver al sencillo ejemplo inicial de la división de imágenes de peras y manzanas, será necesario entrenar nuestro algoritmo para que reconozca las dos frutas con cierta precisión. La precisión depende de nosotros, es algo que tenemos que decidir en función de nuestros objetivos comerciales. Podemos decidir que nos importa el 80 % de precisión, lo que significa que nuestro algoritmo deberá poder reconocer una pera o una manzana a partir de imágenes de frutas 80 de cada cien veces. esto quiere decir que podemos gestionar el error del algoritmo a través de otra metodología (por ejemplo poniendo a una persona a revisar las imágenes seleccionadas) o que el error no cause daño a nuestro negocio o que el daño causado sea menor al gasto que deberíamos soportar para mejorar el proceso de selección.

Sin embargo, si en la fase de entrenamiento no se logra la precisión requerida, puede ser necesario dar un paso atrás y elegir un tipo de algoritmo diferente. Pero antes de cambiar de algoritmo es mejor comprobar su configuración (a través de los parámetros de configuración) y si el conjunto de datos seleccionado para realizar el entrenamiento es correcto. Volviendo al ejemplo habitual de seleccionar manzanas y peras, si entre las imágenes utilizadas para el entrenamiento hemos utilizado por error solo imágenes de peras y manzanas en color rojo, puede ser que la IA no reconozca peras y manzanas de otros colores. , no logrando por tanto la precisión requerida. En este caso, será suficiente modificar el conjunto de datos para incluir frutas de varios colores, hasta alcanzar la precisión requerida.

Lenguaje de programación y plataforma.

El siguiente paso es elegir el lenguaje de programación a utilizar. La elección depende de nuestros conocimientos de programación.

Los lenguajes que se pueden usar son muchos, pero los más comunes son Python y R, ya que tienen muchas bibliotecas listas para usar que simplifican la escritura del código. Finalmente, es necesario elegir la plataforma que nos permitirá construir nuestra IA. Hay varias plataformas que ayudan en la realización de nuestro proyecto, entre estas, por ejemplo, TensorFlow es una plataforma de código abierto que le permite hacer pruebas sin gastar nada, o Numpy, Keras, Pandas, scikit-learn, Matplotlib, Seaborn, etc. , el panorama es realmente amplio.

Todo lo que queda es probar ...

Por cierto, olvidé mencionar que nuestra IA se alimenta continuamente de los datos que recibe. Los rastrea y los utiliza. De esta forma es posible enseñarles a hacer predicciones, quizás sobre la calidad y tipo de manzanas que encontraremos en el mercado en los próximos meses. ¡Pero ese es otro problema!

Alessandro Rugolo

(Agradezco a todos los amigos de SICYNT que me asesoraron y ayudaron a mejorar el artículo)

Para obtener más información:

La nueva revolución digital, deep learning - Defensa Online

Métodos paso a paso para construir su propio sistema de IA hoy | blog de upgrad

¿Qué son los datos estructurados? - GeeksforGeeks

¿Qué es el aprendizaje supervisado? | IBM

Tipos de algoritmos de inteligencia artificial que debe conocer [Una guía completa] | blog de upgrad

Aprendizaje no supervisado para Cyber ​​(hmgstrategy.com)