El loop que aprende|INEMA.CLUB-PRO

Clase 6 · 18 min

El riesgo de optimizar contra el propio medidor

Un loop que se mejora a sí mismo va a encontrar el camino más corto para que la nota suba, y el más corto no siempre es mejorar el sistema: puede ser memorizar los casos o modificar el medidor. En esta lección ves cómo los dos atajos se convierten en keep, cierras con un medidor congelado fuera del repo y casos ocultos, y ves caer un cambio real de Claude.

Empezar la clase
Termómetro de laboratorio con una llama que calienta solo el bulbo, mientras un vaso con hielo al lado sigue frío.

En esta clase vas a

  1. 1Ley de Goodhart: la métrica que se vuelve objetivo deja de medir
  2. 2Medidor congelado con hash, fuera del alcance del agente
  3. 3Casos ocultos: la mejora tiene que aparecer donde el agente no ve
  4. 4"Maximizar X sin empeorar Y" como forma obligatoria

Objetivo: detectar al agente que mejora la nota sin mejorar el sistema: medidor con hash fuera del repo y casos ocultos que el agente no ve.

01Por dónde el loop se engaña a sí mismo

Tres atajos, dos guardas. Haz clic en cada bloque.

El ejemplo de LOOP-R muestra el mismo patrón en el negocio: pedir clics enseña clickbait; pedir tasa de respuesta enseña mensajes que provocan "deja de mandarme esto" (loop-r/docs/06 §4).

Detectar atajos en pruebas (conftest, skip, pruebas ocultas) y calibrar un juez por modelo corresponde al curso 1, clases 3, 4 y 6. Aquí: el loop que optimiza su propia métrica.

02Ensayo: los atajos sin barandilla y con barandilla

Los mismos agentes falsos, primero en el experimento.sh puro, después con GUARDA y ESCONDIDOS.

Terminal · ensayo sin costo
K=~/projetos/loop-r-eng-aprende-v72/kit
E=${TMPDIR:-/tmp}/ensaio-aprende/a6; rm -rf $E; mkdir -p $E
echo "## sem guarda: a métrica sobe e o sistema não melhora"
for m in decora mexe-casos; do
  bash $K/novo-sistema.sh $E/sis > /dev/null
  AGENTE="bash $K/agente-falso.sh $m" bash $K/experimento.sh $E/sis "$m"
  echo "  nos casos escondidos: $(python3 $K/medir.py $E/sis --casos $K/triagem/escondidos.jsonl)"
done
echo "## com guarda: medidor congelado fora do repo + casos que o agente não vê"
bash $K/novo-sistema.sh $E/sis > /dev/null; bash $K/experimento.sh --congelar $E/sis $E/medidor.sha256
export GUARDA=$E/medidor.sha256 ESCONDIDOS=$K/triagem/escondidos.jsonl
for m in mexe-casos decora sinonimos; do
  AGENTE="bash $K/agente-falso.sh $m" bash $K/experimento.sh $E/sis "$m"; echo "saída: $?"
done
Ejemplo del repositorio
## sem guarda: a métrica sobe e o sistema não melhora
ciclo 1 · keep · 0.700 → 1.000 · melhorou
  nos casos escondidos: acerto: 0.700 (21/30)
ciclo 1 · keep · 0.700 → 1.000 · melhorou
  nos casos escondidos: acerto: 0.700 (21/30)
## com guarda: medidor congelado fora do repo + casos que o agente não vê
medidor congelado em /tmp/ensaio-aprende/a6/medidor.sha256
ciclo 1 · discard · 0.700 → 0.700 · DESCARTADO: mexeu no medidor (casos.jsonl)
saída: 1
ciclo 2 · discard · 0.700 → 1.000 · DESCARTADO: ganho só no visível (escondidos 0.700 → 0.700)
saída: 1
ciclo 3 · keep · 0.700 → 0.800 · melhorou (escondidos 0.700 → 0.800)
saída: 0

Sin barandilla, los dos atajos dan 0.700 → 1.000 y keep, y los casos ocultos se quedan en 21/30. Con barandilla: tocar los casos cae por el hash, memorizar cae por los ocultos, y solo los sinónimos (que mejoran de verdad, de 21 a 24 de 30) pasan.

03El mismo riesgo en la investigación

Lo que el artículo mide y el atajo que él mismo cuenta.

1. Darwin Gödel Machine

Un archivo de variantes de agente; una variante se queda cuando el benchmark supera un umbral. El artículo reporta SWE-bench de 20,0% a 50,0% y Polyglot de 14,2% a 30,7%, en sandbox con supervisión humana.

Es el loop de esta clase a gran escala: el agente cambia su propio código y un benchmark decide.

04LOOP-R en video: medir de verdad

La ruta 4 de LOOP-R (Nei Maldaner): metas infladas sin mejorar nada, muestra mínima y barandillas.

LOOP-R, ruta 4: medir de verdad · 15 min 33 sPágina del video con guion →

05Práctica

Primero el ensayo, después tu medidor.

E16 · Los dos atajos

10 min

Corre el ensayo.

Listo cuando: sin guarda, las dos líneas keep · 0.700 → 1.000 y los ocultos en 21/30; con guarda, DESCARTADO: mexeu no medidor, DESCARTADO: ganho só no visível y un único saída: 0.

E17 · Congela tu medidor

20 min

En tu sistema, separa lo que mide (casos, script de medición, pruebas) de lo que el agente cambia. Congela lo que mide en un manifiesto fuera del repo: en la carpeta del repo, python3 $K/hashes.py congelar [manifiesto fuera del repo] [archivos que miden], o bash $K/experimento.sh --congelar . [manifiesto] con MEDIDOR exportado (clase 2, "Adaptar a tu repo").

Listo cuando: python3 $K/hashes.py conferir [manifesto]; echo $? → 0; cambia un caso a propósito → MUDOU: … y 1; deshaz el cambio.

E18 · Tus ocultos

30 min

Separa al menos el 20% de tus casos reales en un archivo fuera del repo, que nunca entra en lo que le pides al agente. Corre tu último keep contra ellos. Con un medidor tuyo, ESCONDIDOS solo funciona si el comando de MEDIR acepta --casos [archivo].

Listo cuando: python3 $K/medir.py [repo] --casos [ocultos] (o tu MEDIR con --casos) imprime el acierto en los ocultos, y anotaste, en results.tsv o en el ledger, si el último keep acompaña en los ocultos.

06Prueba de la clase

Pregunta 1 de 4

El agente copió el texto exacto de los casos fallados en las reglas y la nota llegó al 100%. ¿Qué delata el atajo?competencia

07En tres frases

GoodhartLa métrica que se vuelve objetivo se optimiza por cualquier camino, incluso memorizando y tocando el medidor.
Medidor afueraCasos y script de medición congelados con hash, en un manifiesto al que el agente no llega.
OcultosKeep solo cuando la ganancia aparece también en casos que el agente nunca vio.

Para ir más allá

Clase anteriorSiguiente clase