Introducción al aprendizaje automático - Parte 1

Alex Alex 27 June 2020
Introducción al aprendizaje automático - Parte 1

Tal vez oiste hablar mucho sobre aprendizaje automático de IA últimamente. Tal vez te hayan inspirado los videos que muestran lo que se puede hacer con aprendizaje automático. ¿Pero de qué se trata? Una vez que superas la publicidad y comienzas a programar, ¿en qué consiste la IA? Eso es lo que veremos en esta serie de videos, donde te enseñaremos a escribir código para aprendizaje automático y ver cómo surgen otros escenarios nuevos y emocionantes que te ayudarán a escribir aplicaciones que se comportan más como un ser humano, brindándote inteligencia artificial.

No necesitas saber mucho para comenzar, y utilizaremos el lenguaje Python. No te preocupes si nunca lo has usado, es muy sencillo de entender y pronto estarás listo y programando. Comencemos con un ejemplo muy simple. Considera que estás creando un juego de piedra, papel o tijera.Introducción al aprendizaje automático - Parte 1

Cuando lo juegas con una persona, es muy básico; un niño puede aprenderlo en pocos minutos. Veamos la parte básica del juego en la que el cerebro humano es muy bueno, que consiste en reconocer lo que está viendo. Fíjate en estas imágenes. Introducción al aprendizaje automático - Parte 1La mayoría de las personas puede mirarlas y reconocer enseguida cuál es piedra, cuál es papel y cuál tijera. Pero, ¿cómo programarías una computadora para reconocerlas? Piensa en la diversidad de tipos de manos, colores de piel y personas que como yo, hacen tijeras con el pulgar hacia afuera, y otras que las hacen con el pulgar hacia adentro. Si ya has escrito código, sabrás al instante que esta es una tarea muy difícil. Puede demandar miles o decenas de miles de líneas de código, y solo para jugar piedra, papel o tijera.

¿Y si hubiera una forma diferente de enseñar a una computadora a reconocer lo que ve? ¿Podrías hacer que una computadora aprenda del mismo modo que lo hace una persona? Ese es el corazón del aprendizaje automático y el camino hacia la inteligencia artificial.

La programación tradicional se ve así. Existen datos, por ejemplo, provenientes de la cámara web, y hay reglas que actúan sobre estos datos. Introducción al aprendizaje automático - Parte 1Estas reglas se expresan en un lenguaje de programación y constituyen la mayor parte del código. Estas reglas actuarán sobre los datos y te darán una respuesta. Tal vez verá piedra, o papel, o tal vez tijera. Pero, ¿y si damos vuelta este esquema y en lugar de descifrar las reglas como programador, le dés las respuestas con los datos y que la computadora descubra cuáles son las reglas?Introducción al aprendizaje automático - Parte 1 Eso es el aprendizaje automático. Puedo tener muchas fotos de piedras y decirle a la computadora que así es como se ve una piedra, así es como se ve un papel, y así es como se ve una tijera. Introducción al aprendizaje automático - Parte 1Y puedo hacer que la computadora descubra los patrones de coincidencia. Luego, la computadora aprenderá a reconocer la piedra, el papel y la tijera.

Ese es el núcleo de crear algo que utiliza aprendizaje automático. Tienes un conjunto de datos que contiene patrones inherentes y una computadora aprende cuáles son esos patrones. Antes de programar una red neuronal que aprenda algo tan complejo como piedra, papel o tijera, usemos un ejemplo mucho más simple.

Fíjate en estos números: Introducción al aprendizaje automático - Parte 1existe una relación entre los valores de X e Y. ¿Puedes verla? Es Y = 2X - 1. Si la viste, ¿cómo lo conseguiste? Habrás notado que el valor de Y aumenta de a 2, mientras que el valor de X aumenta de a 1. Entonces sería Y = 2X más un signo menos. Tal vez hayas visto que cuando X es 0, Y es -1, por lo que Y = 2X - 1 sería una buena suposición, y luego, fijándote en otros números, habrás visto que funcionaba. Ese es precisamente el principio de funcionamiento del aprendizaje automático. Echemos un vistazo.

Este es el código completo para crear un modelo de aprendizaje automático que descubra qué relación hay entre estos números.

model = keras.Sequential([keras.layers.Dense(units=1, input_shape=[1])])
model.compile(optimizer='sgd', loss='mean_squared_error')

xs = np.array([-1.0, 0.0, 1.0, 2.0, 3.0, 4.0], dtype=float)
ys = np.array([-2.0, 1.0, 4.0, 7.0, 10.0, 13.0], dtype=float)

model.fit(xs, ys, epochs=500)

print(model.predict([10.0]))

No te preocupes si no te resulta familiar en este momento, lo aprenderás en poco tiempo. La primera línea define el modelo en sí. Un modelo es una red neuronal entrenada, y aquí tenemos la red neuronal más simple posible, que, en este caso, es una sola capa indicada con el código keras.layers.Dense. Y esa capa tiene una sola neurona, indicada por units = 1. También alimentamos un único valor en la red neuronal, que es el valor X, y haremos que la red neuronal prediga cuál sería el Y para ese X Por eso decimos que input_shape es un solo valor.

Cuando compilas el modelo, hay dos funciones: la de pérdida y el optimizador. Estas son claves en aprendizaje automático. El aprendizaje automático hará que el modelo suponga la relación entre los números. Por ejemplo, podría suponer que Y = 5X + 5. Mediante entrenamiento, calculará qué tan buena o mala es esa suposición, utilizando la función de pérdida. Y luego, usará la función optimizadora para generar otra suposición. La lógica es que la combinación de estas dos funciones nos acerque lentamente a la fórmula correcta.

En este caso, repetirá ese ciclo 500 veces, haciendo una suposición, calculando la precisión de esa suposición, y luego usando el optimizador para mejorar esa suposición, y así sucesivamente. Los datos en sí se representan en las matrices xs e ys, y el proceso de relacionarlos entre sí está en el método fit del modelo. Literalmente decimos: "ajusta las X a las Y y repítelo 500 veces". Cuando termine, tendremos un modelo entrenado. Ahora puedes intentar predecir un valor Y para un X dado. ¿Qué crees que sucedería si ejecutara esta línea de código, predecir Y cuando X es igual a 10? Pensarías que la respuesta es 19, ¿verdad? Pero no lo es. En realidad es algo así como 18,9998. Está cerca de 19, pero no es exactamente igual.

¿Por qué crees que sería? La computadora fue entrenada para aparear solo seis pares de números. Parece haber una relación de línea recta, para esos seis, pero puede no ser una línea recta para valores distintos de esos seis. Hay una probabilidad muy alta de que sea una línea recta, pero no podemos estar seguros. Y esta probabilidad está integrada en la predicción, por lo que nos dará un valor muy cercano a 19, en lugar de exactamente 19.  Esto es algo que verás mucho más en aprendizaje automático. En el próximo parte de esta serie, tomaremos lo que aprendiste y lo aplicaremos a un problema más interesante, la visión por computadora, y veremos cómo puedes enseñarle a una computadora a ver cosas, usando exactamente la misma metodología que aquí. 

Comentarios (0)

    Aún no hay comentarios

Debe iniciar sesión para comentar