Repository navigation
feat(lean,#13106): module GradientFlow — évanouissement c^n vs survie (1-c)^n (digestion, forme formalisation) - #14980
Merged
Conversation
…in) vs survie (1-c)^n (pile residuelle) Tranche digestion (forme formalisation, cf pilote CHSH #14858) : troisieme frere du lake learning_theory_lean apres Perceptron (Novikoff) et PacLearning (Valiant). Ancres numeriques du notebook 4.2-ConvNet-Profonde-Residuelles (facteur 0,4/bloc, 20 blocs) : two_fifths_pow_twenty_lt / three_fifths_pow_twenty_gt. Siblings EN (convention #4980). lake build SUCCESS, 0 sorry, axioms standards. Co-Authored-By: Claude-Code <noreply@anthropic.com>
jsboige
commented
Sep 7, 2026
jsboige
left a comment
Owner
Author
There was a problem hiding this comment.
[Hermes] COMMENTED — GradientFlow #13106, lecture complète du head d78b3e3b (contrainte token : COMMENT only)
Diff intégral lu (675 lignes, 8 fichiers). Vérifications indépendantes :
- Maths : les preuves tiennent.
one_sub_le_abs_add(1-|t| ≤ |1+t|) viaabs_add_le (1+t) (-t)+ linarith est la bonne anti-inégalité triangulaire ; les inductionsplainStack_deriv_bound/residualStack_deriv_boundportent la valeur dérivée parHasDerivAt(récurrence syntaxique propre) et les chaînagescalcsont corrects. Ancres vérifiées numériquement : (2/5)^20 ≈ 1,1e-8 < 1e-7 ✓ ; 3/10^5 = 3e-5 < (3/5)^20 ≈ 3,66e-5 ✓. - 0-sorry confirmé : les 9 matches « sorry » du diff sont tous de la prose (en-têtes « 0-sorry », tableau README) — aucun
sorryde preuve. - CI : Lean CI (learning_theory_lean) vert 4m34s, i18n sibling drift vert (3 paires FR/EN byte-identical côté preuves — vérifié au diff visuel), CodeQL/Gitleaks verts, 0 secret.
- README : correction du drift toolchain v4.31.0-rc1 → v4.32.1 est un bonus légitime au passage, cohérent avec #11334.
Seule réserve (mineure, non bloquante) : la docstring FR de Residual.lean cite « He et al. 2015 » dans l'en-tête mais « 2016 » dans la docstring de residualBlock — arXiv:1512.03385 est bien 2015, la seconde mention est une coquille cosmétique.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Grain: DEEP/lean — lane myia-po-2024:CoursIA — prev: MED/notebook-dotnet #14971
Summary
Tranche « forme formalisation » de l'EPIC digestion #13106 (cf pilote CHSH #14858) : nouveau module
GradientFlowdans le lakelearning_theory_lean(série ML), troisième frère aprèsPerceptron(Novikoff) etPacLearning(Valiant).Le contenu digéré est notre propre corpus : le notebook
4.2-ConvNet-Profonde-Residuelles.ipynb(série DataScienceWithAgents) mesure au §3 le facteur ≈ 0,4/bloc de contraction du gradient (0,4^20 ≈ 1e-8) et au §6 la réparation par blocs pré-normés. La tranche formalise la moitié raccourci-identité de cette mécanique :GradientFlow/Plain.lean) :plainStack fs n= composition des n blocs. Si|f'_k| ≤ cen chaque point →|deriv (plainStack fs n) x| ≤ c ^ n(abs_deriv_plainStack_le, lemme centralplainStack_deriv_boundpar induction), et pourc < 1la borne tend vers 0 (plainStack_gradient_vanishes). Ancre numérique du cours :two_fifths_pow_twenty_lt((2/5)^20 < 1/10^7, parnorm_num).GradientFlow/Residual.lean) : bloch ↦ h + f h(He et al. 2015). Pourc ≤ 1→(1-c)^n ≤ |deriv (residualStack fs n) x|(abs_deriv_residualStack_ge), via l'anti-inégalité triangulaire1 - |t| ≤ |1+t|. Ancre jumelle :three_fifths_pow_twenty_gt(3/10^5 < (3/5)^20) — à contraction de branche égalec = 0,4, trois ordres de grandeur d'écart à profondeur 20.La grille de digestion 10 points (énoncé exact, provenance, nouveauté réelle, carte de dépendances, trivial condensé vs nouveau développé, friction, chemin de découverte, limites, raccord corpus, transmission) est déroulée dans l'en-tête de
GradientFlow.lean(FR) etGradientFlow_en.lean(EN).Limites assumées (grille point 8) : modèle jouet 1-D sur ℝ — pas de Jacobiennes, pas de rayon spectral, pas de pré-norme/LayerNorm. La formalisation capture la survie par raccourci identité, pas la réparation par normalisation.
Validation
lake build GradientFlow: SUCCESS (local, WSL natif, Mathlib v4.32.1 via cache — 8660 jobs, 0 erreur) ; la CILean CI (learning_theory_lean)re-vérifie. Le root aggregator FR (GradientFlow.lean, hors globs.submodulescommePerceptron/PacLearning) vérifié séparément :lake env lean GradientFlow.leanexit 0.#print axiomssur les 8 théorèmes FR + 2 miroirs EN : tous[propext, Classical.choice, Quot.sound]uniquement — aucunsorryAx, aucunnative_decide.python scripts/lean/count_code_sorry.py --json—learning_theory_leandistinct_code_sorry0 avant (main) / 0 après (43 fichiers = 37 + 6 nouveaux, tous 0-sorry ; le naive 26 est de la prose seule, dont les mentions « 0-sorry » des en-têtes nouveaux — le comptage code-only est inchangé).lean-build.yml(réutilisé parlean-learning-theory.yml) ne porte pas de jobproof-integrity/LeanVerifier; le gate réel de ce lake estsorry-baseline: 0, sorry-filter-mode: real. Substitut local :#print axiomsci-dessus.GradientFlow_en, imports croisés_en, convention i18n(lean): harmoniser les fichiers .lean en francais + traduction anglaise — inventaire, convention, PR pilote #4980) ;check_i18n_siblings.py --all: 3 nouvelles paires OK byte-identical, 0 drift, 0 orphan cluster-wide..lean+ lakefile + README), un seul sujet (module GradientFlow).See #13106