La ley del mar
Sacado del libro: Los andamios de la Inteligencia Artificial
1. Introducción.
En documentos anteriores hemos tratado de entender las redes neuronales en sus tres modalidades principales: densas, convolucionales y recurrentes.
Para completar el panorama de las herramientas de la inteligencia artificial nos falta el aprendizaje por refuerzo que es el nivel superior y el más atractivo.
El aprendizaje por refuerzo, como los modelos que ya hemos visto, trata de encontrar un patrón en un conjunto de observaciones (datos). La diferencia está en las observaciones: en los modelos anteriores las observaciones se encuentran previamente tabuladas, ahora las observaciones las irá generando el propio modelo.
Para entender esto lo mejor es partir de un ejemplo muy simple en el que vamos a ver como aprende un pez.
2. La Ley del mar.
Como todos sabemos, la Ley del mar es que el pez grande se come al chico. Crear un modelo que aprenda esta regla es muy sencillo.
De partida, nuestro pez no conoce esta ley por lo que cuando se encuentra con otro pez, lo ataca o huye sin ningún criterio, totalmente al azar. Si el tamaño de los peces está uniformemente distribuido, la probabilidad de que se encuentre con uno mayor que él es del 50% y por tanto se lo comerán la mitad de las veces.
Para que nuestro pez sea capaz de aprender necesitamos que no muera tan rápidamente, por lo que cuando se encuentre con un pez mayor, en lugar de morir lo dejaremos en que queda gravemente herido y una vez curado dispuesto para un nuevo encuentro, eso sí habrá tomado nota de lo ocurrido.
En cada encuentro entre dos peces pueden ocurrir cuatro cosas. En primer lugar, si nuestro pez es menor que el otro lo anotaremos como 0 y en caso contrario con 1, en segundo lugar tenemos dos posibles acciones: atacar (0) o huir (1). Las cuatro posibilidades se muestran en la tabla 1.
| Posibilidad | Talla | Acción |
| 1 | menor (0) | atacar (0) |
| 2 | menor (0) | huir (1) |
| 3 | mayor (1) | atacar (0) |
| 4 | mayor (1) | huir (1) |
Tabla 1. Posibilidades tras un encuentro.
La Ley del mar, que nuestro pez no conoce, pero la naturaleza si y que por lo tanto determinará el resultado de los encuentros, es la de la tabla 2.
| Posibilidad | Talla | Acción | Resultado |
| 1 | menor (0) | atacar (0) | desastre (0) |
| 2 | menor (0) | huir (1) | ok (1) |
| 3 | mayor (1) | atacar (0) | ok (1) |
| 4 | mayor (1) | huir (1) | desastre (0) |
Tabla 2. Ley del mar.
Atacar a un pez mayor conduce al desastre y huir de uno menor también, porque nos quedamos sin comer.
Para aprender, nuestro pez tendrá cuatro celdas de memoria que se corresponden a las cuatro posibilidades mencionadas y después de cada encuentro aplicará estadística elemental, hará lo siguiente:
Si le fue mal:
- Si era menor y atacó, suma 1 a la celda 1.
- Si era mayor y huyó, suma 1 a la celda 4.
Si le fue bien:
- Si menor y huyó, suma 1 a la celda 2.
- Si era mayor y atacó, suma 1 a la celda 3.
Cuando se produzca un nuevo encuentro y nuestro pez vea que él es el mayor, mirará en las celdas 3 y 4 y ejecutará la acción de: atacar si la celda 3 tiene más puntos que la 4, o huir si es la celda 4 es la que tiene mayor puntuación. Si él era el menor tomará la decisión en función de las celdas 1 y 2.
Es fácil comprobar que después de unos pocos encuentros nuestro pez saldrá victorioso de cualquier encuentro. Habrá aprendido cuando atacar y cuando huir.
Para construir un modelo de nuestro pez solo necesitamos:
- Crear cuatro celdas de memoria que inicialmente ponemos a cero
- Crear un bucle que repetiremos unas cuantas veces. Dentro de este bucle generaremos al azar el tamaño de los dos peces que se van a encontrar, nuestro pez elegirá la acción a realizar, mirando las cuatro celdas como hemos explicado antes, una vez decidida la acción a realizar aplicamos la Ley del mar (tabla 2) para, finalmente, actualizar la celda que corresponda.
En la tabla 3 se muestra el funcionamiento del modelo con un bucle de 30 encuentros.
| encuentros | resultado |
| 1 | ok |
| 2 | desastre |
| 3 | ok |
| 4 | desastre |
| 5 | ok |
| 6 | desastre |
| 7 | ok |
| 8 | ok |
| 9 | ok |
| 10 | ok |
| 11 | desastre |
| 12 | desastre |
| 13 | ok |
| 14 | ok |
| 15 | desastre |
| 16 | ok |
| 17 | ok |
| 18 | ok |
| 19 | ok |
| 20 | ok |
| 21 | ok |
| 22 | ok |
| 23 | ok |
| 24 | ok |
| 25 | ok |
| 26 | ok |
| 27 | ok |
| 28 | ok |
| 29 | ok |
| 30 | ok |
Tabla 3. Entrenamiento del modelo “estadístico” de aprendizaje por refuerzo de nuestro pez.
A partir del encuentro 16 nuestro pez ha aprendido todo lo necesario para vivir en el mar. El valor de las cuatro celdas, en ese momento, es un modelo que ha aprendido la Ley del mar, se denomina de aprendizaje por refuerzo porque cuando se toma una decisión que resulta acertada se refuerza la acción tomada (se suma 1 en la celda adecuada).
Al describir a nuestro pez le hemos supuesto un cerebro capaz de realizar cosas como manejar cuatro celdas y anotar en ellas según las circunstancias, para tomar decisiones comparando entre ellas. Todo esto supone una inteligencia que se nos antoja mucho mayor que el simple aprendizaje al que la vamos a destinar. Para hacer más natural nuestro modelo vamos a realizar un pequeño cambio.
Nuestro pez va a tener una simple neurona, que no es mucho pedir. Está neurona recibirá una sola entrada (E) que es el tamaño relativo de nuestro pez con respecto al otro, es decir, un 0 si es menor y un 1 si es mayor, en el mundo real serían dos niveles de voltaje cualquiera. La neurona tendrá una salida S (un determinado voltaje) resultado de sumar un valor constante b (un cierto voltaje generado por la propia neurona) más otro voltaje, función del voltaje de entrada de la forma más simple posible: w * E, siendo w un número determinado. b es el sesgo de esta red neuronal de una sola neurona y w el único peso de esta.
S = b + w * E
Fórmula 1. Salida de la neurona de nuestro pez.
Los sucesivos encuentros de nuestro pez le servirán para encontrar los valores de b y w que maximizan su supervivencia, los encuentros nos proporcionan las observaciones con la que entrenar a la neurona.
Dada la máxima sencillez de nuestra red neuronal nos vamos a permitir describir en detalle el “mágico” proceso de backtraking que ha hecho posible en la práctica la aplicación de redes neuronales.
En lugar de crear cuatro celdas de memoria, creamos dos: b y w yles asignamos valores al azar, en la naturaleza b y w son parte de la morfología de la neurona. El modelo procederá como antes ejecutando un bucle varias veces. Dentro del bucle, generamos al azar el tamaño relativo de los peces que se encuentran, valor (E) con el que alimentamos la neurona de nuestro pez (voltaje que el ojo del pez aplicará a la neurona), la neurona producirá automáticamente una salida (S) mediante la fórmula 1, si la salida supera un cierto umbral el pez decide atacar, en caso contrario huye. Si tras tomar la decisión le va bien (se come al otro pez), nuestro pez no hace nada con su neurona, pero si es gravemente herido es que los parámetros de su neurona deben corregirse. Si atacó (0) y le fue mal es que debía huir (1), por lo que ha cometido un error igual a 1-0 = 1, por el contrario, si huyó el error sería (0-1) = -1. Este error debe repartirse entre los dos parámetros de la neurona: b y w, que son los únicos responsables. La forma de repartirlo es proporcionalmente al valor que tenían esos parámetros en ese momento, si uno era el doble que el otro debe tener el doble de culpa del error.
Ejecutamos el ciclo unas cuantas veces y vemos los resultados en la tabla 4.
| encuentros | resultado |
| 1 | desastre |
| 2 | ok |
| 3 | desastre |
| 4 | ok |
| 5 | desastre |
| 6 | ok |
| 7 | ok |
| 8 | ok |
| 9 | ok |
| 10 | desastre |
| 11 | desastre |
| 12 | ok |
| 13 | ok |
| 14 | desastre |
| 15 | ok |
| 16 | ok |
| 17 | ok |
| 18 | ok |
| 19 | ok |
| 20 | ok |
| 21 | ok |
| 22 | ok |
| 23 | ok |
| 24 | ok |
| 25 | ok |
| 26 | ok |
| 27 | ok |
| 28 | ok |
| 29 | ok |
| 30 | ok |
Tabla 4. Entrenamiento del modelo de red neuronal mediante aprendizaje por refuerzo.
Nuestro pez ha aprendido igual de bien con una neurona que aplicando estadística elemental. El modelo de decisión es simplemente la fórmula 1.
Un detalle interesante es que hay infinitas parejas de valores de b y w que garantizan el éxito a nuestro pez. Esto apoya la tesis de Kumura quien sostiene que la diversidad de los seres vivos no se debe exclusivamente a la selección natural, porque hay individuos diferentes con las mismas posibilidades de éxito en un mismo entorno.
Llegados a este punto, nos puede parecer, sin que nos falte razón, que hemos realizado un ejercicio de trilerismo. Para que nuestro pez aprenda la Ley del mar hemos necesitado conocer de antemano la Ley del mar.
Pero esto ha sido así para simplificar la explicación del aprendizaje por refuerzo. Para crear un modelo no es necesario conocer Ley fundamental de antemano, incluso no se conocerá después de entrenar el modelo, pero el modelo será capaz de tomar buenas decisiones. Digo que “no se conocerá después de entrenar” para hacer énfasis en que las redes neuronales son cajas negras, pero que la expresión de que “sabemos lo que hacen, pero no como lo hacen” es una falacia, claro que sabemos lo que hacen, lo que ocurre es que no somos capaces de traducirlo a razonamientos lógicos (tal como los entendemos los seres humanos), porque las redes neuronales no razonan.
En teoría de complejidad computacional, se denominan problemas decidibles a aquellos para los cuales puede construirse un algoritmo que siempre es capaz de conducir a una respuesta de si o no, es decir, aquellos en los que se puede verificar si cualquiera de las posibles respuestas es una solución o no del problema.
Para que un problema pueda solucionarse es imprescindible que sea decidible, pero esto no significa que pueda ser solucionado en un tiempo aceptable (se dice que en tiempo polinómico). Por ejemplo, si el número de soluciones posibles es infinito, no podemos probarlas todas.
Para construir un modelo de aprendizaje por refuerzo vamos a necesitar que el problema sea decidible, que es mucho menos que conocer la Ley que determina sus soluciones.
Deja un comentario