LabHub

ブログ

読み返すな、閉じて思い出せ — テスト効果の原論文と間隔反復アルゴリズム

한국어English日本語中文

はじめに — 最も人気のある勉強法が、最も裏切る勉強法

試験前日を思い浮かべてみてください。ほとんどの人がすることは同じです。教材とノートを読み返すこと。蛍光ペンを引き、下線を引いた部分をまた読み、見慣れたページを見て安心します。「もう分かった」。

その安心感が罠です。読み返しが作るのは記憶ではなく流暢さ — 文字が目に滑り込むように入ってくる慣れ — であり、脳はその流暢さを「分かっている」と誤訳します。論文で読む心理学の第7回は、この錯覚を実験で暴いた論文と、その代替案をコードのレベルまで掘り下げます。シリーズで最も実用的な一編になるでしょう。

2006年の実験 — 読み返し 対 自分でテストする

ヘンリー・ルーディガー(Henry Roediger)とジェフリー・カーピック(Jeffrey Karpicke)の2006年の論文(Psychological Science)の設計は教科書的です。大学生に短い文章を学習させつつ、学習の仕方を変えました。

そして最終テストを2つの時点に分けて見ました。5分後、そして1週間後。

条件5分後の想起率1週間後の想起率
SSSS(読み4回)約83%約40%
STTT(読み1回 + テスト3回)約71%約61%

5分後のテストでは読み返しが勝ちます。ところが1週間経つと順位が完全に逆転します。4回読んだグループは半分以上を失いましたが、1回読んで3回想起したグループはほとんどを守りました。読みは短期戦の技術であり、想起は長期戦の技術です。

さらに残酷なディテールがあります。学習直後に「1週間後にどれくらい覚えていそうか」を予測させたところ、読み返しグループが自分の記憶を最も高く予測しました。実際には最も多く忘れるグループなのにです。分かっている感覚と分かっていることは別のシステムであり、読み返しは前者だけを膨らませます。

これがテスト効果(testing effect)です。テストは評価の道具である前に、学習の道具だということ。記憶から何かを取り出す行為そのものが、その記憶の保存強度を高めます。この効果はその後の教室での現場研究やメタ分析で繰り返し確認された、学習科学で最も信頼されている発見の一つです。

二つ目の材料 — 間隔効果

テスト効果と対をなすのが間隔効果(spacing effect)です。1885年のエビングハウスの忘却曲線以来、最も長く生き残った記憶の法則で、同じ総量の復習でもまとめて(massed)行うより間隔を空けて(spaced)行う方が長期記憶に圧倒的に有利です。ニコラス・セペダ(Nicholas Cepeda)研究チームの2006年のメタ分析(254件の研究、1万4千人あまり)はこれを定量化し、後続の研究は実用的な経験則まで示しました。復習間隔を、テストまで残った期間の10〜20%程度に設定せよというものです(1か月後のテストなら3〜6日間隔)。

なぜ間隔が効果的なのでしょうか。有力な説明は「望ましい困難(desirable difficulty)」です。復習の時点で記憶が少し薄れていてこそ想起が努力を要し、努力を要した想起ほど記憶を強く再保存します。昨日覚えた単語を今日復習すると簡単すぎ、1か月後にはすでに消えています。忘れそうで忘れない最適の瞬間が存在するのです。

では、カード数千枚それぞれの「最適の瞬間」を人が追跡できるでしょうか。できません。そこでアルゴリズムが登場します。

コードで理解する — Ankiの心臓、SM-2アルゴリズム

間隔反復ソフトウェア(Ankiなど)の原型は、1980年代のピョートル・ウォズニアク(Piotr Wozniak)のSuperMemoから生まれたSM-2アルゴリズムです。原理は単純です。カードごとに難易度係数を保持し、想起に成功するたびに次の復習間隔をその係数だけ延ばします。失敗すると間隔をリセットします。

def sm2_review(quality, reps, interval, ease):
    """One SM-2 update after a review.
    quality: 0-5 self-grade (>=3 means recalled)
    reps: successful reviews in a row so far
    interval: current interval in days
    ease: difficulty factor, starts at 2.5
    Returns (reps, interval, ease) for scheduling the next review.
    """
    if quality < 3:                    # forgot -> relearn from scratch
        return 0, 1, ease

    # ease drifts with how hard the recall felt (min 1.3)
    ease = max(1.3, ease + 0.1 - (5 - quality) * (0.08 + (5 - quality) * 0.02))

    if reps == 0:
        interval = 1                   # first success: see it tomorrow
    elif reps == 1:
        interval = 6                   # second success: ~a week out
    else:
        interval = round(interval * ease)  # then multiply out
    return reps + 1, interval, ease

# simulate one card always recalled with quality 4
reps, interval, ease = 0, 0, 2.5
schedule = []
for _ in range(7):
    reps, interval, ease = sm2_review(4, reps, interval, ease)
    schedule.append(interval)
print(schedule)   # -> [1, 6, 15, 37, 90, 219, 533]

出力を見てください。1日、6日、15日、37日、90日……復習間隔が幾何級数的に広がります。7回の復習で1枚のカードが1年半後までスケジュールされるのです。間隔効果(次第に広がる最適間隔)とテスト効果(毎回の復習が想起テスト)を、20行のコードが同時に実装しています。毎日新しいカードを20枚追加しても1日の復習量が爆発しない理由が、この指数的な間隔にあります。

ちなみに現代のAnkiは、SM-2の子孫に加え、記憶確率を明示的にモデリングするFSRSのような最新のスケジューラーも提供します。しかしどんなスケジューラーでも心臓は同じです。取り出すこと、忘れる直前に。

持ち帰るもの — 勉強法の置き換えリスト

今回の実践は明確です。学習ルーティンで次の置き換えを実行することです。

開発者にもそのまま当てはまります。新しい言語の文法、よく忘れるコマンド、システム設計パターン — 「検索すればいい」が通じない面接や障害対応という最終試験があるという点で、エンジニアの勉強も結局は想起のゲームです。

原文リーディングガイド

読み方のヒント: ルーディガーとカーピックの論文は、図1(5分/2日/1週テストの条件別棒グラフ)ひとつにすべてがあります。ダンロスキーのレビューは、表4の技法別の総合評価だけ見れば勉強法の本10冊を代替します。次回は体シリーズの論文版、睡眠負債のドーズ・レスポンス実験です。

コメント

まだコメントはありません。

ログインするとコメントできます