- Quiet-STaR es un método que, en lugar de usar datasets de QA con respuestas correctas, toma texto web general como señal de entrenamiento para enseñar a los modelos de lenguaje a generar razonamientos internos antes de hablar
- Mientras que STaR tradicional entrenaba seleccionando solo los razonamientos que llevaban a la respuesta correcta, Quiet-STaR recompensa los razonamientos que mejoran la predicción del texto futuro, aprovechando el razonamiento implícito en texto no estructurado
- Muestrea razonamientos en paralelo en todas las posiciones de tokens y entrena mezclando predicciones con y sin razonamiento para acertar mejor el siguiente texto real
- Al continuar el preentrenamiento de Mistral 7B con OpenWebMath y C4, la precisión aumentó sin fine-tuning específico por tarea: GSM8K de 5.9% a 10.9% y CommonsenseQA de 36.3% a 47.2%
- El efecto fue mayor en tokens difíciles de predecir, y se observó una tendencia a que cuanto mayor era la cantidad de tokens usados para el pensamiento interno, mayor era también la mejora en el desempeño de razonamiento directo
Usar texto general como objetivo de entrenamiento para razonamiento
- Las personas, al escribir o hablar, hacen pausas para pensar, y buena parte del significado de un texto está en las razones e implicaciones que no aparecen explícitamente entre las frases
- Los enfoques existentes centrados en razonamiento se han enfocado principalmente en responder preguntas o completar tareas de agentes, pero Quiet-STaR parte de la idea de que el razonamiento existe de forma implícita en casi todo texto
- Algunos ejemplos de razonamiento implícito son:
- Pasos intermedios no explicitados en una demostración
- Teorías que estiman el estado mental de la otra persona en una conversación
Extender STaR al modelado de lenguaje
- STaR(Self-Taught Reasoner) es un método que, en datasets de preguntas y respuestas, muestrea razonamientos a partir de unos pocos ejemplos y entrena solo con los razonamientos que llevan a la respuesta correcta, haciendo que el modelo resuelva iterativamente problemas más difíciles
- STaR tiene la limitación de depender de datos cuidadosamente curados, como datasets de QA de alta calidad
- Estos datasets solo pueden contener tareas de razonamiento específicas
- En algunos casos deben proporcionar el razonamiento en sí o una tarea de razonamiento específica
- En lugar de tareas como QA matemática específica, Quiet-STaR entrena al modelo de lenguaje para generar razonamientos que ayuden a inferir el texto futuro a partir de texto de Internet a gran escala
- Este enfoque se construye sobre la intuición del paradigma de modelado de lenguaje de que “los modelos de lenguaje son aprendices multitarea no supervisados”
Procedimiento de entrenamiento: think, talk, learn
- Quiet-STaR opera en tres etapas
- think: genera en paralelo, después de cada token del texto, razonamientos que explican el texto futuro
- talk: mezcla las predicciones del siguiente token con y sin razonamiento
- learn: con una recompensa basada en REINFORCE, aumenta la probabilidad de los razonamientos que ayudan a predecir el texto futuro y descarta los que lo perjudican
- Durante el entrenamiento, para un thought, el modelo marca el inicio y el fin del pensamiento con metatokens entrenables como
STARTyEND - Después de crear el razonamiento, una mixing head decide cuánto incorporar esa predicción basada en razonamiento a la predicción de tokens futuros
Desafíos de implementación para hacer que piense en todos los tokens
- En texto general, se debe generar un razonamiento para cada token, por lo que el costo computacional es alto
- Para reducirlo, se propone e implementa un algoritmo de muestreo paralelo por token que genera razonamientos en todas las posiciones de tokens dentro de una cadena
- También aborda el problema de que el modelo de lenguaje no sabe desde el inicio cómo generar o usar pensamientos internos
- Introduce metatokens personalizados que indican el inicio y el fin del pensamiento
- Hace que el modelo aprenda cuándo debe generar un razonamiento y cuándo debe predecir con base en ese razonamiento
- Para evitar un entrenamiento miope que solo observe el siguiente token inmediato, usa una pérdida no miope (non-myopic loss) que incluye varios tokens hacia adelante
- Mediante una técnica extendida de teacher forcing, incorpora al entrenamiento predicciones más allá del siguiente token individual
Configuración experimental y resultados
- Los experimentos se realizaron aplicando Quiet-STaR a Mistral 7B
- Para continuar el preentrenamiento se usaron los datasets de texto web OpenWebMath y C4(Colossal Clean Crawled Corpus)
- El desempeño de razonamiento directo zero-shot mejoró sin fine-tuning específico por tarea
- GSM8K: 5.9%→10.9%
- CommonsenseQA: 36.3%→47.2%
- Tanto en GSM8K como en CommonsenseQA, cuanto mayor fue la cantidad de tokens de pensamiento usados durante el entrenamiento con Quiet-STaR, la mejora de desempeño aumentó de forma consistente
- En texto natural, mejoró la perplexity de los tokens difíciles de predecir
- Los razonamientos generados ayudaron de forma desproporcionadamente mayor especialmente en tokens difíciles de predecir
Aportes de Quiet-STaR
- Quiet-STaR generaliza STaR para aprender razonamiento a partir de diversos datos de texto no estructurado, no de tareas de razonamiento curadas
- Con el algoritmo de muestreo paralelo, hace escalable el procedimiento de entrenamiento que genera razonamientos en todas las posiciones de tokens de una cadena dada
- Los metatokens personalizados que indican el inicio y el fin del pensamiento se usan para que el modelo aprenda el momento de generación de razonamientos y de predicción basada en razonamientos
- La mixing head decide a posteriori cuánto incorporar a la predicción actual la predicción del siguiente token surgida de un thought específico
- Una pérdida de modelado de lenguaje que incluye varios tokens hacia adelante mejora el efecto del pensamiento
- En varias tareas, usar pensamientos permite predecir mejor los tokens difíciles que un modelo entrenado con el mismo texto web, y la magnitud de la mejora crece con thoughts más largos
1 comentarios
Opiniones en Hacker News
Por ejemplo, parece intuitivamente obvio que una red de 50 capas de profundidad solo puede razonar unas 50 etapas sobre una pregunta simbólica.
Lo que parece más complejo se debe a que el modelo ejecuta 50 pasos en uno o más subespacios que aprendió, y ese “paso” podría hacer más trabajo que un paso humano.
Los humanos pueden razonar más allá de eso, pero para hacerlo necesitan pensamiento y reflexión reales, y a veces una libreta.
Esperar que ChatGPT haga correctamente una multiplicación de 4 dígitos sin ningún pensamiento ni “papel” es bastante sorprendente y, de hecho, no mucha gente hace ese tipo de cálculo mentalmente.
En el ejemplo, son 50 pasos por cada ejecución del modelo, y el modelo se ejecuta una vez por cada token de salida.
Por eso, calcular cuánto puede “pensar” realmente el modelo es más complejo.
Claro que, una vez que se emite un token, con la configuración predeterminada queda comprometido a ese token, pero eso no significa que no siga “pensando” mientras genera los tokens posteriores.
El contexto y los tokens de salida anteriores son la entrada del siguiente paso del modelo, así que pueden verse como la libreta mencionada.
Los resultados experimentales sugieren que los grandes modelos de lenguaje basados en transformers tienden a resolver el razonamiento composicional de múltiples pasos reduciéndolo a coincidencia de subgrafos linealizados, en lugar de abordarlo como una capacidad sistemática de resolución de problemas.
Además, mediante un argumento teórico sobre problemas abstractos de razonamiento de múltiples pasos, muestra que el rendimiento de la generación autorregresiva puede caer rápidamente a medida que aumenta la complejidad de la tarea.
Suponiendo que la cinta no se agote, no hay razón para que un gran modelo de lenguaje esté limitado solo a operaciones simples.
Y si se considera que el modelo es autorregresivo, tampoco encaja bien.
Edsger Dijkstra tenía un estilo en inglés muy preciso y, aunque su lengua materna era el neerlandés, creo que usaba el inglés mejor que muchos hablantes nativos.
En algún EWD, recordaba que de niño le enseñaron: “no empieces a hablar antes de saber ya cómo vas a terminar la oración”.
Parece probable que haya una relación causal entre estas dos observaciones.
Me preguntaba cómo lo hacía, y un día, almorzando juntos, me lo explicó seriamente.
Dijo que nunca pronunciaba una sola oración antes de haberla dicho completa en su cabeza; repasaba las palabras varias veces, pulía la frase e imaginaba cómo reaccionaría la otra persona, y solo hablaba cuando podía visualizar la reacción que quería.
Ese consejo, al mismo tiempo, señalaba con precisión que yo hablaba sin pensar, y sentí que había leído y respondido exactamente una pregunta que yo no había hecho.
Cuando intenté aplicar este método, la recompensa fue proporcional al esfuerzo, pero no logré convertirlo en hábito y todavía tiendo a que la boca se me adelante al pensamiento.
Antes intentaba pensar compulsivamente en qué iba a decir antes de hablar, y aunque soy bastante torpe socialmente, no me ayudó en absoluto.
Me gusta escribir porque es asincrónico y permite ordenar y corregir las ideas con precisión, pero en situaciones sociales eso se vuelve un gran obstáculo.
Segundo, cuando hablas en un idioma que no es tu lengua materna, piensas más a fondo en lo que vas a decir. Usas menos modismos, te concentras más en si el significado se transmite correctamente y pareces ser más sensible a la posibilidad de incomodar a la otra persona.
Tampoco es algo nuevo. Incluso campos como la ciencia se han desarrollado mucho en idiomas que no eran la lengua materna de los investigadores, como el francés, el alemán o el latín.
Además, la terminología especializada de cada área también influye. Si simplemente digo “Kubernetes is een open-bron houder orkestratiesysteem voor het automatiseren van de inzet, schalen, en het beheer van zachte waren”, la mitad de mi audiencia nativa quedaría confundida.
¿Sería para reducir la probabilidad de que cometieran errores?
Nunca se me habría ocurrido que yo pudiera cometer ese error, y me parece parecido a confundir ‘wet’ y ‘vet’.
Sin duda hay diferencias entre el uso del idioma por parte de hablantes nativos y no nativos.
Es algo que se me ocurrió hace unos días: la forma en que los patrones de razonamiento de cadena de pensamiento contribuyen a mejorar el rendimiento en sistemas basados en modelos de lenguaje grandes parece ponerse en paralelo con el modelo de los dos sistemas de la mente de Kahneman en Thinking, Fast and Slow
No he releído el libro en años, pero recuerdo que decía que usamos principalmente el “System 1” para pensamientos de bajo esfuerzo y bajo cómputo. Por ejemplo, 1+1=? o “el cielo es ____”
En cambio, el “System 2” se usa para tareas deliberadas, conscientes y con alta carga cognitiva. Cosas que requieren concentración o recursos mentales, como multiplicaciones grandes, problemas de razonamiento, uso de herramientas y toma de decisiones en general
La crítica de que “los modelos de lenguaje grandes son loros estocásticos y no tienen inteligencia” en realidad se siente como la observación de que el modelo está equipado para usar solo el “System 1”
Si se le pide a un modelo de lenguaje grande que piense paso a paso, se le da un espacio de trabajo donde anotar sus pensamientos y se hace que vuelva a considerarlos en la predicción del siguiente token, por lo que se convierte en una especie de System 2 básico, es decir, un sandbox para la deliberación
Cuando las personas usan el System 2, también sostienen un diorama del mundo en la parte frontal de la mente y simulan cómo reaccionará el entorno ante una acción determinada. Imaginan qué responderá un amigo, cómo se doblará una placa de acero bajo una fuerza, cómo se romperá el código, cómo se adherirá una llanta, exploran un árbol de posibilidades y eligen la acción con mayor recompensa
No soy experto, pero parece que este paper también reconoció un marco similar. En particular, quizá los modelos de acción que vemos en robótica incorporen en el futuro mecanismos iterativos de deliberación/simulación
Hace unas semanas, en un estado en el que no estaba del todo despierto ni dormido, entré en un ciclo en el que notaba cómo el cerebro de pensamiento rápido escupía palabras y conceptos a la velocidad de la luz, y el cerebro de pensamiento lento los convertía en oraciones reales
Era como ver la cadena de pensamiento como una lista de ideas, y esa lista se llenaba absurdamente rápido para luego resumirse en un “pensamiento” propiamente dicho, compuesto por una lista de palabras elegidas con cuidado
Desde entonces, empecé a creer que lo que reconocemos como pensamiento es la salida seleccionada del proceso de brainstorming inmediatamente anterior
Aun así, la inteligencia no es todo o nada, sino que está en un espectro. Mi definición es “el grado de capacidad para predecir correctamente resultados futuros a partir de experiencias pasadas”, y depende de los mecanismos que un sistema, ya sea biológico o artificial, pueda usar para reconocer patrones y predecir
La inteligencia también depende de la experiencia. Porque lo que no se ha experimentado no se puede reconocer y, por lo tanto, tampoco se puede predecir. Dicho eso, quizá sería mejor contar con vocabulario que distinga la capacidad predictiva y la experiencia, en lugar de agrupar ambas bajo “inteligencia”
Si comparamos el dispositivo predictivo de un modelo de lenguaje grande con el cerebro humano, faltan muchas cosas. “Pensar antes de hablar” es una de ellas, y enfoques como Q* o los árboles de pensamiento ayudarían en esto
Quizá estructuras iterativas como el bucle tálamo-cortical también puedan insertarse en el enfoque de modelos de lenguaje grandes/transformers, pero creo que la pieza que falta de forma decisiva para alcanzar capacidades de nivel humano es el aprendizaje en línea. La capacidad de actuar, ver el resultado y aprender de ello
Con los enfoques actuales quizá se pueda crear una AGI “aprendida de libros”, pero las habilidades no se pueden aprender sin práctica y experimentación. Seas desarrollador o lo que sea, no puedes aprender solo leyendo libros o analizando resultados hechos por otros; tienes que entender los resultados que tus propias predicciones y acciones producen en la realidad, y aprender de ellos
Enlace a la parte relevante: https://youtu.be/zjkBMFhNj_g?t=2120
Lo leí con gusto y sentí que tenía muchas ideas valiosas, pero después un amigo de ese campo me dijo que el libro no era preciso y que el autor había “retirado” algunas afirmaciones
Pero cuando hablo, también me pasa que no sé qué voy a decir hasta escuchar lo que dije
A veces delibero y planeo probando frases en mi cabeza, pero la mayor parte de mí parece más bien un modelo de lenguaje grande que simplemente genera flujos de tokens
Otro paper de aprendizaje por refuerzo con una línea base pésima. En GSM8k, el formato de salida es bastante específico, pero usaron Mistral con ajuste no instruccional y zero-shot
Después de la mejora, la precisión fue de 11%, pero el prompting few-shot logra 37%[1]. GPT-4 puede llegar a alrededor de 97% con prompting
[1]: https://huggingface.co/spaces/HuggingFaceH4/open_llm_leaderb...
Tal vez sea posible escalarlo hasta el estado del arte, pero el objetivo puede ser medir solo el efecto de sus cambios en una configuración simple
Que los ingenieros se encarguen de mezclar combinaciones de varios sistemas para lograr rendimiento de estado del arte
¿Tiene relación con el rumoreado Q* de OpenAI, es decir, el modelo q-star? Los autores de este paper no parecen tener relación
¿Será simplemente una coincidencia de nombre?
Aunque la Q podría significar otra cosa
Esta es la pieza que faltaba para entrenar una IA con capacidad de razonamiento
Hay muchísimas tareas en las que se conoce la respuesta, pero faltan los pasos de razonamiento. Con este método se puede llegar a esa capacidad con menos datos anotados
Lo interesante es que los pensamientos generados pueden ser difíciles de entender para los humanos, pero ser mucho más útiles para obtener la respuesta correcta
Si eso ocurre, habremos creado algo más inteligente que nosotros
Esta mañana intenté algo básicamente parecido a nivel de prompt, pero los resultados fueron pésimos. Aun así, la idea preliminar que tenía en mente iba más allá: introducir metatokens de flujo de control que ayudaran a los modelos de lenguaje grandes a volver a explorar su propio contexto
Desde este punto de vista, el contexto puede repensarse como un mapa mental estructurado que se edita a sí mismo, y el contexto lineal en un momento T sería el rastro de ejecución, hasta ese momento, de la exploración de ese mapa mental
Algunos metatokens podrían tener efectos secundarios como resaltar, estructurar, resumir u olvidar partes del contexto
Esto podría permitir salida estructurada nativa, implementación de memoria, etc., sin formatos sintácticos como json ni construcciones de programación al estilo LMQL
El objetivo no es solo darles a los modelos de lenguaje grandes capacidades de lógica/razonamiento, sino darles los medios para crear su propia arquitectura cognitiva
Si además se implementan memoria o scratchpads usando tokens ... en la salida estructurada, también se obtiene como extra la posibilidad de inspeccionar esas estructuras cognitivas
Claro, no tengo la menor idea de cómo implementarlo. Soy un turista del machine learning
No citan el artículo sobre cómputo adaptativo aprendido en RNN aplicado al modelado de lenguaje [1], que apareció casi 8 años antes de su trabajo
[1] https://openreview.net/pdf?id=S1LVSrcge
Microsoft también tenía algo parecido por esa época para reconocimiento de imágenes. Usaba CNN para la entrada y cómputo adaptativo en la etapa de clasificación
Usar Base Mistral 7B para la evaluación casi no es apropiado. Un equipo de Intel intentó hacer exactamente el mismo truco con NeuralChat https://huggingface.co/Intel/neural-chat-7b-v3#quantitative-...
La frase “la mayor parte del significado de un texto está oculta entre líneas. Si el lector no entiende por qué esas oraciones aparecen en el documento, solo tendrá una comprensión superficial” no me parece cierta para la forma en que leo ni para la de la mayoría de la gente que conozco
Casi siempre tenemos un modelo del mundo y cierta idea de por qué esas oraciones aparecen en un libro
Al leer un libro de texto de mecánica de fluidos, puede que no entiendas las matemáticas, pero sí puedes saber que esas oraciones son enunciados matemáticos destinados a ayudarte a aprender la teoría y que siguen un patrón para enseñar conceptos importantes
Por ejemplo, los conceptos se construyen sobre conceptos anteriores. La ecuación de Bernoulli aparece porque antes estuvo la ley de conservación de la energía, y está ahí porque se supone que entiendo esta última