Contrôleur KTW
Le contrôleur Kelly–Taguchi–Weibull : allocation, perte, dérive. Trois primitives algorithmiques combinées pour piloter à la fois des procédés industriels et des hyperparamètres d'agent.
Trois composants, une seule logique de décision
Le contrôleur KTW combine trois primitives algorithmiques bien établies en statistiques et en théorie de l’information :
| Composant | Rôle | Question à laquelle il répond |
|---|---|---|
| Kelly | Allocation | Combien dois-je intervenir ? |
| Taguchi | Coût | Combien l’écart à la cible me coûte-t-il ? |
| Weibull | Dérive | L’écart observé est-il du bruit ou une vraie dérive ? |
Pris séparément, ces trois outils sont connus dans leur discipline d’origine (finance, qualité industrielle, fiabilité). Leur composition est l’objet des deux brevets INPI déposés par Paul Obara en janvier 2026.
Kelly : combien intervenir
La formule de Kelly (1956) calcule la fraction optimale d’un capital à miser sur un événement de probabilité connue, sachant le rapport gain / perte. Transposée au pilotage industriel et agentique, elle calcule la fraction optimale d’intervention à appliquer quand on a une probabilité estimée que l’écart soit une vraie dérive.
Formellement :
f* = (b · p − q) / b
Où b est le ratio gain/perte, p la probabilité de succès, q = 1 − p.
Quand p est faible (signal incertain), f* tend vers 0 — on intervient
peu. Quand p est élevé (signal fort), f* croît vite — on intervient
fermement. Le comportement est asymétrique : on récompense la
certitude, on se réserve l’incertitude.
Taguchi : quelle perte minimiser
La fonction de perte quadratique de Taguchi (1989) traduit l’écart entre une mesure et sa cible en coût monétaire ou opérationnel. Au lieu d’une fonction binaire (« bon » / « mauvais »), Taguchi pose :
L(y) = k · (y − cible)²
Où k est une constante calibrée empiriquement (coût de retraitement
unitaire / écart de tolérance).
L’intérêt : plus on s’éloigne de la cible, plus la perte croît non-linéairement. Le contrôleur peut donc prioriser : un écart proche de la cible coûte peu, un écart lointain coûte beaucoup.
Weibull : quelle probabilité de dérive
Pour estimer si un écart observé est une dérive réelle ou du bruit de mesure, on ajuste une distribution de Weibull sur les N dernières mesures (N typiquement entre 30 et 100 selon la cadence).
Le paramètre de forme β de la distribution de Weibull caractérise le
régime :
| β | Régime | Interprétation |
|---|---|---|
β < 1 | Mortalité infantile | Défauts initiaux qui se résorbent |
β ≈ 1 | Exponentielle | Bruit aléatoire stationnaire |
β > 1 | Vieillissement | Dérive en cours, queue lourde |
Une valeur β > 1.5 avec un échantillon suffisant signe une dérive
réelle. Le contrôleur en extrait une probabilité bayésienne P(dérive)
qui alimente Kelly.
La composition
À chaque mesure, le contrôleur produit une décision :
P = P_Weibull(dérive | échantillon récent)
L = k · (y − cible)²
f = kelly_fraction(P, ratio_gain_perte)
δ = f · L · sign(y − cible)
correction = δ appliquée à la consigne machine
Trois zones de décision émergent :
- Bruit (
Pfaible) — ne rien faire. - Doute (
Pintermédiaire) — correction douce, attendre confirmation sur les prochaines mesures. - Dérive (
Pélevée etLfort) — correction ferme et immédiate.
flowchart LR
M["Mesure y(t)"] --> W["Weibull<br/>P(dérive)"]
M --> T["Taguchi<br/>L = k·(y-cible)²"]
W --> K["Kelly<br/>f(P)"]
K --> D{"Décision"}
T --> D
D -->|"P faible"| N["Bruit<br/>ne rien faire"]
D -->|"P intermédiaire"| S["Doute<br/>correction douce"]
D -->|"P élevée + L fort"| F["Dérive<br/>correction ferme"]
classDef input fill:#F5F1E8,color:#2C3E42,stroke:#7DB5A5,stroke-width:2px;
classDef calc fill:#F5F1E8,color:#2C3E42,stroke:#A86640,stroke-width:1.5px;
classDef decide fill:#2C3E42,color:#F5F1E8,stroke:#1A262A,stroke-width:2px;
classDef noop fill:#7DB5A5,color:#F5F1E8,stroke:#5E9384;
classDef soft fill:#E99971,color:#F5F1E8,stroke:#C97A55;
classDef firm fill:#C97A55,color:#F5F1E8,stroke:#A86640;
class M input;
class W,T,K calc;
class D decide;
class N noop;
class S soft;
class F firm;
Ce comportement rend le système antifragile au sens de Taleb : au lieu d’osciller à chaque bruit, il attend d’avoir l’information statistique nécessaire avant d’intervenir, et apprend de chaque dérive observée.
Les deux brevets KTW
Deux dépôts INPI ont été enregistrés le 8 janvier 2026 par Paul Obara :
KTW B1 — Pilotage en boucle ouverte modulée
Le brevet B1 décrit une architecture open-loop dans laquelle la correction est modulée par Kelly sur la base d’une probabilité Weibull calculée hors ligne. Le procédé reçoit la correction et l’applique sans boucle de retour automatique.
Cas d’usage typique : batch processing où chaque lot est calibré à partir des dérives observées sur les lots précédents, mais où le cycle d’observation ne permet pas une rétroaction continue.
KTW B2 — Pilotage probabiliste en boucle fermée + recadrage
Le brevet B2 va plus loin : la consigne machine elle-même est recadrée dynamiquement en fonction des dérives observées. La probabilité Weibull est mise à jour à chaque mesure, et l’algorithme distingue trois cas :
- Dérive aléatoire — la consigne reste, la correction est instantanée.
- Dérive systématique — la consigne est recadrée (nouveau setpoint).
- Hors-spec — alerte humaine, le procédé n’est plus auto-pilotable.
Le recadrage dynamique est ce qui distingue KTW d’un PID classique : on n’ajuste pas seulement la correction, on ajuste la cible.
Cas d’usage industriels
Remplisseur de bouteilles 75 cl
Un remplisseur de boissons doit dispenser 75.0 cl ± 0.3 cl. Sans contrôleur, la moyenne dérive lentement vers le bas (usure de la valve) et l’opérateur recalibre manuellement chaque shift.
Avec KTW :
- Weibull détecte le passage en régime
β > 1.5à partir de 30 mesures. - Taguchi mesure la perte cumulée du surplus payé sans contrepartie.
- Kelly dose la correction pour ne pas sur-réagir aux mesures isolées.
Effet : dérive corrigée en continu, perte cumulée réduite typiquement de 30 à 60 % sur un trimestre.
Ligne d’emballage carton
Une ligne d’emballage présente des dérives sur le grammage du carton. KTW pilote la consigne de la presse à partir des mesures de grammage sortie. Le recadrage dynamique B2 est particulièrement utile : quand le fournisseur de carton change de lot, la cible doit suivre.
Application à l’orchestration d’agents
Le même contrôleur KTW pilote les hyperparamètres d’un agent dans Nika OS. La métrique observée n’est plus une mesure physique mais une loss score calculée sur les tool calls et les sorties du pod.
Cas d’usage internes :
| Hyperparamètre | Métrique Y | Décision KTW |
|---|---|---|
| Choix du modèle (Opus / Sonnet / Haiku) | Coût × latence × succès | Allocation Kelly entre arms |
| Concurrence sémaphore (1–6 pods) | TTFL p95 + error_rate | Réduction si Weibull β > 1.5 |
| Retry policy | Taux de retry × coût marginal | Kelly fraction sur retry vs. escalade |
| Provider GPU routing | Coût × disponibilité | Allocation entre RunPod / Scaleway / etc. |
RAG k (nombre de chunks) | Recall × latence | Adaptatif par classe de prompt |
Quand la loss d’un pod franchit un seuil :
- Le système ne kill pas le pod immédiatement (équivalent du « ne rien faire » dans la zone bruit).
- Si la loss continue de croître au-delà du seuil intermédiaire, il mute les primitives mutables (température, retry policy, prompts).
- Si la loss reste élevée après mutation, il escalade :
WhatsApp alert → bus JSONL → review request à l'opérateur humain.
KTW dans la matrice de mutation
Nika OS distingue trois tracks d’évolution des primitives. KTW occupe la troisième :
| Track | Cibles | Cadence | Évaluation |
|---|---|---|---|
| GEPA | Skill MD, prompts, doctrines | Continue par tournament LLM-judge | Pareto multi-objectifs |
| Ablation + DOE | Hooks Python, configs MCP, routing logic | Discrète, batchée | Mann-Whitney U + bootstrap CI |
| KTW | Params online (retry, modèle, sémaphore, RAG k) | Per-decision, online | Reward signal temps réel |
KTW est utilisé là où le reward est mesurable à la décision (coût, latence, succès booléen). On n’applique pas KTW à un artefact qui n’a pas de reward signal temps réel — il dégénérerait en random allocation.
Pseudo-code de référence
def ktw_decide(y_t, target, history, k_taguchi, reward_ratio):
# 1. Estimer la probabilité de dérive via Weibull
shape, scale = fit_weibull(history[-50:])
p_drift = bayesian_drift_prob(shape, scale, history)
# 2. Perte Taguchi
loss = k_taguchi * (y_t - target) ** 2
# 3. Fraction Kelly sur l'intervention
p_succes = sigmoid(p_drift) # calibré empiriquement
q = 1 - p_succes
f_kelly = max(0, (reward_ratio * p_succes - q) / reward_ratio)
# 4. Décision composée
direction = sign(y_t - target)
correction = f_kelly * loss * direction
return {
"p_drift": p_drift,
"loss": loss,
"f_kelly": f_kelly,
"correction": correction,
"zone": classify_zone(p_drift, loss),
}
Le détail exact des courbes de calibration et des seuils par classe de procédé fait l’objet des dépôts INPI et n’est pas reproduit ici.
Limites et anti-patterns
Quelques pièges observés :
- Pas de reward signal mesurable — sur un artefact dont l’évaluation est subjective (qualité d’un brouillon de mail), KTW dégénère. Préférer GEPA.
- Données trop rares — l’ajustement Weibull demande typiquement 30+ mesures. En dessous, on utilise un prior bayésien conservateur.
- Reward différé — si le reward arrive 24h après la décision, KTW bloque par latence. Utiliser une heuristique surrogate online + audit asynchrone.
- Multi-arm avec arms corrélés — Kelly suppose des bras indépendants. Sur des modèles très corrélés (Sonnet vs. Haiku du même provider), il faut décorréler via factorisation ou switcher sur du Thompson sampling.
Voir aussi
- Observabilité et contrôleurs — la loss score d’un pod, source de Y pour KTW.
- Doctrines — l’antifragilité et la doctrine algos comme tools expliquent pourquoi KTW est un outil invoqué et non un LLM.
- Code source et ressources — brevets KTW B1 et B2, références académiques (Kelly 1956, Taguchi 1989, Weibull 1951).
- La page principale du Lab BCUB3 décrit les brevets en termes accessibles, sans formule.