Ir al contenido principal

Destacados

CAMBIO CLIMÁTICO Y MANIPULACIÓN INTELECTUAL

Hace cuatro años escribí un artículo sobre el cambio climático porque pensaba que era un tema de actualidad. Ha pasado el tiempo y hoy sigo viéndolo, en todos los medios y con cierta perplejidad, como explicación casi universal de muchos de los males de nuestra sociedad. Por eso he vuelto a aquel texto, para comprobar cómo ha envejecido. Nunca escribo para convencer a nadie de nada. Tampoco para llevar la contraria por sistema. Escribo porque, en medio de tanto ruido, tengo la sensación de que hemos dejado de detenernos a pensar. Vivimos en una sociedad cada vez más polarizada, casi de trincheras. Cuando no te posicionas con uno de los bandos, te colocan automáticamente en el contrario. Hemos trasladado el forofismo de los derbis deportivos a la vida cotidiana: eres de los nuestros o eres de los suyos. Y el cambio climático no podía ser una excepción. Ocupa hoy un lugar central en el debate público. Se habla de él en medios, instituciones y conversaciones cotidianas. Se plantea...

REDES NEURONALES (PARTE II DE II) REDES NEURONALES ARTIFICIALES

Uno de los rasgos característicos de la especie humana es su inteligencia. Este atributo nos ha permitido el progreso como especie y la adaptación al entorno, durante mucho tiempo hostil debido a las claras desventajas físicas con respecto al resto de especies animales. Nunca hemos sido los más fuertes ni los más veloces. Todo lo contrario. Sin embargo, la elaboración de herramientas y estrategias nos permitieron superar esas deficiencias con nota alta, pero nuestro proceso evolutivo continuo ha seguido potenciando este rasgo, por lo que la brecha con el resto de especies ha seguido creciendo hasta el punto de que somos capaces de clonar seres vivos o crear sistemas de inteligencia artificial (IA) entre otros hitos.

Y es el campo de la IA el que abre un nuevo debate realmente extraordinario. Hablamos de una herramienta tremendamente poderosa, como no alcanzamos a imaginar, que dota de gran ventaja estratégica a aquellas potencias que sean capaces de lograr un mayor desarrollo, pero que incluso y por descabellado que pueda parecer, podría lograr un grado de autonomía tal que llegase a ser independiente de la especie humana. Sirva como ejemplo el famoso "Chat GPT" Por si alguien no lo conoce todavía, le invito a probarlo.  

https://chat.openai.com/

Se trata de un sistema de IA gratuito y accesible para todos los públicos. La pregunta obligada es: 

Si una herramienta con este nivel de desarrollo es gratuita, ¿Qué nivel habrán alcanzado los sistemas de IA más avanzados?

La base de estos sistemas es, como no podría ser de otra manera,  el estudio y modelización del cerebro humano. En muchos aspectos este sofisticado órgano sigue siendo una gran incógnita, pero hemos logrado descifrar otras como son las redes neuronales, lo que nos ha llevado a crear nuevas disciplinas como la Neurociencia. Precisamente el intento de réplica de estas redes neuronales,  lo que denominamos "Redes Neuronales Artificiales" son la piedra angular de la IA. 

Mucho han cambiado las cosas desde que en 1958, el psicólogo estadounidense Frank Rosenblatt ideara el "Perceptrón" que es considerado como la primera red neuronal artificial, si bien sería una red muy básica, ya que el Perceptrón en si mismo simularía, con muchos matices, el funcionamiento de una única neurona.

Se trata de un dispositivo que recibe varias entradas. En este caso se trata de señales eléctricas binarias (Ceros o unos), y como resultado obtenemos una única señal de la misma naturaleza (binaria) que será una combinación de las anteriores (entradas) pero ponderadas. Esto significa que no todas las entradas tendrán el mismo valor. Cada una de ellas tiene un "peso" o importancia diferentes, y eso es algo que podemos variar. De hecho debemos hacerlo para "entrenar" nuestra red hasta conseguir los resultados esperados para aquella/s función/es para las que la hemos diseñado.

Reconozco que todo suena muy abstracto, así que al final de esta entrada trataré de explicar, de la forma más detallada posible, el funcionamiento de una red muy simple que teóricamente sirve para leer los números del 0 al 9 a partir de una foto o dibujo.

Del mismo modo, para quien quiera profundizar más en el tema, en Internet hay material de sobra y de todos los niveles, y si alguien se anima, en mi perfil de GitHub he iniciado un proyecto tipo "OpenSource" sobre un sistema de IA que espero me sirva como trabajo de Fin de grado. Se agradecerán  todas las aportaciones posibles, jejeje...

https://github.com/     (ALFREDO ROQUETA)

Existen varios tipos de redes neuronales artificiales como pueden ser las Convolucionales (CNN), las Recurrentes (RNN), o  las Multicapa (MLP) por poner algunos ejemplos. En este artículo no voy a explicar el principio de funcionamiento de ninguna de ellas. En todo caso, decir que en el ejemplo del final utilizaremos una red de tipo multicapa (MLP) y que aunque todas ellas se basan en la concepción de las redes neuronales de naturaleza animal, lo cierto es que distan mucho de alcanzar semejante grado de complejidad y eficiencia. De todas formas este es un campo en fase de desarrollo y seguro que se idearán nuevas redes mucho más sofisticadas en el futuro.

De momento, las redes que se están creando sirven para realizar funciones muy específicas, por lo que una IA desarrollada necesitará de tantas redes neuronales como áreas o campos de influencia queramos que controle. No obstante, necesitamos de un sistema de memorización independiente que nada tiene que ver con la forma en que nuestro cerebro gestiona y almacena los datos, donde son las propias redes neuronales las responsables de dicha función.

En definitiva, estamos muy lejos de alcanzar la eficiencia y capacidades del cerebro humano, así como de replicar artificialmente emociones y sentimientos. La ventaja de los ordenadores y sistemas de IA son su velocidad de procesamiento , lo que permite que nos saquen mucha ventaja en el cálculo y velocidad de aprendizaje, pero viendo la evolución a nivel tecnológico de la especie humana en los últimos años, no me atrevería a poner ningún tipo de límite sobre el potencial de la IA. Supongo que como todas las cosas, será cuestión de tiempo...


EJEMPLO DE RED NEURONAL ARTIFICIAL DE TIPO MULTICAPA (MLP)

Se trata de un ejemplo de red multicapa. Concretamente de cuatro capas, diseñada para leer números de un solo dígito, del 0 al 9.

Imaginemos que realizamos una foto del número que queremos leer, y lo pixelamos. Esto quiere decir que dividimos la imagen en una rejilla compuesta por, por ejemplo 64 casillas. Algo así como una matriz de 8x8 cuadraditos pequeños.

Cada uno de estos 64 cuadraditos o pixels representarán  una "neurona artificial" (de aquí en adelante "Nodo") y el conjunto de ellos formarán la 1ª capa o capa de entrada, que nos servirá como capa receptora.

Al hablar del perceptrón, hemos dicho que recibía varias entradas binarias. En nuestro ejemplo, cada entrada estará compuesta por solo una señal y será de tipo analógico, ya que será la intensidad de luz del pixel correspondiente (En este ejemplo no tenemos en cuenta los colores / longitud de onda de la señal luz recibida) Esto significa que el valor de la señal puede tomar infinitos valores entre 0 y 1. No será el caso de la salida, que será una señal binaria, ya que en base a un umbral determinado que nosotros habremos preestablecido (filtro) el nodo recibirá su correspondiente señal analógica y nos proporcionará un 0 para fondo blanco o muy claro y un 1 cuando el fondo sea muy oscuro o negro. Con esto, ya tenemos configurada nuestra capa de entrada responsable de la lectura del número. Ahora tenemos que interpretar esos datos y conseguir que nuestro sistema nos facilite a la salida el número correcto. Ahora mismo tenemos 64 señales binarias y pasamos a la siguiente capa...

Hemos dicho que la capa de entrada estaba compuesta por 64 nodos, uno por cada pixel, pues ahora vamos a construir una segunda capa (podemos disponer de tantas como consideremos oportunas y a todas las capas entre la entrada y la salida las denominaremos "capas ocultas") que se encargará de leer las líneas horizontales de píxels, y una tercera capa cuya función será leer las líneas verticales o columnas de la matriz de entrada (Realmente podríamos elegir otra configuración. Esto es un ejemplo muy simple de funcionamiento y no es la única solución práctica posible a nuestro problema) Por tanto, tendremos 8 nodos que recibirán las señales de los 8 píxels de cada línea y de manera ordenada, y otros 8 nodos que harán lo propio con las señales de cada columna. Recordemos que cada uno de estos 16 nodos nos dará una única salida que será una combinación de los valores recogidos en la lectura de cada píxel de la línea correspondiente, pero no necesariamente todos estos valores tendrán la misma importancia a la hora de procesar una salida. Esa importancia o peso de cada señal son regulables, y los ajustaremos a la hora de "entrenar" nuestro sistema.

Por supuesto, nuestro sistema será más preciso cuanto mayor sea el número de capas ocultas que lo conformen. Así, podríamos disponer de otras capas que leyesen las líneas y columnas por fracciones, por ejemplo. No obstante, vamos a dejarlo en dos únicas capas ocultas encargadas, la primera de de leer las líneas y la segunda, de leer las columnas, y tras este proceso pasamos a la capa de salida. 

La salida puede ser una representación gráfica del propio número o un código binario equivalente que lo represente. En cualquier caso,  para representar 10 números (del 0 al 9) necesitaremos una combinación de al menos 4 nodos que conformarán la capa de salida. ¿Por qué 4 nodos? Cada nodo nos dará un valor binario. Cero o uno. Con 4 dígitos binarios podemos obtener hasta 16 combinaciones diferentes. Si lo hubiéramos dejado en 3 nodos, podríamos representar hasta 8 combinaciones por lo que nos hubieran faltado 2. Hubiésemos podido representar solo ocho números (del 0 al 7)

Por tanto, hemos decidido que la capa de salida estará compuesta por cuatro nodos, mientras que tenemos 16 salidas de las capas anteriores. Ocho de la 1ª capa (líneas) y ocho de la 2ª capa (columnas) Así las cosas, cada uno de los cuatro nodos de salida recibirá cuatro señales de entrada ordenadas. El 1º nodo recibirá las dos primeras señales de las filas y las dos primeras señales de las columnas. Exactamente lo mismo ocurrirá con el segundo nodo, que recibirá las dos señales siguientes de las filas y las columnas (3ª y 4ª respectivamente) y repetiremos el proceso con los dos nodos siguientes.

La implementación física de esta o cualquier red de estas características no requiere de un único diseño. Las opciones son múltiples. En este caso y a modo de propuesta, podríamos utilizar una lente con una rejilla de 64 pixels, donde en cada pixel coincidiese con un fotorresistor o LDR,  que nos servirán, con la correspondiente electrónica, para convertir la luz recibida en una señal eléctrica. Estos serían nuestros primeros 64 nodos.  Para el resto de nodos, y aunque no es común ni eficiente, podríamos utilizar amplificadores operaciones (AO). Dado su elevado coste, no tendría sentido utilizar dispositivos más avanzados en una red tan rudimentaria.

Para terminar, la salida será un código binario que representará el número que hemos leído. Si queremos convertirlo a sistema decimal y leer el propio número, podemos utilizar cualquier dispositivo electrónico digital de tipo conversor digital (p.e. C.D. 7 segmentos, BCD, etc...)

Una vez finalizado, realizaremos diferentes pruebas de lectura que nos servirán como entrenamiento para ajustar los valores de "peso" de cada entrada a los nodos (Amplificadores Operaciones)  hasta conseguir  que el sistema consiga leer, sin error o con un error residual, todos los números que le presentemos...

Nota: Se trata de una red muy simple que puede ayudar a comprender su funcionamiento básico. Sin embargo, podemos afirmar  que llevada a la práctica necesitaría de más capas o elementos correctores para lograr una eficiencia aceptable.


 


 Fuente imagen:  https://abdatum.com/tecnologia/redes-neuronales-artificiales

Comentarios

Entradas populares