Un modelo de ChatGPT

The same post in English

¿Cómo funciona ChatGPT? Supongamos que pasamos por alto por el momento que ChatGPT utiliza una red neuronal artificial, y vamos a representar su algorimo de la manera tradicional. Dicho algoritmo se puede dividir en dos partes:

  1. Entrenamiento: se le proporcionan datos (archivos de texto), que se utilizan para construir dos conjuntos de datos:
    1. Una lista de todas las palabras que aparecen en el conjunto de todos los textos, sin repetición, pero sin importar su orden ni el número de veces que aparece cada una.
    2. Una matriz de índices a la lista de palabras, que informa sobre el número de veces que aparece una palabra determinada a continuación de una serie de palabras. Por ejemplo, si en los textos aparece la siguiente serie: viajes en el tiempo, en la matriz aparecerán los índices de las palabras viajes, en, el, y tiempo, seguidos por el índice de la palabra siguiente, seguidos por el número de veces que aparece esa sucesión de cinco palabras en todos los textos utilizados para el entrenamiento.

La formación de estos dos conjuntos de datos (o sea, el entrenamiento) es la parte más costosa y lenta del proceso.

  1. Consulta: Se acepta una pregunta y se construye la respuesta añadiendo palabras de la siguiente manera:
    1. Se toman todas o una parte de las palabras de la pregunta y se busca cuál es la palabra siguiente en el conjunto de todos los datos guardados en la matriz de índices. En general se obtendrá, no una sola posibilidad, sino varias, junto con el número de veces que aparecen. Por ejemplo, así:

Palabra1 6 veces

Palabra2 4 veces

Palabra3 2 veces

Palabra4 1 vez

Palabra5 1 vez

    1. Se suman las veces que aparecen todas esas palabras. En el ejemplo, 14.
    2. Se obtiene un número aleatorio entre 1 y 14. Supongamos que es 7.
    3. Como 7 es mayor que 6 (el número de veces que aparece la primera palabra), pero menor o igual que 10 (el número de veces que aparecen las dos primeras palabras) se selecciona la Palabra2. Esta será la primera palabra de la respuesta.
    4. Se añade Palabra2 al final de la serie de palabras de la pregunta y se repite el proceso. En cada paso se va añadiendo una palabra nueva. La serie de todas las palabras añadidas, cuando el proceso se detiene, constituye la respuesta.

Sencillo, ¿no? Por eso se me ocurrió construir un modelo de juguete de ChatGPT, utilizando un algoritmo tradicional en lugar de una red neuronal artificial, para ver si se obtenían resultados comparables, a pesar de la pequeñez del modelo. Para entrenarlo utilicé el texto de una de mis novelas, Un rostro en el tiempo, que tiene unas 33.000 palabras. El número de palabras diferentes es 6211. Por supuesto, esto no es comparable en absoluto con los textos utilizados para entrenar a ChatGPT, que son miles de millones de archivos obtenidos de Internet.

A continuación, programé el algoritmo de consulta, como he explicado más arriba. El programa, escrito en el lenguaje APL, constaba de 18 instrucciones. ¡Sí, sólo 18 instrucciones! Porque es un algoritmo bastante sencillo y APL es un lenguaje muy potente, en el que la búsqueda de todas las apariciones de una serie de cuatro índices B en una MATRIZ de 33.000 filas se escribe así:

MATRIZ[;1 2 3 4]˄.=B

Como primera consulta, le propuse esta:

viajes en el tiempo

Y sorprendentemente obtuve esta respuesta:

son imposibles!

Repetí la consulta y obtuve esta respuesta:

son imposibles como ha dicho Lavalle

Repetí la consulta y obtuve esta respuesta:

son uno de sus temas favoritos

No esta mal, ¿no? ¿Impresionante? Ahora supongo que a alguien se le ocurrirá decir que mi programa muestra signos de ser consciente, como están diciendo de ChatGPT.

¿En qué se diferencian mi programa y ChatGPT, aparte del enorme volumen de datos con el que ChatGPT ha sido entrenado? En casi nada, porque una red neuronal artificial no es más que un modo de implementar un algoritmo de una manera que no asegura que el algoritmo se ejecute siempre correctamente, pero a cambio obtiene resultados bastante aceptables en un tiempo muy pequeño. Pero ChatGPT tiene la misma consciencia que mi pequeño modelo, o sea, ninguna.

Hilo Temático sobre Inteligencia Natural y Artificial: Anterior Siguiente

Manuel Alfonseca

8 comentarios:

  1. Esta nueva entrada de Manuel Alfonseca es, simplemente, genial. En solo 703 palabras explica de forma colosalmente didáctica "las tripas" de este tipo concreto de IA generativa que es el ChatGPT.

    El ejemplo que semanalmente nos brinda Alfonseca bien podría servir de guía a los “expertos” que actúan de muy otra forma. Me refiero a los que exponen sus conocimientos para demostrar lo que solo ellos saben en lugar de procurar que el lector se entere de lo que exponen. Son expertos que, metidos a divulgadores, no hacen sino decirnos que su saber está solo a la altura de ellos, no del común de los lectores. Son la antítesis de Manuel.

    Un segundo mérito de esta entrada de Manuel Alfonseca es, en mi opinión, el siguiente. A su modo, Alfonseca viene a decirnos que la “nueva informática” (léase la IA) se “adorna” con categorías provenientes de otras ciencias (neuronas, aprendizaje) con el fin de ganar prestigio. Una reflexión propia del filósofo francés Éric Sadin, inexplicablemente desconocido en España: La inteligencia artificial o el desafío del siglo. Anatomía de un antihumanismo radical (Buenos Aires: La Caja Negra Editora, 2020).

    Por todo ello (y por el uso de APL :-), opino que esta entrada de Manuel Alfonseca es merecedora de los mejores elogios.

    ResponderEliminar
  2. Exacto, hablar de conciencia en este tipo de algoritmos es algo tan absurdo que casi produciría risa, si no fuera por las implicaciones filosóficas y morales que tiene (afecta a cómo nos percibimos a nosotros mismos).

    No deja de ser un modelo que intenta predecir la siguiente palabra en una secuencia de palabras, aunque al tener tantos datos de entrenamiento y una manera más sofisticada de representar la información, puede llegar mucho más lejos y parecer más inteligente.

    ResponderEliminar
  3. Totalmente de acuerdo con los dos comentarios: usaré esta entrada en mis clases de modelización y simulación para presentar ChatGPT. Gracias, Manuel.

    ResponderEliminar
  4. Muy interesante Manuel, has logrado desmitificar al 'monstruo' que nos amenaza. Al final, en la caja negra, sólo hay un algoritmo implementado en código de algún lenguaje de programación.

    ResponderEliminar
  5. Si esto es así, de lo que estoy seguro, viniendo del profesor, se me ocurren varias preguntas:

    Por un lado si es un algoritmo tan simple y tan sencillo de implementar; ¿por qué no se llegó a el antes? Siendo como son las aplicaciones de ChatGPT tan enormes y la cantidad de dinero que se está invirtiendo en estas tecnologías igualmente tan gigantesca (Microsoft lleva invertido en OpenIA decenas de miles de millones de dólares).

    Por otro lado ¿las IAs generativas de imágenes como Dall-e o Stable Difussion también se basan en algoritmos tan sencillos? ¿Y las que describen las imágenes en texto como Flamingo no son mas que la inversión de dicho algoritmo?

    Yo tenía entendido que este salto que ha dado la IA en estos últimos años era debido al desarrollo por parte de Google de una tecnología llamada “Transformers” que esta empresa hizo de dominio público y luego aprovechó OpenIA.

    Un saludo.

    ResponderEliminar
    Respuestas
    1. "Transformers" es una arquitectura de redes neuronales artificiales que Google usa en muchas de sus aplicaciones: Google Translate e incluso en los buscadores.

      ¿Por qué es útil esta arquitectura? Porque las redes neuronales artificiales pueden entrenarse (ajustando los parámetros de sus "neuronas") hasta conseguir que realicen una función, que usualmente puede representarse también con un algoritmo clásico.

      El problema del algoritmo clásico es que, cuando tiene que trabajar con un número enorme de datos, suele ser muy lento. Si a mi modelo lo entrenara con miles de millones de archivos, las dos componentes serían tan enormes, que para contestar a cualquier pregunta necesitaría minutos, o quizá horas. Sería totalmente inaceptable.

      Con una red neuronal, como digo en el artículo, se consigue aproximarse al algoritmo para el que ha sido entrenada y realizarlo en un tiempo muy corto, pero a cambio no estamos seguros de que el resultado sea siempre el óptimo. Lo que pasa es que, en muchas ocasiones, no necesitamos el resultado óptimo, nos basta con una aproximación. Por eso las redes neuronales artificiales resultan útiles.

      No he mirado la aplicación Flamingo, así que no puedo contestar a la pregunta de si aproxima un algoritmo inverso al que yo he detallado.

      Eliminar
  6. Gracias por esta entrada. La mayoría de lo que se escribe a nivel divulgativo no logra desmitificar la IA, pero es importantísimo hacerlo, para entenderla mejor, y de paso entendernos mejor a nosotros y al mundo. Y para desmitificar hay que dar explicaciones comprensibles, no basta con el consabido "miles de millones de parámetros".

    ResponderEliminar
    Respuestas
    1. No puedo estar más de acuerdo con Gonzalo Génova. A mi juicio, la literatura de divulgación sobre IA presenta importantes aspectos a mejorar.

      Prima la necesidad de los autores por demostrar lo que saben sobre su vocación por enseñar al que no sabe. Y esto hace que el lector no se sienta atraído por textos que, pudiendo ser técnicamente rigurosos, le resultan fuera de su alcance. Me atrevo a decir que los ciudadanos ansiosos por saber de qué va esto de la IA, pero que no saben ni cómo ni dónde ni a quién preguntar, constituyen un público objetivo que se encuentra huérfano, desatendido.

      Falta, por otra parte, un discurso holístico, abarcador, que permita al lector comprender con facilidad qué tienen que ver unas piezas del puzle de la IA con otras. Así, se habla de robots, redes neuronales artificiales, computación cuántica o programación simbólica en una especie de revoltijo o totum revolutum que acaba por desanimar. Sí, hay mucha demanda de literatura de divulgación no satisfecha por una oferta, en verdad escasa, en cantidad y calidad. Por eso me ha parecido muy oportuno el comentario de Gonzalo Génova y, en este mismo sentido, excepcionalmente lúcida esta entrada de Manuel Alfonseca.

      Eliminar

NORMAS PARA PONER COMENTARIOS:

1. Estos comentarios están moderados para evitar la publicación de comentarios insultantes o irrelevantes. Los que no cumplan estas normas no serán publicados.

2. Los comentarios deben tener algo que ver con el tema del artículo al que se asocian.

3. También son aceptables comentarios del tipo: "Por favor, considere la posibilidad de publicar un artículo sobre tal tema".

4. No son aceptables comentarios que digan: "¿Qué opina de este artículo?", seguidos de un enlace. Este blog no es un consultorio. No tengo tiempo para leer tantos artículos. Además, ya he contestado a la mayor parte de las preguntas que se me hacen, ya sea en artículos o en comentarios anteriores. Utilicen la búsqueda en el blog para localizarlos.

5. No ponga Anónimo o Unknown como firma del comentario. Ponga cualquier nombre, o al menos diga dentro del texto de quién se trata (no tiene que ser su nombre y apellidos). Si todos pusieran Anónimo o Unknown, no sabría si estoy hablando con una persona o con varias.

6. Sea lo más conciso que le sea posible. Los comentarios no deben competir en longitud con el artículo.

Aunque este blog está preferentemente dirigido a la divulgación de la ciencia, es inevitable que mis ideas influyan en mis artículos. Si a algún lector le molestan mis ideas hasta el punto de no poder mantener la calma, le recomiendo que deje de leerme. Pero si se empeña en discutirlas, exijo respeto, y que se evite la falacia ad hominem. De lo contrario, el comentario no será publicado.