Self-Consistency
iaDéfinition
La Self-Consistency est une technique d'amelioration du raisonnement des LLMs proposee par Wang et al. (Google Brain, 2022) qui consiste a generer plusieurs chaines de raisonnement independantes (Chain-of-Thought) pour la meme question avec une temperature elevee, puis a selectionner la reponse finale par vote majoritaire (majority voting). C'est l'une des techniques les plus simples et les plus efficaces pour ameliorer les performances sur les taches de raisonnement. L'intuition est que pour les problemes de raisonnement ayant une reponse unique et verifiable (maths, logique), plusieurs chemins de raisonnement differents peuvent menera la meme bonne reponse. Si 7 solutions sur 10 arrivent a la reponse 'x = 4', et que 3 arrivent a 'x = 5', la reponse majoritaire 'x = 4' est probablement correcte — meme si certains raisonnements intermediaires contenaient des erreurs qui se sont annulees. La Self-Consistency ameliore significativement les performances sur GSM8K, MATH et ARC-Challenge : avec GPT-4 et 10 echantillons, les gains sont de 2-5 points par rapport au greedy decoding (temperature 0). Les gains sont plus importants pour les problemes difficiles ou le modele hesite. La limite est le cout computationnel : generer N solutions multiplie le cout d'inference par N. Des variantes plus efficaces incluent Universal Self-Consistency (un LLM juge selectionne la meilleure reponse sans verifier la majorite), Adaptive Self-Consistency (ajuster N dynamiquement selon la confiance du modele), et Self-RAG (auto-evaluation plus sophistiquee). La Self-Consistency est particulierement utile quand on n'a pas acces a un verifieur externe (comme des tests unitaires pour le code). Elle constitue une forme rudimentaire de Test-Time Compute : allouer plus de compute a l'inference pour ameliorer la fiabilite des reponses sans retrainer le modele.
Implementation Self-Consistency
from collections import Counter
import openai
def self_consistency(question, n=10, temperature=0.7, model='gpt-4o-mini'):
# Generer N solutions independantes
solutions = []
for _ in range(n):
response = openai.chat.completions.create(
model=model, temperature=temperature,
messages=[{'role': 'user', 'content': f'Resous etape par etape: {question}'}]
)
answer = extract_final_answer(response.choices[0].message.content)
solutions.append(answer)
# Majority voting
most_common = Counter(solutions).most_common(1)[0]
return most_common[0], most_common[1] / n # Reponse + confidenceGains empiriques sur GSM8K
| Modele | Greedy (n=1) | Self-Cons (n=40) |
|---|---|---|
| PaLM 540B | 56.9% | 74.4% |
| GPT-3 175B | 57.1% | 75.2% |
| GPT-4o | 92% | 96% |
Articles liés
Expert en cybersécurité offensive et intelligence artificielle. Pentest, audit et développement IA sur-mesure.
Services
- Audit Infrastructure
- Audit Kubernetes
- Audit Microsoft 365
- Audit Sécurité Réseau
- Analyse de Risques
- Audit Active Directory
- Audit Application Web
- Audit Cloud (AWS/Azure/GCP)
- Audit Messagerie
- Audit API (OWASP Top 10)
- Audit DevSecOps & CI/CD
- Audit Code Source (SAST)
- Audit Postes de Travail
- Audit Sauvegarde & Résilience
- Audit OT/SCADA (IEC 62443)
- Développement IA
- Formations
Ressources
Projets & Outils
© 2026 Ayi NEDJIMI Consultants. Tous droits réservés.
Un projet cybersécurité ?
Expert dispo · Réponse 24h