Xiaoqiang Lin*, Zhaoxuan Wu*, Zhongxiang Dai, Wenyang Hu, Yao Shu, See-Kiong Ng, Patrick Jaillet, Bryan Kian Hsiang Low
Página de inicio del proyecto | Arxiv | Papel
Este es el código para el documento: use su instinto: optimización de instrucciones utilizando bandidos neurales junto con transformadores. Proporcionamos todos los códigos para nuestros experimentos que incluyen:
Nuestro código se basa en el código de APE e InstructZero.
Los modelos de idiomas grandes (LLM) han mostrado notables capacidades de seguimiento de instrucciones y han logrado actuaciones impresionantes en diversas aplicaciones. Sin embargo, las actuaciones de los LLM dependen en gran medida de las instrucciones que se les dan, que generalmente se ajustan manualmente con esfuerzos humanos sustanciales. El trabajo reciente ha utilizado el algoritmo de optimización bayesiana (BO) de consulta para optimizar automáticamente las instrucciones dadas a Black-Box LLMS. Sin embargo, Bo generalmente se queda corto cuando se optimiza las funciones objetivas altamente sofisticadas (por ejemplo, de alta dimensión), como las funciones que mapean una instrucción para el rendimiento de un LLM. Esto se debe principalmente al poder expresivo limitado del modelo de proceso gaussiano (GP) que utiliza Bo como sustituto para modelar la función objetivo. Mientras tanto, se ha demostrado repetidamente que las redes neuronales (NN), especialmente los transformadores previamente capacitados, poseen un fuerte poder expresivo y pueden modelar funciones altamente complejas. Entonces, adoptamos un algoritmo de bandido neural que reemplaza al GP en BO por un sustituto de NN para optimizar las instrucciones para Black-Box LLMS. Más importante aún, el algoritmo de bandidos neuronales nos permite acoplar naturalmente el sustituto de NN con la representación oculta aprendida por un transformador previamente capacitado (es decir, un LLM de código abierto), que aumenta significativamente su rendimiento. Estos nos motivan a proponer nuestra optimización de instrucciones utilizando bandidos neurales junto con el algoritmo de transformadores (instinto). Realizamos la optimización de la instrucción para ChatGPT y utilizamos experimentos extensos para mostrar que nuestro instinto supera constantemente los métodos existentes en diferentes tareas, como en varias tareas de inducción de instrucciones y la tarea de mejorar la instrucción de la cadena de pensamiento de cero disparos.
Puede descargar los datos para la inducción intrínseca del repositorio de GitHub de Instructzero. Puede descargar el conjunto de datos de Samsum desde el sitio web de Huggingface. Puede descargar el conjunto de datos para GSM8K, Aquarat y Svamp desde el repositorio para APE.
Ponemos el cuaderno de preparación de datos en COT/experiments/data/instruction_induction/pre_aqua.ipynb , COT/experiments/data/instruction_induction/pre_gsm8k.ipynb e Induction/experiments/data/nlptasks/pre_nlp_data.ipynb .
Para ejecutar nuestro código, debe instalar el entorno utilizando Conda: conda env create -f environment.yml
Proporcionamos scripts bash para ejecutar nuestros experimentos para la inducción de instrucciones en Induction/experiments/run_neural_bandits.sh . Para ejecutarlo correctamente, debe ejecutar lo siguiente en la terminal:
cd Induction
bash experiments/run_neural_bandits.sh
Del mismo modo, para ejecutar nuestro código para mejorar la instrucción de la cadena de pensamiento, debe ejecutar el script COT/experiments/run_cot_bandits.sh como el siguiente:
cd COT
bash experiments/run_cot_bandits.sh
Tenga en cuenta que antes de ejecutar el script Bash anterior, debe especificar la tecla OpenAI para llamar a la API gpt-turbo-3.5-0301 . Para hacerlo, cambie lo siguiente en los dos scripts bash:
export export OPENAI_API_KEY=YOUR_KEY
@inproceedings{lin2024use,
title={Use Your {INSTINCT}: INSTruction optimization for LLMs usIng Neural bandits Coupled with Transformers},
author={Xiaoqiang Lin and Zhaoxuan Wu and Zhongxiang Dai and Wenyang Hu and Yao Shu and See-Kiong Ng and Patrick Jaillet and Bryan Kian Hsiang Low},
year={2024},
booktitle={Proc. ICML}
}