Pensándolo bien...
Hace tiempo que la interfase persona-máquina se ha dulcificado. En tiempo pasado se hablaba del concepto amigable. Estamos acostumbrados a ello y nos pasa inadvertido, pero la interacción con un ordenador, a través de un teclado, tiene una alta dosis de artificialidad. Salvo en circunstancias realmente dramáticas, los humanos no empleamos un teclado para comunicarnos, ni mucho menos. Pero no es menos artificial que la codificación en la que está basada la interacción para que sea comprensible por ambos interactuantes, ha requerido, desde el comienzo, de traductores que permitan una interpretación cabal por ambas partes. NO ha sido fácil avanzar en la mejor dirección. La rigidez de la sintaxis suponía largas y tediosas tareas para acomodar lo codificado a lo que se pretendía. Durante mucho tiempo los lenguajes de programación, compiladores o intérpretes, rechazaban instrucciones por falta de una coma en el lugar apropiado o una letra de más en un comando.
Durante mucho tiempo el tópico del lenguaje natural era un auténtico mito inalcanzable, aunque largamente deseable. Han transcurrido muchos años para que hoy se puedan advertir mejoras sustanciales en la interacción persona-máquina. Casi sin darnos cuenta, hoy nos equivocamos, tecleamos en los deficientes teclados de un teléfono, y con palabras a medias y errores tipográficos, incluso gramaticales, la búsqueda sale adelante y tenemos respuesta. Solo hay que recordar que esto no ha sido gratuito. Mucho tiempo, mucho dinero apoyando, mucha investigación, mucho esfuerzo y muchas equivocaciones han jalonado el avance hasta que los modelos de lenguaje nos regalan una conversación amigable, capaz de invalidar test de inteligencia como el propuesto por Touring y nos llegan a confundir cuando somos capaces de conversar con un sistema informático, como está ocurriendo con el célebre CHAT GPT.
Por un lado, la opción de desarrollo de la Inteligencia artificial basada en redes neuronales, representa, en el fondo, claudicación ante la imposibilidad, hasta el presente, de entender como comprendemos los humanos. Precisamente en el escenario de la lucha sin cuartel entre los prebostes del MIT, con Minsky a la cabeza, partidarios de que la vía era la de ahondar en la comprensión humana y tratar de emular los mecanismos de la misma, frente a las redes neuronales que aportan una inteligencia basada en la memoria y la gestión de la misma no garantiza la comprensión de su contenido. La ascendencia de los del MIT impulsó su propuesta y relegó a las redes neuronales a un segundo lugar que, en términos de inversión estatal norteamericana, lo que supuso que acaparando la primera de las opciones señaladas la inversión estatal, la segunda opción no destacó como útil, hasta que la evidencia de los pocos logros de la primera opción, dieron paso a la segunda, que es la que hoy, en un universo en el que la investigación, cada vez más, está mediada por los intereses, se ve impelida al evidenciar una mayor eficacia en aspectos no fundamentales, pero de exhibición más evidente.
Los modelos de lenguaje en los que Markov se enseñorea y la capacidad de cálculo de las actuales máquinas y la velocidad de proceso permiten el tratamiento de grandes cantidades de datos, con lo que las denominadas “bases de datos de conocimiento” brindan una oportunidad, al menos de cantidad muy superior a la tratable por las personas. Las herramientas usuales, como los buscadores de información en Internet, han mejorado sensiblemente y los sistemas conversacionales, tanto para información de rutina, como para entretenimiento son más eficaces. Excluimos, deliberadamente, el aprendizaje, dado que las bases de datos en las que está basada la información que elaboran, incluyen datos no contrastados y la habilidad de estos sistemas es tal que llegan a elaborar respuestas en las que aventuran datos no solo no contrastados, sino imaginarios, generados en una estricta construcción de respuestas que incorpora hechos o personajes o conceptos que son pura tentativa léxica y no responden a la seriedad con la que se debe responder en un proceso de aprendizaje en que no pueden haber elementos que sean erróneos o imaginarios. No parece haber garantías de que las respuestas estén elaboradas respondiendo al criterio de certeza. Es más, el proceso de corrección de errores no está nada claro que pueda evitar la indebida construcción de respuestas, con contenidos falsos o aventurados sin base probatoria ni elementos que lo avalen. Digamos que falta mucha transparencia para poder valorar cabalmente el logro alcanzado.
Realmente, los sistemas desarrollados son suficientemente complejos, como para no comprender como trabajan y como lo hacen. No es inducible una analogía de trabajo en relación con los humanos, usando símbolos, objetos, ideal y de relaciones entre ellos. Y esto tiene mucho que ver con que la estructura de las redes neuronales es de bloques que representan las neuronas. Cada una de ellas recibe señales, lleva a cabo unos cálculos y produce salidas. Las modernas redes neuronales artificiales, son redes de estas unidades computacionales, entrenadas para hacer tareas específicas. El mecanismo que se emplea no tiene por qué tener nada que ver con el funcionamiento de nuestro cerebro. Si nuestro problema es distinguir la cara y la cruz de una moneda, requerimos dos neuronas en la capa de salida. Si además consideramos que están coloreadas, por ejemplo, de blanco y negro, requeriremos cuatro neuronas en la capa de salida. Si seguimos incorporando elementos diferenciales, tendremos que ir aumentando el número de neuronas. Pero esta forma no tiene por qué tener nada que ver con la forma de percibir el mundo natural con todas sus variantes.
Una alternativa es concebir que una entidad hiperdimensional (una matriz) representa cada pieza de información con todas las propiedades concebibles. La computación asociada a este concepto es la denominada hiperdimensional. Estamos hablando de matrices de 10.000 números, es decir una representación de un punto en un espacio 10.000 dimensional. La matemática para tratar estos objetos y el álgebra para manipularlos es bien conocida, flexible y potente para aprovechar las capacidades de computación actuales. La transparencia está asegurada en esas estructuras. Los vectores que representan a los valores de las propiedades deben ser distintos, lo que se garantiza mediante la ortogonalidad. En un espacio tridimensional, estos vectores seguirían las tres direcciones del espacio, x, y y z. Por analogía, en un espacio 10.000 dimensional habrá 10.000 vectores mutuamente ortogonales. Si nos conformamos con que solamente sean casi ortogonales, tendremos millones de vectores cuasi ortogonales, distintos, en un espacio de elevada dimensión.
El cálculo con vectores cuasi ortogonales es una propuesta de mitad de los noventa del siglo pasado en la Universidad de Toronto. Kanerva y Plate desarrollaron de forma independiente el álgebra para manipular hipervectores, de forma eficaz y útil para el mundo de la computación. Se trata, básicamente, de manipulación de conceptos simbólicos. Así, la multiplicación combina ideas. Por ejemplo, mezclar forma, como la cara y la cruz de una moneda, con el vector círculo nos conduce a una idea de que la “cara es un círculo”, por ejemplo. Este vector, nuevo, será casi ortogonal con el de “cara o cruz” y con el de “círculo”. Los componentes individuales son recuperables, como debe corresponder con un vector que los ha unido. Es decir, dado un vector que representa a una moneda concreta, podemos desenlazarlo y recuperar el vector que contiene la forma, el color, o cualquier otra propiedad.
Con la adición pasa algo parecido. Ahora superponemos conceptos. Supongamos que tenemos dos conceptos, ”cara es círculo” y “color es rojo” y los adicionamos para obtener otro vector que es “cara circular y color rojo”. El nuevo vector se puede descomponer para obtener los integrantes. Una tercera operación es la permutación, en la que recuperamos los componentes individuales de los vectores. En un espacio tridimensional, los valores de x, y y z, se pueden mover de forma que el x pasa a ser y, el y pasa a ser z y el z pasa a ser x. De esta forma se generan nuevas estructuras. El interés radica en que podemos recuperar los eventos sin más que recorrer el orden inverso de las operaciones. Por ejemplo, en una secuencia las cosas ocurren una y otra vez. Si consideramos dos eventos representados por dos hipervectores V1 y V2, podemos superponerlos en un solo vector, pero sería a costa de destruir la información sobre el orden de los eventos. En cambio, si combinamos adición con permutación, mantenemos el orden y podemos recuperar los eventos en orden inverso. Las tres operaciones señaladas son suficientes para crear un álgebra formal de hipervectores y sumergirse en el razonamiento simbólico.
Recientemente, Weiss, ha ahondado en las capacidades de la computación hiperdimensional. Abordó la cuestión de la representación de una imagen compleja con un vector hiperdimensional, conteniendo información sobre los objetos de una imagen, sus propiedades, desde colores hasta tamaños y posiciones. Se inició la carrera del desarrollo de algoritmos propios de las redes neuronales profundas, como es el caso de la clasificación de imágenes. Un ejemplo evidencia lo anotado: supongamos que disponemos de una imagen construida con imágenes de dígitos escritos a mano. Analizamos, mediante un algoritmo, las características de las imágenes, según algún esquema predeterminado y creamos un hipervector para cada imagen. Tras ello, el algoritmo adiciona los hipervectores de todas las imágenes del cero para crear un hipervector que es la “idea” del cero. Hacemos lo mismo con todos los demás dígitos, creando diez clases de hipervectores, correspondiendo uno a cada dígito. Ahora, estamos en condiciones de proporcionar al algoritmo una imagen desconocida. Creará un hipervector de esta nueva imagen y la comparará con los hipervectores de las diez clases que tiene almacenados. La comparación proporcionará el dígito al que resulta ser más parecida la nueva imagen.
De esta forma, se trata de que el cálculo hiperdimensional dispone de capacidad para componer y descomponer hipervectores, para “razonar”. En el campo del razonamiento visual abstracto se ha abordado la resolución de un problema clásico como es el de las matrices progresivas de Raven, consistente en presentar imágenes de objetos geométricos, por ejemplo, en matrices de tres por tres y una posición está en blanco (vacía). Se debe escoger en una serie de imágenes candidatas, de forma que sea la que mejor ajusta a la que figura en blanco. Una buena dosis de audacia permitió resolver el problema usando computación hiperdimensional. Primero se creó un diccionario de hipervectores representando a los objetos de cada imagen, de forma que cada hipervector del diccionario representaba un objeto y alguna combinación de sus atributos. A continuación se entrenó a la red neuronal para examinar una imagen y generar un hipervector bipolar, solamente conteniendo elementos +1 y -1, muy apropiado para superposición con los hipervectores del diccionario. De esta forma, el hipervector generado contiene información sobre los objetos y los atributos de la imagen. En el fondo, es un proceso guiado de la red neuronal hacia un espacio conceptual de significados. Con los hipervectores generados para cada una de las imágenes en su contexto y para cada candidato, para situar en la casilla en blanco (vacía). Un algoritmo analiza los hipervectores para crear distribuciones de probabilidad para los objetos de cada imagen, tamaño y otras características. Son esas distribuciones de probabilidad las que concretan las características, tanto del contexto como de las imágenes candidatas y las que pueden transformarse en hipervectores, usando el álgebra para predecir la candidata más probable a la imagen que corresponde llenar la casilla vacía.
La ventaja sobre los sistemas convencionales radica en que éstos emplean las reglas de la lógica simbólica para razonar de forma que requieren un enorme conjunto de reglas para determinar el siguiente paso a dar. Esto les hace ineficientes, hasta el punto de que en problemas de mosaicos de 3 x 3 el sistema de hipervectores, llega a ser unas 250 veces más rápido que el convencional. Por otro lado, el tratamiento con hipervectores logra hasta un 88% de precisión, frente a un 61 de los tratamientos con redes neuronales. Es una alternativa que capacita para resolver problemas simbólicos. Otra servidumbre de los sistemas actuales es la degradación del cómputo causado por la fluctuación al azar de los bits, que convierten los 0 en 1 o viceversa y no pueden correegirse por los mecanismos simples de corrección de errores. El cálculo huperdimensional tolera mejor los errores por su propia construcción ya que aceptando la fluctuación de algún bit al azar, el hipervector sigue siendo muy parecido al original. Los sistemas basados en hipervectores son mucho más tolerantes.
Finalmente, destacamos la ventaja del cálculo hiperdimensional en cuanto a la transperencia. El Álgebra nos explica por qué el sistema elige una respuesta concreta. Esto no ocurre en las redes neuronales tradicionales. El razonamiento analógico es más apropiado en el contexto de los algoritmos que emplean el cálculo hiperdimensional. Finalmente, los requerimientos de memoria y capacidad de cálculo se adaptan a equipos de baja potencia. Muchas ventajas para una alternativa que ahora está en su primera infancia. Le esperan problemas reales y contrastar con las modernas redes neuronales y sus tamaños gigantescos que son frecuentes en la actualidad. Una cosa hay cierta y es la eficiencia que requieren los problemas que se abordan hoy día. Nos encontramos ante cuestiones que se han escalado en el mundo real a miles de millones de elementos. Ser eficiente y seguro es el objetivo. El razonamiento abstracto y eficiente parece requerir vectores enormes que contengan el significado semántico. Por más que podamos estar obnubilados con herramientas como CHAT GPT, solamente es una anécdota. Queda mucho por hacer.
Durante mucho tiempo el tópico del lenguaje natural era un auténtico mito inalcanzable, aunque largamente deseable. Han transcurrido muchos años para que hoy se puedan advertir mejoras sustanciales en la interacción persona-máquina. Casi sin darnos cuenta, hoy nos equivocamos, tecleamos en los deficientes teclados de un teléfono, y con palabras a medias y errores tipográficos, incluso gramaticales, la búsqueda sale adelante y tenemos respuesta. Solo hay que recordar que esto no ha sido gratuito. Mucho tiempo, mucho dinero apoyando, mucha investigación, mucho esfuerzo y muchas equivocaciones han jalonado el avance hasta que los modelos de lenguaje nos regalan una conversación amigable, capaz de invalidar test de inteligencia como el propuesto por Touring y nos llegan a confundir cuando somos capaces de conversar con un sistema informático, como está ocurriendo con el célebre CHAT GPT.
Por un lado, la opción de desarrollo de la Inteligencia artificial basada en redes neuronales, representa, en el fondo, claudicación ante la imposibilidad, hasta el presente, de entender como comprendemos los humanos. Precisamente en el escenario de la lucha sin cuartel entre los prebostes del MIT, con Minsky a la cabeza, partidarios de que la vía era la de ahondar en la comprensión humana y tratar de emular los mecanismos de la misma, frente a las redes neuronales que aportan una inteligencia basada en la memoria y la gestión de la misma no garantiza la comprensión de su contenido. La ascendencia de los del MIT impulsó su propuesta y relegó a las redes neuronales a un segundo lugar que, en términos de inversión estatal norteamericana, lo que supuso que acaparando la primera de las opciones señaladas la inversión estatal, la segunda opción no destacó como útil, hasta que la evidencia de los pocos logros de la primera opción, dieron paso a la segunda, que es la que hoy, en un universo en el que la investigación, cada vez más, está mediada por los intereses, se ve impelida al evidenciar una mayor eficacia en aspectos no fundamentales, pero de exhibición más evidente.
Los modelos de lenguaje en los que Markov se enseñorea y la capacidad de cálculo de las actuales máquinas y la velocidad de proceso permiten el tratamiento de grandes cantidades de datos, con lo que las denominadas “bases de datos de conocimiento” brindan una oportunidad, al menos de cantidad muy superior a la tratable por las personas. Las herramientas usuales, como los buscadores de información en Internet, han mejorado sensiblemente y los sistemas conversacionales, tanto para información de rutina, como para entretenimiento son más eficaces. Excluimos, deliberadamente, el aprendizaje, dado que las bases de datos en las que está basada la información que elaboran, incluyen datos no contrastados y la habilidad de estos sistemas es tal que llegan a elaborar respuestas en las que aventuran datos no solo no contrastados, sino imaginarios, generados en una estricta construcción de respuestas que incorpora hechos o personajes o conceptos que son pura tentativa léxica y no responden a la seriedad con la que se debe responder en un proceso de aprendizaje en que no pueden haber elementos que sean erróneos o imaginarios. No parece haber garantías de que las respuestas estén elaboradas respondiendo al criterio de certeza. Es más, el proceso de corrección de errores no está nada claro que pueda evitar la indebida construcción de respuestas, con contenidos falsos o aventurados sin base probatoria ni elementos que lo avalen. Digamos que falta mucha transparencia para poder valorar cabalmente el logro alcanzado.
Realmente, los sistemas desarrollados son suficientemente complejos, como para no comprender como trabajan y como lo hacen. No es inducible una analogía de trabajo en relación con los humanos, usando símbolos, objetos, ideal y de relaciones entre ellos. Y esto tiene mucho que ver con que la estructura de las redes neuronales es de bloques que representan las neuronas. Cada una de ellas recibe señales, lleva a cabo unos cálculos y produce salidas. Las modernas redes neuronales artificiales, son redes de estas unidades computacionales, entrenadas para hacer tareas específicas. El mecanismo que se emplea no tiene por qué tener nada que ver con el funcionamiento de nuestro cerebro. Si nuestro problema es distinguir la cara y la cruz de una moneda, requerimos dos neuronas en la capa de salida. Si además consideramos que están coloreadas, por ejemplo, de blanco y negro, requeriremos cuatro neuronas en la capa de salida. Si seguimos incorporando elementos diferenciales, tendremos que ir aumentando el número de neuronas. Pero esta forma no tiene por qué tener nada que ver con la forma de percibir el mundo natural con todas sus variantes.
Una alternativa es concebir que una entidad hiperdimensional (una matriz) representa cada pieza de información con todas las propiedades concebibles. La computación asociada a este concepto es la denominada hiperdimensional. Estamos hablando de matrices de 10.000 números, es decir una representación de un punto en un espacio 10.000 dimensional. La matemática para tratar estos objetos y el álgebra para manipularlos es bien conocida, flexible y potente para aprovechar las capacidades de computación actuales. La transparencia está asegurada en esas estructuras. Los vectores que representan a los valores de las propiedades deben ser distintos, lo que se garantiza mediante la ortogonalidad. En un espacio tridimensional, estos vectores seguirían las tres direcciones del espacio, x, y y z. Por analogía, en un espacio 10.000 dimensional habrá 10.000 vectores mutuamente ortogonales. Si nos conformamos con que solamente sean casi ortogonales, tendremos millones de vectores cuasi ortogonales, distintos, en un espacio de elevada dimensión.
El cálculo con vectores cuasi ortogonales es una propuesta de mitad de los noventa del siglo pasado en la Universidad de Toronto. Kanerva y Plate desarrollaron de forma independiente el álgebra para manipular hipervectores, de forma eficaz y útil para el mundo de la computación. Se trata, básicamente, de manipulación de conceptos simbólicos. Así, la multiplicación combina ideas. Por ejemplo, mezclar forma, como la cara y la cruz de una moneda, con el vector círculo nos conduce a una idea de que la “cara es un círculo”, por ejemplo. Este vector, nuevo, será casi ortogonal con el de “cara o cruz” y con el de “círculo”. Los componentes individuales son recuperables, como debe corresponder con un vector que los ha unido. Es decir, dado un vector que representa a una moneda concreta, podemos desenlazarlo y recuperar el vector que contiene la forma, el color, o cualquier otra propiedad.
Con la adición pasa algo parecido. Ahora superponemos conceptos. Supongamos que tenemos dos conceptos, ”cara es círculo” y “color es rojo” y los adicionamos para obtener otro vector que es “cara circular y color rojo”. El nuevo vector se puede descomponer para obtener los integrantes. Una tercera operación es la permutación, en la que recuperamos los componentes individuales de los vectores. En un espacio tridimensional, los valores de x, y y z, se pueden mover de forma que el x pasa a ser y, el y pasa a ser z y el z pasa a ser x. De esta forma se generan nuevas estructuras. El interés radica en que podemos recuperar los eventos sin más que recorrer el orden inverso de las operaciones. Por ejemplo, en una secuencia las cosas ocurren una y otra vez. Si consideramos dos eventos representados por dos hipervectores V1 y V2, podemos superponerlos en un solo vector, pero sería a costa de destruir la información sobre el orden de los eventos. En cambio, si combinamos adición con permutación, mantenemos el orden y podemos recuperar los eventos en orden inverso. Las tres operaciones señaladas son suficientes para crear un álgebra formal de hipervectores y sumergirse en el razonamiento simbólico.
Recientemente, Weiss, ha ahondado en las capacidades de la computación hiperdimensional. Abordó la cuestión de la representación de una imagen compleja con un vector hiperdimensional, conteniendo información sobre los objetos de una imagen, sus propiedades, desde colores hasta tamaños y posiciones. Se inició la carrera del desarrollo de algoritmos propios de las redes neuronales profundas, como es el caso de la clasificación de imágenes. Un ejemplo evidencia lo anotado: supongamos que disponemos de una imagen construida con imágenes de dígitos escritos a mano. Analizamos, mediante un algoritmo, las características de las imágenes, según algún esquema predeterminado y creamos un hipervector para cada imagen. Tras ello, el algoritmo adiciona los hipervectores de todas las imágenes del cero para crear un hipervector que es la “idea” del cero. Hacemos lo mismo con todos los demás dígitos, creando diez clases de hipervectores, correspondiendo uno a cada dígito. Ahora, estamos en condiciones de proporcionar al algoritmo una imagen desconocida. Creará un hipervector de esta nueva imagen y la comparará con los hipervectores de las diez clases que tiene almacenados. La comparación proporcionará el dígito al que resulta ser más parecida la nueva imagen.
De esta forma, se trata de que el cálculo hiperdimensional dispone de capacidad para componer y descomponer hipervectores, para “razonar”. En el campo del razonamiento visual abstracto se ha abordado la resolución de un problema clásico como es el de las matrices progresivas de Raven, consistente en presentar imágenes de objetos geométricos, por ejemplo, en matrices de tres por tres y una posición está en blanco (vacía). Se debe escoger en una serie de imágenes candidatas, de forma que sea la que mejor ajusta a la que figura en blanco. Una buena dosis de audacia permitió resolver el problema usando computación hiperdimensional. Primero se creó un diccionario de hipervectores representando a los objetos de cada imagen, de forma que cada hipervector del diccionario representaba un objeto y alguna combinación de sus atributos. A continuación se entrenó a la red neuronal para examinar una imagen y generar un hipervector bipolar, solamente conteniendo elementos +1 y -1, muy apropiado para superposición con los hipervectores del diccionario. De esta forma, el hipervector generado contiene información sobre los objetos y los atributos de la imagen. En el fondo, es un proceso guiado de la red neuronal hacia un espacio conceptual de significados. Con los hipervectores generados para cada una de las imágenes en su contexto y para cada candidato, para situar en la casilla en blanco (vacía). Un algoritmo analiza los hipervectores para crear distribuciones de probabilidad para los objetos de cada imagen, tamaño y otras características. Son esas distribuciones de probabilidad las que concretan las características, tanto del contexto como de las imágenes candidatas y las que pueden transformarse en hipervectores, usando el álgebra para predecir la candidata más probable a la imagen que corresponde llenar la casilla vacía.
La ventaja sobre los sistemas convencionales radica en que éstos emplean las reglas de la lógica simbólica para razonar de forma que requieren un enorme conjunto de reglas para determinar el siguiente paso a dar. Esto les hace ineficientes, hasta el punto de que en problemas de mosaicos de 3 x 3 el sistema de hipervectores, llega a ser unas 250 veces más rápido que el convencional. Por otro lado, el tratamiento con hipervectores logra hasta un 88% de precisión, frente a un 61 de los tratamientos con redes neuronales. Es una alternativa que capacita para resolver problemas simbólicos. Otra servidumbre de los sistemas actuales es la degradación del cómputo causado por la fluctuación al azar de los bits, que convierten los 0 en 1 o viceversa y no pueden correegirse por los mecanismos simples de corrección de errores. El cálculo huperdimensional tolera mejor los errores por su propia construcción ya que aceptando la fluctuación de algún bit al azar, el hipervector sigue siendo muy parecido al original. Los sistemas basados en hipervectores son mucho más tolerantes.
Finalmente, destacamos la ventaja del cálculo hiperdimensional en cuanto a la transperencia. El Álgebra nos explica por qué el sistema elige una respuesta concreta. Esto no ocurre en las redes neuronales tradicionales. El razonamiento analógico es más apropiado en el contexto de los algoritmos que emplean el cálculo hiperdimensional. Finalmente, los requerimientos de memoria y capacidad de cálculo se adaptan a equipos de baja potencia. Muchas ventajas para una alternativa que ahora está en su primera infancia. Le esperan problemas reales y contrastar con las modernas redes neuronales y sus tamaños gigantescos que son frecuentes en la actualidad. Una cosa hay cierta y es la eficiencia que requieren los problemas que se abordan hoy día. Nos encontramos ante cuestiones que se han escalado en el mundo real a miles de millones de elementos. Ser eficiente y seguro es el objetivo. El razonamiento abstracto y eficiente parece requerir vectores enormes que contengan el significado semántico. Por más que podamos estar obnubilados con herramientas como CHAT GPT, solamente es una anécdota. Queda mucho por hacer.
© 2023 Academia de Ciencias de la Región de Murcia