Loading

HMM 视角下 BKT 公式推导

作为经典的知识追踪方法,BKT(Bayes Knowledge Tracing)是最早提出以序列方式对学习者知识状态建模的方法。
本文旨在从HMM(Hidden Markov Model)角度推导现有论文中常见的一种BKT公式,如下图所示。

\[\begin{aligned} p(L_t|1)&= \frac{(1 - p(S)) \cdot p(L_t)}{(1 - p(S)) \cdot p(L_t) + p(G) \cdot (1 - p(L_t))} \quad (1) \\ p(L_t|0)&=\frac{p(S) \cdot p(L_t)}{p(S) \cdot p(L_t) + (1 - p(G)) \cdot (1 - p(L_t))} \quad (2)\\ p(L_{t+1}) &= p(L_t|o_t)+p(T) \cdot (1 - p(L_t|o_t)) \quad (3) \end{aligned} \]

HMM

HMM 是关于时序的概率模型。HMM中存在观测变量,状态变量(不可观测)。
我们使用\(\left\{o_1, o_2, \cdots, o_t, \cdots \right\}\) 表示观测变量组成的序列,\(\left\{z_1, z_2, \cdots, z_t, \cdots \right\}\) 表示状态变量组成的序列, 其中t表示时间次序。
一般情况观测变量,状态变量取值范围为有限个离散值。为方便描述HMM与BKT的关系,本文假设观测变量,状态变量均只能取两个值,即\(\{0, 1\}\)
HMM模型可使用三组参数描述,分别是初始状态变量分布\(\pi\),状态转移矩阵\(A\) 和发射矩阵\(B\)
\(\pi\) 描述了状态变量初始值的分布,如下式所示。\(p(L_0)\) 为取值为0的概率,\(1 - p(L_0)\)为取值为1的概率。

\[\pi = \left[\begin{array}{c} p(L_0) \\ 1 - p(L_0)\\ \end{array}\right] \]

状态转移矩阵\(A\)描述了状态变量由\(t-1\)时刻与\(t\)时刻的变换关系。我们这里使用BKT状态变量转移矩阵为例。known表示掌握知识状态,unknown表示未掌握状态。矩阵第二列表示,从t-1时刻unknown状态到t时刻known, unknown的状态概率分别为\(p(T)\)\(1-p(T)\)。第一列与第二列类似。

发射矩阵\(B\)描述了状态变量到观测变量的变换关系。类似地,我们以BKT中的发射矩阵为例,如下所示。该矩阵与状态转移矩阵解释类似,此处不再详细介绍。

基于\(A\), \(B\), \(\pi\) 我们可使用如下公式描述状态变量,观测变量的关系。

\[t = 1, \begin{aligned} p(z_{1}) &= \pi\\ p(o_{1}) &= B \cdot p(z_{1}) \end{aligned}; \forall t > 1, \begin{aligned} p(z_{t}) &= A \cdot p(z_{t-1})\\ p(o_{t}) &= B \cdot p(z_{t}) \end{aligned} \]

BKT 概率公式推导

\(p(T)\), \(p(S)\), \(p(G)\) 为BKT模型的待学习参数。\(p(T)\) 表示学生从未掌握到掌握知识点的概率。\(p(S)\) 表示学生掌握知识点但是答错题目的概率。\(p(G)\) 表示学生未掌握知识点但是答对题目的概率。另外, \(p(L_{t})\) 表示学生在t时刻对知识点的掌握状态。\(A, B\)定义如下。

\[\begin{aligned} A &= \left[\begin{array}{cc} 1 &p(T)\\ 0 &1 - p(T)\\ \end{array}\right]\\ B &= \left[\begin{array}{cc} 1 - p(S) &p(G)\\ p(S) &1 - p(G)\\ \end{array}\right] \end{aligned} \]

t时刻,学生对知识点的掌握情况为
\( p(z_{t}) = \left[\begin{array}{c} p(L_{t}) \\ 1 - p(L_{t})\\ \end{array}\right]\)

由发射矩阵 得:

\[\begin{aligned} p(o_{t}) &= B\cdot p(z_{t})\\ &= \left[\begin{array}{cc} 1 - p(S) &p(G)\\ p(S) &1 - p(G)\\ \end{array}\right] \cdot \left[\begin{array}{c} p(L_{t}) \\ 1 - p(L_{t})\\ \end{array}\right] \\ &= \left[\begin{array}{c} (1 - p(S)) \cdot p(L_t) + p(G) \cdot (1 - p(L_t))\\ p(S) \cdot p(L_t) + (1 - p(G)) \cdot (1 - p(L_t)) \\ \end{array}\right]\\ \end{aligned} \]

由发射矩阵定义可知,

\[\begin{aligned} p(z_t=1, o_t=1) &= (1 - p(S)) \cdot p(L_t)\\ p(o_t=1) &= (1 - p(S)) \cdot p(L_t) + p(G) \cdot (1 - p(L_t))\\ p(z_t=1|o_t=1) &=\frac{p(z_t=1, o_t=1)}{p(o_t=1)}\\ &= \frac{(1 - p(S)) \cdot p(L_t)}{(1 - p(S)) \cdot p(L_t) + p(G) \cdot (1 - p(L_t))} \end{aligned} \]

\(p(z_t=1| o_t=1)\) 为学生在t时刻答对题目,学会该知识的概率,即\(p(L_{t}|1)\),公式(1)推导完毕。
类似的我们也可以推导得到公式(2)。
对于公式(3),主要基于状态转移矩阵\(A\).

\[\begin{aligned} p(z_{t+1}) &= A \cdot p(z_{t})\\ &= \left[\begin{array}{cc} 1 &p(T)\\ 0 &1 - p(T)\\ \end{array}\right] \cdot \left[\begin{array}{c} p(L_{t}) \\ 1 - p(L_{t})\\ \end{array}\right] \\ &= \left[\begin{array}{cc} p(L_t)+p(T) \cdot (1 - p(L_t))\\ (1 - p(T)) \cdot (1 - p(L_t))\\ \end{array}\right] \end{aligned} \]

由前述定义可知,

\[p(z_{t+1}) = \left[\begin{array}{c} p(L_{t+1}) \\ 1 - p(L_{t+1})\\ \end{array}\right] \]

所以

\[p(L_{t+1}) = p(L_t)+p(T) \cdot (1 - p(L_t)) \]

\(p(L_t)\)由观测变量\(o_{t}\)决定其计算方式为公式(1)或(2)。我们使用\(p(L_{t}|o_{t})\)表示其计算结果。带入上式可得。至此,公式(3)推导完毕。

\[p(L_{t+1}) = p(L_t|o_t)+p(T) \cdot (1 - p(L_t|o_t)) \]

实现

https://github.com/lif323/BKT

posted @ 2022-08-26 17:21  lif323  阅读(419)  评论(0)    收藏  举报