Una divertida y súper fácil introducción a la Inteligencia Artificial y Machine Learning

David Goudet
8 min readMay 1, 2019

--

Después de leer este artículo entenderás los conceptos más importantes de Inteligencia Artificial.

Bienvenido o bienvenida a bordo, mi nombre es David, y trataré de explicar una cosa muy difícil de una forma diferente.

Bueno, no es tan difícil, pero me estoy haciendo el interesante.

Soy Ingeniero en Computación, e incluso después de años de programar y estudiar matemáticas, la Inteligencia Artificial me parecia la cosa más difícil en el Universo.

Muchos profesores están más interesados en parecer inteligentes que en explicar con palabras simples.

Por eso creé una empresa de gamification para entrenar desarrolladores.

Pero esa es otra historia.

Vamos a sumergirnos

Vamos a sumergirnos en la Inteligencia Artificial de inmediato antes de que pienses que quiero contarte la historia de mi vida.

Spoiler: al final podrás programar tu primer programa de Machine Learning.

Conceptos

La Inteligencia Artificial es la inteligencia demostrada por las máquinas.

Hay dos tipos de IA:

IA fuerte: una máquina que muestra un comportamiento al menos tan hábil y flexible como los humanos.

IA débil: es la inteligencia artificial que se enfoca en una tarea específica.

Terminator usa IA fuerte. El algoritmo de Facebook utiliza IA débil.

Estos son los principales conceptos de la IA:

Machine Learning

Este es el estudio de los algoritmos que usan las computadoras para realizar una tarea específica sin usar instrucciones explícitas.

En palabras sencillas: Machine Learning es entrenar una computadora con muchos ejemplos, para que pueda predecir nuevas muestras. Como cuando el algoritmo de Instagram intenta predecir cosas que te gustan según tus likes.

Deep Learning

Es un subconjunto del Machine Learning. Utilizado para visión artificial, reconocimiento de voz, procesamiento de lenguaje natural y otros.

Procesamiento natural del lenguaje

Es el proceso de “comprensión” del lenguaje humano natural. El uso de varias técnicaspara construir un modelo lo más preciso posible de lo que se dijo y a qué corresponden esas palabras.

Al igual que el algoritmo que quería crear para entender a mi ex novia.

No fue posible

Redes neuronales artificiales

Las redes neuronales artificiales son sistemas informáticos vagamente inspirados en las redes neuronales biológicas que constituyen los cerebros de los animales.

Veremos cómo funcionan más tarde. Lo prometo, no soy un mal político.

Otros campos

Procesamiento de imágenes, reconocimiento de patrones, algunos algoritmos de Data Science.

Machine Learning

El Machine Learning consiste básicamente en tomar n muestras para predecir nuevas.

Hay dos categorías de problemas de Machine Learning:

Aprendizaje supervisado

Las muestras tienen características y etiquetas.

Por ejemplo, imagina que tenemos un programa de computadora que intenta predecir el tipo de vehículo en una imagen.

La computadora puede extraer dos características diferentes de las imágenes:

1- El número de ruedas del vehículo.

2- La respuesta a si el vehículo tiene ventanas o no.

Incluí flechas por si no veías las ventanas o las ruedas.

Estas son algunas muestras para entrenar a la computadora:

Con esa información, usando estadísticas, la computadora ahora puede predecir que (4, Sí) es un automóvil, o que (1, No) es probablemente una moto.

Aprendizaje sin supervisión

En este caso, la entrada de la computadora es un conjunto de muestras, pero sin etiquetas. Ahora queremos que la computadora prediga los posibles grupos.

Si usamos el mismo ejemplo de carros y motos, ahora estamos tratando de que la computadora entienda que hay dos grupos diferentes de objetos con características diferentes.

El algoritmo puede identificar el grupo 1 y el grupo 2.

Tratando de decir: parece que hay dos grupos, con características diferentes.

Esto es exactamente como cuando dices: no me gusta este tipo, pero no sé porqué.

Redes Neuronales

Una red neuronal es un grafo con nodos. Como las neuronas en un cerebro:

Las redes neuronales tienen tres capas: la entrada (INPUT), la capa oculta (o capas) (HIDDEN) y la salida (OUTPUT).

Las redes neuronales son una técnica para el aprendizaje supervisado.

Imaginemos que estamos tratando de identificar un número escrito a mano.

Podemos usar la red neuronal para ejecutar muchos ejemplos de números escritos a mano y sus etiquetas (5,3,1, etc.).

Para la computadora, cada imagen es sólo un conjunto de píxeles. Imagina que traduces cada píxel a un número de 0 a 1, según la cantidad de negro.

0 es blanco, 1 es negro.

En un resumen muy breve, lo que hace la red neuronal es cargar cada píxel de la imagen en la capa de entrada (784 píxeles en este ejemplo). E intenta predecir la salida en la capa de salida (0 a 9, el número escrito a mano).

¿Cómo? Imagina las conexiones entre nodos como perillas que pueden cambiar a cualquier número entre 0 y 1.

Con sus muestras, la red cambiará muchas veces esas perillas hasta que tenga la mejor máquina de predicción para los números escritos a mano.

Este sería el proceso:

  • Cargar una muestra (una imagen de un número escrito a mano)
  • Ejecutar la red (multiplicando el número de cada píxel por los números en las “perillas”) siguiendo las rutas.
  • Probar el resultado (el resultado serán varios números (entre 0 y 1) en la capa de salida, es decir, la probabilidad de que ese número sea el de la imagen)

En este ejemplo, la Red Neuronal está diciendo que tenemos una probabilidad de 0.8 (80%) de tener un 2 en la imagen.

¿Y cómo sabes que tienes buenos valores en las perillas? Porque conoces la etiqueta real, el número real escrito, si la red no está dando un buen resultado, cambia los valores de los mandos y comienza de nuevo.

Sí … eso es prácticamente fuerza bruta. Pero, los matemáticos encontraron formas eficientes de entrenar esa red, por lo que funciona.

Juguemos con Machine Learning

¿Quieres practicar tus nuevas habilidades? Podemos comenzar con un ejemplo sencillo para que puedas crear tu primer programa de Machine Learning.

Peras vs. Manzanas

Crearemos un programa que reconozca peras y manzanas.

Para esto, usaremos el lenguaje Python y una biblioteca llamada sklearn.

Puedes usar Python 3 Trinkets para ejecutar tu programa.

En primer lugar, elimina el programa por defecto.

Ahora, importaremos un Árbol de Decisión desde sklearn. Un árbol de decisión es una estructura creada para entrenar la computadora.

Lo que haremos es presentar una serie de ejemplos de peras y manzanas, y luego predecir si una nueva muestra es una pera o una manzana.

El Árbol de decisiones almacenará la información después del entrenamiento.

Sklearn ha preprogramado muchas de las estructuras que usaremos con Machine Learning.

Ahora, vamos a introducir algunas características para entrenar la máquina.

Nuestras características tienen esta forma:

[peso, redondez]

[150,1] es 150 gramos y “sí, es redondo”

[160,0] es 160 gramos y “no, no es redondo”

Imagina que tenemos estas 4 características (features):

features = [[150,1], [170,1], [140,0], [130,0]]

Nuestras etiquetas tienen esta forma:

0 = pera

1 = manzana

Y ahora, tenemos estas 4 etiquetas (labels):

labels = [1,1,0,0]

Lo que significa que la primera característica [150,1] es una manzana.

Ahora, vamos a crear el árbol real. Simplemente llamando a una función (sklearn) y asignándola a la variable clf.

clf = tree.DecisionTreeClassifier ()

Ahora, la parte más importante, el entrenamiento.

Usaremos una función del árbol, con dos entradas: las características y las etiquetas. La función fit.

clf = clf.fit (features, labels)

Sumando todo, este será tu código:

Pero ¿qué esa última línea?

Magia.

Estamos imprimiendo una predicción.

Nuestro árbol está listo y entrenado. Y estamos tratando de predecir la etiqueta de una nueva muestra [134,0].

Ahora, puedes ejecutar tu programa aquí y ver el resultado.

El resultado debe ser [0], el árbol predice que nuestra muestra es una pera.

¿Pero por qué?

Sólo revisa las características.

features = [[150,1], [170,1], [140,0], [130,0]]

labels = [1,1,0,0]

Las manzanas parecen tener más gramos (150, 170) que las peras (140, 130). Además, las manzanas son redondas (1) y las peras no son (0).

[134,0] se ve exactamente como una pera.

Ahora intenta con una nueva muestra:

print(clf.predict([[163,1]]))

¿El árbol dice que es una manzana?

Framework

Via UpX Academy

Cuando se trata de problemas de Machine Learning, debes seguir el enfoque de este marco de trabajo (framework):

1- Obtener datos

Esta es una de las tareas más difíciles. Un problema se puede resolver con Machine Learning sólo si tenemos los datos para entrenar la computadora.

2- Limpiar, preparar y manipular datos

Busca errores en los datos, elimina la información innecesaria para tu problema, cambia la forma en que se presenta.

3- Entrena el modelo

Selecciona tu clasificador y entrénalo, lo mejor aquí es utilizar una herramienta proporcionada por una biblioteca.

4- Datos de prueba

Con tu modelo entrenado, puedes usar tus bibliotecas para ejecutar cientos de pruebas en segundos. Las bibliotecas incluso trazan estadísticas sobre qué tan preciso es tu modelo.

5- Mejorar

Ya sea con mejores datos o con diferentes clasificadores, tu modelo puede mejorarse para ser más preciso.

Próximos Pasos

Ahora, puedes probar con más características, diferentes muestras o diferentes clasificadores (incluidas las redes neuronales).

Lanzaré un libro sobre Inteligencia Artificial la próxima semana, regístrate aquí para ser el primero en tenerlo.

Estas son las bibliotecas esenciales para el Aprendizaje Automático:

Scikit-learn

Tensorflow

Matplotlib

Seaborn

Pandas

NumPy

SciPy

Ahora puedes entender el núcleo de todas esas bibliotecas, por lo que eres libre de aprender y jugar con ellas.

Now you can understand the core of all of those libraries, so you are free to learn and play with them.

--

--

David Goudet

Senior Software Engineer from Venezuela living in Madrid. Top Writer in AI and Technology. US Dept of State alumnus. www.davidgoudet.com/peakperformance