3 पॉइंट द्वारा GN⁺ 2024-01-16 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • सीखने के revision schedule को optimize करने वाले FSRS का ABC of FSRS wiki, fsrs4anki से नए awesome-fsrs wiki पर चला गया है
  • जुड़ी हुई MaiMemo research सामग्री spaced repetition scheduling optimization और memory dynamics modeling को क्रमशः ACM KDD और IEEE TKDE papers के रूप में कवर करती है
  • एक अलग लेख बताता है कि एक undergraduate student ने ACM KDD paper प्रकाशित करने के अनुभव के जरिए spaced repetition algorithm research की प्रक्रिया कैसे देखी
  • FSRS-Anki-20k और anki-revlogs-10k time-series विशेषताओं वाले open source datasets के रूप में साथ में प्रस्तुत किए गए हैं
  • FSRS community-driven independent open source project है, और MaiMemo Inc. जैसे संगठनों का समर्थन core contributors की निरंतर भागीदारी को सहारा देता है

नए wiki पर स्थानांतरित ABC of FSRS

Spaced repetition research सामग्री

Research experience लेख

Public datasets

Community project और sponsorship

  • FSRS community द्वारा संचालित independent open source project है
  • 墨墨背单词 (MaiMemo Inc.) जैसे संगठनों के समर्थन के लिए आभार व्यक्त किया गया है
  • MaiMemo का समर्थन Jarrett Ye जैसे core contributors को FSRS में समय और expertise लगाने में सक्षम बनाता है
  • ऐसा collaboration FSRS को सभी के लिए freely available अग्रणी spaced repetition algorithm बने रहने में मदद करता है

1 टिप्पणियां

 
GN⁺ 2024-01-16
Hacker News की राय
  • spaced repetition को बेहतर बनाने का एक बहुत कम आंका गया तरीका है cards को आसान बनाना। मुझे पता चला कि प्रभावी cards हैरान करने लायक आसान भी हो सकते हैं।
    शुरुआत में मैंने Anki से French vocabulary याद करते हुए English↔French दोनों दिशाओं वाले cards बनाए, लेकिन cards कुछ सौ होते ही synonyms इतने बढ़ गए कि यह तकलीफ़देह हो गया।
    बाद में Katzumoto की Japanese सीखने की सलाह मानकर ebooks या web pages के पूरे paragraphs paste किए और सिर्फ़ एक शब्द छिपाने वाले cloze cards बनाए; वे आसान थे, लेकिन असरदार थे।
    फिर मैं और आलसी हो गया: कभी शब्द का सिर्फ़ आधा हिस्सा छिपाता, या शब्द को bold कर देता और context में लगभग याद आ जाए तो pass मान लेता—और यह उल्टा बेहतर काम करने लगा।
    जब कोई card आता और लगता “अरे, यह card फिर से?”, तो मैं उसे delete कर देता; और 3 बार गलत होने पर Anki को उसे permanent suspend करने के लिए set कर दिया। अगर वह शब्द सच में जानना ज़रूरी होता, तो जल्द ही किसी बेहतर context में फिर दिख जाता, इसलिए समस्या नहीं थी, और मेरी French vocabulary तेज़ी से बढ़ती रही।
    मुझे लगता है सबसे बड़ा सुधार बेहतर spaced repetition algorithm से ज़्यादा card format सुधारने से आएगा, और सच कहें तो उपयोगी होने के लिए “बहुत आसान” cards बनाना आश्चर्यजनक रूप से कठिन है। यह तीन भाषाओं में Anki के 35,000+ repetitions के अनुभव के आधार पर कह रहा हूँ।

    • SRS को सही तरह से इस्तेमाल करने का यही तरीका है। हम जैसे geeks अक्सर ज़्यादा smart repetition algorithms या input तरीकों से 1% सुधार के पीछे भागते हैं, लेकिन असली failure mode कहीं ज़्यादा साधारण है: लोग छोड़ देते हैं
      मैंने अक्सर देखा है कि लोग कुछ सीखने के पहले महीने में Anki में हज़ारों cards ठूंस देते हैं, और एक-दो महीने बाद review load से दब जाते हैं; review कामकाज जैसा लगने लगता है और वे छोड़ देते हैं।
      फर्क डालने वाली सलाह दो हैं: cards को थोड़ा ‘बहुत’ आसान बनाइए, और कौन से cards डालने हैं इसमें काफ़ी चयनशील रहिए।
      जब आप पहली बार card बनाते हैं, तो आप उस topic को अभी-अभी पढ़ रहे होते हैं और वह दिमाग़ में ताज़ा होता है, इसलिए अपने वर्तमान version के लिए मज़ेदार और challenging card बनाने का मन करता है। लेकिन 1–2 हफ्ते बाद ऐसा card बेहतर होता है जो भ्रमित करने के बजाय memory को हल्का-सा touch करे।
      पूरी किताब के sentences को जस का तस Anki में डालने के बजाय, orchard में टहलने की तरह धीरे-धीरे देखिए और सिर्फ़ सबसे अच्छे एक-दो apples चुनिए। सड़े हुए apples—यानी boring या बहुत मुश्किल cards—पूरे deck को दूषित कर देते हैं और आपको review से ही बचने पर मजबूर करते हैं।
    • मैंने उल्टा किया है। एक भाषा में Anki के 70,000 repetitions किए हैं, और context को ध्यान से जोड़ना ज़्यादातर card बनाने के समय की बर्बादी जैसा लगा।
      Review आमतौर पर तेज़ी से निकल जाते हैं, इसलिए प्रति card learning time में creation time surprisingly बड़ा हिस्सा ले लेता है। आजकल मैं context कम से कम डालता हूँ, और dictionary plugin जो basic simple cards बनाता है, वे अक्सर काफ़ी होते हैं।
      Card के front पर खास तौर पर context जोड़ना लगभग हमेशा तभी होता है जब वह कोई ऐसा technical term हो जो उसी context में दिखता है—यानी independently सीखने लायक नहीं होता।
      हालांकि आलसी रहना और अपने साथ उदार होना अच्छा है, ऐसा मुझे लगता है। Answer grade करते समय भी native-level perfect mastery नहीं, बल्कि क्या मैंने वास्तविक confusion से बचने लायक समझ लिया है—इसी आधार पर काफ़ी ढीलेपन से judge करता हूँ।
    • मूल SuperMemo के SRS cards लिखने के 20 नियम खज़ाना हैं: https://www.supermemo.com/en/blog/twenty-rules-of-formulating-knowledge
      वे card quality को काफ़ी बेहतर कर देंगे।
    • Guitar सीखते समय भी मैं कुछ ऐसा ही सोचता हूँ। एक problem को दिमाग़ से कई तरीकों से handle करवाना अच्छा हो सकता है।
      उदाहरण के लिए fretboard notes को spaced repetition से brute-force किया जा सकता है, लेकिन असल में context मिलाना ज़्यादा प्रभावी रहा।
      किसी हफ्ते आलस में सिर्फ़ note names drill करता हूँ, दूसरे हफ्ते Hungarian scale जैसी अजीब scales से खेलता हूँ, और किसी और हफ्ते arpeggio chords या power chord progressions, या किसी खास गाने की sound/feel recreate करने की कोशिश करता हूँ।
      समय के साथ दिमाग़ connections बनाने लगता है। “यह तो बस G minor scale है”, “यह G major scale है, बस वे notes skip कर रहा है”, “इस pattern से क्या वैसा play कर सकते हैं?”—ऐसी समझ आने लगती है।
      यह भी अजीब लगता है कि जो मैं जानता हूँ उससे कहीं तेज़ी से यह एहसास बढ़ता है कि मैं क्या नहीं जानता। फिर भी सोच रहा हूँ कि कोई spaced repetition algorithm इस्तेमाल करूँ जो 5–10 मिनट के guitar tasks दे, ताकि muscle memory और neural connections दोनों साथ बढ़ें।
    • Language learning के लिए Anki को लंबे समय से रुक-रुककर इस्तेमाल करता आया हूँ, और हाल में online university courses की पढ़ाई में इस्तेमाल कर रहा हूँ।
      शायद content सिर्फ़ language से ज़्यादा विविध है, इसलिए card format का प्रभाव बहुत ज़्यादा महसूस होता है। दूसरों के बनाए decks में भी मैं answer side के wording को अक्सर सुधारता हूँ, और retention में महसूस होने लायक फर्क पड़ता है।
      संक्षिप्त और natural flow वाले answers बेहतर चिपकते हैं। अगर कोई card awkward लगे, तो बिना हिचक उसे सुधारना बेहतर है।
  • Anki से मैंने foreign language के दसियों हज़ार शब्द याद किए हैं, और card में picture हो तो शब्द याद रखने में हमेशा मदद मिली।
    अभी मैं परिवार के साथ खेले जाने वाले quiz game के 750 cards याद करने का थोड़ा मूर्खतापूर्ण project कर रहा हूँ। ये वे cards हैं जिनमें हर सवाल का जवाब कोई year है। जैसे: “Coca Cola Light किस साल आया?”
    Midjourney से card images बनाने पर याद करना बहुत आसान हो जाता है।
    मैं हर century के लिए एक representative person वाला system इस्तेमाल करता हूँ। Einstein 1900–2000 को दिखाता है, Marie-Antoinette 1700–1800 को।
    Objects decade को दिखाते हैं। 60s की car मतलब 60s, shoulder-pad jacket मतलब 80s, इसी तरह। आख़िरी digit को भी इसी तरह handle करता हूँ।
    Midjourney से इन elements को cartoon-style image में बनवाता हूँ, और सबसे मज़ेदार या बेतुकी image save करके Anki card के back में डालता हूँ। Image अक्सर year की तुलना में ज़्यादा आसानी से याद आ जाती है।

    • तीन बातें हैं। पहली, image-based mnemonic PAO के बारे में देखना अच्छा रहेगा।
      दूसरी, जिन real situations में image नहीं होती, उनमें recall खराब हो सकता है, इसलिए समय-समय पर image के साथ और बिना image के अलग-अलग test करना चाहिए।
      तीसरी, जिज्ञासा है कि क्या वह quiz Trivial Pursuit है। मेरे एक दोस्त ने original Genus edition के सारे cards जानबूझकर याद कर लिए थे।
    • मैं अभी geography में यही काम कर रहा हूँ—flags, capitals वगैरह। ज़्यादातर quiz nights में यह शायद +5 जैसा advantage दे देगा।
    • वह system brilliant है। Dates हमेशा मुश्किल रही हैं; आगे से यह idea चुरा कर इस्तेमाल करूँगा।
  • दिलचस्प। बेंचमार्क के मुताबिक, इस algorithm का इस्तेमाल करने पर classical Anki algorithm की तुलना में 20~30% कम cards review करने पड़ते हैं
    कुछ दिन पहले मैंने https://python.cards में इस्तेमाल होने वाले classical SM-2 algorithm की Python implementation public की थी, और शायद इसे FSRS पर switch किया जा सकता है: https://github.com/vlopezferrando/simple-spaced-repetition

    • python.cards अच्छा लग रहा है। कुछ examples और जोड़ दिए जाएँ तो अच्छा होगा
      यह भी जानना चाहूँगा कि web app को open source करने की संभावना है या नहीं। यह किसी खास domain में “students X सीख रहे हैं” जैसे तरीके से flashcards दिखाने का लोकप्रिय तरीका बन सकता है
  • विवरण से लगता है कि FSRS अब भी हर card के साथ सटीक review date जोड़ता है। इसी feature की वजह से मैंने Anki छोड़ दिया था
    मैं college student नहीं हूँ और कोई exam भी नहीं दे रहा, इसलिए बस जब मन करे तब practice करना चाहता हूँ। Sessions के बीच लंबे gaps हो सकते हैं, और मैं यह महसूस नहीं करना चाहता कि pending cards जमा हो रहे हैं
    Anki बेहतरीन app है, लेकिन review dates लगाने के बजाय काश कोई ऐसा algorithm होता जो cards को random sample करे, मगर इस probability के अनुपात में चुने कि उन्हें urgent review की कितनी जरूरत है
    https://github.com/fasiha/ebisu जैसी approach Anki plugin के रूप में संभव हो, या खुले card format का इस्तेमाल करने वाली कोई मिलती-जुलती app हो, तो अच्छा होगा

    • लेकिन memory इस तरह काम नहीं करती। जैसा आप suggest कर रहे हैं, memory को hold पर नहीं रखा जा सकता। FSRS personalized forgetting curve follow करता है, इसकी वजह है
    • जब मन करे practice करना, और sessions के बीच लंबे gaps होना—यही तो SRS पहले से करता है
      बस, “pending” सब clear कर देने पर आप फिर जब चाहें practice नहीं कर सकते; दोबारा practice available होने तक एक तय समय इंतजार करना पड़ता है
    • मैंने ऐसी ही आधी-अधूरी app बनाई थी, और यह बहुत खराब चली
      जो facts याद थे, उन्हें repeat करना annoying था, और जो भूल गए थे उनमें से काफी कुछ पूरी तरह भूल चुका था। इसलिए repetition का मतलब लगभग नहीं बचता था और progress बहुत धीमी थी
      मूल बात यह है कि लगभग भूलने से ठीक पहले repeat करना होता है, और यह deadlines और scheduling के बिना मुश्किल है
    • Phrasing.app में हम ठीक ऐसा ही तरीका बना रहे हैं। शुरुआत में ebisu इस्तेमाल किया था, लेकिन आखिर में FSRS fork को काफी modify करके इस्तेमाल करने लगे
      हम वास्तव में deadlines इस्तेमाल नहीं करते, और requested कुछ analytics features को छोड़ दें तो users को कई difficulty levels में बनाए रखने की कोशिश करते हैं
      हमेशा 100% pending खत्म करने की तुलना में आगे बढ़ना हमारे लिए ज्यादा महत्वपूर्ण है। कोई word सचमुच important हो तो user उसे favorite कर देगा या फिर से देख लेगा
      यह public flashcard app नहीं है, और foreign-language automatic sentence mining पर ज्यादा focused है। फिर भी FSRS को modify करने के अनुभव पर सवालों के जवाब देने में खुशी होगी
      product के बारे में https://blog.phrasing.app/phrasing-first-look/ पर देखा जा सकता है
    • Anki में आप filtered deck इस्तेमाल करके cards को relative overdue level के हिसाब से sort कर सकते हैं
  • मैं FSRS को 3 महीने से इस्तेमाल कर रहा हूँ, और पुराने SM2 scheduling algorithm को trial-and-error से tune करने की तकलीफ आखिरकार खत्म हो गई है
    हर deck की content optimal retention rate पर बड़ा असर डाल सकती है, और अब हर कुछ महीनों में हर deck के weights को retrain करने पर यह ठीक से adapt हो जाता है
    अगर आप large-scale real-world spaced repetition science का rigorous analysis देखना चाहते हैं तो paper[0] भी पढ़ने लायक है
    extensive benchmarks की वजह से, ज्यादातर लोगों को अपनी collection के हिसाब से weights फिर से tune करने से तब तक ज्यादा फायदा नहीं होगा जब तक reviews हजारों में न जमा हो जाएँ। author 1,000+ की सिफारिश करता है
    Cards देर से करने पर भी यह अच्छा काम करता है। Recall probability stability और last review time पर based होती है, और due date निकल जाने के बाद भी अगर आपने याद कर लिया, तो stability को थोड़ा और लंबा update किया जाता है
    [0] https://dl.acm.org/doi/10.1145/3534678.3539081?cid=99660547150
    [1] https://github.com/open-spaced-repetition/fsrs4anki/wiki/The-Algorithm

  • मुझे flashcards hobby की तरह पसंद हैं, इसलिए मैं रोज़ कई spaced repetition apps मज़े के लिए इस्तेमाल करता हूँ। FSRS भी इस्तेमाल किया है और अच्छा है, लेकिन अभी तक latest SuperMemo जितना नहीं है
    अगर वही या मिलती-जुलती सामग्री दो या ज़्यादा apps में डालकर देखें, तो फर्क दिखता है। फिर भी FSRS अभी उपलब्ध लगभग हर चीज़ से कहीं बेहतर है, और लगता है जल्द ही SuperMemo से भी बेहतर हो जाएगा
    Mochi Cards करीब 1 साल इस्तेमाल किया; बस ठीक-ठाक था, और default Anki installation से थोड़ा बेहतर। Mnemosyne भी वैसा ही है। SuperMemo SaaS app भी ठीक है, लेकिन language material को organize करने का तरीका मुझे पसंद नहीं
    भाषा की vocabulary के लिए Clozemaster इस्तेमाल करता हूँ, और सही जवाब देने के बाद उस वाक्य को SuperMemo में डाल देता हूँ। क्योंकि SuperMemo algorithm इतना ज़्यादा बेहतर है। हर शब्द के लिए ChatGPT explanations भी होते हैं, उन्हें भी SuperMemo में डालता हूँ
    सबसे मुश्किल हिस्सा निश्चित रूप से अच्छे cards बनाना है। और ideas पाने में http://arxiv.org/abs/2401.01257 और https://rust-book.cs.brown.edu मददगार हैं
    मुझे अभी तक ऐसा flashcard program नहीं मिला जो SuperMemo जितनी तेज़ी से cards बनाने दे। SuperMemo में text का chunk paste करें(ctrl-n), cloze deletion के लिए शब्द चुनें, फिर alt-x दबाएँ। उसी text piece में यह कई बार कर सकते हैं, और हर बार नया cloze card review में चला जाता है
    दूसरी apps में ज़्यादातर cards एक-एक करके बनाने पड़ते हैं। शायद इसलिए कि वे card और deck वाले metaphor से बहुत मज़बूती से बंधी हैं। SuperMemo हर चीज़ को tree structure में organize करता है, जिससे बड़ा फर्क पड़ता है। असल में organize करना ज़रूरी भी नहीं है, लेकिन लोग ऐसे behave करते हैं जैसे सीखी हुई सामग्री दिमाग में साफ-सुथरे decks में classify हो जाएगी

    • Anki में Debian के हिसाब से यह Ctrl-Alt-C है
    • Mochi में भी लगभग यही है। n से नया card बनाएँ, ctrl-v से text paste करें, शब्द चुनें, फिर ctrl-l से cloze बनाएँ, और ctrl-[n] से 0~9 नंबर का cloze group बनाएँ
      हर cloze group का अपना “card” होगा
  • spaced repetition की अहमियत देखते हुए, Anki के उलट क्या modular approach की ज़रूरत नहीं है?
    क्या ये तीन चीज़ें अलग-अलग नहीं हैं?

    1. cards या cards का subset
    2. उन cards के साथ interaction का record
    3. वह algorithm जो उस record के आधार पर cards दिखाता है और फिर record में नई entries जोड़ता है। संभावित रूप से यह जरूरत के समय calculate करने वाला तरीका हो सकता है
    • Anki FSRS अब user द्वारा दिए गए input पर ही आधारित just-in-time calculation algorithm के ज़्यादा करीब हो गया है
      data structure सख्ती से modular नहीं है, लेकिन मौजूदा Anki decks और extensions की compatibility बनाए रखते हुए practical तौर पर जितना संभव है, उससे कहीं करीब है
      असल में अब एक button है जो केवल history और current algorithm parameters के आधार पर सभी intervals और difficulties को पूरी तरह फिर से calculate करता है। अगर आप पहले से FSRS इस्तेमाल कर रहे हैं और parameters नहीं बदले हैं, तो recalculation का कोई असर नहीं होगा, क्योंकि वह हर review के बाद incremental calculation जैसा ही है
      सिद्धांत रूप में इसे just-in-time calculation करने वाला pure function माना जा सकता है, और existing compatibility व performance की वजह से generated data को cache करने वाला रूप समझा जा सकता है
  • इससे जुड़ा थोड़ा shameless self-promotion: मैंने एक free open source tool बनाया है जिससे YouTube videos से Anki cards बनाए जा सकते हैं: https://youtube2anki.fly.dev/
    feedback चाहिए। code GitHub पर है: https://github.com/vacmar01/youtube2anki

    • बढ़िया है। पूछ सकता हूँ कि आप इसे किस तरह के videos के लिए इस्तेमाल करते हैं?
  • FSRS और Anki के बारे में Xiaojun से कई बार बात हुई है। Anki+FSRS जैसे traditional spaced repetition systems में learner अक्सर knowledge को हमेशा उसी context में review करते हैं, जिससे वे knowledge को किसी बड़े network के हिस्से की बजाय isolated units के रूप में समझ सकते हैं
    उदाहरण के लिए, शब्दों को अलग-अलग सीखना real life में भाषा इस्तेमाल करने के लिए पर्याप्त तैयारी नहीं है। असली situations में context, collocations और usage बड़ी भूमिका निभाते हैं
    isolated repetition से बेहतर language learning तरीका यह है कि words को अलग-अलग contexts और combinations में expose किया जाए, ताकि learner समझ सके कि words naturally chunks और sentences में कैसे बनते हैं
    इसलिए language learning में Anki cards की जगह real-life के short videos दिखाने वाली चीज़ बना रहा हूँ। हर video एक छोटा scenario है, जो दिखाता है कि real situations में भाषा कैसे इस्तेमाल होती है
    students सिर्फ शब्द याद नहीं करते, बल्कि visual cues और gestures तक शामिल natural context में उनका usage देखते हैं। यह approach words और expressions के real application को समझने में मदद करती है और learning को ज़्यादा immersive और effective बना सकती है। क्योंकि foreign language सीखने में failure की मुख्य वजह continuity बनाए न रख पाना है
    Anki में एक और कमी है: “याद है?” नहीं, बल्कि real situation-based quizzes की। students को जो सीखा है उसे मज़ेदार और low-pressure environment में apply करना चाहिए
    SRS algorithm solution का सिर्फ एक हिस्सा है, कोई cure-all नहीं। memory में emotion का encoding पर असर जैसे कई factors होते हैं। first kiss या graduation day याद रखने के लिए SRS की ज़रूरत नहीं होती
    लोग बिना किसी SRS के अपनी मातृभाषा fluently सीख लेते हैं, लेकिन foreign language में SRS इस्तेमाल करने पर भी ज़्यादातर लोग fluent नहीं हो पाते

    • context में सीखने और context को diversify करने की बात valuable है, लेकिन “लोग Anki या grammar study के बिना अपनी मातृभाषा सीखते हैं” वाली बात हमेशा खटकती है
      first-language acquisition और second-language acquisition सेब और bacon जितने अलग हैं। बच्चे और adults के brains अलग होते हैं, और जरूरतें, abilities व context भी बहुत अलग होते हैं
    • सही। Refold method की तरह SRS और immersion learning को combine करने वाला तरीका मुझे ज़्यादा पसंद है