連載: Ankiの使い方 〜覚えるために忘れろ〜

第7回目 統計情報を活用して復習カードの山から回復しよう

Ankiを使っている人なら知っている使い方をあえて紹介する連載の7回目は、統計情報について解説します。統計情報の知識を使って、バックログを解消する方法を紹介します。

AnkiとはDamien Elmesが開発している分散学習システム(SRS; Spaced Repetition learning Systems)です。

この記事の目標

統計情報の読み方に慣れる。 統計情報を活用して学習の進捗状況の把握と学習計画ができるようになる。

使うもの

統計情報を表示する

Ankiは復習アルゴリズムに加えて、学習継続を支援してくれる色々な機能を提供してくれます。統計情報もその機能の一つです。自分の学習結果を統計情報として確認することは、学習の進捗状況を管理するのに役立ちます。

Ankiの統計情報はメインウィンドウから単語帳を選択し、ウィンドウ右上の棒グラフのボタンを押すと表示されます。

メインウィンドウ
Figure 1. メインウィンドウ

既定では図2のような情報が得られます。

統計情報
Figure 2. 統計情報
統計情報の項目
  1. 今日 その日学習結果。枚数と時間。

  2. 予測 1か月先までの復習カードの予想発生枚数。

  3. 復習した回数 過去1か月間の平均復習回数。

  4. 学習した時間 過去1ヶ月間の平均学習時間。

  5. 間隔 カードの復習間隔の分布。

  6. 時間毎の分析 時間帯別の解答数と正解率。

  7. 答えたボタン ボタンの選択状況。成熟度別正解率。

  8. カードの種類 カードの成熟度の比率。

ウィンドウの一番下のラジオボタンを選択すると、コレクション全体、1年間、全期間に統計情報の取得範囲を広げることができます。

それぞれの単語帳の進捗の理解に役立つ、一日あたりの学習枚数、学習時間、復習カードの期日の分布、正解率、成熟カードの比率などの情報を提供してくれます。

統計情報を拡張するアドオンも公開されています。 Maturing Cards は成熟カードの発生枚数の推移を統計情報に追加してくれます。

カードの枚数に目が奪われがちですが、更に多角的な視点から学習の進捗状況、成熟状況を知ることができます。

バックログ解消の方針

Anki学習を始めると、最初の意欲の高いうちは学習が順調に進むのですが、連休や長期休暇、旅行などの間に復習が中断しがちになると、復習カードの山、バックログが膨大に積み上って途方に暮れていることがあります。

危機感からバックログの山から無理に長時間掛けてたくさんの枚数の復習すると、結果として3、4日後にもう一度同じ数復習するように設定することになります。無理も繰り返すとなると辛いです。

無理な学習は、Anki学習のスケジュール設定の中に急激なスパイクを取り込むことになります。統計情報の「予測」の項目を見てください。

毎日安定した枚数復習している場合は、棒グラフの高さがそろって滑らかに推移しています。 断続的に集中して学習した場合には、ギザギザな山がたくさんできていると思います。 このような状況では、毎日のAnkiの学習体験が極端なストレスを感じるものになっているはずです。

復習期日の分布を平滑に管理することは、Anki学習を「毎日のささやかな儀式」に保ち、「断続的に訪れる拷問」に陥ることから防いでくれます。

バックログを解消する原則

「闇雲に無理をしない。少しずつ削り取る。」

統計情報を使えば、明確な見通しが立ち、バックログの大きさに立ち向かっていく意欲もわきます。学習継続の動機にもつながります。

わたしが1,500枚のバックログを解消した、Ankiの統計情報の力を借りた方法を紹介します。イメージとしては大根の桂剥きのようにバックログを少しずつはがしていく方法です。 図2は、バックログ解消直前の残り50枚の時点で記録したものです。

統計情報を読む

それでは、具体的にバックログを解消するのに必要な情報を、統計情報から読み取っていきましょう。

学習状況を確認する

統計情報の一番最初の項目「今日」では、その日の学習結果について情報を提供してくれます。新規カードの枚数(学習)、復習枚数、間違えたカードの枚数(再学習)、スケジュール外で追加学習した枚数(フィルター)です。それはどれだけ時間がかかって、記憶の定着の度合いはどうだったか(正解率)知らせてくれます。

これは体温計とか体重計のような一日の学習状況の基本情報です。

次に2番目の項目「予測」を見てみましょう。今後の発生する復習カード分布が分かります。一日の学習が終わった時、0日のところにカードが積み上っているカードの枚数がバックログになります。

最終的な目標は、既定の学習枚数が終るとこの数が0になる状態になることです。 日々の目標としては、この山が昨日より縮小していけばいいわけです。

そのためには、今日何枚学習すれば良いのでしょうか。

バックログを減らす一日の最低学習量

話を単純化するために新規カードは0として説明します。

今日の学習対象カード = 昨日のバックログ + 今日が期日のカード (1)

また、次のようにも表現できます。

今日の学習対象カード = 今日復習したカード + 今日のバックログ (2)

(1)と(2)からバックログの変化が計算できます。

今日のバックログの変化量 = 今日のバックログ - 昨日のバックログ = 今日が期日のカード - 今日復習したカード

つまり、「今日が期日のカード」の枚数以上に復習すればバックログは削減できます。

バックログが減少する一日の最低学習量は、今日が期日のカードの枚数 + 1 です。

統計情報を使うと、例えばバックログが1000枚あって、100枚のバックログを減らす枚数を毎日復習すれば10日で実現可能という予測ができるようになります。これでかなり見通しが明るくなってきました。

100枚のバックログを減らす枚数 = 今日が期日のカードの枚数 + 100

今日が期日のカードの枚数を知る方法

統計情報を利用する

一番手っ取り早いのは、前日に統計情報から「予測」項目の[明日が期日のカード]を書き留めておくことです。

いま始めようとする人には、この方法は使えないので別の方法を紹介します。どちらも、今日の学習をまだしていないという条件があります。今日学習済みカードは、既に新しい期日が設定されています。

ブラウザーを利用する

ブラウザーのカード一覧から表示することができます。ブラウザーから期日でソート表示して、期日が今日のカードを選択するとタイトルバーに枚数が表示されます。

ブラウザー表示
Figure 3. ブラウザー表示
フィルター単語帳を利用する

今日が期日のカードを検索するフィルター単語帳を作って調べることもできます。

今日が期日のカードを検索する条件

deck:"単語帳名" prop:due=0

フィルター単語帳
Figure 4. フィルター単語帳

学習が済んでいない「今日が期日のカード」が取得できます。

バックログ解消の学習手順

復習の中断を挟んでいる場合は、毎日新たに期日に達するカードの枚数は大きく上下します。この様子は、統計情報の「予測」の項目のグラフで確認できます。単語帳のオプション変更して、一律に一日の上限を引き上げる方法は現実的ではありません。

一日の学習後に、翌日の学習枚数を決定していく方法になります。

毎日の作業手順
  1. 毎日学習終了時に、統計情報の「予測」項目から[明日が期日のカード]枚数を確認して、次の日の学習枚数を予め決定します。翌日バックログから削減したい枚数 + [明日が期日のカード]枚数 になります。

  2. 翌日は既定枚数の復習します。

  3. 前日計算した予定枚数に満たない場合は、カスタム学習セッションで追加学習を行います。

追加学習の方法

メインウィンドウ下の[カスタム学習]ボタンを押して[今日の復習カードの上限を上げる]を選択します。上で計算した枚数を設定します。

カスタム学習設定画面
Figure 5. カスタム学習で復習カードの上限を引き上げる
前日の記録を忘れた場合
  1. 前の項目「今日が期日のカードの枚数を知る方法」のブラウザーかフィルター単語帳による確認方法で、[今日が期日のカード]の残数を確認します。

  2. 今日バックログから削減したい枚数 + [今日が期日のカード]の残数 を追加学習します。

バックログを分割処理する方法 (マニュアルより)

マニュアルにも、 フィルター単語帳を使った バックログの解消法の例が載っています。この項目はまだ翻訳されていないようですので、簡単に説明します。

バックログからストレスのない適正な学習ができる量だけ取り出して選択的に学習しようと言う考え方です。上で紹介した方法より穏当な方法になります。

期日に達して間もない「新鮮なカード」はAnkiの復習スケジュールアルゴリズムを強く反映した復習間隔が設定されています。そこで、選択基準として復習期日に達してからの経過時間を使っています。

優先カードの選別方法

期日に達して一週間以内の「新鮮なカード」と、もっと前に期日に達した「古いカード」に分割するフィルター単語帳の子単語帳を作ります。

フィルター単語帳の設定例
  1. 期日に達して一週間以内: deck:"親単語帳名" "is:due prop:due>-7"

  2. 期日に達して一週間以上: deck:"親単語帳名" "is:due prop:due⇐-7"

2つのフィルター単語帳をつくると、カードはそれぞれの子単語帳に移動します。なお、フィルター単語帳内での学習が終わると、親の単語帳に戻ります。

新鮮なカードの作業手順

期日に達して間もない「新鮮なカード」は、通常の学習を続けます。バックログを分離したので、大きなバックログを気にすることなく学習できます。

経過日7日の設定は自分の環境に合わせてカスタマイズします。「新鮮なカード」の単語帳に適正な学習ができる量だけ残るように設定します。

注意: フィルター単語帳内のカードは復習が終わると親の単語帳に戻ります。一日の学習の前に[再構築]ボタンを押して、カードをフィルター単語帳内に集め直す作業が必要です。

古いカードの作業手順

期日に達してから時間が経ったは「古いカード」は、新規カードと同じように扱い、「新鮮なカード」の学習が負担にならない程度に順次追加いきます。

こちらは、再構築の必要はありません。「新鮮なカード」の学習状況を見ながら、この子単語帳が空になるまで学習していけば良いです。

バックログ分割処理法の改善案

上の方法をもっと簡潔にする方法があります。「古いカード」をフィルター単語帳を作って元の単語帳外に隔離します。子単語帳にしません。

フィルター単語帳設定

deck:"元の単語帳名" "is:due prop:due⇐-7"

元の単語帳には「新鮮なカード」が残ります。元の単語帳のカードの学習を通常通り続けます。

余力がある日は、「古い単語帳」のフィルター単語帳の中のカードを学習します。この中のカードは学習が済むと、元の単語帳に戻ります。フィルター単語帳が空になったところで、バックログは解消です。

強行突破したい方へ

最短時間でバックログをどうしても解消したいという、意欲と学習時間に恵まれた方もいらっしゃるかと思います。

その方には load balancer アドオンをお勧めします。特定の日に復習カードが偏らないようにならしてくれます。一日の復習カードの中の成熟カードと未熟カードの比率を固定する機能を持っています。

平準化するがゆえ、本来翌日に学習したい間違えたカードの復習期日が、翌々日以降に設定になるなどの副作用が出る場合もあります。

現在の学習ペースで安定的にバックログが削減できているか、常に統計情報を確認することをお勧めします。がんばっていること自体が目的とならないように注意しましょう。 辛くなったら、上で説明した穏当な方法への転換も検討してみてください。

私自身も、最初強行突破の方針で取り組んでいたのですが、毎回学習後に統計情報を眺めていたところ、最初に紹介した方法を思いつき方針転換しました。見通しが立つと、バックログ削減のスピート感が体感できるようになり、作業が楽になりました。

まとめ

バックログの解消方法は、バックログの規模や単語帳の内容、一日の学習時間などによって、最適な方法は様々だと思います。

いずれの方法でも、Ankiの統計情報を活用すれば、その方法を最適化することができます。

安定期に達したAnki学習ではどのような統計データになるのか、図2のその後のデータとして今日のデータの抜粋を図6に参考までに紹介します。

通常の学習でも、カードの枚数の変化以外の多面的な進捗情報が統計情報から得られます。ぜひ、この統計情報を活用してAnkiをもっと楽しんでください。次回は最終回、単語帳の共有方法を説明します。

今日の統計情報
Figure 6. 今日の統計情報