世界を動かす技術を、日本語で。

間隔反復システムが進化した

概要

  • Spaced repetition は、知識定着を最大化するための反復学習システムであることを説明。
  • FSRS という新しいアルゴリズムが従来方式より効率的でストレスが少ないことを強調。
  • 学習カードのスケジューリングと、 Anki などの主要ソフトウェアでの実装状況を紹介。
  • WaniKaniやBunproなど他サービスの問題点と Ankiの優位性 を比較。
  • さらなる学習や情報源へのリンクを提示。

スペースドリピティション(間隔反復)とFSRSの進化

基礎:知識習得と間隔反復

  • どんな分野でも 習得の基盤は知識 (事実・ヒューリスティクス・問題解決法)であることを確認。
  • 本業であれば 反復的な実務経験 で自然に身につくが、パートタイムや趣味分野では練習量が不足しがちであることを指摘。
  • 学校教育や副業、日常の情報収集(ポッドキャストやHacker Newsなど)も 記憶定着 の視点で見直すことを提案。
  • 知識の長期保持には spaced repetition system(SRS) が有効であることを確認。
  • SRSは フラッシュカード形式 で、記憶の定着具合に応じて復習間隔を調整するソフトウェアであることを説明。

従来のアルゴリズム:SuperMemo-2の限界

  • 旧来のSRS(例:SuperMemo-2)は 1日後→6日後→15日後→37.5日後 といった指数関数的な間隔で復習をスケジューリングすることを説明。
  • 正解を続ければ 復習回数が減少 し、効率的に多くの知識を管理できる利点を紹介。
  • 一方、間違えた場合は 最初の1日にリセット され、復習間隔が短くなりストレスが増加する傾向を指摘。
  • このアルゴリズムの根拠は 個人実験に基づく恣意的なものであり、すべての知識に最適とは言えない ことを確認。
  • 忘却曲線の理論に基づき、「 忘れる直前にテストする」ことが理想だが、従来方式では不十分であることを示唆。

FSRS:機械学習による最適化

  • FSRS(Flexible Spaced Repetition Schedule) は、機械学習を用いて「忘却確率が90%になるタイミング」を予測し、最適な復習間隔を算出するアルゴリズムであることを説明。
  • FSRSは 難易度・安定性・再現性 という3つの関数を用いて、各カードごとにパラメータを最適化することを強調。
    • 難易度:カードごとの難しさ(1~10)
    • 安定性:100%から90%まで想起確率が下がるまでの期間
    • 再現性:任意の日数後の想起確率
  • カーブフィッティングには 21のパラメータ を使用し、過去の大量レビュー履歴から初期値を設定することを確認。
  • 自分自身のレビュー履歴でFSRSオプティマイザを実行することで、 個人最適化 が可能であることを提案。
  • ユーザーは 希望する保持率(デフォルト90%) を設定し、FSRSが負荷と知識量のバランスを最適化することを説明。

FSRSの実践とAnkiでの導入

  • FSRSを使うには、 対応ソフトウェア(例:Anki) が必要であることを案内。
  • Ankiは 2023年11月リリースのバージョン23.10 からFSRSを標準サポートしているが、現時点ではデフォルト設定ではないため、各デッキごとに有効化・パラメータ最適化が必要であることを説明。
  • FSRS開発者の Jarrett Ye がAnkiコミュニティで発表し、アドオンから公式機能へと昇格した経緯を紹介。
  • FSRS導入後は レビュー負担が軽減 し、間違えた際のストレスも大幅に減少、記憶定着への信頼度が向上することを体験談として報告。

他サービスとの比較:WaniKani・Bunproの問題点

  • WaniKaniやBunproでは 固定間隔(例:4時間→8時間→1日→2日→…→4ヶ月→二度と出題されない) を採用しており、ユーザーやカードごとの調整が一切ないことを指摘。
  • 不正解時も リセットではなく1~2段階戻るだけ であり、FSRSやSuperMemo-2よりも記憶保持率が低下しやすいことを批判。
  • 最終的には「 二度と出題されない」ため、知識の恒久的な保持が難しく、ユーザーの学習意欲を損なう恐れがあることを強調。
  • こうした理由からAnkiへの移行を決断した体験を共有。

総括:Ankiの優位性と学習効率

  • Ankiは UIの使い勝手やデッキ作成の手間 など課題はあるが、 効率的な学習と長期記憶 の観点で他サービスを圧倒していることを再確認。
  • 頻繁なアップデートと柔軟性により、 知識獲得の全ステージをサポート できることを評価。
  • Ankiの使い方をマスターすることが、 一生モノの学習基盤 となることを提案。

さらなる学習のための情報源

  • Spaced repetition全般の価値理解: Augmenting Long-term Memory (Anki活用による記憶の選択化)
  • Andy’s notesの Spaced repetition memory system (関連考察・リソース集)
  • アルゴリズム進化の歴史: Abridged history of spaced repetition
  • FSRS開発者の体験談: How did I publish a paper in ACMKDD as an undergraduate?
  • Anki統合までの経緯: The History of FSRS for Anki
  • FSRSの詳細解説: Spaced repetition algorithm: a three-day journey from novice to expert

Hackerたちの意見

スペースドリピティションはもう20年も流行ってるよね。アプリが何十個もあって、講義も何千もあるけど、実際にはそれが全ての問題を解決するわけじゃないんだ。別に悪いわけじゃないけど、結局みんな他の教育パターンと同じように続かなくなっちゃうんだよね。数年前に「もしGoogleやAppleが本当に子供たちのことを考えてるなら、スペースドリピティションのアンロックシステムを作るべきだ」と思ったことがあるんだ。毎週カードを作って、正しく答えないとスマホに入れないみたいな。もちろん、いくつかのバイパスシステムや他のルールが必要だけどね。多分、アンロックした後にポップアップが出るようにすれば何とかなるかもしれないけど、みんなそんなのインストールしないだろうな。

もしそれが全ての問題を解決すると思ってるなら、苦労することになるよ。結局、自分が努力しなきゃいけないんだから。それはレバーか滑車みたいなもので、特別なものじゃないよ。

別に悪いわけじゃない それどころか、ものすごく良いところもあるよね。このコメントは、全ての問題を解決するわけじゃないからといって、多くの人にとって変革的で非常に役立つものを軽視しているように感じる。

この制度の下で作られたフラッシュカードは全く役に立たないと思う。例えば「A」と書いてあって答えが「B」とか、単純な数学の問題みたいな。言い換えれば、グッドハートの法則だね。

スペースドリピティションは時間を最適化してるけど、自己規律やモチベーションの最適化はされてないんだよね。時間が限られているときには非常に効率的だけど、モチベーションを消耗させちゃう。もしモチベーションが限られているなら、燃え尽きたり失敗したりする原因になる。頭の怪我があったにもかかわらず、GCSEやAレベルでの成功はアンキのおかげだし、逆に燃え尽きすぎてギャップイヤーを取ることになったのもアンキのおかげ!ギャップイヤーは楽しんでるけど、アンキがなかったらほぼ必要不可欠だったね。

SRSにはいくつかのUXの問題があって、それが高い摩擦を生んでるんだ。1) カード作成にかかる時間 2) 自己採点の必要性 3) プロンプトと回答の一対一のマッピングを作る 4) 自己学習者なら、まず自分で教えなきゃいけない(理解、足場作りなどとも呼ばれる)もっと根本的に言うと、SRSは超能力じゃなくて、直接的なプロンプトの取得に特化してるだけ。一般化が弱い。知識のグラフを作ることも、知識のビット間のエッジの連鎖で、ここではあまりうまくできてない。再コレクションの知識と論理モデルの知識には、非常に深い根本的な違いがあると思う。再コレクションは辞書のアクセスに似ているようで、人間の再コールの時間を記録したら、みんな一定だと思う。でも、数学的概念のような論理モデルの知識を学ぶのは、全く違って、計算にかかる時間も全然違う。SRSの支持者は、論理モデルにも事実が必要だと言うだろう、例えば公式や補題など。これは本当だけど、もし以前に理解していたら、2回目はもっと早く理解できるはず。だから、SRSの実用性は、非常によく整理されてラベル付けされたノートを持つことよりはかなり進んでいるけど、天才になるにはまだまだ遠い。

数十のアプリ、何千もの講義があって、実際には銀の弾丸ではないことがわかった。君はそう言うけど、私は6ヶ月くらい中国語を学んで、1年か2年の間に時々レビューをして、8年か9年も中国語のレビューをしていないけど、まだかなりのことを思い出せるよ。だから、私にはかなりうまくいった。

いろんなアプリがあって、何千もの講義があるけど、結局それが特効薬ってわけじゃないんだよね。特効薬を定義してない時に言うのは簡単なことだよ。ダイエットが特効薬じゃないって言うのと似てる。俺は6年以上、間隔を空けた復習を使ってるけど、すごく変わったよ。

そう言うけど、医学生の勉強法を完全に革命的に変えたんだよね。確か、効果があまりにもすごくて、いくつかのテストの構造を変更しなきゃいけなかったとか。多言語話者は何年もSRSを使ってるし。人がうまくいかない時の本当の問題は、技術的なことじゃなくて心理的なことだと思う。モチベーションのためにオゼンピックを作ったら大儲けできるだろうけど、もうスケジュールされた物質になってるんじゃないかな。依存性や乱用の可能性がないものがあればいいけど、もしくは誠実さのためのオゼンピックとか。

結局それが特効薬ってわけじゃないんだよね SRSについて気になることの一つは、記憶と語学習得の違いを理解している人からの注目が足りないことだよ。テスト対策をしている人や、記憶の成果から内面的な報酬を得ている人からはたくさん注目されてるけど。記憶は俺の目標じゃない — スペイン語とフランス語の読解力を上げたいんだ — でも、語彙や例文を練習するのはすごく役立つと思う。建設で足場を使うのに例えてみると、足場は建物じゃないし、建物の目的を果たすものじゃない。でも、建物を建てたり、拡張したり、改修したりする必要がある時、時にはその周りに足場を作ることで、すごくスピードアップできることがある。記憶を使って語学学習を助けるためのより良いガイダンスがあればいいのにと思うけど、世の中は記憶を目標にして満足している人(テスト対策や内面的な満足のため)と、記憶をまったく無視する人に分かれているみたい。

事実を学ぶための特効薬だよ。実際に学ぶことはしなきゃいけないけどね。誰も、知識を脳にマトリックススタイルでダウンロードできるなんて主張してないよ。特効薬じゃないって言うなら、銃を装填して撃たなきゃいけないからってことだろうね。

もう10年くらいAnkiを使ってるけど、私が思うに本当に必要な改善点はデザインやUIに関することだけだと思う。アルゴリズムが最適化されてるかどうかは、実際のユーザーインターフェースが潜在的なユーザーにとって退屈に見えるなら、機能的には関係ないんだよね。Ankiにはパワーユーザー向けのオプションがあるのはいいけど、普通の人には直感的じゃないのが残念だな。スペーシング効果自体は人間の学習において過小評価されてる側面だから、まるでズルしてるみたいに感じることもある。

Ankiが大好きだけど、まさに「エンジニアがデザインした典型的な例」だよね。機能は強力で深みもあるけど、見た目がひどくて、使い方を理解するのに時間がかかる。HNを読むようなテックオタクなら何とかできるかもしれないけど、普通のDuolingomaxxingの人には無理だね。

Duolingoに比べると、アプリはかなり退屈だよね。それでも何年も使い続けてるけど、ちょっとゲーミフィケーションを加えた方がいいのかなとも思うことがある。例えば、連続使用の記録とか、効果音とか。もちろん、それはオプションにすべきだけどね。

スペースドリピティションやアンキについて何年も読んできたけど、実際に何かに試すことはできなかった。何か試すのにいいおすすめがあるかな?

AnkiDroidのメンテナーです:今、レビュー用の新しいデザインに取り組んでいます(現在、製品アプリの開発者オプションで利用可能です)。私たちのほとんどは、見た目に満足していないと思いますが、リソースが非常に不足しています。Androidのことに関わりたいと思ったら、気軽にメールしてください。

もっと良いUIがあればいいんだけど、Ankiを使わない理由は使いにくいからじゃないんだよね。価値を得るまでの時間が長いからで、実際の価値は長期的な規律とモチベーションからしか来ない。デザインに関係なく、Ankiで成功する人は面倒なUIでも乗り越えるから、デザインが良くなればファネルの上部は増えるけど、コンバージョンは劇的に減ると思う。

一番の不満は、エディタウィンドウが使いにくいことだね。俺的には、ここがリデザインされるべきメイン部分だと思う。他にも変なところがあって、メインウィンドウのタブバーがタブバーとして機能してないんだ。レビュー画面には「再試行」と「良い」だけの二ボタンモードが組み込まれるべきだと思うし、これを追加するアドオンはすごく人気があるから、実装は簡単だと思う。

ああ、SRS学習でみんながどんな改善を望んでいるのかずっと気になってたんだけど、このスレッドは最高だね!Ankiのコアは間違いなくしっかりしてるけど、そのパワーが非パワーユーザーにはハードルに感じることもあるみたい。あと、「退屈」って必ずしも悪いことじゃないと思う。学ぶのは、しんどいトレーニングみたいに感じるときが一番いいって聞いたことがあるし、同意するな。個人的にデザインの試みでこれらの質問を探ってるんだ。興味がある人がいたら、ここに初期の実験を投稿したよ: https://dribbble.com/shots/25737616-Descartes-Design-Flashca...

ごめん、記事は読んでないけど、自分の経験がいいエピソードになると思ったんだ。Ankiを数年使って、約18,000の日本語単語を覚えたよ。難しいけど、約5,000の漢字を読むことができるようになったと思う。日本で勉強していたとき、漢字の読みは—理解とは混同しないでね!—みんなよりもずっと上だった。クラスメートのほとんどは韓国人か中国人だったしね。10分の自由時間—毎日の電車の中でやってた—でこれだけできるんだよ!練習を続けてね。無知でいることは、知識を増やすための第一歩だから。

単語の認識と全体の文の理解の間には驚くほどのギャップがあるよね。AnkiとYouTubeの動画を組み合わせてペルシャ語を学んでるけど、時々、文の中の単語は全部認識できるのに、全体の意味を組み立てられない不思議な状態になることがある。

1日10分で18000語と5000漢字を覚えたなんて全く信じられない。年間で60時間、5年間で300時間ってことだよね。それだと、1時間に約70語か漢字、つまり1語や漢字に1分もかからない計算になる。これは母国語話者をはるかに超える速度だよ。アンキは効果的だけど、こんな非現実的な方法は必要ないよ。

この原則に基づいてツールを作ったよ!毎日何時間もウェブをブラウジングするから、知識レベルに合わせた文を学んでいる言語に翻訳するブラウザ拡張機能を作ったんだ。これで常に少しずつ浸透学習ができるようにしてる。Aレベルの勉強でも「アンキに1日10分」戦略を使ったけど、2年前に学んだことが数ヶ月前に学んだかのように新鮮に感じられて、復習がすごく楽になったよ。[0] https://nuenki.app

Ankiに何度も挑戦してみたけど、結局続かないんだよね。数年ごとにまた興味を持つオンオフの繰り返しで、今までに5回くらいやったかな。だいたいこんな感じで進むよ: * 何かを覚えたいと思う * 手元にあるデッキがあまり良くないことに気づく * ネットで調べると、自分のデッキを作るのが本当の利益を得る方法だって言われる(これがかなりの時間を要する) * Ankiを最大限に活用する方法を調べると、デフォルト設定がひどいってみんなが言ってるけど、最適な設定については意見がバラバラ * なんとか折衷案を見つけようとするけど、カードの難易度を「評価」するオーバーヘッド(それが複雑な設定とどう関わるかもまだ完全に自信がない)がすごく気を散らす要因になって、慣れない * 数日サボると、積み上がったカードの量に圧倒されて、設定に自信が持てなくなる(それが1年以上先のカードの表示にも影響する) * 結局、やる気がなくなっちゃう。多分、またこのサイクルを始めることになると思う。うまくいってほしいんだけど。これを避けるためのアドバイスないかな?今回は実際にいくつかのデッキにお金を払うつもりで、今は「自分のデッキを作る」ことはスキップするつもり。

6年前に「アンキが私には合わない理由」って記事を書いたんだけど、これは新しいアルゴリズムが実装される前のことなんだ。アンキは私が言った他の問題をまだ抱えていると思うけど、これは私のポイント(3)に直接関係してる。もう一度試してみて、他のポイントがまだ問題か、アルゴリズムによるフラストレーションが私の痛みの大部分だったのかを確認しないとね。

Aレベルの途中で拡張機能を通じてFSRSに切り替えたよ。自分の学習パターンに合わせてカスタマイズするために、ちょっとしたGoogle Colabノートブックも使ったんだけど、それがメインバージョンに統合されているかは分からない。レビューの必要な量が半分になって、バーストで出てこないから、すごく快適だった。最初は信じられなかったし、効果が薄れるんじゃないかと心配したけど、逆に効果が同じかそれ以上だった。もう一度試してみることを本当におすすめするよ!

WaniKaniは、今まで見た中で最高のUIを持つSRSソフトウェアだけど、古いアルゴリズムに悩まされてるね。君の指摘や記事の4つ目の見出しの懸念に関しては、全部当てはまるよ:> 最後のインターバルの後にカードを二度と見ないっていう考えは恐ろしい。知識を常に失っているってことだから。

俺も似たような問題があったな…Ankiは短期記憶(単一セッション)の間はガンガン攻めてくるのに、保持できるまでには何週間も何ヶ月もかかることがあった。再度取り組むと、完全に忘れてて、また最初から学び直し。試した時にそのことを言ったら、みんなに反論されたんだ。ほとんどの間隔反復アプリはAnkiを聖なる使者のように扱ってたから、結局間隔反復を完全に諦めちゃった。

アンキについての個人的な不満:データモデルが好きじゃない。ノートのコレクションが必要だと思う(これはダウンロードしたり、LLMで生成したり、自分で作ったり、友達や生徒と共有したりするもの)。その上に学びたいカードのセットがあって、それはノートから派生することができる。大まかに言えば、テンプレートとどのカードが有効かの概念が含まれる。その上にスペースドリピティションの履歴とモデルがあるべきだと思う。特定のセッションでどのカードを勉強するかを制限する方法も必要だよね。(例えば、中国語や日本語を学ぶとき、書く練習をする時は鉛筆と紙が必要だけど、読む時は必要ないかもしれない。紙なしで練習する時は、書くカードをスキップしたいかも。)アンキはこれらのレイヤーを全く分けていないみたい。すべてが一つの巨大なデータベースになってる。インポートも不快だし、エクスポートも不快、共有も不快。UIで練習や編集以外のことをするのも不快。アンキを試すたびに、自分のデータをアンキの外で操作できないと詰まっちゃうんだ。こんな問題がないシステムってあるのかな?

そうだね、言語を学んでいるなら、レストランの単語のグループと、航空旅行に関する別のグループを持つといいよね。そうすれば、ユーザーはそれらを関連付けられる。

YCビジネスが生まれそうだね。改善の需要があって、すでにピッチもある。AIを取り入れれば、確実に成功するよ。

何を言ってるの?Ankiには「ノート」という概念があって、そこから1つ以上の「カード」が派生するんだよ。特定のカードタイプだけを持つカスタムデッキを簡単に作れるよ。

ノートのコレクションが必要だと思う(それはダウンロードしたり、LLMで生成したり、自分で作ったり、友達や生徒と共有したりするものかもしれない)。1つ以上のノートのコレクションの上に、学びたいカードのセットがある。これがAnkiのやっていることじゃないの?カードのコレクションがあって、各カードは1つ以上のデッキに含まれることができる。> 特定のセッションでどのカードを学ぶべきか制約をかける方法も必要だよね。それもデッキだよ。「日本語」デッキを持って、書き取りのための「日本語::書き取り」サブデッキを作ることができる。カードにタグを付けて、「Better Tags」を使って、アドホックなタグクエリでサブデッキを作り、学びたいサブセットだけを勉強することもできるよ。もっとデッキを作って、セッションで学びたいサブセットを勉強するのは君が求めていることに合わないの? > Ankiはこれらのレイヤーを全く分けていないように見える。すべてがモノリシックなデータベースだ。デッキは独立して共有、編集、作成、学習、推論できる別のファイルだ。「Ankiの間隔反復モデル」は、複数の(FSRSや古いもの)から明らかに分かれている。> エクスポートは不快だ。共有も不快だ。単なるファイル(実際にはzipファイル)だよ。それの何が不快なの? > Ankiを試すたびに、自分のデータをAnkiの外で操作できなくて詰まる。ほとんどのプログラミング言語には、Ankiデッキを外で操作するためのライブラリがあるよ。メディアや辞書のエントリーからAnkiカードを生成する日本の「マイニング」ツールの大きなファミリーなど、Ankiカードを生成してインポートできるツールが実際に何十もある。オープンソースで、クリーンなライブラリの抽象化があるから、データを取り出すのは簡単だよ。> これらの問題がないシステムはあるの?君が説明したすべての問題は、他のソフトウェアで私が経験したことだけど、Ankiは私のためにそれを解決してくれたから、私にとって「Anki」はそのシステムなんだ。

君がここで挙げたポイントが全部間違ってるなんてすごいよね、他のコメントでも触れられてたけど。しかも、Ankiは俺が触ったオープンソースソフトの中で一番ドキュメントが充実してるやつだよ。プログラミングできるなら、ChatGPTは基本的に君がやりたいことは何でもできるし、俺は自分のインサイトのためにSQLiteデータベースを定期的にデータマイニングしてる。

言語学習専用だけど、もしかしたら自分のhttps://thehardway.appモデルの方が君には合うかも(マークダウン風のノートの中にフラッシュカードがあるやつ)

データモデルについて君の言う通りだね。自分でフラッシュカードアプリを作ったから、Ankiが使っているデータベーススキーマを理解しなきゃいけなかったんだけど、結構不格好な部分が多いよね。でも逆に、目的に合わせて作られて、時間が経つにつれて成長していったんだろうなってのもわかる。(例えば、1行しかないテーブルがあって、いくつかのフィールドは単にJSON辞書になってる。)でも、テンプレートの使い方やクローズ削除の仕組みは本当に良いと思う。自分が作ったフラッシュカードアプリにはテンプレートはなかったけど、テキストを「隠す」ための非常に基本的なクローズ削除システムはあったんだ。それはすごく制限されていて、フロント/バックの組み合わせは1つだけだった。複数のテキストを隠すことはできたけど、同時に全部隠れちゃう。Ankiだと、隠すテキストのグループを複数作成できるから、同じノートから複数のフラッシュカードができるんだ(つまり、3つの別々のテキストグループを隠したら、3つの異なるカードができる)。今、Ankiのようにテンプレートやクローズ削除を取り入れるアップデートに取り組んでいるから、その部分が今はありがたく感じる。自分のデータベースについては、少なくとも今作っている新しいバージョンでは、各カードの個別の属性をそれぞれのテーブルに入れるスキーマを作ったんだけど、これは主にデバイス間で同期するために個別の属性を別々に更新できるようにする必要があったからなんだ。Ankiのスキーマを見ていると、同期が複雑だった理由がわかる(少なくとも初期のバージョンでは)本当にそのために作られてなかったからね。[1] https://www.freshcardsapp.com/

大学の時にこのアルゴリズムを使って、以下のように設定したんだ:縦に覚えるべきキーをリストしたワード文書を作成。PDFとして保存。注釈ツールがあるビューアでPDFを開く。各キーのすぐ隣のマージンにクリック可能なノートを作成。ノート欄に覚えるべき値を書き込む。クリック可能なノートをサイクルして、簡単に正解できたら、そのノートをマージンの左にドラッグ。サイクルしている間は、右端のものに集中。間違えたら、少し右に移動。一般的に、ノートは左に移動していき、全てに慣れるまで続く。どのノートを見て集中するかのバランスが自然に進行して、ずっと自分がコントロールしている感覚がある。Ankiのようなツールと比べると多くの欠点があるけど(例えば、ノートパソコンでしか使わなかった)、俺にはすごく合ってたから、他のツールに切り替えることはなかった。でも、これはAnkiがここで説明されているようなアルゴリズムを持つ前の話だから、今は違うかもしれない。

これは面白そうだけど、うまくイメージできてるか分からないな… 例のファイルとか持ってない?

誰かFSRSを試してみたい人がいたら、Open Spaced RepetitionではPython、Typescript、Rustの公式パッケージを提供してるよ。PY: https://github.com/open-spaced-repetition/py-fsrs TS: https://github.com/open-spaced-repetition/ts-fsrs RS: https://github.com/open-spaced-repetition/fsrs-rs 現在、ts-fsrsとrs-fsrsはFSRS 6をサポートしていて、py-fsrsも次の日かそのくらいにはFSRS 6をサポートする予定だよ。また、py-fsrsとfsrs-rsには過去のレビューからFSRSモデルを最適化する機能も含まれてる!

これをチェスブックのオープニングトレーニングのために間隔反復に使ったけど、Rustパッケージは素晴らしいよ。使いやすくて、ユーザーのトレーニング負荷をすぐに軽減しつつ、保持率も高く保てた。FSRSは最高だね。

Rubyの人たちへ — 新しいカードが60日間隔で作成される問題を修正するためにFSRS gemをフォークしたよ: https://github.com/arvindang/rb-fsrs これはここにリンクされているPython版から適応したものだよ。

プロのヒントだけど、LLMを使って学ぶなら、GoogleドライブのCSVに話してるトピックのAnkiカードを挿入するMCPツールを作るといいよ。それをスマホのAnkiデッキと同期させるんだ。これが俺にとってはゲームチェンジャーだった。LLMと一緒に作業する時は、まだ頭が悪くなる気がするし、結局は批判的思考をオフロードするために使ってる(疲れて怠けてる時にしか使わないことが多いけど)、どうしても使うなら勉強ツールとして使った方がいいよ。

ChatGPT 4oの音声モードは、基本的な中国語を学ぶのにすごく役立ってる。モデルの限界にはいつかぶつかると思うけど、部屋の中をウロウロしながら、いろんな物の名前を聞いたり、言葉が他の言葉と関連してるかを確認するのがめっちゃ楽しい。短い文を組み立てて、文法の即時確認ができるのも素晴らしい。ChatGPTにはまだMCPはないけど、レビューした内容を構造化した形式で生成するようにチャットに頼むことができるよ。

Pythonスクリプトを作って、次の日にレビュー予定のAnkiカードをチェックして、LLMにそのカード用の新しい文を生成させるようにしてるんだ。そうすることで、毎回新しい文脈で見ることができるから。理論的には「知っている」単語(カードではいつも正解する)でも、新しい文脈では認識できない問題に直面してたから、学ぶ時に文脈が変わることでこの問題が解決できることを願ってる。

LLMを使って学習しているなら、話しているトピックに関するAnkiカードをCSV形式で挿入するMCPツールを作成して、それをスマホのAnkiデッキと同期させるといいよ。個人的には、これがどうやって行われるのか詳細なブログ記事を見てみたいな。少なくとも、CSVをAnkiカードに同期させる方法と、CSV作成に対するLLMの応答のMCPインタラクションがどんな感じかを知りたい。

SRSについての議論がたくさんあるけど、大体の人が改善されたって同意できると思う。私が見たいのは、もう少し曖昧な部分だけど、でもほぼもっと重要なこと:それは、何かを読んだり理解したりすることとSRSの間のスペースだね。既存のプログラム(ウェブブラウザやPDFリーダーなど)から人気のSRS(AnkiやMochiなど)に簡単にフラッシュカードを作成するためのスタンドアロンツールがほとんどないんだ。OSの追加機能みたいに動いて、すべてがネイティブでスムーズに感じられるべきだと思う。X、Y、Zをやるスタンドアロンツールはもういらないから、ただMacに優しいSRSへのパイプみたいなものが必要なんだ。それが邪魔にならずに仕事をしてくれるやつね。もしそんなツールを知っている人がいたら、ぜひ教えてほしいな。

自分でフラッシュカードアプリ(Fresh Cards)を作ったんだけど、たまにユーザーからウェブページやPDFファイルからフラッシュカードをインポートする方法があるかって聞かれるんだ。でも正直、どうやるかまだわからないから、もしかしたら手伝ってくれるかも。ユーザーの立場から見ると、ハイライトしたものを選んで「これをフラッシュカードにする」ってボタンをクリックするインタラクティブなプロセスになるのか、それとも内容をスキャンして質問と答えのリストを自動的に作成するツールになるのか、どっちだと思う?何を質問と答えにする価値があるかを決める基準は何だろう?質問はどれくらい細かくすべきかな?特定の事実(例えば日付や名前)をピックアップして質問にするデモを見たことがあるけど、それが必ずしもすべての教材に役立つわけではないかもしれない。すごくオープンエンドなプロセスに思えるから、みんなのニーズに合うようにするのは難しそうだね。

macOSのサービスモデルは、こういうことにぴったりな感じがする。サービスは、アプリが提供するコンテキストに応じた機能の小さな部分で、アプリ間の統合を開発者の積極的な関与なしに可能にするんだ。例えば、ほとんどのMacアプリでテキストを選択して右クリックしてコンテキストメニューを開き、サービスのサブメニューを開くと、ハイライトしたテキストで何かをするサービスがいくつか表示されるよね。理想的には、SRSアプリが新しいカードを素早く作成できるようにサービスを提供するべきで、例えばテキストをハイライトして右クリックして「サービス」→「新しいSRSカード…」を選ぶと、その場で軽量のカード作成ダイアログが開く感じ。

何かを読んだり理解したりすることとSRSの間のスペースだね。...もしそんなツールを知っている人がいたら、ぜひ教えてほしい。私は少し違うシステムを開発しているんだ:フラッシュカードで復習するのではなく、実際のコンテンツで復習する方法:1. コンテンツに単語や文法の概念をタグ付けする 2. 各単語や文法の概念の難易度を推定する[1] -- 難易度は基本的にこの記事の親しみやすさグラフの逆数だよ。3. 難易度と学習への影響をバランスさせたコンテンツを選ぶ。忘れそうなものを復習する方が新しいことを学ぶよりも影響が大きいから、「間隔反復」は自然に生まれるんだ。そして、フラッシュカードを使う代わりに、ターゲット言語のコンテンツを読む時間を使うんだ。[1] FSRSアルゴリズムの詳細を知っているなら、ここで使っている「難易度」は彼らのアルゴリズムとは違う使い方をしているよ。

私が知っているいくつかの例(主に言語学習、特に日本語学習の分野) - subs2srs MPVスクリプト:字幕付き動画からSRSカードを作成する。ソースとターゲット言語の字幕トラックがあれば、両方を埋めてくれる(ただし、時々注意点がある。異なる言語では、対話の意味が異なる字幕行に分配されることがある) - asbplayer Chrome拡張:ストリーミングサービスに追加の字幕言語を注入し、subs2srsに似た方法でフラッシュカードを作成する - yomitan:ブラウザ辞書検索、主に日本語と中国語のバイリンガル辞書用だけど、カスタム辞書のサポートもある。

Macでは、選択したテキストやスクリーンショットを受け取ってAnkiConnectに送信して新しいノートを作成するショートカットを作ることができるよ。このショートカットを共有シートに追加すれば、どのアプリからでも新しいノートを作成できる。後でAnkiでノートを見直して質問を追加するか、本当に怠けているなら裏面をLLMに送って質問を作成させることもできる。

既存のプログラムから簡単にフラッシュカードを作成するためのスタンドアロンツールはほとんどないと思うけど、これはよくある誤解だね。SRSの半分の利点は、フラッシュカードが何であるかを考え出すことから来てる。概念を巡って回ったり、類似点や違い、例、一般化、特性などを探したりする必要があるんだ。これは大変な作業?うん。理解を助ける?めちゃくちゃ助けるよ。これもまた非常に難しいスキルで、だからこそ多くの人がSRSの良さを理解できないんだと思う。彼らは試してみて、悪いフラッシュカードを書いて、結果が見えなくて諦めちゃう。編集:これもまた、SRSが事実を覚えるためだけに良いという別の誤解につながる。適切な詳細化(子コメントに感謝)をすれば、複雑なテーマの理解を深めるためにも使えるんだ。

この問題は、私のLLMでシステムプロンプトを使って解決してるよ。ChatGPTは新しい概念を理解しようとするメインの場所だから、理解したらフラッシュカードを作るように頼んで、それをMochiにコピー&ペーストするだけなんだ。改善点としては、LLMとMochiの間にMCP統合みたいなものがあれば、カードを直接追加できるようになるといいな。すぐに実現すると思うよ。

これが私たちがRemNoteを作った理由だよ!ソース(PDF、ウェブサイト、YouTubeなど)を追加して、そこから直接カードを作成できるんだ。AIを使って(文をクリック => AIカードを取得)もできるし、文をハイライトして自分のカードを書くこともできる。OSレベルではないけど、集中したスタンドアロンのオールインワン体験の方が実際には良いと思う。ここで提案していることに似たことをするChrome拡張を探ったけど、実際にはあまり役に立たなかったんだ。PDFをアップロードして、ノートを取り、カードを作るということを直接ツールでやるのが一番集中できるから、いつも戻ってきちゃうんだ。

Yomitan (https://yomitan.wiki/) これをやってるよ。

もしそんなツールを知っている人がいたら、ぜひ教えてほしいな。まあ、あんまり好きじゃないかもしれないけど、EmacsのOrg-modeはAnkiカードの管理にめっちゃ良いよ。俺のSRカードは他のメディアに入ってるわけじゃなくて、文字通り俺のノートなんだ。自由に編集できるし、新しいコンテンツも簡単に生成できる(例えば、LLMを使ったりね)。どんな考えや本の引用もカードに変えられるし、その逆もできる。カードはバージョン管理されてるし、数式やコードスニペットも埋め込める。検索も簡単だし、プラットフォームに依存しないし、文脈的なんだ — 俺のカードは追加のノートや本の注釈、スクリーンショット、動画リンクなんかと絡み合ってて、没入感を持って勉強するのに役立ってるよ。

私はTrane (https://github.com/trane-project/trane/) のクリエイターで、これはAnkiや似たようなシステムを置き換えることができるんだ。サブスキルの間に明確な階層があるドメイン(実はほとんどのドメイン、語彙学習も含む)に適用できるものが欲しかった。AnkiやSuperMemoにはいくつかの未解決の問題があるんだ。1. 記憶に重点を置いている。私は、スコアが記憶ではなく習得に基づくドメイン(音楽)に適用できるものが欲しかった。2. 階層情報が欠けていると、より大きなスキルを学ぶのが難しくなる。Ankiの機能をTraneで再現するのは簡単で、すべての練習を1つのレッスンに入れるだけでいい。AnkiはTraneがやっていること、つまり多くのサブスキルの依存関係を使って進捗を追跡し、習得するまで制限することを再現できない。3. 自分の練習を作成することに重点を置いている。自分のデッキを考え出すことが期待されていて、これにはかなりの時間がかかる。複雑なスキルの場合、これを本当に理解するにはドメインの専門家である必要がある。Traneはほぼ完成していて、音楽を独学するために使ってる。今のところUIはないから、私が唯一のユーザーだと思う。無料で働くのは嫌だから、別に気にしてないけどね。今はそれを基にしたリテラシーチューターを作ってる。完成すれば、すべての学生をA-B-Cの学習から大学レベルの読み書きまで導けるようになる予定で、最新の研究に基づいている。年の中頃にはMVPをリリースできるといいな。

複雑なスキルの場合、これを本当に理解するにはドメインの専門家である必要がある。 (...) 音楽を独学するために使ったってことだけど、音楽の専門家じゃなかったから、面白い困難があったんじゃない?それは何だったの?どうやって克服したの?

知識トレーシングに関する文献を読むのも面白いかもしれないよ。これは間隔反復のスーパーセットで、学生の回答から何を知っているかを予測することを目指しているんだ。一番シンプルなアプローチはベイジアン知識トレーシングで、単純な確率の更新と潜在因子にフィットさせるための期待値最大化オプティマイザーを使っているよ。標準版は忘却なしの独立したスキルセットを前提にしているけど、それに対する拡張もあるんだ。PyBKTは一般的なものをいくつか実装しているから、そこをチェックしてみて。学習因子分析はナイーブBKTよりもかなり良く機能するみたいで、実装もとても簡単(ロジスティックモデルで、ほとんどの間隔反復アルゴリズムと同じファミリー)だから、階層的な依存関係が組み込まれれば期待できるかも。最近、研究者たちはトランスフォーマーを含むますます複雑なニューラルネットワークを適用しているけど、個人的にはそれはただのオーバーフィットのためのパラメータが増えるだけだと思う。専門家ではないけど、ウクライナの国家試験の準備のために基本的なKTツールを作ったときにこれらを見つけたよ。