Merry Mandarin logo Merry MandarinBlog
Dans les coulisses

Pourquoi Merry Mandarin n'utilise pas SM-2 (et ce qu'est vraiment l'enfer de la facilité)

Pourquoi Merry Mandarin n'utilise pas SM-2 (et ce qu'est vraiment l'enfer de la facilité)

Tu as déjà ressenti ça, même sans en connaître le nom. Un caractère que tu as révisé quarante fois revient encore tous les deux jours. Ton nombre de révisions quotidien continue de grimper alors que tu n’as pas ajouté une seule nouvelle carte depuis des semaines. L’appli affirme que tu es en train d’ « apprendre », mais la pile devant toi ressemble chaque matin un peu moins à du progrès et un peu plus à une dette. Les utilisateurs d’Anki ont un nom pour ça : l’enfer de la facilité (ease hell). Ce n’est pas une métaphore. C’est un mode de défaillance précis, mécanique, intégré à l’algorithme que presque toutes les applis de répétition espacée utilisent depuis les années 1980, et c’est la raison numéro un pour laquelle le moteur de révision de Merry Mandarin n’a jamais été construit dessus.

Ce qu’est vraiment l’enfer de la facilité

Presque toutes les applis de répétition espacée, Anki autrefois en tête, ont historiquement planifié les cartes avec un algorithme appelé SM-2, et SM-2 ne suit qu’un seul chiffre par carte pour décider de sa difficulté : le facteur de facilité (ease factor). Chaque carte démarre avec un facteur de facilité de 2,5, soit 250 %. Tu réponds « Bien », l’intervalle avant ta prochaine révision est multiplié par ce facteur. Tu réponds « À revoir » parce que tu as oublié, le facteur de facilité lui-même est réduit, typiquement de 20 %. Tu réponds « Difficile », il baisse encore de 15 %. Tu réponds « Facile », il ne remonte que de 15 %.

Regarde bien cette asymétrie, et le piège devient évident. Un seul oubli te coûte 20 %. Récupérer ces 20 % demande bien plus qu’une seule bonne révision, parce que 15 % d’un chiffre plus petit, c’est un chiffre plus petit. Oublie une carte trois ou quatre fois, ce qui arrive constamment avec du contenu vraiment difficile, et son facteur de facilité s’effondre vers le plancher que l’ancien planificateur SM-2 d’Anki impose : 1,3, soit 130 %. Une fois une carte clouée à ce plancher, chaque révision réussie suivante ne multiplie son intervalle que par 1,3, si bien que l’intervalle grandit à peine. La carte revient dans quelques jours. Tu la réussis. Elle revient quelques jours plus tard. Tu la réussis encore. Elle ne s’en sort jamais, parce que les mathématiques ne le permettent structurellement pas.

  1. Tu oublies une carte

    Le facteur de facilité chute de 20 %. Un seul oubli coûte bien plus qu'un seul succès ne rapporte.

  2. L'intervalle rétrécit

    Nouvel intervalle = ancien intervalle fois le facteur de facilité, donc un facteur plus bas signifie que la carte revient plus tôt que nécessaire.

  3. Elle revient trop tôt

    La carte réapparaît avant que le souvenir ne se soit vraiment consolidé, donc le risque de l'oublier à nouveau est plus élevé qu'il ne devrait.

  4. Elle touche le plancher

    Après encore quelques oublis, le facteur de facilité plafonne à 1,3, le minimum autorisé par l'ancien planificateur SM-2 d'Anki. En repartir demande beaucoup de révisions parfaites d'affilée.

  5. Elle tourne en boucle

    Clouée au plancher, l'intervalle de la carte grandit à peine entre les révisions. Elle continue de revenir tous les quelques jours indéfiniment : l'enfer de la facilité.

Multiplie ça par un paquet de plusieurs milliers de cartes, ce qui s’accumule dès la première année pour un apprenant de langue, et même une fraction modeste de cartes coincées au plancher suffit à faire gonfler une liste de révisions quotidienne jusqu’à l’intenable. La solution de contournement d’Anki s’appelle les « leeches » (sangsues) : après huit oublis par défaut, une carte est marquée puis suspendue, pour ne plus jamais apparaître du tout. Ce n’est pas une solution. C’est un aveu que l’algorithme ne peut pas sauver la carte, et Anki l’abandonne à la place.

L'enfer de la facilité n'est pas un bug. C'est exactement ce qu'une formule construite en 1987 est censée faire quand elle t'a déjà vu échouer six fois sur une carte.

Merry Mandarin

Un algorithme qui n’a jamais eu tort, juste jamais été personnel

Rien de tout ça n’est vraiment la faute de SM-2, au sens d’une erreur. Piotr Wozniak l’a construit en 1987, étudiant en biochimie à l’Université polytechnique de Poznań, submergé par le vocabulaire et la terminologie scientifique, et il s’est mis à suivre à la main ses propres schémas d’oubli pour y remédier. Il a publié la formule ouvertement dans son mémoire de master de 1990, « Optimization of Learning », et c’est exactement cette ouverture qui explique sa diffusion partout : n’importe quel développeur de cartes mémoire pouvait l’implémenter sans payer personne ni rien inventer lui-même. Pendant plus de trois décennies, cette formule unique et fixe, avec les mêmes pénalités de facteur de facilité appliquées identiquement à chaque carte et chaque apprenant, était tout simplement l’eau dans laquelle nageait toute appli de répétition espacée.

Le problème qu’elle n’a jamais été conçue pour résoudre, c’est la personnalisation. SM-2 n’a aucun moyen de savoir que toi, spécifiquement, es un apprenant un peu plus lent mais très régulier, plutôt que quelqu’un qui ne connaît vraiment pas la matière. Il n’a aucun moyen de savoir qu’un caractère à deux traits et un autre à dix-huit traits ne sont pas aussi difficiles à mémoriser l’un que l’autre, ou qu’une révision que tu réussis avec neuf jours de retard est une vraie preuve sur ta mémoire, une preuve que l’algorithme jette purement et simplement. Il applique la même pénalité statique, quoi qu’il arrive.

Ce que FSRS modélise vraiment différemment

FSRS, le Free Spaced Repetition Scheduler, existe parce que quelqu’un a enfin traité la mémoire comme quelque chose qui mérite d’être modélisé statistiquement plutôt que poussé par petits pourcentages fixes. La filiation passe par une entreprise appelée MaiMemo, une plateforme chinoise d’apprentissage du vocabulaire, dont le modèle de planification interne s’est révélé être une variante d’un cadre académique appelé DSR : difficulty, stability, retrievability (difficulté, stabilité, récupérabilité). Jarrett Ye, un chercheur de premier cycle travaillant avec les données de MaiMemo, a compris qu’un tel modèle n’avait pas du tout besoin d’être ajusté à la main. Ses paramètres pouvaient être calés directement sur de vrais résultats de révision par descente de gradient, la même technique d’optimisation derrière la plupart des apprentissages automatiques modernes. Il a publié les résultats à ACM SIGKDD en août 2022, l’une des conférences de recherche les plus compétitives en exploration de données, et le résultat open source est devenu FSRS.

Les trois variables qu’il suit par carte sont vraiment différentes d’un simple facteur de facilité. La difficulté est une note de 1 à 10 sur le degré de difficulté intrinsèque d’une carte. La stabilité se mesure en jours réels : plus précisément, le nombre de jours avant que ta probabilité de rappel pour cette carte ne tombe, selon les prédictions, à 90 %. La récupérabilité, c’est cette probabilité de rappel elle-même, un vrai nombre entre 0 et 1, calculé à tout moment à l’aide d’une courbe d’oubli calée sur tes propres données plutôt que sur une forme supposée. Quand tu révises une carte largement en retard et que tu la réussis quand même, FSRS traite ça comme une preuve solide et augmente la stabilité en conséquence, mais cette augmentation converge au lieu de s’emballer, si bien qu’une seule révision en retard chanceuse ne peut pas faire dériver l’intervalle d’une carte n’importe comment dans un sens ou dans l’autre.

La version largement utilisée aujourd’hui, FSRS-5, a raffiné tout ça encore davantage : elle a ajouté la capacité d’apprendre des révisions du même jour au lieu de les jeter, et a remodelé la courbe d’oubli elle-même, ce qui, ensemble, a fait baisser son erreur de prédiction de rétention d’environ 6,1 % à 5,3 % par rapport à la version précédente. Sous le capot, c’est un vrai modèle statistique à dix-sept paramètres, livré avec des valeurs par défaut pré-entraînées sur des millions de révisions anonymisées, puis réajustées sur ton propre historique de révision à mesure que tu l’utilises. Deux personnes qui étudient le même paquet de vocabulaire chinois finissent avec deux jeux de paramètres différents, parce qu’elles ont, en fait, deux mémoires différentes.

SM-2FSRS-5
Ce qui est suivi par carteUn facteur de facilité (un multiplicateur)Difficulté, stabilité, récupérabilité (un vrai modèle de mémoire)
Personnalisé pour toiNon, une formule pour tout le mondeOui, paramètres calés sur ton propre historique de révision
Récupération après un échecPénalité asymétrique, peut toucher un plancher et rester coincéeRecalculée à partir de tes vraies données, pas de plancher fixe
Publié1987 (Wozniak, SuperMemo)2022 (Ye et al., ACM SIGKDD)
Adopté par AnkiA été le standard d'Anki pendant des décennies, de l'ère SuperMemo des années 1980 jusqu'en 2023Intégré depuis la version 23.10, le 1er novembre 2023, aujourd'hui le planificateur recommandé par Anki lui-même

L’écart mesuré

Ce n’est pas une amélioration théorique marginale. Le plus grand comparatif indépendant des deux algorithmes, mené par le groupe de recherche open-spaced-repetition sur des dizaines de milliers de vraies collections Anki et environ 350 millions de journaux de révision filtrés, a trouvé qu’à taux de rétention cible égal, FSRS a besoin de nettement moins de révisions totales que SM-2 pour y arriver.

20-30 % de révisions en moins pour le même taux de rétention cible, selon le plus grand comparatif indépendant de vrais journaux de révision Anki entre FSRS et SM-2

Pour quelqu’un qui fait 200 révisions par jour, ça représente environ 50 révisions par jour récupérées, pas en étudiant moins, mais grâce à un algorithme qui arrête de te faire reconfirmer des choses que tu sais déjà juste parce qu’une formule fixe n’a jamais appris à faire mieux.

Pourquoi on a construit sur FSRS-5 dès le départ

Le moteur de révision de Merry Mandarin a été construit sur FSRS-5 dès le premier jour, pas ajouté après coup, parce que le chinois est proche d’un scénario du pire des cas pour un facteur de facilité universel. Le paquet de cartes d’un apprenant mélange des caractères à deux traits juste à côté de caractères à dix-huit traits, des classificateurs courants juste à côté de rares, des paires de tons qui deviennent triviales une fois que l’oreille s’ajuste et des paires de tons qui restent vraiment difficiles pendant un an. Traiter tout ça avec le même multiplicateur statique, et punir un oubli sur un caractère légitimement difficile exactement aussi durement qu’un faux pas négligent sur un caractère facile, c’est précisément le montage qui produit l’enfer de la facilité à grande échelle. Un modèle qui apprend la difficulté et la stabilité réelles par carte, et par personne, n’a jamais été optionnel pour une langue aussi inégale. C’était la seule architecture avec laquelle il était sensé de commencer.

Le résultat pratique est discret plutôt que spectaculaire : pas de plancher de facteur de facilité où rester coincé, pas de tas de cartes abandonnées en leeches, et une liste de révisions qui reflète ce que tu oublies vraiment plutôt que ce qu’une formule de 1987 suppose que tout le monde oublie au même rythme. Si tu as déjà ressenti cette angoisse particulière d’une pile de cartes mémoire qui ne semble jamais rétrécir, peu importe avec quelle fidélité tu te présentes, ce sentiment a un nom, un mécanisme, et depuis quelques années, une vraie solution.