Last updated on August 7, 2024
DiVeRSe ("Diverse Verifier on Reasoning Steps") es un método que mejora la confiabilidad de las respuestas de tres maneras. Lo hace mediante el uso de
DiVeRSe utiliza 5 prompts diferentes para una entrada dada. Para construir cada prompt, se toman al azar algunos ejemplos del conjunto de entrenamiento. Aquí hay un ejemplo de un prompt de few-shot (k=2), con ejemplos tomados del conjunto de datos GSM8K. En la práctica, DiVeRSe utiliza 5 ejemplos en los prompts para este conjunto de datos.
Q: Natalia vendió clips a 48 de sus amigos en abril, y luego vendió la mitad de esa cantidad en mayo. ¿Cuántos clips vendió Natalia en total en abril y mayo??
A: Natalia vendió 48/2 = 24 clips en mayo.
Natalia vendió 48+24 = 72 clips en total en abril y mayo.
#### 72
Q: Weng gana $12 por hora cuidando niños. Ayer, solo cuidó a los niños durante 50 minutos. ¿Cuánto ganó?
A: Weng gana 12/60 = $0.2 por minuto.
Trabajando 50 minutos, ella ganó 0.2 x 50 = $10.
#### 10
Q: P: Betty está ahorrando dinero para una nueva billetera que cuesta $100. Betty tiene solo la mitad del dinero que necesita. Sus padres decidieron darle $15 para ese propósito, y sus abuelos el doble de lo que dieron sus padres. ¿Cuánto más necesita Betty para comprar la billetera?
A:
Después de generar 5 prompts diferentes como el anterior, DiVeRSe muestrea 20 caminos de razonamiento diferentes para cada uno (temperatura = 0.5). Aquí hay algunos completados de ejemplo del prompt anterior. Tenga en cuenta que las respuestas no siempre son correctas.
Betty tiene 0.5*100 = 65.Luego recibe 2*15 = 10 más.10
R: Betty tiene 0.5*100 = 650.Luego recibe 2*15 = 1000 más.1000
At this point, DiVeRSe has generated 100 different completions.
En este punto, DiVeRSe ha generado 100 completados diferentes.
Ahora, podríamos simplemente tomar la respuesta mayoritaria, como hace Self-Consistency.
Sin embargo, DiVeRSe propone un método mucho más complicado, que ellos llaman un verificador de votación.
En el momento de la prueba, el uso del verificador de votación es un proceso de dos pasos. Primero, el verificador (una red neuronal) asigna una puntuación de 0 a 1 a cada completado basado en qué tan probable es que sea correcto. Luego, el componente de 'votación' suma todas las puntuaciones de diferentes respuestas y arroja la respuesta final.
Aquí hay un pequeño ejemplo. Digamos que tenemos los siguientes completados para la consigna ¿Cuánto es dos más dos?
:
4
dos + 2 = 5
Creo que 2+2 = 6
dos más dos = 4
Es 5
El verificador leerá cada completado y le asignará una puntuación. Por ejemplo, podría asignar las puntuaciones: 0,9; 0,1; 0,2; 0,8; 0,3 respectivamente. Luego, el componente de votación sumará las puntuaciones para cada respuesta.
puntuación(4) = 0,9 + 0,8 = 1,7
puntuación(5) = 0,1 + 0,3 = 0,4
puntuación(6) = 0,2
La respuesta final es 4, ya que tiene la puntuación más alta.
Pero, ¿cómo se entrena el verificador?
El verificador se entrena con una función de pérdida ligeramente compleja, que no cubriré aquí. Lea la sección 3.3 del artículo para obtener más detalles.
La principal conclusión aquí es utilizar múltiples consignas para generar completados diversos. En la práctica, la votación mayoritaria probablemente funcionará bien en comparación con el verificador de votación.
Li, Y., Lin, Z., Zhang, S., Fu, Q., Chen, B., Lou, J.-G., & Chen, W. (2022). On the Advance of Making Language Models Better Reasoners. ↩ ↩2
Cobbe, K., Kosaraju, V., Bavarian, M., Chen, M., Jun, H., Kaiser, L., Plappert, M., Tworek, J., Hilton, J., Nakano, R., Hesse, C., & Schulman, J. (2021). Training Verifiers to Solve Math Word Problems. ↩
Mitchell, E., Noh, J. J., Li, S., Armstrong, W. S., Agarwal, A., Liu, P., Finn, C., & Manning, C. D. (2022). Enhancing Self-Consistency and Performance of Pre-Trained Language Models through Natural Language Inference. ↩