Zencoder ha contratado a un grupo de veteranos de los motores de búsqueda para que le ayuden a crear una herramienta que pueda analizar grandes bases de código y descubrir qué es relevante y qué no. Este contexto detallado cut back las alucinaciones y mejora la calidad del código que los grandes modelos de lenguaje pueden producir, cube Filev: “Lo llamamos repo grokking”.
Cosine también cree que el contexto es clave. Pero se basa en ese contexto para crear un nuevo tipo de conjunto de datos. La compañía ha pedido a docenas de programadores que registren lo que estaban haciendo mientras trabajaban en cientos de tareas de programación diferentes. “Les pedimos que escribieran todo”, cube Pullen: “¿Por qué abriste ese archivo? ¿Por qué te desplazaste hasta la mitad? ¿Por qué lo cerraste? También pidieron a los programadores que anotaran piezas de código terminadas, marcando secciones que habrían requerido conocimiento de otras piezas de código o documentación específica para escribir.
Luego, Cosine toma toda esa información y genera un gran conjunto de datos sintéticos que mapea los pasos típicos que siguen los codificadores y las fuentes de información a las que recurren hasta piezas de código terminadas. Utilizan este conjunto de datos para entrenar un modelo para descubrir qué ruta de navegación podría necesitar seguir para producir un programa en specific y luego cómo seguirlo.
Poolside, con sede en San Francisco, también está creando un conjunto de datos sintéticos que captura el proceso de codificación, pero se apoya más en una técnica llamada RLCE: aprendizaje por refuerzo a partir de la ejecución de código. (El coseno también usa esto, pero en menor grado).
RLCE es análoga a la técnica utilizada para convertir chatbots como ChatGPT en hábiles conversadores, conocida como RLHF.Aprendizaje reforzado a partir de la retroalimentación humana.. Con RLHF, se entrena un modelo para producir texto que se parezca más al tipo que los evaluadores humanos dicen preferir. Con RLCE, se entrena un modelo para producir código que se parece más al tipo que hace lo que se supone que debe hacer cuando se ejecuta (o ejecuta).
Jugando con el sistema
Cosine y Poolside dicen que están inspirados en el enfoque que adoptó DeepMind con su modelo de juego AlphaZero. A AlphaZero se le dieron los pasos que podía seguir (los movimientos en un juego) y luego se le dejó jugar contra sí mismo una y otra vez, descubriendo mediante prueba y error qué secuencia de movimientos eran movimientos ganadores y cuáles no.
“Le permitieron explorar movimientos en cada giro posible, simular tantos juegos como fuera posible, lo que llevó a vencer a Lee Sedol”, cube Pengming Wang, científico fundador de Poolside, refiriéndose al gran maestro coreano de Go que AlphaZero venció en 2016. Antes de Poolside, Wang trabajó en Google DeepMind en aplicaciones de AlphaZero más allá de los juegos de mesa, incluidos Búsqueda Divertidauna versión entrenada para resolver problemas matemáticos avanzados.
Cuando se aplica ese enfoque AlphaZero a la codificación, los pasos involucrados en la producción de un fragmento de código (las migas de pan) se convierten en los movimientos disponibles en un juego, y un programa correcto se convierte en ganar ese juego. Si se deja actuar por sí solo, un modelo puede mejorar mucho más rápido que un ser humano. “Un codificador humano intenta y falla un error a la vez”, cube Kant. “Los modelos pueden probar cosas 100 veces a la vez”.