0Pricing
AI Prompt Engineering · Lección

Muestreo de autoconsistencia

Vote entre varias rutas de razonamiento.

Muestreo de autoconsistencia es una lección gratuita de AI Prompt Engineering en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de AI Prompt Engineering, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de AI Prompt Engineering incluye 4 lecciones en total.

Una sola cadena es frágil

Una sola cadena de razonamiento puede desviarse al principio y no recuperarse nunca. La self-consistency (Wang et al., 2022) aborda este problema mediante el muestreo de muchas rutas de razonamiento independientes y la agregación de sus respuestas finales, normalmente por votación mayoritaria.

La intuición es la siguiente: el razonamiento correcto converge en la misma respuesta a través de rutas diversas, mientras que los errores se dispersan. La agregación amplifica la señal coherente.

def self_consistency(prompt, n=20, temperature=0.7):
    answers = []
    for _ in range(n):
        chain = llm(prompt, temperature=temperature)
        answers.append(extract_answer(chain))
    return majority_vote(answers)

Por qué funciona marginalizar sobre las rutas

La self-consistency aproxima la marginalización sobre las rutas de razonamiento: en lugar de confiar en una única derivación latente, estima la respuesta final más probable integrando muchas derivaciones.

Se trata de una estimación de Monte Carlo de la distribución de respuestas. La moda de esa distribución suele ser más fiable que cualquier ruta muestreada individual, especialmente cuando el espacio de respuestas es pequeño y discreto.

from collections import Counter

def majority_vote(answers):
    norm = [normalize_answer(a) for a in answers]
    counts = Counter(norm)
    answer, votes = counts.most_common(1)[0]
    confidence = votes / len(norm)
    return answer, confidence

Diversidad mediante la temperatura

La self-consistency necesita rutas diversas. El muestreo codicioso o con una temperatura cercana a cero produce cadenas casi idénticas, lo que anula el método. Utilice una temperatura moderada (a menudo entre 0.5 y 0.8) y, posiblemente, muestreo top-p para dispersar las rutas.

Una temperatura demasiado alta degrada cada cadena individual; ajuste la temperatura para maximizar la precisión del conjunto, no la calidad de una sola cadena.

def tune_temperature(prompt, val_set, temps=(0.4, 0.6, 0.8, 1.0)):
    best = max(
        temps,
        key=lambda t: ensemble_accuracy(prompt, val_set, temp=t, n=20)
    )
    return best

La normalización de respuestas es fundamental

Las votaciones solo cuentan si las respuestas equivalentes se reconocen como iguales. Normalice antes de contar: elimine las unidades, convierta los números a una forma canónica, pase el texto a minúsculas, analice las fracciones y los porcentajes y aplique la equivalencia específica de la tarea.

Una normalización deficiente divide la mayoría verdadera entre variantes superficiales y permite que una respuesta minoritaria gane la votación.

def normalize_answer(a):
    a = a.strip().lower().rstrip('.')
    a = a.replace(',', '').replace('$', '').replace('%', '')
    try:
        return str(round(float(a), 6))   # numeric canonical form
    except ValueError:
        return a

¿Cuántas muestras?

La precisión aumenta con el número de muestras n, pero con rendimientos decrecientes, y suele estabilizarse entre 10 y 40, según la dificultad de la tarea. Cada muestra multiplica linealmente el coste y la latencia.

Pruebe distintos valores de n en un conjunto de validación y elija el punto de inflexión de la curva, donde las muestras adicionales ya no justifican su coste.

def sweep_n(prompt, val, ns=(1,3,5,10,20,40)):
    return {n: ensemble_accuracy(prompt, val, n=n) for n in ns}
# Choose n at the accuracy/cost knee, not the maximum

Detención temprana adaptativa

Ahorre cómputo con el muestreo adaptativo: deje de generar rutas cuando la votación sea decisiva. Si después de 5 muestras una respuesta tiene una ventaja clara, es poco probable que las muestras adicionales cambien la ganadora.

Así concentra el cómputo en los elementos realmente difíciles y disputados, y responde a los fáciles a bajo coste.

def adaptive_sc(prompt, max_n=40, margin=0.6, min_n=5):
    answers = []
    for i in range(max_n):
        answers.append(extract_answer(llm(prompt, temperature=0.7)))
        if i + 1 >= min_n:
            ans, conf = majority_vote(answers)
            if conf >= margin:
                return ans, conf, i + 1
    return majority_vote(answers)

Votación ponderada y asistida por verificadores

La mayoría simple trata todas las rutas por igual. Puede ponderar las votaciones según la probabilidad asignada por el modelo a cada ruta, la puntuación de un verificador entrenado o la autoevaluación de la validez de cada cadena.

La self-consistency ponderada por un verificador suele superar a la votación sin ponderar, ya que reduce la clasificación de errores frecuentes pero incorrectos y expresados con confianza.

def weighted_vote(chains):
    scores = {}
    for c in chains:
        a = normalize_answer(extract_answer(c))
        scores[a] = scores.get(a, 0.0) + verifier_score(c)
    return max(scores, key=scores.get)

Confianza a partir del acuerdo

El margen de votación es una señal de confianza útil. Una respuesta unánime es mucho más fiable que una división de 6 contra 5. Haga llegar esta señal a la lógica posterior: derive los elementos con poco acuerdo a un proceso de escalado, revisión humana o a un modelo más potente.

Esto convierte la self-consistency tanto en un potenciador de la precisión como en un mecanismo de calibración.

def route(prompt):
    ans, conf = adaptive_sc(prompt)[:2]
    if conf < 0.5:
        return escalate_to_stronger_model(prompt)
    return ans

Limitaciones: tareas continuas y abiertas

La votación mayoritaria presupone un espacio de respuestas discreto y comparable. No se aplica directamente a la generación libre, los textos largos ni las salidas continuas, en las que no hay dos muestras idénticas.

Para esas tareas, agregue de otra forma: agrupe las salidas semánticamente similares, vote sobre los campos estructurados extraídos o utilice un modelo evaluador para seleccionar la mejor muestra en lugar de contar coincidencias exactas.

def semantic_consistency(samples):
    clusters = cluster_by_embedding(samples)
    biggest = max(clusters, key=len)        # largest agreement cluster
    return representative(biggest)            # medoid of the cluster

Despliegue consciente de los costes

La self-consistency es una de las técnicas de prompting más costosas: el coste crece con n. Resérvela para elementos difíciles o de alto riesgo, combínela con la detención adaptativa y considere una política por niveles en la que una sola cadena gestione el tráfico sencillo.

Compare siempre su precisión por unidad monetaria con la de una única llamada a un modelo más potente, que podría ser más barata para obtener la misma mejora.

def tiered(prompt, q):
    if easy(q):
        return extract_answer(llm(prompt, temperature=0))
    return adaptive_sc(prompt, max_n=20)[0]   # SC only when needed

Self-consistency de extremo a extremo

Una canalización completa: ajuste la temperatura y n, muestree cadenas diversas, normalice las respuestas rigurosamente, vote (opcionalmente con ponderación de un verificador), utilice el margen como señal de confianza, deténgase pronto cuando la decisión sea clara y derive los elementos con poco acuerdo.

El resultado es un sistema de razonamiento más preciso y con mejor autocalibración que cualquier cadena individual.

def solve(prompt):
    chains = sample_until_decisive(prompt, max_n=20, temp=0.7)
    ans, conf = weighted_majority(chains)
    if conf < THRESH:
        return escalate(prompt)
    return {'answer': ans, 'confidence': conf, 'paths': len(chains)}

Comprobación rápida

Diagnostique una configuración de self-consistency que rinde por debajo de lo esperado.

Recapitulación

Conclusiones clave:

  • La self-consistency muestrea muchas cadenas diversas y vota entre ellas, aproximando la marginalización sobre las rutas de razonamiento.
  • La diversidad (con una temperatura moderada) y una normalización rigurosa de las respuestas son requisitos previos para que funcione.
  • La precisión aumenta con n, pero se estabiliza; utilice la detención temprana adaptativa para controlar los costes.
  • Pondere las votaciones con un verificador y utilice el margen de votación como señal de confianza calibrada.
  • Necesita un espacio de respuestas discreto; para tareas abiertas, agrupe semánticamente las respuestas o utilice un evaluador.

Preguntas frecuentes

¿La lección «Muestreo de autoconsistencia» es gratis?

Sí — el texto completo de «Muestreo de autoconsistencia» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de AI Prompt Engineering, actualiza a CoddyKit PRO. El curso de AI Prompt Engineering incluye 4 lecciones en total.

¿Qué aprenderé en «Muestreo de autoconsistencia»?

Vote entre varias rutas de razonamiento. Practicas AI Prompt Engineering con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar AI Prompt Engineering?

No se requiere experiencia previa. AI Prompt Engineering en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Muestreo de autoconsistencia»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de AI Prompt Engineering?

Sí. Cada lección de AI Prompt Engineering incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Prompting de cadena de pensamiento
  2. Muestreo de autoconsistencia
  3. Exploración de árboles de pensamiento
  4. Cuándo ayudan los prompts de razonamiento
← Volver a AI Prompt Engineering