FSRS(Free Spaced Repetition Scheduler)アルゴリズムは、記憶状態を予測するために使用されるDSR(難易度、安定性、想起可能性)モデルの変種に基づいています。

特定のパラメータとレビュー履歴を使用して間隔をプレビューするためのビジュアライザーはこちらです: Anki FSRS Visualizer (open-spaced-repetition.github.io)

記号

  • $R$: 想起可能性(リコールの確率)
  • $S$: 安定性(R=90%のときの間隔)
    • $S^\prime_r$: 想起後の新しい安定性
    • $S^\prime_f$: 忘却後の新しい安定性
  • $D$: 難易度( $D \in [1, 10]$ )
  • $G$: グレード(Ankiでの評価):
    • $1$: もう一回
    • $2$: 難しい
    • $3$: 正解
    • $4$: 簡単

FSRS-5

デフォルトパラメータ

[0.4072, 1.1829, 3.1262, 15.4722, 7.2102, 0.5316, 1.0651, 0.0234, 1.616, 0.1544, 1.0824, 1.9813, 0.0953, 0.2975, 2.2042, 0.2407, 2.9466, 0.5034, 0.6567]

短期記憶の場合、安定性の式は次の通りです:

$$S^\prime(S,G) = S \cdot e^{w_{17} \cdot (G - 3 + w_{18})}$$


最初の評価後の初期難易度:

$$D_0(G) = w_4 - e^{w_5 \cdot (G - 1)} + 1,$$

ここで、最初の評価が「再度」の場合、$D_0(1)=w_4$です。


平均回帰の目標は次のように更新されます:

$$D^{\prime\prime} = w_7 \cdot D_0(4) + (1 - w_7) \cdot D^\prime$$

FSRS-4.5

デフォルトパラメータ

[0.4872, 1.4003, 3.7145, 13.8206, 5.1618, 1.2298, 0.8975, 0.031, 1.6474, 0.1367, 1.0461, 2.1072, 0.0793, 0.3246, 1.587, 0.2272, 2.8755]

方程式

忘却曲線の式がこの更新で変更されました。

最後のレビューから$t$日後の想起可能性は次の通りです:

$$R(t,S) = \left(1 + FACTOR \cdot \cfrac{t}{S}\right)^{DECAY},$$

ここで、$t=S$のとき$R(t,S)=0.9$です。

次の間隔は、上記の式で$R$の代わりに要求される保持率を代入し、$t$を解くことで計算できます:

$$I(r,S) = \cfrac{S}{FACTOR} \cdot \left(r^\cfrac{1}{DECAY} - 1\right),$$

ここで、$r=0.9$のとき$I(r,S)=S$です。

FSRS v4では、$DECAY=-1$および$FACTOR=\cfrac{1}{9}$です。

FSRS-4.5では、$DECAY=-0.5$および$FACTOR=\cfrac{19}{81}$です。

新しい忘却曲線は、$S$の前に急激に落ち、$S$の後に緩やかになります。

FSRS v4

デフォルトパラメータ

[0.4, 0.6, 2.4, 5.8, 4.93, 0.94, 0.86, 0.01, 1.49, 0.14, 0.94, 2.18, 0.05, 0.34, 1.26, 0.29, 2.61]

$w_i$はw[i]を表します。

最初の評価後の初期安定性:

$$S_0(G) = w_{G-1}.$$

例えば、最初の評価が「再度」の場合、初期安定性は$S_0(1)=w_0$です。最初の評価が「簡単」の場合、初期安定性は$S_0(4)=w_3$です。


最初の評価後の初期難易度:

$$D_0(G) = w_4 - (G-3) \cdot w_5,$$

ここで、最初の評価が「正解(Good)」の場合、$D_0(3)=w_4$です。


レビュー後の新しい難易度:

$$D^\prime(D,G) = w_7 \cdot D_0(3) +(1 - w_7) \cdot (D - w_6 \cdot (G - 3)).$$

これは、$D^\prime = D - w_6 \cdot (G - 3)$で新しい難易度を計算し、次に平均回帰$w_7 \cdot D_0(3) + (1 - w_7) \cdot D^\prime$を適用して「イーズヘル」を避けます。


最後のレビューから$t$日後の想起可能性:

$$R(t,S) = \left(1 + \cfrac{t}{9 \cdot S}\right)^{-1},$$

ここで、$t=S$のとき$R(t,S)=0.9$です。

次の間隔は、上記の式で$R$の代わりに要求される保持率を代入し、$t$を解くことで計算できます:

$$I(r,S) = 9 \cdot S \cdot \left(\cfrac{1}{r} - 1\right),$$

ここで、$r=0.9$のとき$I(r,S)=S$です。


成功したレビュー後の新しい安定性(ユーザーが「難しい」、「良い」または「簡単」を押した場合):

$$S^\prime_r(D,S,R,G) = S\cdot(e^{w_8} \cdot (11-D) \cdot S^{-w_9} \cdot (e^{w_{10}\cdot(1-R)}-1) \cdot w_{15}(\textrm{G = 2の場合}) \cdot w_{16}(\textrm{G = 4の場合}) + 1).$$

安定性の増加を示す$SInc$は、$\cfrac{S^\prime_r(D,S,R,G)}{S}$で表され、これはAnkiのファクターに相当します。

  1. $D$の値が大きいほど、$SInc$の値は小さくなります。これは、難しい教材の記憶安定性の増加が簡単な教材よりも小さいことを意味します。
  2. $S$の値が大きいほど、$SInc$の値は小さくなります。これは、記憶の安定性が高いほど、その記憶をさらに安定させることが難しくなることを意味します。
  3. $R$の値が小さいほど、$SInc$の値は大きくなります。これは、教材をレビューする最適なタイミングがほぼ忘れかけたときであることを意味します(ただし、想起に成功した場合に限ります)。
  4. レビューが成功した場合、$SInc$の値は常に1以上です。

FSRSでは、レビューの遅延(すなわち、期限を過ぎたレビュー)が次の間隔に影響を与えます:

遅延が増加すると、保持率(R)は減少します。レビューが成功した場合、上記のポイント3に従って、次の安定性(S)は高くなります。ただし、SM-2/Ankiアルゴリズムのように遅延とともに線形に増加するのではなく、次の安定性はFSRSパラメータに依存する上限に収束します。

image

このプレイグラウンドでパラメータを変更できます: https://www.geogebra.org/calculator/ahqmqjvx.


忘却後の安定性(すなわち、失敗後の安定性):

$$S^\prime_f(D,S,R) = w_{11}\cdot D^{-w_{12}}\cdot ((S+1)^{w_{13}} - 1)\cdot e^{w_{14}\cdot(1-R)}.$$

例えば、$D=2$および$R=0.9$の場合、デフォルトのパラメータを使用すると、$S^\prime_f(S=100) = 2\cdot 2^{-0.2} \cdot ((100+1)^{0.2}-1) \cdot e^{1(1-0.9)} \approx 3$ であり、$S^\prime_f(S=1) \approx 0.3$ となります。

FSRS v3

デフォルトパラメータ

[0.9605, 1.7234, 4.8527, -1.1917, -1.2956, 0.0573, 1.7352, -0.1673, 1.065, 1.8907, -0.3832, 0.5867, 1.0721]

$w_i$はw[i]を表します。

最初の評価後の初期安定性:

$$S_0(G) = w_0 + (G-1) \cdot w_1,$$

ここで、最初の評価が「再度」の場合、初期安定性は$S_0(1)=w_0$です。最初の評価が「簡単」の場合、初期安定性は$S_0(4)=w_0 + 3 \cdot w_1$です。


最初の評価後の初期難易度:

$$D_0(G) = w_2 + (G-3) \cdot w_3,$$

ここで、最初の評価が「正解(Good)」の場合、$D_0(3)=w_2$です。


レビュー後の新しい難易度:

$$D^\prime(D,G) = w_5 \cdot D_0(3) +(1 - w_5) \cdot (D + w_4 \cdot (G - 3)).$$

これは、$D^\prime = D + w_4 \cdot (G - 3)$で新しい難易度を計算し、次に平均回帰$w_5 \cdot D_0(3) + (1 - w_5) \cdot D^\prime$を適用して「イーズヘル」を避けます。


最後のレビューから$t$日後の想起可能性:

$$R(t,S) = 0.9^{\frac{t}{S}},$$

ここで、$t=S$のとき$R(t,S)=0.9$です。

次の間隔は、上記の式で$R$の代わりに要求される保持率を代入し、$t$を解くことで計算できます。

$$I(r,S) = S \cdot \cfrac{\ln(r)}{\ln(0.9)},$$

ここで、$r=0.9$のとき$I(r,S)=S$です。

注意:難しい簡単の評価後の間隔は異なる方法で計算されます。簡単の評価後の間隔はeasyBonusを掛けます。難しいの評価後の間隔はlastIntervalhardIntervalを掛けたものです。


想起後の新しい安定性:

$$S^\prime_r(D,S,R) = S\cdot(e^{w_6}\cdot (11-D)\cdot S^{w_7}\cdot(e^{w_8\cdot(1-R)}-1)+1).$$

$SInc$(安定性の増加)を$\cfrac{S^\prime_r(D,S,R)}{S}$とします。これはAnkiのファクターに相当します。

  1. $D$の値が大きいほど、$SInc$の値は小さくなります。これは、難しい教材の記憶安定性の増加が簡単な教材よりも小さいことを意味します。
  2. $S$の値が大きいほど、$SInc$の値は小さくなります。これは、記憶の安定性が高いほど、その記憶をさらに安定させることが難しくなることを意味します。
  3. $R$の値が小さいほど、$SInc$の値は大きくなります。これは、教材をレビューする最適なタイミングがほぼ忘れかけたときであることを意味します(ただし、想起に成功した場合に限ります)。
  4. レビューが成功した場合、$SInc$の値は常に1以上です。

以下の3Dビジュアライゼーションが理解の助けになるでしょう。

image

FSRSでは、レビューの遅延(すなわち、期限を過ぎたレビュー)が次の間隔に影響を与えます:

遅延が増加すると、保持率(R)は減少します。レビューが成功した場合、上記のポイント3に従って、次の安定性(S)は高くなります。ただし、SM-2/Ankiアルゴリズムのように遅延とともに線形に増加するのではなく、次の安定性はFSRSパラメータに依存する上限に収束します。


忘却後の安定性(すなわち、失敗後の安定性):

$$S^\prime_f(D,S,R) = w_9\cdot D^{w_{10}}\cdot S^{w_{11}}\cdot e^{w_{12}\cdot(1-R)}.$$

例えば、$D=2$および$R=0.9$の場合、デフォルトのパラメータを使用すると、$S^\prime_f(S=100) = 2\cdot 2^{-0.2} \cdot 100^{0.2} \cdot e^{1(1-0.9)} \approx 5$ であり、$S^\prime_f(S=1) \approx 2$ となります。

この関数をpost-lapse stability - GeoGebraで試すことができます。

image