Perspectiva del aficionado a ML sobre las limitaciones de Chat GPT

isamu isozaki
Esta impresionante imagen fue tomada aquí

¡Hola! Hoy haré un artículo sobre un tema del que estuve hablando mucho con amigos. Después de que salió Chat GPT, siento que muchas personas ya entienden algunas de las limitaciones que Chat GPT tiene intuitivamente, pero no saben necesariamente por qué o cómo surgieron. Aquí, me gusta comenzar con cómo comenzamos a pensar en el texto, la motivación de la serie GPT y luego algunos de los problemas fundamentales que aún afectan a Chat GPT de nuestra historia de trabajo con texto.

Ahora, antes que nada, ¿cómo trabajas con texto?

El primer enfoque que se le ocurrió a la gente fue ¿por qué no dividimos el texto como «el perro está sobre la mesa» por espacios para convertirlo en «el», «perro», «es», «en»… Y luego decirle a nuestro modelo que la palabra «perro» ocurrió una vez, «el» ocurrió una vez, «en» ocurrió una vez, etc. Entonces, lo que podemos hacer es representar esta oración como una bolsa de palabras como esta

Gracias a https://cdn-media-1.freecodecamp.org/images/1*j3HUg18QwjDJTJwW9ja5-Q.png

Entonces, podemos representar cualquier oración, cualquier libro, cualquier texto como una secuencia de números como la de arriba. A las IA les encanta esto. De hecho, las IA no pueden funcionar sin formas fijas. Por otro lado, si tuviéramos que reemplazar cada palabra en un texto con un número como “perro”->2 “es”->0 y hacer una secuencia de números como 2, 0, etc, dependiendo de la longitud del texto, el tamaño de la entrada cambia. Las IA no saben cómo manejar tamaños arbitrarios por sí mismas, por lo que no pueden trabajar con ellas.

Ahora, ¿cuál es el problema con este enfoque? El principal problema es que ignora por completo el orden del texto. Digamos que tienes “Una lata de gusanos”. De esta forma, no se puede distinguir esto de “Un gusano de lata”. Entonces, ¿hay alguna forma de que mantengamos el orden de nuestro texto y posiblemente trabajemos con texto largo arbitrario?

Ahora, aunque hubo algunas cosas intermedias, el siguiente gran avance fueron las redes neuronales recurrentes. La idea principal de Redes Neuronales Recurrentes fue

  • Las redes neuronales son bastante impresionantes
  • ¿Podemos usar redes neuronales para recordar el orden del texto?
  • ¡Lo que obtenemos es algo como el siguiente!

    Gracias, https://github.com/roomylee/rnn-text-classification-tf

    Para cada palabra nueva, la red guarda una memoria de «lo que ha ocurrido antes», que es la flecha azul derecha, y luego ingresa la siguiente palabra. Entonces, en cierto modo, puedes pensar que cada bloque tiene una comprensión de todo el texto que ocurrió hasta su bloque y puede trabajar con eso.

    Esto se ha utilizado para muchas tareas como traducción, clasificación de texto, etc., pero había una gran limitación para las redes neuronales recurrentes: se olvidan.

    La flecha azul hacia la derecha que pasa información de un bloque a otro tiene un tamaño fijo, ya que la IA no puede funcionar con diferentes tamaños de entrada. Entonces, ¿qué sucede cuando tratamos de representar un texto largo en una memoria fija? La IA olvida el texto del principio y recuerda principalmente el texto cercano a nuestro bloque actual. Hubo algunas técnicas como la memoria a largo plazo (LSTM), pero no hubo un gran avance hasta que llegó la atención.

    «La atención es todo lo que necesitas» de Google y el subsiguiente GPT-2 de Open AI fue el momento en que me convertí en un aficionado a la IA y, en mi opinión. Probablemente fue una de las noticias más importantes que le haya ocurrido a la IA. Pero la idea es muy simple. Si tenemos problemas para recordar nuestra primera palabra cuando estamos trabajando con texto cerca del final, ¿por qué no hacemos que siempre “veamos” la primera palabra? ¡Y eso es exactamente lo que es la atención! Podemos, para cada palabra en nuestra oración, obtener qué tan importantes son otras palabras en nuestra oración (cuánto prestamos «atención»). Puede notar que aquí podemos deshacernos por completo de nuestro problema de olvido ya que el modelo siempre «ve» todo el texto.

    Gracias al blog aquí

    Este mecanismo es más o menos lo que se usó para hacer GPT-2. La idea principal es que, dados todos los textos que sucedieron antes, predecimos la siguiente palabra. Entonces, ¡nosotros, así como así, creamos un generador de texto que no se olvida! Este enfoque fue tan bueno para generar texto en ese momento que Open AI, la compañía cuyo objetivo original era abrir todas sus investigaciones, sintió la necesidad de no lanzar sus modelos por primera vez. Fue un cambio en la forma en que las personas pensaban en la IA, lo que también condujo a nuevas organizaciones como Huggingface, Laion, Eleuther AI, Harmon AI, Stability AI que intentaban llenar los vacíos que dejó Open AI, lo cual es bastante emocionante en mi opinión, especialmente como un colaborador de código abierto.

    Para una comprensión/matemática más detallada, escribí un poco sobre esto en mi serie Comprensión GPT-2 aquí. Pero aquí hay muchos recursos increíbles sobre el funcionamiento interno, así que no dudes en consultarlos.

    Ahora, ¿cuáles son los problemas con este enfoque? Una limitación de GPT-2/atención es que, si bien sí, puede memorizar la contribución de cada palabra a cada otra palabra, solo para almacenar todos esos datos, ¡necesitamos la longitud de la secuencia multiplicada por la cantidad de datos de la longitud de la secuencia! Como abajo

    gracias aquí

    Esto significa que si tuviéramos que aumentar el tamaño de la cantidad de texto que nuestro transformador puede ver a la vez para decir el doble de la cantidad, necesitamos 4 veces el cálculo. Y la informática no es barata.

    Sin embargo, si bien lo anterior es un problema, existe un problema subyacente mayor en la generación de texto.

    El problema fundamental de GPT-2 y GPT-3 y de prácticamente cualquier modelo de generación de texto son los datos. No es sorprendente que estos modelos de transformadores requieran una gran cantidad de datos para entrenar. Los modelos de código abierto como GPT-J y GPT-Neox que intentan competir con ellos suelen utilizar conjuntos de datos como Pile, que es un conjunto de datos de 825 GiB. Ahora, cuando pensamos en el texto promedio que publicamos en línea, ¿son de alta calidad? ¿Compiten con textos de clásicos como Guerra y paz o cualquiera de la literatura de Stephen King? Incluso si no llegamos a ese nivel, cuando introducimos datos en nuestro modelo para entrenar, en el mejor de los casos, nuestro modelo será un generador de texto tan bueno como los datos/textos promedio. Es posible que tengamos suerte y obtengamos un buen texto de vez en cuando, pero los modelos que entrenamos están limitados por nuestros datos. Podemos entrenar solo con datos de alta calidad, pero no hay suficiente para entrenar un modelo desde cero.

    Pero podrías decir espera un minuto. Las respuestas de Chat-GPT parecen estar por encima del promedio. Lo mismo con las respuestas de GPT-4. De hecho, todavía puede tener un problema de olvido, pero parece ser útil en general. La pregunta es ¿cómo hicieron eso?

    Ahora, esta idea fue propuesta por primera vez en Instruct GPT por Open AI, pero explotó en popularidad justo cuando apareció Chat GPT. La idea principal es simplemente esta:

  • Hagamos que los humanos califiquen el resultado de nuestro modelo Chat GPT dado un determinado texto de entrada
  • Hagamos que un modelo prediga la puntuación humana dado un determinado texto de salida de Chat GPT. ¡Ahora no tenemos humanos en el circuito!
  • Hagamos que Chat GPT entrene para generar texto que obtenga la puntuación más alta posible cuando se introduzca en el modelo en 2.
  • ¡Así que ahora podemos hacer texto por encima del promedio! ¿O podemos?

    Ahora, ¿cuál es el truco en el enfoque anterior? Es posible que lo hayas atrapado. Es el primer paso en el que los humanos etiquetan qué texto generado es mejor que otro. Dependiendo de la cultura/sesgo de las personas que hacen estas etiquetas, podemos ver diferencias interesantes entre los modelos. En Chat-GPT notamos que la modelo está muy en contra de la violencia o decir algo político. En un modelo como Open Assistant, que es la variante de código abierto de Chat-GPT, gamificaron el proceso de RLHF, lo que condujo a respuestas más liberales para indicaciones «antagonistas». Ahora, países como China están creando su propia variante de Chat-GPT que se alinea con sus valores.

    ¿Cuál es el punto en común aquí? RLHF no es una técnica para aumentar el rendimiento del modelo. es más un enfoque de personalización que refleja los valores de la comunidad/empresa que lo fabricó.

    Para este problema, no existe una solución clara, excepto simplemente mejorar la calidad de los datos. Y, de hecho, puede que ni siquiera sea un pequeño problema, pero creo que es importante entenderlo.

    Ahora, el otro elefante en la habitación es ¿qué pasa con el problema de la memoria con los transformadores/atención? ¿No hay solución a eso? Open AI puede tener una solución para esto, ya que su longitud de contexto puede llegar a 32768 tokens (¡32 veces GPT-2!) Pero su técnica es actualmente un secreto. Sin embargo, la comunidad de código abierto tiene algunas conjeturas.

    Aquí en AutoGPT, a la gente se le ocurrió una idea interesante de por qué no tenemos una base de datos que almacene todas nuestras conversaciones. Luego, cuando le hacemos una pregunta a nuestro modelo Chat GPT, ¿por qué no adjuntamos fragmentos de información relevantes que tenemos en nuestra base de datos a nuestro modelo Chat GPT? Aquí, la búsqueda se puede considerar como una búsqueda de Google.

    Ahora, el problema aquí es que si bien recuperar esta información es bastante bueno, no sabemos si esa información es la mejor para responder/generar nuestras preguntas.

    La siguiente idea que surgió fue de un documento «Scaling Transformer to 1M tokens and more with RMT» que generó mucho revuelo donde la idea básica era ¿podemos combinar RNN con Atención? Y demostraron que puedes hacer que los bloques de atención procesen un lote de texto y luego lo pasen a lo largo de la cadena RNN y no se olvide demasiado, lo cual fue bastante impresionante.

    Necesito investigarlo más, pero la trampa obvia aquí es que estamos comprimiendo 1 millón de tokens de información en la flecha azul de RNN de un tamaño fijo. Así que siempre habrá alguna información que se pierda.

    Hay un video muy bueno sobre esto aquí.

    En mi opinión, creo que podemos conectar nuestro modelo con algún tipo de base de datos donde pueda elegir almacenar información, como Facebook demostró cómo la IA puede usar «herramientas» como Google. Creo que este problema de memoria se puede resolver haciendo que la IA elija qué información desea recuperar/almacenar.

    Además, existen algunas técnicas, como Long Former, en las que decimos: ¿realmente necesitamos obtener esa matriz de longitud de secuencia multiplicada por longitud de secuencia completa?

    Creo que GPT-4 usó algo así como el enfoque anterior largo en el que eligieron no ir al cuadrado de la longitud completa de la secuencia, sino solo algunas entradas.

    Pero en general, ¡es un campo bastante emocionante!

    Si bien Chat GPT puede ser bastante impresionante, tiene 2 problemas fundamentales que, si se resuelven, ¡podrían ser el comienzo de AGI!


    Comentarios

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *