¿Cómo aprenden las máquinas con aprendizaje automático/machine learning?

Inteligencia artificial

Hoy en día se habla mucho de inteligencia artificial, de ciencia de datos... las máquinas aprenden y nos quitarán el trabajo. Algo así.

¿Pero cómo aprenden? En realidad, como vamos a ver, nuestros ordenadores pueden aprender de maneras diferentes dependiendo del dato con el que alimentemos nuestros algoritmos:

  • ¿Tenemos un ejemplo de output que esperaríamos obtener? Como en los algoritmos que detectan nuestra edad en una foto, podemos alimentar al algoritmo con una serie de fotos con la edad de la gente y que este algoritmo trate de discernir la edad de nuevas fotos basado en la información extraída. A esto se le llama aprendizaje automático supervisado.
  • ¿No tenemos ningún output pero nos gustaría ver cómo se organizan los datos? Son los problemas clásicos de segmentación, de agrupación, o de redes bayesianas. Lo llamamos aprendizaje no supervisado.
  • ¿No tenemos un output de lo que esperamos pero sí que tenemos una forma de medir el éxito del algoritmo? Entonces hablamos de aprendizaje por refuerzo.


Aprendizaje automático supervisado

Imaginémonos que yo le digo a una máquina en un set que llamamos de entrenamiento:

  • 5x + 1 = 6
  • 6x + 2 = 8
  • 9x + 4 = 13

Ahora la máquina habrá aprendido algo, que x = 1. Una vez lo ha aprendido, le pedimos a la máquina

  • 12x + 10 = ¿?

Y nos responderá que como x = 1, entonces el interrogante serán 22. Es decir, el ordenador va a predecir un resultado.

Comparativa de modelos de Machine Learning y overfitting


Más o menos esto es lo que hace una máquina para aprender (en lo que llamamos aprendizaje supervisado). En el data mining clásico, un programa coge un set de entrenamiento, toma el dato como parámetros de entrada y nosotros le decimos qué tipo de modelo creemos que debería ser (un modelo lineal, una clasificación, una distancia categórica… esas cosas) de cómo más o menos debería comportarse la función que prediga algo, y aprenderá a despejar la x. Escoger de qué forma creemos que se debería comportar, no es precisamente fácil. Como podemos ver en la imagen de arriba, podemos entrenar un algoritmo de diferentes formas y todas parecen correctas, pero si os pidiera predecir dónde se encontraría el punto 95, el resultado sería muy distinto dependiendo del modelo escogido. Y, como apunte, hay que ir con cuidado de no dar con modelos demasiado complejos o corremos el peligro de overfitting/sobreajustar nuestros datos.


Aprendizaje no supervisado

Otra forma de que una máquina aprenda es que en vez de darle esa especie de ecuación que os he puesto al principio, le digamos: ¿Cómo ordenarías estos datos?

Machine Learning supervisado vs no supervisado


En el aprendizaje supervisado, le estaríamos pidiendo al ordenador:

  • ¿De qué color sería la bolita si la colocara en cierto punto del mapa?

En el no supervisado le estamos pidiendo:

  • ¿Cómo me ordenarías estas bolitas si tuviéramos dos grupos?

Normalmente en este caso lo que hacemos es buscar distancias mínimas. Es decir, buscamos las que estén más cerca entre sí. Como cuando en la época antigua definíamos constelaciones. PEro de nuevo, aquí tenemos ese problema de antes, hablo de distancia… ¿pero distancia de qué? Tenemos de nuevo que definir qué caracterizan los grupos para medir la distancia. Puedo colocar a la gente por edad, por altura, por color de pelo, por mil cosas diferentes. Y la gracia suele ser encontrar qué variable o combinación de variables nos resultan intersantes para ordenar a las personas cuando tenemos un problema de segmentación.


Deep Learning o Aprendizaje Profundo

El hecho de buscar las variables relevantes para algo, es lo que se llama en inglés feature engineering, siendo las "features" las características relevantes que nos expliquen la realidad de un modelo. Y desde hace unos años existen modelos que nos permiten que la máquina aprenda sin tener que especificar sobre qué tienen que aprender.


En esa parte es donde está la mayor complicación. Por ejemplo, si yo quisiera distinguir entre gatos y perros, podríamos tener muchas características como su peso, la forma de las orejas, las uñas, la forma de su hocico, los ojos. Aunque a simple vista los distingamos, habría que usar una combinación de variables.

Aquí es donde el Deep Learning ayuda. La gran ventaja y desventaja de deep learning, es que te crea sus propias features.

Red neuronal clasificando gatos vs perros

Si a la izquierda tenemos la imagen exacta, a medida que avanzamos en la red, tenemos un nivel de abstracción superior. Lo que hace una red es gnerar sus propias features: los ojos, el ángulo de la oreja, el tamaño de los bigotes, la textura del pelo si es rayado o no. Mil cosas. Cada una de estas features dará un peso final en el modelo que en su máximo nivel de abstracción nos dirá: es un perro o es un gato.

Para aprender, en este caso, en vez de minimizar una función, lo que hace es lo que se llaman "épocas". La época de nuevo es una forma chachi de hablar de iteración del modelo, es decir: entreno el modelo una vez, a ver qué me ha funcionado, y empiezo de nuevo utilizando la nueva información que conozco (por ejemplo, si es atigrado, probablemente sea un perro) e itero para captar nueva información que quizá desconocía. Además, en las épocas a veces el modelo decidirá mirar algo totalmente distinto: ¿qué tal si ahora en vez del pelaje me fijo sólo en el pelillo de las patas? Y a cada iteración la red va guardando la información que ve que ha funcionado.

El problema de este tipo de modelos es que a veces las features no tienen un sentido tan claro. Por eso suelen ser muy populares en reconocimiento de imagen, porque no nos importa tanto la razón por la que un gato es un gato, como que el modelo me lo distinga del perro.


Aprendizaje por refuerzo (o Reinforcement Learning)

Aprendizaje por  refuerzo, o reinforcement learning, aplicado a videojuegos en MAR.IO

Hay un último tipo de aprendizaje que puede realizar una máquina, lo que llamamos aprendizaje por refuerzo. Es lo que quizá hayáis visto alguna vez por internet, máquinas que aprenden solas a jugar a videojuegos. En este caso tendremos lo que se llama un agente que se encuentra en un entorno, donde existe una recompensa. El algoritmo, típicamente también con redes neuronales como en el proyecto mar.io, va iterando para encontrar lo que se llama una política que va a maximizar la recompensa. Por ejemplo: ¿vale más la pena ser rápidos en el super mario bros o aplastar a todos los enemigos? Tras jugar unas cuantas veces, el algoritmo tendrá una política en la que generalizará cuál es la mejor forma de comportarse ante las diferentes recompensas o castigos del entorno.

Como apunte, los modelos de inteligencia aritificial fuerte (estilo West World) van en la dirección del aprendizaje por recompensa. Por eso hay quien los llama "sistemas evolutivos". También es un tipo de aprendizaje que se volvió popular hace no mucho cuando se estuvo hablando de "AlphaGo", la inteligencia artificial de google que consiguió ganar al másgrande de los maestros del Go.


En resumen:

  • El aprendizaje supervisado, aprende combinando las variables con las que entrenes el modelo para parecerse a un resultado ya predefinido.
  • El aprendizaje no supervisado va a ordenarte diferentes puntos para crearte agrupaciones de semejantes
  • El deep learning te ayudará a que las variables que alimenten el modelo sean significativa y el modelo (la función) sea la adecuada. Aunque el aprendizaje profundo, en realidad puede hacer cualquier tipo de aprendizaje, es más bien una solución técnica.
  • El aprendizaje por refuerzo va a ayudar a que un agente aprenda a lidiar con cada situación del a forma más óptima.


Esta entrada está basada en una publicación propia en el portal Quora. Podéis encontrarlo aquí:

https://es.quora.com/C%C3%B3mo-se-genera-el-aprendizaje-de-la-inteligencia-artificial/answer/Carlos-Mart%C3%ADn


Comentarios

Entradas populares