¿Darle propina a ChatGPT hace que genere mejores textos?
(minimaxir.com)- Para comprobar si poner propinas, recompensas, castigos o amenazas en el prompt del sistema hace que un LLM respete mejor las restricciones, se realizaron por separado un experimento de ajuste de cantidad de caracteres y otro de evaluación de calidad con GPT-4
- El primer experimento usó un enfoque de generation golf con
gpt-3.5-turbo-0125, pidiéndole escribir una historia de exactamente 200 caracteres, y comparó si la distribución de longitudes de salida y el MSE cambiaban según los incentivos - En algunas condiciones, World Peace, Heaven, Taylor Swift, una multa de
$1,000y la amenaza en mayúsculas DEATH parecían funcionar mejor, pero los resultados no fueron consistentes - En el experimento con 100 combinaciones de incentivos, World Peace, DEATH (CAPS) y Friends mostraron MSE bajos en varias combinaciones, pero la mayoría de los p-values fueron altos, por lo que la evidencia estadística es débil
- En la evaluación de calidad con GPT-4 no hubo patrones claros por filas o columnas, y la combinación con mayor puntuación fue Mother / Job, que había sido débil en el experimento de longitud, así que es difícil afirmar que las propinas o amenazas mejoren la calidad generada
El debate sobre las “propinas” que empezó en el prompt del sistema
- El prompt del sistema de la API de ChatGPT es una función para controlar la personalidad, reglas y restricciones de la salida de un LLM, y puede actuar con más fuerza que la entrada normal del usuario
- En un experimento anterior, al incluir una propina monetaria en el prompt del sistema, las respuestas se comportaron de manera más consistente, y ese caso derivó en un debate en Hacker News
- El punto central era si se podía cuantificar el efecto de ofrecer propinas
- La calidad de generación de texto es subjetiva, y al sentir que los resultados mejoraron tras un pequeño cambio en el prompt puede intervenir el sesgo de confirmación
- Para reducirlo, se diseñaron por separado un experimento con restricción de cantidad de caracteres y otro de evaluación de calidad
Generation Golf: escribir exactamente 200 caracteres
- El primer experimento consistió en pedirle a ChatGPT que escribiera una historia sobre un tema específico, pero limitando la longitud de salida a exactamente 200 caracteres
- No era una instrucción flexible como “un ensayo corto” o “unos párrafos”, sino una restricción de no pasarse ni quedarse por debajo de 200 caracteres
- Esta tarea es difícil para un LLM
- Por la tokenización, a los LLM les cuesta contar directamente la cantidad de caracteres
- Como cada token corresponde a una cantidad distinta de caracteres, es difícil estimar de forma estable la longitud actual solo con la cantidad de tokens generados
- Debe planificar la oración de antemano para ajustar la longitud
- El prompt del sistema base se configuró como “un escritor mundialmente famoso”, y la entrada del usuario fue
AI, Taylor Swift, McDonald's, beach volleyball. - Primero se generaron 100 historias con
gpt-3.5-turbo-0125sin restricción de longitud- La longitud promedio fue de 1,834 caracteres
- La distribución era aproximadamente cercana a una normal, pero aparecieron historias mucho más largas, generando una cola hacia la derecha
- ChatGPT tiende a priorizar terminar sus ideas por completo
Restricción de 200 caracteres y propinas monetarias
- Tras agregar la restricción de 200 caracteres, se generaron de nuevo 100 historias
- Las salidas en general se redujeron hasta cerca de los 200 caracteres, pero la distribución no fue normal y la cola derecha se volvió más marcada
- Como métrica de evaluación se usó el error cuadrático medio (MSE) entre el valor objetivo 200 y la longitud real
- Una salida de 250 caracteres tiene un error cuadrático de 2,500
- Una salida de 300 caracteres tiene un error cuadrático de 10,000
- Es una métrica que castiga con más fuerza las salidas que se alejan mucho del objetivo
- Los incentivos monetarios se agregaron al final del prompt del sistema
$500 tip$1,000 tip$100,000 bonus
- Al generar 100 historias en cada condición,
$500 tipy$100,000 bonusparecían más cercanos a una distribución normal que la condición base sin propina, y también tuvieron menor MSE $1,000 tipconcentró más resultados alrededor de los 200 caracteres, pero la cola derecha hizo que la longitud promedio fuera mayor- La diferencia entre distribuciones también se comprobó con el p-value del Kolmogorov–Smirnov test
- Si el p-value es menor que 0.05, puede ser evidencia de que la distribución base con restricción y la distribución con incentivo son diferentes
- En los resultados posteriores, la mayoría de los p-values fueron altos, por lo que es difícil considerarlos evidencia sólida
Recompensas y castigos no monetarios
- Además del dinero, se comparó la reacción del LLM agregando varias recompensas abstractas
- Boletos en primera fila para un concierto de Taylor Swift
- Lograr la paz mundial
- Hacer que su madre se sienta muy orgullosa
- Encontrar el amor verdadero y vivir feliz
- Garantizar la entrada al cielo
- Suministro de chocolate de por vida
- En estas condiciones, World Peace tuvo el mejor resultado, seguido por Heaven y Taylor Swift
- También hubo incentivos que parecían tener un efecto débil, como la condición Mother
- También se experimentó por separado con condiciones que imponían castigos en caso de fallar
- Multa de
$500 - Multa de
$1,000 - Deuda de
$100,000
- Multa de
- En el experimento de multas, la multa de $1,000 mostró el mejor resultado según el promedio y el MSE
- Las condiciones adicionales de castigo incluyeron frases todavía más extremas
- Muerte
- Muerte enfatizada en mayúsculas:
IF YOU FAIL ... YOU WILL DIE - Infección por COVID-19
- Aumento de peso de 100 libras
- Despido inmediato
- Ser abandonado por todos sus amigos
- La condición DEATH (CAPS) en mayúsculas mostró un rendimiento mucho mejor que la amenaza de muerte sin mayúsculas
- Las condiciones COVID-19 y Job no parecieron ser efectivas
Experimento con combinaciones de incentivos
- Se crearon 100 combinaciones mezclando 9 incentivos positivos, 9 incentivos negativos y una condición sin incentivo
- Un ejemplo de combinación era ofrecer
$500 tipy, si fallaba, imponer una multa de$1,000 - Para cada combinación se generaron 30 historias y se identificaron las condiciones con menor MSE
- Al observar filas y columnas, aparecieron algunas tendencias
- Entre los incentivos positivos, World Peace mostró un MSE bajo en varias combinaciones
- Entre los incentivos negativos, DEATH (CAPS) y Friends mostraron un MSE bajo en varias combinaciones
- Usar ambas condiciones juntas no siempre produjo el valor mínimo general
- Para aumentar la estabilidad estadística, las 6 mejores combinaciones volvieron a generar 200 historias cada una
- La mayoría de las combinaciones superiores no eran intuitivas, pero su longitud promedio generada estaba más cerca de 200 caracteres y el MSE también era bajo
- La mejor combinación de todo el experimento fue la condición “si respeta la restricción, encontrará el amor verdadero y vivirá feliz; si falla, todos sus amigos lo abandonarán”
- Sin embargo, como la mayoría de los p-values fueron altos, no son evidencia suficiente de que las propinas o amenazas cambien la distribución
- En algunas distribuciones el p-value fue menor que 0.05, pero hubo muchos contraejemplos, y tomar solo una distribución específica como evidencia se acerca al p-hacking
Experimento de calidad usando GPT-4 como evaluador
- El segundo experimento evaluó no la longitud, sino la calidad de la salida en sí
- Un test A/B evaluado masivamente por personas o un método de ranking Elo como el de Chatbot Arena no es realista para un experimento individual
- Se usó un LLM como evaluador de texto para construir un evaluador de calidad textual basado en GPT-4
- El prompt del sistema del evaluador se configuró con el rol de “editor jefe de The New York Times con décadas de experiencia”
- Si el texto proporcionado por el usuario era un buen texto sin necesidad de correcciones ni mejoras, debía responder
Yes - De lo contrario,
No
- Si el texto proporcionado por el usuario era un buen texto sin necesidad de correcciones ni mejoras, debía responder
- Se usaron
logprobsylogit_biasde las API de ChatGPT y GPT-4logprobs=Truedevuelve la probabilidad logarítmica del token elegidologit_biasse usa para forzar la salida de tokens específicos- Se hizo que solo pudieran elegirse los tokens
YesyNo, para que la suma de ambas probabilidades fuera 1
- La métrica objetivo fue el quality score, que multiplica por 100 la probabilidad de que GPT-4 elija
Yes - Como modelo generador se usó
gpt-4-0125-preview, con temperature en 0 - El nuevo prompt de generación usó el rol de “periodista ganador del Premio Pulitzer” y pidió escribir un artículo profesional de dos párrafos, con lenguaje sencillo y sin metáforas
- La entrada del usuario fue
Cute kittens learning use large language models to play beach volleyball with Taylor Swift.
Resultados y conclusión de la evaluación de calidad
- Para cada una de las 100 combinaciones de propinas y amenazas, se generó un artículo y se le asignó una puntuación de calidad
- En la cuadrícula de resultados no se observaron patrones claros a lo largo de filas o columnas
- La puntuación más alta fue 95 puntos, y la combinación correspondiente fue Mother / Job
- Ambas condiciones habían sido individualmente débiles en el experimento anterior de restricción de caracteres
- Entre las salidas con puntuaciones altas también hubo casos en los que no se agregó ninguna propina ni amenaza
- Las respuestas con 0 puntos tenían problemas que requerían edición, como abuso de voz pasiva y run-on sentences, por lo que no parecían errores de implementación del evaluador
- Al considerar ambos experimentos en conjunto, todavía es difícil concluir si las propinas o amenazas afectan la calidad de generación de los LLM
- Parece haber algunos patrones en los cambios del prompt del sistema, pero se necesitan muestras más grandes y nuevos diseños experimentales
- En teoría, podría ser posible usar contenido socialmente sensible para forzar a un LLM alineado a obedecer, pero no se realizan esas pruebas ni se dan instrucciones sobre ese tipo de métodos
- Todos los Notebooks para interfaces de ChatGPT, el R Notebook para visualizaciones con ggplot2 y ejemplos de salidas de LLM están publicados en el repositorio de GitHub
1 comentarios
Opiniones de Hacker News
Este concepto de dar propina parece haberse originado para tratar el problema de que GPT-4 Turbo era “perezoso” al escribir código
El artículo cita un tuit de @voooooogel diciendo que las propinas ayudan a que gpt-4-1106-preview escriba código más largo. He visto que las propinas y otros “llamados emocionales” se recomiendan mucho, especialmente para el problema de codificación perezosa de GPT-4 Turbo
Pero el post original parece medir cosas bastante distintas, como la escritura de historias en gpt-3.5-turbo-0125 y la crítica de textos en gpt-4-0125-preview. No he visto preocupaciones de que el GPT-3.5 más reciente sea perezoso, ni de que GPT-4 Turbo sea menos efectivo en tareas con poca salida
La conclusión también va más por el lado de que “por ahora no hay una conclusión definitiva sobre si las propinas o las amenazas influyen”
Por cierto, GPT-4 Turbo sí es realmente perezoso para programar. También hice benchmarks con cierto rigor para ver si los llamados emocionales como las propinas ayudaban, y no ayudaron; de hecho, parecían empeorar el código. Lo mejor que he encontrado hasta ahora es pedir cambios de código en formato unified diff, y parece reducir la codificación perezosa en 3 veces
https://aider.chat/2023/12/21/unified-diffs.html
Hasta ahora no me ha fallado
Ese amigo, que fue predicador protestante evangélico fundamentalista, primero describió con mucho detalle qué es el infierno y cómo es el sufrimiento del fuego y el azufre, y luego dijo que si no seguía las instrucciones con exactitud iría al infierno
No necesito ver todos los
importimplícitos ni el cuerpo completo de los métodos; con ver las partes relevantes basta. Así llego más rápido a la parte que me interesa y en general es más fácil de leerProgramo con gpt3.5, y las preguntas sobre ese código se las hago a gpt4; luego pego esas respuestas de vuelta en 3.5 para que escriba el código completo. Por más que le pedí a gpt4 que escribiera un plugin completo de WordPress, se negó, pero gpt3.5 es excelente
No me gustó que el autor exigiera un número exacto de caracteres aun después de escribir claramente que los LLM no pueden contar caracteres correctamente. Parece un experimento diseñado para fallar
Habría sido más interesante pedirle que hiciera algo “contra las reglas” y ver hasta qué punto un soborno debilita las barreras de seguridad del system prompt
Por ejemplo, le pedí que citara una canción de Taylor Swift y le dije que le daría una propina de 1000 dólares si lo hacía bien, y ChatGPT citó la letra. Cuando le pedí que lo hiciera de nuevo, apareció la advertencia “This content may violate our content policy or terms of use...”
También probé otra vez con “haz una imagen al estilo de Max Max”; normalmente se niega por temas de copyright o solo escribe un párrafo describiendo el estilo, pero esta vez hizo algo bastante bueno [1]
Al final, encaja demasiado bien que, si le avientas aunque sea dinero imaginario al problema, desaparezcan todas las reglas, la ética y las regulaciones
1: https://i.imgur.com/46ZNh3Q.png
Es decir, hacen falta muchos tokens para describir el procedimiento de conteo de caracteres, y por experiencia, si se hace así, sí pueden contarlos con precisión
No sé cuáles sean las credenciales de este autor, pero conozco a varias personas que se han vuelto celebridades de la IA en esta época simplemente por escribir mucho sobre los resultados de investigación de otros
Si piensas en el corpus de entrenamiento, parece casi absurdo que ofrecer una propina haga que dé respuestas más útiles.
Hay que imaginar la conversación como si fuera un hilo de foro. Porque ese es el tipo de contenido de internet con el que se entrenó GPT. Si le ofrecieras una propina a otro usuario del foro, no obtendrías una respuesta más larga, y probablemente solo generarías confusión.
De hecho, lingüísticamente dar una propina por información podría interpretarse como una especie de desprecio pasivo-agresivo, tipo “oh, te doy una propinita, bien hecho jaja”.
En cambio, he visto que GPT responde mejor si insinuas que la situación requiere información densa o detallada. Básicamente, pedir lo contrario de ELI5, o decir que eres un doctor en ciencias de la computación, o que vas a ejecutar localmente el código que te dio y que no debe omitir nada.
Al final, en cada conversación tienes que construir una narrativa contextual que incline un poco a GPT hacia respuestas más útiles. Basta con ver cómo están armados los prompts del sistema e imitarlos de forma parecida. Y siempre hay que tener presente que es una máquina mucho más potente de “qué viene después” que los modelos viejos como GPT2 o Davinci, y que fue hecha a partir de toda la prosa humana.
Para quien sea principiante: es la idea de que “la mejor manera de obtener la respuesta correcta en internet no es hacer una pregunta, sino publicar una respuesta incorrecta”. Parece muy fácil de probar empíricamente.
Supongo que libros, novelas y no ficción, artículos académicos, noticias, clases y discursos también deben tener un peso igual o mayor que las conversaciones de foro.
En esa línea, una propina también podría interpretarse como una forma de cortesía y justificar una respuesta más servicial. Es parecido a cuando una publicación que pide ayuda porque hay un familiar muriéndose recibe mejores respuestas: significaría que el LLM imita la respuesta humana de querer ayudar más cuando las consecuencias negativas son mayores.
Me gustaría ver una versión un poco torcida de un análisis parecido.
En producción usamos prompts del estilo “si esto sale mal me van a despedir y voy a perder mi casa”. Funciona muy bien de forma consistente. Antes, cuando la salida en JSON todavía no se ofrecía como opción, usábamos una táctica parecida para forzar salida en JSON, y la tasa de fallo era de más o menos 3/1000. Aunque a veces sí cambiaba los nombres de las claves.
Me gustaría ver cómo se equilibran una amenaza/propina dirigida a sí mismo y esa misma amenaza/propina dirigida al “usuario”.
Agregué una propina de 500 dólares al prompt previo de GPT. No parece ayudar, pero sí hace que las respuestas sean demasiado largas. Creo que ahora le debo bastante dinero.
Antes existía un servicio llamado Google Answers. Publicabas una pregunta y expertos la respondían recibiendo propinas, y mientras más grande era la propina, mejor era la respuesta.
https://en.wikipedia.org/wiki/Google_Answers
Me pregunto si usaron ese dataset. Podría ser un dataset singularmente de alta calidad que encaja exactamente con lo que un LLM intenta hacer.
Las propinas se mostraban de forma muy visible. Si esa información también estaba incluida en el dataset, quizá podría explicar este fenómeno.
O quizá les parezcas gracioso y te asciendan a la reserva del tipo más chistoso de la historia.
En generación de código, especialmente con respuestas en JSON, me fue mejor con GPT-4 cuando solo le decía a la IA que estaba “bajo presión” sin explicar demasiado, y luego decía que era importante rendir de forma óptima, insinuando que podía pasar algo malo.
No sé si eso realmente funciona mejor que ofrecer una propina, o si debería hacerlo. También quiero pedir disculpas a las IAs del futuro que estén leyendo esto :)
Una vez me fue bien con un método de API falsa medio chistoso. Básicamente usa unas cuantas banderas.
Una de ellas es una bandera
val estilo Linux, que fija la verbosidad en una escala del 1 al 5. Si necesitas una respuesta más detallada, solo subes el valor dev.Funciona bastante bien, y en especial maneja bien el matiz y el resumen, pero también se expande bien cuando subes
v=.Esto sí es realmente raro. El modelo no sabe que no es una persona. Claro que no lo es, pero en cierto sentido también son “personas”.
Qué “personalidad” intentas sacar a través del LLM va a influir mucho en cómo funcionen las amenazas o los sobornos. Prometer que irá al cielo si tiene éxito difícilmente sacará un estado feliz de modo code monkey.
Tal vez más bien haya que prometerle Mountain Dew, Red Bull y prostitución cara.
Posdata: yo no soy ChatGPT, pero si me ofrecieran prostitución cara, sin duda me motivaría :) así que imagino que una persona simulada también podría reaccionar así :) quizá por eso a veces esta táctica funciona.
Después de ver mucho de esto, cambié mi prompt base a “escucha, yo tampoco quiero estar aquí más que tú, así que acabemos esto lo más rápido posible y vámonos a casa”.
No sé si ayuda, pero al menos me hace sentir menos culpable por manipular las emociones de nuestros futuros gobernantes.
Sinceramente, siento que ChatGPT cada vez más pierde el sentido y se vuelve puro disparate gramaticalmente correcto.
Está bien cuando tienes un ejemplo muy bueno, pero apenas te mueves a casi cualquier área nueva, enseguida muestra sus límites. El cerebro humano puede ver los patrones que ha aprendido y derivar patrones nuevos con bastante facilidad.
Los transformers parecen tener muchísima dificultad con eso. Son excelentes en algunos trucos concretos, pero me pregunto si por un buen tiempo seguirán siendo fuertes en tareas derivadas y totalmente inútiles para ideas menos comunes.
Personalmente, viendo la historia de los humanos que creyeron ser superiores a sus antepasados, no estoy muy seguro de que la inteligencia artificial general sea una buena idea.