18 points par GN⁺ 2025-05-19 | 1 commentaires | Partager sur WhatsApp
  • La Spaced Repetition System, une méthode d’apprentissage qui allonge les intervalles de révision des contenus déjà étudiés, permet de construire efficacement une mémoire à long terme avec un investissement en temps limité
  • Grâce à FSRS (Free Spaced Repetition Scheduler), un algorithme qui optimise la planification des cartes pour chaque utilisateur via des prédictions fondées sur le machine learning, l’efficacité et la satisfaction des utilisateurs progressent nettement par rapport aux méthodes existantes
  • Dans les versions récentes d’Anki, FSRS est appliqué comme planificateur par défaut, si bien que la majorité des utilisateurs l’emploient déjà
  • Par rapport à des services comme WaniKani ou Bunpro, la combinaison Anki + FSRS est supérieure en efficacité d’apprentissage et en flexibilité

Aperçu du système de répétition espacée

  • Le système de répétition espacée est utilisé dans de nombreux domaines pour acquérir des connaissances et préserver la mémoire à long terme
  • C’est une solution qui permet des révisions efficaces dans un temps limité, que ce soit pour les cours, l’apprentissage en loisir ou d’autres contextes
  • Les informations sont présentées de façon répétée sous forme de flashcards, et les intervalles de révision sont ajustés selon les réponses de l’utilisateur
  • En y consacrant 20 minutes par jour, on peut mémoriser facilement 3 650 mots en un an

Méthodes de planification classiques et leurs limites

  • Dans les premiers systèmes de répétition espacée, l’algorithme SuperMemo-2 était principalement utilisé
  • Avec cette méthode, les intervalles augmentent selon un schéma du type « après 1 jour, si la réponse est correcte après 6 jours, puis 15 jours, puis plus tard 37,5 jours »
  • En cas d’erreur, l’intervalle est réinitialisé à 1 jour, ce qui oblige à revoir la même carte plusieurs fois à très court intervalle et génère une forte frustration
  • Cette approche repose sur des règles empiriques et arbitraires, sans optimisation selon chaque élément de connaissance
  • Elle suppose de manière peu réaliste que la courbe d’oubli est identique pour toutes les informations

FSRS : une planification améliorée fondée sur le machine learning

  • FSRS (Free Spaced Repetition Scheduler) optimise individuellement les intervalles de révision à partir de techniques récentes de machine learning
  • Le problème est reformulé comme une prédiction de « quand la probabilité de rappel d’une carte retombe à 90 % », ce qui permet de calculer précisément le bon moment pour la révision
  • Le modèle FSRS détermine par ajustement de courbe trois fonctions : la difficulté (1 à 10 par carte), la stabilité (la durée pendant laquelle le taux de rappel passe de 100 % à 90 %) et la récupérabilité (la probabilité de rappel après un certain nombre de jours)
  • Il optimise les courbes à l’aide de 21 paramètres ajustés sur de grands volumes de données de révision, puis réadapte ces paramètres à l’historique de révision de chaque individu
  • FSRS permet de définir un taux de rappel cible (par exemple 90 %) et de simuler la charge d’apprentissage quotidienne ainsi que le nombre de cartes correspondant
    • Par exemple, avec un taux de rappel fixé à 70 %, le volume de révision quotidien baisse, tandis que le nombre de cartes retenues augmente au contraire

Mise en pratique de FSRS

  • Depuis la version 23.10 publiée en 2023-11, Anki a adopté FSRS comme planificateur par défaut
  • Avec FSRS, la charge quotidienne de révision diminue et le stress n’augmente pas fortement, même lorsqu’on révise des cartes ratées
  • Il est possible d’optimiser l’équilibre entre efficacité d’apprentissage et volume de travail selon les réglages recommandés
  • En tant que projet open source, il peut être implémenté dans plusieurs langues et logiciels

Comparaison avec d’autres services d’apprentissage

  • Dans le cas de services par abonnement comme WaniKani ou Bunpro, seuls des intervalles prédéfinis sont proposés, sans ajustement personnalisé
    • Exemple : 4 heures, 8 heures, 1 jour, 2 jours, 7 jours... soit des cycles de révision arbitraires
  • En cas d’erreur sur une carte, ils ne reviennent pas forcément à l’étape minimale et, sans prédiction fondée sur le machine learning, leur efficacité est nettement en retrait
  • Les cartes ayant dépassé un certain délai ne sont ensuite plus revues, ce qui entraîne une perte de connaissances à long terme
  • Il en résulte une accumulation de stress et d’inefficacité pour l’apprenant

Les atouts d’Anki

  • L’interface peut sembler un peu peu pratique, mais ses fonctions d’apprentissage puissantes, ses mises à jour continues et ses nombreuses possibilités de personnalisation constituent de vrais points forts
  • Dans les faits, il offre une grande flexibilité adaptée à des apprenants de niveaux et de domaines très variés
  • Il est idéal pour construire des connaissances sur le long terme, du niveau débutant au niveau avancé
  • Sur la base de l’expérience utilisateur directe, il s’impose comme un outil d’apprentissage efficace

Pour aller plus loin

  • Pour en savoir plus sur les principes de la répétition espacée, le fonctionnement détaillé de FSRS et des exemples d’implémentation, voir les ressources ci-dessous
    • open-spaced-repetition/awesome-fsrs : liste des implémentations de FSRS dans différents langages de programmation et logiciels
    • open-spaced-repetition/srs-benchmark : résultats de benchmark comparant FSRS à plusieurs algorithmes (par ex. SuperMemo-2, l’algorithme de Duolingo, etc.)
      • À l’heure actuelle, les seules performances régulièrement supérieures à celles de FSRS semblent provenir d’un réseau neuronal LSTM fondé sur l’algorithme OpenAI Reptile

1 commentaires

 
GN⁺ 2025-05-19
Commentaire Hacker News
  • Je tiens à préciser que je suis le créateur de Trane (https://github.com/trane-project/trane/). Trane peut remplacer des systèmes comme Anki, et s’applique à la plupart des domaines où la hiérarchie entre sous-compétences est claire, comme la musique ou l’apprentissage du vocabulaire. Je pense que les systèmes existants comme Anki ou SuperMemo ont trois problèmes non résolus. D’abord, leur approche centrée sur la mémorisation pose problème. Je voulais quelque chose qui puisse aussi s’appliquer à des domaines nécessitant une évaluation fondée sur la maîtrise plutôt que sur la mémoire, comme la musique. Ensuite, l’absence d’information hiérarchique rend difficile l’acquisition de compétences à grande échelle. Avec Anki, il est difficile de reproduire les fonctions de Trane, comme le blocage de progression basé sur les dépendances entre sous-compétences et la vérification de maîtrise. Troisièmement, ils exigent que l’utilisateur crée lui-même ses exercices. Cela prend beaucoup de temps, et pour les compétences complexes, il faut un expert. Trane est en pratique terminé, et je l’utilise pour étudier la musique. Comme il n’y a pas d’interface utilisateur, je suis le seul à l’utiliser, mais bon, je n’ai pas envie de travailler gratuitement. En ce moment, je développe un tuteur en littératie basé sur Trane. Une fois terminé, il permettra à un élève d’apprendre, de l’alphabet jusqu’à la lecture et l’écriture de niveau universitaire, en s’appuyant sur les recherches les plus récentes. Je vise une sortie du MVP d’ici la fin de l’année
  • J’ai vu beaucoup de discussions et de progrès autour du SRS. Mais ce que j’aimerais voir, et ce qui me semble vraiment important, c’est la zone entre lecture/compréhension et SRS. Il existe très peu d’outils indépendants permettant de créer facilement des flashcards depuis des programmes existants comme un navigateur web ou un PDF vers des SRS populaires comme Anki ou Mochi. Il faudrait que cela fonctionne de manière aussi naturelle et sans friction qu’une intégration au système d’exploitation, avec un pipeline simple vers le SRS au lieu de « encore une application séparée ». Il faudrait un système discret, bien intégré à Mac. Si quelqu’un connaît un tel outil, ça m’intéresse
    • Le concept de « créer facilement des flashcards depuis des programmes existants » est souvent mal compris. Plus de la moitié de la valeur du SRS vient du fait de choisir soi-même les concepts à transformer en flashcards, puis d’explorer leurs ressemblances, différences, propriétés, etc. C’est difficile, mais ce processus aide énormément à comprendre. En revanche, comme cette compétence est difficile, beaucoup de gens n’utilisent pas vraiment le SRS correctement, n’en voient pas les effets, puis abandonnent. Une autre idée fausse est que le SRS ne sert qu’à la mémorisation brute. En réalité, bien conçu, il peut tout à fait servir à comprendre des sujets complexes
    • J’ai créé une application de flashcards appelée Fresh Cards, et il arrive souvent que des utilisateurs demandent une fonction pour importer des flashcards depuis une page web ou un PDF. Mais honnêtement, je ne sais toujours pas comment cela devrait fonctionner. Est-ce que l’utilisateur devrait surligner lui-même puis cliquer sur « créer une carte » ? Ou bien faudrait-il analyser automatiquement le texte pour proposer une liste de questions-réponses ? Il est difficile de décider quoi transformer en carte et à quel niveau de granularité. Extraire des faits simples comme des dates ou des noms n’aide pas forcément beaucoup selon le type de contenu. Au final, c’est un problème très ouvert, donc il sera sans doute difficile de satisfaire les besoins de tout le monde
    • Je pense que le modèle des services macOS correspond bien à cet usage. Un service fonctionne selon le contexte dans diverses apps et permet l’interopérabilité sans développement spécifique. Par exemple, on pourrait sélectionner du texte, faire un clic droit, puis appeler une fonction comme « New SRS Card » depuis le menu Services pour créer immédiatement une carte simple. Si une app de SRS embarquait ce type de service, la création de cartes serait très rapide et pratique
    • J’utilise un LLM avec un system prompt pour résoudre ce problème. Après avoir compris un concept dans ChatGPT, je lui demande de générer des flashcards, puis je copie-colle dans Mochi. À l’avenir, j’espère voir davantage d’intégrations directes entre les LLM et Mochi pour ajouter des cartes
    • Dans le contexte de l’apprentissage des langues, il existe d’excellents outils pour « miner » des cartes audio ou des sous-titres depuis YouTube/Netflix. Certains sont open source et gratuits, mais la première prise en main demande un peu d’effort. Les solutions payantes sont un peu plus conviviales
  • Un conseil que je recommande pour apprendre avec des LLM est de créer un outil MCP qui enregistre les conversations par thème au format csv dans Google Drive, puis les synchronise avec Anki. Cette approche a été un game changer dans ma façon d’utiliser les LLM. À long terme, les LLM ont aussi tendance à nous faire moins réfléchir, donc tant qu’à les utiliser, je recommande d’en faire des outils d’étude
    • J’ai écrit un script Python qui sélectionne, dans mon deck Anki, les cartes prévues pour révision le lendemain, puis fait générer par un LLM de nouvelles phrases. Le but n’est pas seulement de réciter les cartes par cœur à chaque fois, mais de développer la reconnaissance des mots dans de nouveaux contextes. J’espère qu’apprendre dans divers contextes aide réellement à l’acquisition de la langue
    • J’aimerais lire un billet de blog expliquant concrètement comment tu synchronises le csv avec les cartes Anki, et à quoi ressemble l’implémentation MCP qui transforme les résultats du LLM en csv
    • Le mode vocal de ChatGPT 4o est une expérience vraiment révolutionnaire pour apprendre les bases du chinois. C’est très utile pour demander le nom des objets dans la maison, poser des questions sur les relations entre les mots, former de courtes phrases et vérifier la grammaire. Il n’y a pas encore de MCP, mais on peut demander un résumé structuré de la conversation
  • Ce qui me gêne le plus dans Anki, c’est son modèle de données. Je pense qu’il faudrait gérer hiérarchiquement des « collections de notes » — qu’on les crée soi-même, qu’on les génère avec un LLM, ou qu’on veuille les partager avec un ami ou un élève — puis en dériver au final des ensembles de cartes à étudier selon des templates. Il faudrait aussi séparer l’historique de révision et le modèle, ainsi que la manière de limiter les cartes à réviser selon le contexte spécifique — par exemple, pour l’écriture en chinois ou en japonais, il faut du papier, donc on voudrait filtrer les decks selon la situation. Or dans Anki, tout est mélangé dans une seule base de données, et l’import/export, le partage, ou la manipulation externe des données sont très inconfortables. Chaque fois que je ne peux pas manipuler librement mes données, c’est frustrant. Quelqu’un connaît-il un système sans ces problèmes ?
    • Gérer plusieurs collections de notes et limiter les cartes par session, c’est tout à fait faisable dans Anki avec les decks, les tags, Better Tags, les sous-decks, etc. Tous les decks sont séparés en fichiers distincts, et plusieurs modèles de spaced repetition sont pris en charge, dont FSRS. L’export et le partage sont simples au niveau fichier (archives compressées), et il existe beaucoup de bibliothèques et d’outils pour la manipulation externe, avec une structure open source fondée sur des bibliothèques qui facilite l’extraction de données. Dans mon cas, Anki a justement résolu mon insatisfaction envers les systèmes existants
    • Tout ce que vous mentionnez est faux. Anki dispose d’une excellente documentation open source. Si on sait programmer, on peut faire presque n’importe quoi avec ChatGPT, et moi-même je fais souvent du data mining dans la base sqlite
    • Le modèle de données d’Anki a bien des inefficacités. Par exemple, le fait de stocker du JSON dans une ligne de table est assez bricolé ; c’est une structure qui a grandi progressivement et qui reste un peu maladroite. En revanche, les templates et la fonctionnalité de cloze deletion — masquer seulement certaines parties pour générer automatiquement plusieurs cartes — sont excellents, au point que j’en suis maintenant reconnaissant. Je suis en train de repenser le schéma de Fresh Cards pour introduire cloze deletion et templates. Dans mon app, chaque propriété de carte est normalisée dans sa propre table. Les difficultés initiales d’Anki pour prendre en charge la synchronisation sont aussi liées à ce schéma
    • Cela ne vaut que pour l’apprentissage des langues, mais une structure comme celle de mon TheHardWay (https://thehardway.app), où les flashcards sont intégrées à des notes Markdown, peut être un bon choix
    • Par exemple, si on sépare les mots liés au restaurant et ceux liés à l’aéroport en groupes distincts, l’utilisateur peut faire des associations plus naturellement
  • À l’université, j’utilisais la répétition espacée de la manière suivante. Je listais verticalement, dans un document Word, les éléments-clés à mémoriser, puis je l’enregistrais en PDF. À côté de chaque élément, je créais un champ d’annotation contenant la réponse. Je cliquais sur l’annotation pour vérifier la réponse, et à chaque fois que je répondais facilement, je déplaçais l’annotation vers la gauche ; si j’hésitais, je la remettais vers la droite. Au final, on pouvait régler la priorité de révision selon la position des annotations dans le tableau. Il y avait beaucoup d’inconvénients, mais cela me convenait bien, et c’était avant qu’Anki n’ait un algorithme similaire ; peut-être que mon expérience aurait été différente aujourd’hui
    • C’est intéressant, mais je visualise mal le système rien qu’avec l’explication. Si tu as un fichier d’exemple, j’aimerais bien le voir
  • Si vous vous intéressez aux expérimentations autour de FSRS, Open Spaced Repetition fournit des packages officiels en Python, Typescript et Rust (liens GitHub indiqués). ts-fsrs et rs-fsrs prennent en charge FSRS 6, et py-fsrs devrait bientôt le faire. En outre, py-fsrs et fsrs-rs permettent aussi d’optimiser le modèle à partir de l’historique de révision passé
    • J’utilise le package Rust pour l’entraînement aux ouvertures de Chessbook. C’est très simple à utiliser, cela réduit la charge pour l’utilisateur tout en améliorant le taux de rétention. Le système FSRS est vraiment excellent
    • Pour les utilisateurs Ruby, je recommande de regarder le fork de la gem FSRS qui corrige le problème des intervalles des nouvelles cartes (https://github.com/arvindang/rb-fsrs). C’est à l’origine un portage de la version Python ci-dessus
  • La répétition espacée est populaire depuis 20 ans, mais ce n’est pas une solution miracle. Malgré des dizaines d’apps et des milliers de conférences, beaucoup de gens finissent toujours par abandonner en cours de route, un peu comme avec les régimes ou le développement personnel. Je me suis déjà dit que, « si on se souciait vraiment de l’éducation des enfants, Google ou Apple devraient sortir un système où le téléphone ne se déverrouille qu’après avoir rédigé des fiches chaque semaine ». Bien sûr, il faudrait des mécanismes de contournement, et peu de gens l’installeraient sans doute, mais je pense qu’il faudrait que cela devienne à ce point banal
    • La répétition espacée se concentre sur « l’optimisation du temps », mais elle n’aide pas sur l’autogestion ou la motivation. Si la charge en temps devient importante, elle est efficace ; mais si la motivation ou l’autodiscipline sont faibles, on s’épuise vite. Dans mon cas, Anki m’a aidé à réussir le GCSE et les A-levels, puis j’ai tellement fait de burnout que j’ai fini par faire une année de césure. En un sens, Anki a été à la fois le moteur de ma réussite et la raison de ma pause
    • Dire que « ce n’est pas une solution miracle » est assez vide si on ne définit pas ses critères. Comme un régime n’est pas une solution miracle, le SRS, après plus de 6 ans d’usage, a pourtant changé ma vie
    • Le manque d’intérêt pour le SRS vient souvent de ceux qui comprennent mal la différence entre mémorisation et acquisition d’une langue. Ceux qui visent la mémorisation l’adorent, mais moi, mon objectif est surtout de lire en espagnol et en français. Répéter des mots et des exemples de phrases, c’est comme un échafaudage sur un chantier. On ne s’en sert pas directement pour constituer la structure, mais cela accélère énormément l’ensemble du processus. J’aimerais qu’on explique mieux que mémorisation et acquisition linguistique ne sont pas opposées, mais complémentaires
    • Si on attend une solution miracle, on sera forcément déçu. Au final, cela demande du « travail ». Ce n’est qu’un outil
    • Le SRS souffre de problèmes d’UX qui rendent l’entrée difficile. 1) le temps nécessaire pour créer les cartes 2) la nécessité de s’autoévaluer 3) la structure unique prompt-réponse 4) le besoin d’apprentissage autodirigé (scaffolding, étapes de compréhension). Plus fondamentalement, le SRS est excellent pour les « questions-réponses précises », mais faible pour la généralisation. En pratique, il est peu efficace pour construire un graphe de connaissances. Quand on compare les connaissances de rappel brut et les connaissances fondées sur un modèle logique, la mémorisation fonctionne presque comme une « recherche dans un dictionnaire », alors qu’un modèle logique, comme en mathématiques, est bien plus complexe. Les défenseurs du SRS affirment que même les modèles logiques reposent au fond sur la mémorisation d’un ensemble de faits, mais la vraie valeur pratique du SRS tient surtout au fait d’être « un carnet bien organisé » avec un bénéfice supplémentaire. En revanche, on est encore très loin d’un outil qui ferait de vous un génie
  • J’utilise Anki depuis près de 10 ans, et je pense que la seule vraie amélioration nécessaire concerne l’UI/le design. Plus que l’automatisation des algorithmes, le vrai problème est que l’interface paraît ennuyeuse à beaucoup de nouveaux utilisateurs. Les fonctions puissantes pour power users sont bien, mais l’intuitivité manque. L’effet d’espacement est un élément central de l’apprentissage humain, très largement sous-estimé
    • Je suis mainteneur d’AnkiDroid. Je retravaille complètement le design actuel de l’écran de révision, et on peut déjà le voir dans les « options développeur » de l’app de production. Je ne suis pas encore satisfait du design, mais nous manquons vraiment de ressources. Si le côté Android vous intéresse, n’hésitez pas à me contacter
    • J’adore Anki, mais c’est typiquement un produit « conçu par des ingénieurs ». C’est très puissant, très profond, mais le design est rude et peu intuitif. Les lecteurs de HN un peu technophiles peuvent l’apprivoiser, mais l’utilisateur moyen de Duolingo aura du mal
    • La fenêtre d’édition est extrêmement pénible. C’est là qu’il y a urgence à améliorer. Les onglets de la fenêtre principale ne se comportent pas vraiment comme de vrais onglets, et sur l’écran de révision, un mode à deux boutons « Again/Good » devrait être inclus par défaut. Rien qu’en reprenant quelques add-ons populaires, ce serait facile à implémenter et très utile
    • J’ai lu pendant des années de nombreux articles sur Anki et le SRS, mais je ne les ai jamais vraiment utilisés. Je me demande s’il y a des domaines d’apprentissage que vous recommanderiez particulièrement
    • Comparé à Duolingo, c’est forcément plus ennuyeux. Cela dit, je l’utilise depuis des années. Ajouter un peu de gamification en option — streaks, effets sonores, etc. — serait probablement une bonne chose
  • J’ai écrit il y a 6 ans un billet intitulé « Why Anki Doesn’t Work for Me » (avant l’amélioration des algorithmes). J’avais plusieurs problèmes avec Anki, mais le nouvel algorithme corrige justement ma critique principale, donc je compte réessayer. Je me demande si les autres problèmes restent encore de vrais obstacles
    • Je suis passé à l’extension FSRS pendant mes A-levels. J’ai même fait un ajustement personnalisé à mon profil d’apprentissage avec un notebook Google Collab. Le volume de révision a été réduit de moitié, le calendrier des révisions est mieux réparti, et l’expérience est devenue bien plus agréable. Les résultats étaient équivalents, voire meilleurs. Je recommande vivement d’essayer
    • J’ai eu une expérience similaire. Anki semblait obsédé par la mémoire à court terme, et au bout de quelques jours ou semaines, j’avais presque l’impression de devoir tout réapprendre de zéro. À l’époque, presque toute la communauté SRS idolâtrait Anki, mais j’ai fini par abandonner
    • WaniKani a la meilleure UI parmi les SRS, mais à cause de son algorithme daté, il souffre fondamentalement des mêmes limites. La logique du type « après la dernière révision, vous n’aurez plus jamais besoin de revoir cette carte » me met toujours mal à l’aise, car il reste un risque permanent de perte de connaissance
  • Ce qui est intéressant dans la répétition espacée, c’est l’idée que la « simple mémorisation » joue dans certaines situations un rôle bien plus important que ce que l’éducation moderne admet. En mathématiques ou en programmation, on a tendance à penser que la compréhension compte davantage que la mémorisation, mais la répétition espacée peut servir de contre-argument
    • Dans la transition des systèmes éducatifs, de l’avant-révolution industrielle jusqu’à l’époque moderne, on est passé d’une éducation classique centrée sur la mémorisation (latin, grec) à une approche centrée sur la « compréhension ». Ce changement était nécessaire à l’époque, mais il est peut-être allé trop loin. Aujourd’hui, la mémorisation est sans doute plus dévalorisée qu’elle ne devrait l’être
    • En programmation aujourd’hui, on suit souvent l’idée qu’« il suffit de chercher quand on en a besoin ». Mais certaines choses doivent malgré tout être mémorisées, comme les langages ou les patterns. La pratique ressemble à une forme non structurée de SRS, et dans certains domaines précis — par exemple le développement de drivers en C++ — le SRS peut être d’une grande aide
    • Les opérations utilisées en permanence, comme les multiplications, doivent être intériorisées par mémorisation pour pouvoir se concentrer sur l’apprentissage de concepts de niveau supérieur. C’est là une structure clé de l’efficacité de l’apprentissage
    • La mémorisation est une condition préalable à la compréhension. On ne peut pas comprendre ce dont on ne se souvient pas
    • La différence entre les connaissances de rappel et les connaissances fondées sur un modèle logique est vraiment fascinante. Les LLM relèvent typiquement davantage du premier type, ce qui explique leurs limites en mathématiques