Áreas y aplicaciones de la IA (I)

 Bienvenid@ de nuevo! me encanta verte por aquí, porque eso significa que tenemos un interés común, la Inteligencia Artificial.


Ya que coincidimos, me gustaría hablarte sobre las diferentes áreas de la IA, así como de distintas aplicaciones de la misma (en términos generales). Pero antes de empezar, déjame sugerirte que te suscribas al blog (botón en la zona izquierda..."Seguir") de modo que recibas una notificación especial cuando publique un artículo nuevo.


Fuente: https://transformandolalogistica.ituser.es/


¿Por qué este artículo?

Creo que es muy importante diferenciar entre áreas de trabajo o investigación y áreas de aplicación, ya que, muchas personas (yo también en ocasiones, lo reconozco) las mezclan/mezclamos, es decir, en ocasiones dejamos de hablar con propiedad sin darnos cuenta, ora por vicio, ora por prisas, pero, lo cierto es que, muchas veces es el desconocimiento lo que lleva a las personas a mezclar conceptos, y para evitar ese desconocimiento, precisamente, escribo estas líneas.

Pero, como quiero que sean píldoras pequeñas, hoy voy a centrarme en las áreas de la IA, que no quiero que llegues a aburrirte.


Áreas de trabajo de la IA

Antes de entrar en materia, y aunque ya sabemos, pues quedó claro en este post (viaje a los orígenes), que la inteligencia artificial es una ciencia, querría aclarar que, en el mundo del desarrollo del software existen diferentes formas de solucionar problemas. Una de ellas es, precisamente aplicando técnicas de inteligencia artificial, aunque no siempre es la más adecuada.

Fuente: https://www.go4it.solutions/

También sabemos que la inteligencia artificial se basa en gran medida en probabilidades, por lo que siempre hay un margen de error, aunque sea muy pequeño. Esto nos conduce a recomendar que, si existe con algoritmia tradicional una forma de solucionar un problema concreto, es preferible no aplicar inteligencia artificial.

Dicho esto, y aunque son muchas las áreas que ha acogido la inteligencia artificial a lo largo de su breve historia, como los sistemas expertos (basados en reglas), puede decirse que, el área de mayor relevancia y que mayores avances ha presentado en el pasado reciente, es el Machine Learning y si, se compone de diferentes herramientas (aprendizaje por refuerzo, aprendizaje profundo, aprendizaje automático supervisado o no supervisado y aprendizaje por refuerzo profundo) para resolver problemas de diferente tipo, aunque en ocasiones un tipo de problema pueda aceptar planteamientos de resolución diferentes (por ejemplo en sistemas de recomendación).


Fuente: Towards Datascience

El Machine Learning o aprendizaje automático

Es una forma de resolver problemas (principalmente de clasificación o regresión, aunque hay varios tipos más). Empecemos con un pequeño ejemplo...

Imaginemos que queremos averiguar el PVP aproximado de una vivienda (cualquiera) de una ciudad, a partir de, por ejemplo, su año de construcción, su superficie, número de habitaciones y "renta per cápita" del barrio en el que se ubica (podría haber escogido otros datos, pero se me han ocurridoestos sobre la marcha. Bien, ....

En aprendizaje automático (al menos en el supervisado) hay una norma que no falla.... y la explica la siguiente imagen:


Fuente: Elaboración propia

Si, dentro del área del machine learning supervisado (la de mayor aplicación actualmente) a un algoritmo le proporcionas un montón de datos con la solución a casa caso (ejemplos) y con eso aprende, y genera un modelo que, cuando recibe esos datos, proporciona, a cambio, la solución.

Es decir, que en nuestro ejemplo de precios de vivienda, si elegimos un algoritmo de aprendizaje automático y le orporcionamos varias decenas de miles de datos de vivienda (año + habitaciones + superficie + renta per cápita) y junto a cada conjunto de datos, el precio de esa vivienda, pues el algoritmo generaría un modelo, capaz de valorar viviendas, a partir de los datos proporcionados. Es como enseñar a través de ejemplos, pero con un fundamento matemático importantísimo (claro, la calidad/veracidad de los datos es imprescindible, si no le ponemos ejemplos de viviendas de 5 habitaciones, pues no sabría valorarlas de forma correcta). Esto es un ejemplo de regresión matemática, que se basa (simplificando el caso) a aquellas funciones que aprendíamos a dibujar en B.U.P. (secundaria, bachillerato...) con las que, a partir de dos puntos, dibujábamos rectas.

Algoritmos para generar modelos de este tipo hay muchos, desde (uno de los más antiguos) el denominado "Naive Bayes", que se basa en probabilidad y en unas bases de partida algo ingenuas -de ahí su nombre- a otros que se basan en reglas, como los "árboles de decisión" u otros que calculan "distancias" entre los datos, como los "Support Vector Machines".

Ejemplos gráficos de regresión lineal y polinómica
Fuente: https://www.iartificial.net/

Aprendizaje supervisado y no supervisado

Existen dos grandes bloques, el supervisado, que es el explicado hasta el momento, que se centra en determinar valores (regresión, como el ejemplo del precio de la vivienda) o clasificación, en el que la solución, lejos de ser una cifra "aleatoria" es un elemento de un conjunto finito (como podría ser sano/enfermo, niño/adolescente/adulto/anciano, o cualquier otra que se nos pueda ocurrir).

Por otro lado, existe el machine learning no supervisado, en el que al algoritmo no se le proporciona resultado, y él genera una salida identificando relaciones entre los datos proporcionados como entrada. Sus dos aplicaciones principales es la generación de grupos a parytir de datos y lo que en términos técnicos denominamos reducción de la dimensionalidad (no viene al caso).

Existe otro tipo, el semi-supervisado, que no voy a entrar a describir, pero que también tiene algunas aplicaciones.

Ejemplo de aprendizaje supervisado (clasificación) y
no supervisado (agrupaciones o clustering)
Fuente: https://www.elblogdedemostenes.com/


Deep learning o aprendizaje profundo

Además de los algoritmos que generan modelos, se identificó otro enfoque, el de las redes neuronales, que tiene el mismo tipo de aplicación que el machine learning supervisado. Sin entrar en tecnicismos, su ventaja más importante es, que presenta un mejor rendimiento, y su desventaja principal que precisa un volumen de datos mucho mayor (y no siempre se dispone de tantos datos). A grandes rasgos, y sin entrar a considerar detalles técnicos como el número de capas de la red, las redes neuronales son las estructuras que conforman el deep learning.

Es cierto que el origen de las redes neuronales es el perceptrón, creado por Frank Rosenblat, más o menos en los años 50 (1950 - 1960) a partir de los trabajos de Warren McCulloch y Walter Pitts

Perceptrón
Fuente: Elaboración propia

A partir de esta estructura matemática, que, a partir de un número "n" de entradas genera una salida binaria (0 ó 1), se fue evolucionando, primero creando el perceptrón "multicapa" y luego las redes neuronales, cuyo funcionamiento y pilares matemáticos no describiremos en este texto, pero que son capaces de generar resultados más precisos y eficientes que los arrojados por modelos de machine learning "basico" (aunque precisan muchísimos más datos, como ya he comentado antes).


Es un hecho curioso que, un perceptrón trata de emular el funcionamiento de una neurona desde una perspectiva matemática, y, por lo tanto, una red neuronal, trata de emular el funcionamiento de un sistema complejo de neuronas biológicas. Así pues el término "red neuronal" se refiere a la neurobiología, y, además, algunos de los conceptos principales, se basan en lo que conocemos acerca del funcionamiento del cerebro, pero, sin embargo, (tal y como afirma François Chollet en su libro Deep Learning with Python):

"no hay ninguna evidencia científica de que el cerebro humano, implemente un funcionamiento igual al de los sistemas de aprendizaje en que se basa el deep learning moderno" 

Capas, pesos, operaciones matemáticas.... no hay evidencias de ello en lo que conocemos del funcionamiento del cerebro. Es decir, que probablemente, a nivel inspiracional en sus inicios, se pretendiera seguir esta emulación, pero luego, el desarrollo del aprendizaje profundo, seguramente se desvió de estas bases inspiracionales iniciales. Y a todas luces, el cerebro humano, funciona de forma mucho más eficiente que cualquier red neuronal creada por el hombre (pero, más o menos, de ese tema ya hemos hablado en otros posts...¿verdad?).


El Reinforcement Learning o aprendizaje por refuerzo

Hasta el momento hemos conocido cómo funciona el aprendizaje automático -supervisado o no-, que, de forma muy general aprende a partir de ejemplos para resolver problemas de clasificación o de regresión.

Otra herramienta que quería presentarte es el aprendizaje por refuerzo, con la que, también se generan modelos, pero que aprenden a partir de recompensas (con quien doma fieras o enseña a su perro a traerle las zapatillas y un refresco).

Aquí el enfoque cambia, hay que diseñar un "entorno" y un "agente", y definir las "acciones" que el agente puede realizar dentro del entorno. Pongamos por caso que el entorno es un laberinto, y el agente el ratón que tiene que ir de la entrada a la salida. Si el ratón alcanza la salida, tiene un pedacito de queso esperándole (recompensa). Así que, como el ratón quiere queso, se aprende el recorrido, y si le cambiamos un poco el laberinto, él seguirá buscando el queso hasta encontrarlo.

No solo eso, además de la recompensa final, el queso en sí mismo, existe la "recompensa parcial" y es que conforme el ratón se acerca al queso, aunque no lo vea, percibe su olor con mayor intensidad por lo que sabe que va por buen camino y le ayuda a centrarse mejor en el resultado.

Bueno, pues imagina ese escenario, pero diseñado mediante un programa informático, donde las recompensas son números y, mediante formulaciones matemáticas como la ecuación de Bellman o los procesos de decisión de Markov, todo funciona, y nuestro ratón (agente), creado con el objetivo de obtener la mayor recompensa posible, aprende a moverse por laberintos.


Escenificación básica de aprendizaje por refuerzo
Fuente: https://becominghuman.ai/


Existen diferentes casos de entorno, con recompensas parciales o sin ellas, con dos o más acciones desde cada estado (movimientos), con espacios de acciones deterministas o estocásticos (la acción es concreta o puede que sea diferente a lo esperado...) pero, para no complicarnos mucho, quedémonos en el ejemplo del ratón y el laberinto...solo que sin perder de vista que el ejemplo podría complicarse mucho.

La recompensa es, exactamente, el retorno que se obtiene de cada decisión, por lo que, nuestro sistema de inteligencia artificial, no es más que una función matemática que tiene como objetivo acumular la mayor recompensa posible.

Pongamos algún ejemplo de aplicación de aprendizaje por refuerzo:

  • Los vehículos autónomos suelen implementar esta tecnología, así, dependiendo del entorno, toman decisiones como girar (curva más cerrada o menos cerrada), frenar (frenada suave o de emergencia...) todo depende del entorno y del estado en que se encuentren (situación)
  • Deep Blue, que ganó a Gary Kasparov al ajedrez, se basaba en este tipo de aprendizaje.

Bien, si se tratase de un entorno con un número de estados finito y más o menos pequeño, incluso parece fácil, ¿no? vemos anticipadamente cada estado, tomamos nota y ya sabemos qué hacer.... es como si el ratón de nuestro ejemplo, se aprendiese el recorrido del laberinto de memoria.

Pero... ¿y si el entorno es demasiado grande o tiene otros "elementos" (como peatones, lluvia que hace que el firme deslice o un gran jugador de ajedrez enfrente) en juego? Ahhhhh! Entonces la cosa cambia y se complica un poco

En estos casos es en los que entra en juego el ....


Deep Reinforcement Learning o aprendizaje por refuerzo profundo

Una técnica que, en lugar de explorar el espacio de estados para determinar "rutas" óptimas, como eso llevaría demasiado tiempo o puede que sea una tarea interminable, utiliza redes neuronales para "estimar" posibilidades, no con datos exactos de recompensa (que sería lo adecuado en el caso de entornos pequeños) sino aproximando -regresión- el valor de la recompensa en estados hipotéticos.


Fuente: https://revistabyte.es/

Pongamos por ejemplo, una situación concreta en mitad de una partida de ajedrez,... cada partida es distinta, y es muy difícil que nos encontremos más de una vez con, exactamente, el mismo escenario, y en ese momento hay que decidir, ... y además, no sabemos qué hará luego el oponente, por lo que, solamente podemos "estimar". Eso es loque hacen nuestras redes neuronales, hacer una estimación aproximada de la recompensa con cada movimiento posible y, a partir de esta estimación, determinar el movimiento más conveniente. Claro (y esto es ya para nota) se trata de determinar qué pasaría si yo hago un movimiento, es decir,... qué probabilidades hay de que ese movimiento me lleve a la victoria.


Otro ejemplo es el de nuestro vehículo autónomo, imaginemos que va circulando y "observa" que se aproxima un perro, y además sus sensores traseros detectan un vehículo, y tiene que decidir qué maniobra hacer:

  • acelerar antes de que el perro se cruce (controlando si hay vehículos delante o no para determinar el nivel de aceleración)
  • frenar paulatinamente intentando que el vehículo de detrás no nos alcance
  • desviarse, en la medida de lo posible

bueno, eso son tres acciones (de forma resumida) y nuestra red neuronal estimaría cuál de ellas es más acertada.


Concluyendo...

Hemos hablado de, básicamente, de machine learning y de todas sus herramientas, pero en inteligencia artificial hay "otros mundos", otras áreas, no todo son modelos. Podríamos hablar de factorización matricial, de word-embeddings (vectores numéricos que describen palabras y contienen la información de contexto). de algoritmos genéticos y de otras técnicas, como la generación de reglas a partir de ocurrencias de datos. Pero insisto, lo más actual (la moda, mejor dicho) es el Machine Learning o aprendizaje automático.


Seguramente esperabas que habláramos de visión artificial, lenguaje natural, chatbots, sistemas cognitivos, cómo spotify nos recomienda música o cosas por el estilo, pero.....  ¿sabes qué? todo eso son áreas de aplicación de lo que hemos visto hoy. Hoy hemos hablado de los pilares de la IA que permiten todo eso, por lo que, ya tiene sentido pensar en un nuevo post, uno en el que hablemos de aplicaciones de la inteligencia artificial en el mundo real.


y .... no, hoy no estaba en el metro mientras escribía, pero ya es hora de recoger. Espero que hayas disfrutado con la conversación tanto como yo.


Comentarios

Entradas populares de este blog

El futuro de la IA y las inteligencias fuertes

Qué es el Deep Learning