18 pontos por GN⁺ 2025-05-19 | 1 comentários | Compartilhar no WhatsApp
  • O Spaced Repetition System, uma técnica de estudo que aumenta os intervalos de revisão de materiais já aprendidos, permite formar memória de longo prazo de forma eficaz com pouco investimento de tempo
  • Com o algoritmo FSRS (Free Spaced Repetition Scheduler), que otimiza o agendamento de cartões para cada pessoa com previsões baseadas em machine learning, a eficiência e a satisfação dos usuários melhoram bastante em relação aos métodos anteriores
  • Nas versões mais recentes do Anki, o FSRS foi adotado como agendador padrão, e a maioria dos usuários já o está utilizando
  • Em comparação com serviços como WaniKani e Bunpro, a combinação de Anki com FSRS é superior em eficiência de aprendizado e flexibilidade

Visão geral do sistema de repetição espaçada

  • O sistema de repetição espaçada é usado em diversas áreas para adquirir conhecimento e manter a memória de longo prazo
  • É uma solução que permite revisões eficazes dentro de um tempo limitado, como em aulas escolares ou estudos por hobby
  • As informações são apresentadas repetidamente em formato de flashcards, e os intervalos de revisão são ajustados de acordo com a resposta do usuário
  • Investindo 20 minutos por dia, é possível memorizar facilmente 3.650 palavras em um ano

Métodos tradicionais de agendamento e suas limitações

  • Nos primeiros sistemas de repetição espaçada, o algoritmo SuperMemo-2 era o mais utilizado
  • Nesse método, os intervalos de revisão aumentam no estilo “depois de 1 dia, se acertar depois de 6 dias, se acertar de novo depois de 15 dias, e mais tarde depois de 37,5 dias”
  • Em caso de erro, o intervalo volta para 1 dia, fazendo com que o mesmo cartão apareça repetidamente em intervalos curtos e gerando muita frustração
  • Esse método se baseia em regras empíricas e arbitrárias, sem otimização para cada item individual de conhecimento
  • Há a premissa irreal de que a curva de memória de todas as informações é igual

FSRS: agendamento aprimorado com base em machine learning

  • O FSRS (Free Spaced Repetition Scheduler) otimiza individualmente os intervalos de revisão com base em técnicas modernas de machine learning
  • Ele transforma em um problema de previsão a pergunta “quando a probabilidade de lembrar um cartão cai para 90%” e calcula o momento exato da revisão
  • O modelo FSRS obtém por ajuste de curva três funções: dificuldade (1 a 10 por cartão), estabilidade (o período em que a taxa de lembrança cai de 100% para 90%) e recuperabilidade (a probabilidade de lembrar após a passagem de certo número de dias)
  • Usando 21 parâmetros, ele otimiza as curvas com grandes volumes de dados de revisão e reajusta os parâmetros para refletir o histórico individual de revisões
  • O FSRS permite definir a taxa de lembrança alvo desejada pelo usuário (por exemplo, 90%) e simular a carga diária de estudo e a contagem correspondente
    • Por exemplo, ao definir a taxa de lembrança em 70%, a quantidade diária de revisões diminui, enquanto o número de cartões lembrados pode até aumentar

Aplicação prática do FSRS

  • O Anki adotou o FSRS como agendador padrão a partir da versão 23.10, lançada em 2023-11
  • Com o FSRS, a carga diária de revisão diminui, e o estresse ao revisar cartões errados não aumenta de forma tão intensa
  • Com as configurações recomendadas, é possível otimizar o equilíbrio entre eficiência de estudo e volume de estudo
  • Como projeto open source, ele pode ser implementado em vários idiomas e softwares

Comparação com outros serviços de estudo

  • Em serviços por assinatura como WaniKani e Bunpro, são oferecidos apenas intervalos fixos, sem ajustes personalizados
    • Ex.: 4 horas, 8 horas, 1 dia, 2 dias, 7 dias... ciclos de revisão definidos de forma arbitrária
  • Quando um cartão é respondido errado, ele não volta necessariamente ao estágio mínimo, e como não há previsão baseada em machine learning, a eficiência fica muito atrás
  • Cartões que passaram de certo intervalo deixam de ser mostrados, o que causa perda de conhecimento no longo prazo
  • Isso leva ao acúmulo de estresse e ineficiência para o aprendiz

Vantagens do Anki

  • A interface pode ser um pouco incômoda, mas seus pontos fortes são os recursos de estudo de alto desempenho, as atualizações contínuas e a ampla possibilidade de customização
  • Na prática, ele oferece flexibilidade adequada para aprendizes de várias áreas e em diferentes níveis
  • É ideal para construir conhecimento de longo prazo, do nível básico ao avançado
  • Com base na experiência direta de uso, consolidou-se como uma ferramenta de estudo eficaz

Saiba mais

  • Para entender melhor os princípios da repetição espaçada, o funcionamento detalhado do FSRS e exemplos de implementação, consulte os materiais abaixo
    • open-spaced-repetition/awesome-fsrs: lista de implementações do FSRS em várias linguagens de programação e softwares
    • open-spaced-repetition/srs-benchmark: resultados de benchmark comparando o FSRS com vários algoritmos (por exemplo, SuperMemo-2, algoritmo do Duolingo etc.)
      • Atualmente, o único desempenho consistentemente superior ao do FSRS é o de uma rede neural LSTM baseada no algoritmo OpenAI Reptile

1 comentários

 
GN⁺ 2025-05-19
Comentários do Hacker News
  • Quero destacar que sou o criador do Trane (https://github.com/trane-project/trane/). O Trane pode substituir sistemas parecidos com o Anki e se aplica à maioria dos domínios em que há uma hierarquia clara entre sub-habilidades técnicas, como música e aprendizado de vocabulário. Acho que sistemas existentes como Anki e SuperMemo ainda têm três problemas não resolvidos. Primeiro, a abordagem centrada em memorização é um problema. Eu queria algo que também pudesse ser aplicado a áreas como música, em que é necessária uma avaliação baseada em proficiência, não em memória. Segundo, sem informação hierárquica, fica difícil adquirir habilidades complexas em larga escala. No Anki, é difícil reproduzir funções do Trane, como limitar o progresso com base em dependências entre sub-habilidades e verificar proficiência. Terceiro, ele exige que você crie seus próprios exercícios. Isso consome bastante tempo e, para habilidades complexas, exige um especialista. O Trane está praticamente pronto e eu o uso para estudar música. Como não tem UI, só eu uso, mas também não quero trabalhar de graça, então tudo bem. Agora estou desenvolvendo um tutor de alfabetização baseado no Trane. Quando ficar pronto, o aluno poderá aprender do alfabeto até leitura e escrita em nível universitário com base em pesquisas atuais. Minha meta é lançar um MVP ainda este ano
  • Já vi muita discussão e evolução em torno de SRS. Mas a área que eu gostaria de ver, e que considero realmente importante, é o espaço entre leitura/compreensão e SRS. Quase não existem ferramentas independentes que permitam criar flashcards facilmente a partir de programas já existentes, como navegador web, PDF etc., e enviá-los para SRS populares como Anki e Mochi. Esse tipo de recurso deveria funcionar de forma natural e sem atrito, como uma integração do sistema operacional, com um pipeline fácil para mandar conteúdo ao SRS, não “mais um app separado”. Precisamos de algo amigável ao Mac e discreto. Se alguém conhecer uma ferramenta assim, gostaria de saber
    • A ideia de “criar flashcards facilmente a partir de programas existentes” costuma ser mal compreendida. Mais da metade do valor do SRS vem do processo de escolher por conta própria quais conceitos transformar em flashcards e explorar semelhanças, diferenças, propriedades etc. Dá trabalho, mas esse processo em si ajuda muito na compreensão. Como essa habilidade é difícil, muita gente não consegue usar SRS direito, não sente o efeito e acaba desistindo. Outro mal-entendido é achar que SRS serve só para memorização simples. Na prática, se for bem projetado, ele pode ser usado tranquilamente também para compreender temas complexos
    • Eu fiz um app de flashcards chamado Fresh Cards, e às vezes usuários pedem uma função para importar flashcards de páginas web ou PDFs. Mas, honestamente, ainda não sei como isso deveria funcionar. Não sei se o usuário deveria destacar o trecho e clicar em “criar cartão”, ou se o sistema deveria analisar o texto automaticamente e apresentar uma lista de perguntas e respostas. É difícil decidir com base em que critério transformar algo em cartão e em que nível de granularidade. Especialmente extrair fatos simples, como datas ou nomes, não ajuda muito em alguns tipos de conteúdo. No fim, é um problema muito aberto, então parece difícil atender às necessidades de todo mundo
    • Acho que o modelo de serviços do macOS combina muito bem com esse objetivo. Serviços funcionam em vários apps com base no contexto e oferecem integração entre aplicativos sem exigir desenvolvimento específico. Por exemplo, você seleciona um texto, clica com o botão direito e chama algo como “New SRS Card” no menu de serviços, e já dá para criar um cartão simples na hora. Se os apps de SRS incorporassem esse tipo de serviço, seria possível criar cartões de forma muito rápida e conveniente
    • Eu resolvo esse problema usando um prompt de sistema em um LLM. Entendo o conceito no ChatGPT, depois peço que ele gere flashcards e copio e colo no Mochi. No futuro, espero que a integração direta entre LLMs e Mochi para adicionar cartões evolua ainda mais
    • No contexto de aprendizado de idiomas, existem ferramentas excelentes para “minerar” cartões de áudio ou legendas do YouTube/Netflix. Algumas são open source e gratuitas, mas há certo atrito no primeiro uso. As soluções pagas são um pouco mais amigáveis
  • Uma dica que recomendo ao estudar com LLM é criar uma ferramenta MCP que salve conversas por tópico em csv no Google Drive e sincronize isso com o Anki. Esse método foi um divisor de águas no meu uso de LLM. No longo prazo, LLMs também podem fazer você pensar menos, mas, se vai usar mesmo, recomendo aproveitá-los como ferramenta de estudo
    • Eu fiz um script em Python que pega do meu deck do Anki os cartões programados para revisão no dia seguinte e faz o LLM gerar novas frases. A ideia não é apenas acertar sempre os cartões decorados, mas desenvolver reconhecimento das palavras também em novos contextos. Espero que aprender em contextos variados ajude de fato na aquisição da língua
    • Eu gostaria muito de ver um post de blog mostrando concretamente como você sincroniza o csv com cartões do Anki e como seria a implementação do MCP que transforma o resultado do LLM em csv
    • O modo de voz do ChatGPT 4o é uma experiência realmente revolucionária para aprendizado básico de chinês. Ajuda muito para perguntar o nome de objetos dentro de casa, relações entre palavras, criar frases curtas e verificar gramática. Ainda não há MCP, mas dá para pedir que ele resuma a conversa em formato estruturado
  • O que mais me incomoda no Anki é o modelo de dados. Acho que deveria ser possível gerenciar “coleções de notas” hierarquicamente — seja conteúdo criado por você, gerado por LLM ou compartilhado com amigos e alunos — e, a partir disso, derivar conjuntos finais de cartões com base em templates. Também deveria haver separação hierárquica entre histórico de revisão, modelo e formas de limitar os cartões revisados em situações específicas — por exemplo, escrever em chinês ou japonês exige papel, então eu gostaria de ocultar certos decks conforme a situação. Já no Anki, tudo isso fica misturado em um único banco de dados, e importar/exportar/compartilhar/manipular dados externamente também é muito incômodo. Sempre me frustro quando não consigo manipular meus dados livremente. Alguém conhece um sistema sem esse problema?
    • Dá para fazer tranquilamente múltiplas coleções de notas e limitar cartões por sessão usando decks e tags do Anki, Better Tags, subdecks etc. Cada deck fica separado em seu próprio arquivo, e há suporte a múltiplos modelos de repetição espaçada, como FSRS. Exportar e compartilhar é fácil em nível de arquivo (arquivo compactado), e há muitas bibliotecas e ferramentas para manipulação externa. Como é open source e baseado em bibliotecas, extrair dados é simples. Já resolvi minha insatisfação com sistemas existentes usando o Anki
    • Tudo o que você mencionou está incorreto. O Anki tem excelente documentação open source. Se você sabe programar, com ChatGPT dá para fazer quase tudo, e eu mesmo costumo fazer mineração de dados direto no banco sqlite
    • O modelo de dados do Anki tem muitos pontos ineficientes. De fato, é uma estrutura bastante improvisada em vários aspectos, como JSON dentro de uma linha de tabela, e ficou meio estranha por ter crescido de forma incremental. Por outro lado, os templates e o recurso de cloze deletion são excelentes, a ponto de hoje eu ser grato por essa estrutura. Estou redesenhando o schema do Fresh Cards para adotar cloze deletion e templates. No meu app, cada propriedade do cartão vira uma tabela separada. A dificuldade inicial do Anki com sincronização também tem relação com esse schema
    • Isso vale só para aprendizado de idiomas, mas uma estrutura como a do meu TheHardWay (https://thehardway.app), em que os flashcards são integrados a notas em Markdown, pode ser uma boa opção
    • Por exemplo, se você separar em grupos palavras relacionadas a restaurante e palavras relacionadas a aeroporto, o usuário consegue fazer associações naturalmente
  • Na faculdade, eu usava repetição espaçada mais ou menos da seguinte forma. Organizava em um documento do Word, na vertical, as chaves que precisava memorizar e salvava em PDF. Ao lado de cada chave no PDF, eu criava um campo de anotação para o valor. Clicava na anotação para ver a resposta e, cada vez que acertava com facilidade, movia a anotação para a esquerda; quando ficava em dúvida, movia de novo para a direita. No fim, a posição da tabela de anotações me permitia ajustar a prioridade de revisão. Tinha muitos defeitos, mas funcionava bem para mim, e isso foi antes de existir no Anki algo com algoritmo semelhante, então talvez, se fosse hoje, minha experiência tivesse sido diferente
    • Isso parece interessante, mas só pela explicação não consigo visualizar bem. Se você tiver um arquivo de exemplo, gostaria de ver
  • Se você tem interesse em experimentar FSRS, o Open Spaced Repetition fornece pacotes oficiais em Python, Typescript e Rust (com links para cada GitHub). O ts-fsrs e o rs-fsrs suportam FSRS 6, e o py-fsrs também deve suportar em breve. Além disso, py-fsrs e fsrs-rs também oferecem otimização do modelo com base no histórico de revisões anteriores
    • Eu uso o pacote em Rust no treinamento de aberturas do Chessbook. É muito fácil de usar, reduz a carga sobre o usuário e aumenta a taxa de retenção. O sistema FSRS é realmente excelente
    • Se você usa Ruby, recomendo ver um fork da gem FSRS que corrige o problema do intervalo de cartões novos (https://github.com/arvindang/rb-fsrs). Foi portada da versão original em Python
  • A repetição espaçada continua popular há 20 anos, mas não é solução mágica. Apesar de dezenas de apps e milhares de palestras, muita gente acaba desistindo no meio do caminho, como acontece com dietas ou autoaperfeiçoamento. Já pensei que, “se realmente nos importássemos com educação infantil, Google ou Apple deveriam lançar um sistema de desbloqueio em que toda semana fosse preciso escrever cartões de notas e passar para liberar o celular”. Claro que precisaria haver formas de contornar e talvez pouca gente de fato instalasse isso, mas acho que esse nível de incorporação ao cotidiano seria necessário
    • A repetição espaçada é focada em “otimização do tempo”, mas não ajuda com autodisciplina ou motivação. Quando o custo de tempo é alto, ela é eficiente, mas, se o problema for motivação ou autocontrole, é fácil entrar em burnout. No meu caso, graças ao Anki fui bem no GCSE e no A-level, mas depois tive um burnout forte e acabei trancando os estudos. No fim, o Anki foi ao mesmo tempo o motor do meu sucesso e o motivo da minha pausa
    • Dizer que “não é solução mágica” é vazio sem definir o critério. Assim como dieta não é solução mágica, para mim, depois de mais de 6 anos usando SRS, foi algo que mudou minha vida
    • Falta interesse em SRS entre pessoas que não entendem bem a diferença entre memorização e aquisição de linguagem. Quem quer memorizar adora, mas o meu objetivo é a própria capacidade de ler em espanhol e francês. Repetir palavras e frases de exemplo é como um andaime em uma obra. Não é algo usado diretamente na estrutura final, mas acelera muito a construção como um todo. Seria ótimo se houvesse uma orientação melhor de que memorização e aquisição de linguagem não são coisas separadas, mas complementares
    • Se você espera uma solução mágica, só vai se frustrar. No fim, é preciso “trabalho”. É só uma ferramenta
    • O SRS tem um problema de UX com barreira de entrada alta. 1) tempo gasto para criar cartões 2) necessidade de autoavaliação 3) estrutura única de prompt-resposta 4) necessidade de aprendizado autodirigido (scaffolding, etapas de compreensão). Mais fundamentalmente, SRS é excelente para “perguntas e respostas exatas”, mas fraco em generalização. Na prática, ele constrói mal um grafo de conhecimento. Se você olhar a diferença entre conhecimento por recordação (memorização) e conhecimento por modelo lógico, a memorização funciona quase como uma “consulta de dicionário”, enquanto um modelo lógico, como conceitos matemáticos, é muito mais complexo. Defensores de SRS argumentam que até modelos lógicos se baseiam, no fundo, na memorização de um conjunto de fatos, mas, no fim, o valor prático real do SRS é algo como um “caderno bem organizado” com utilidade extra. Ainda assim, está longe de tornar alguém um gênio
  • Depois de usar Anki por quase 10 anos, acho que o único ponto que realmente precisa melhorar é a UI/o design. Mais do que automatizar algoritmo, o maior problema é que a interface real parece entediante para muitos usuários novos. Os recursos poderosos para power users são ótimos, mas faltam intuitividade. O efeito de espaçamento é algo central no aprendizado humano e ainda muito subestimado
    • Sou mantenedor do AnkiDroid. No momento, estou refazendo completamente o design da tela de revisão, e isso pode ser visto nas “opções de desenvolvedor” do app de produção. Ainda não estou satisfeito com o design, mas faltam bastante recursos. Se alguém tiver interesse no lado Android, será muito bem-vindo
    • Eu adoro o Anki, mas ele é um produto clássico de “feito por engenheiros”. É muito poderoso e profundo, mas o design é tosco e pouco intuitivo. Leitores do HN, por serem mais nerds de tecnologia, conseguem aprender, mas o usuário comum do Duolingo sofre
    • A janela do editor é muito ruim. Precisa ser melhorada com urgência. As abas da janela principal também não funcionam como abas de verdade, e o modo de dois botões “Again/Good” deveria vir embutido por padrão na tela de revisão. Só de reunir os addons já daria para virar algo popular, e seria fácil de implementar
    • Li muitos textos sobre Anki e SRS ao longo dos anos, mas nunca usei de fato. Gostaria de saber se há alguma área de estudo que vocês recomendariam
    • Comparado ao Duolingo, continua sendo entediante. Mesmo assim, uso há anos. Talvez fosse bom introduzir opcionalmente alguns elementos de jogo, como sequência diária, efeitos sonoros etc.
  • Eu escrevi um texto chamado “Why Anki Doesn’t Work for Me” há 6 anos (antes das melhorias no algoritmo). Eu sentia vários problemas no Anki, mas como o novo algoritmo corrige justamente minha principal queixa, pretendo tentar de novo. Fico curioso se os outros problemas ainda continuam sendo obstáculos
    • Durante o A-level, eu migrei para a extensão FSRS. Também fiz um ajuste personalizado ao meu padrão de estudo com um notebook do Google Colab. O volume de revisão caiu pela metade, e os horários de revisão ficaram mais distribuídos, então ficou muito mais confortável. O efeito foi equivalente ou até melhor. Recomendo fortemente tentar de novo
    • Tive uma experiência parecida. O Anki parecia obcecado com memória de curto prazo, e depois de alguns dias ou semanas eu precisava praticamente reaprender tudo do zero. Naquela época, quase toda comunidade de SRS tratava o Anki como algo sagrado, mas eu desisti
    • O WaniKani tem a melhor UI entre sistemas de SRS, mas, por causa do algoritmo antigo, sofre essencialmente das mesmas limitações. Essa estrutura de “depois da última revisão você talvez nunca mais veja o cartão” sempre me deixa inseguro quanto à perda de conhecimento
  • O aspecto interessante da repetição espaçada é a premissa de que a “memorização simples” tem, em certas situações, um papel muito mais importante do que a educação moderna costuma admitir. Em matemática e programação, costuma-se pensar que compreensão é mais importante do que memorização, mas a repetição espaçada pode servir como contraponto a isso
    • Na transição do sistema educacional do período pré-Revolução Industrial para a era moderna, houve uma mudança da educação clássica centrada em memorização (latim, grego) para uma abordagem “centrada em compreensão”. Essa mudança era necessária na época, mas talvez tenha ido longe demais. Hoje, a memorização é subestimada além do necessário
    • Hoje em dia, programação segue a ideia de “é só procurar quando precisar”. Mas há coisas que precisam ser memorizadas, como linguagens de programação, padrões etc. A prática funciona como um SRS não estruturado e, em certos domínios específicos — por exemplo, desenvolvimento de drivers em C++ — o SRS pode ser uma ajuda enorme
    • Operações usadas repetidamente, como multiplicação, precisam ser internalizadas por memorização para que seja possível focar no aprendizado de conceitos de nível superior. Essa estrutura é central para a eficiência do aprendizado
    • Memorização é pré-requisito para compreensão. Não dá para entender aquilo de que você não se lembra
    • A diferença entre conhecimento de recordação e conhecimento de modelo lógico é extremamente interessante. Os LLMs tipicamente se parecem mais com o primeiro, e por isso têm muitas limitações em matemática