蓝色分量描述获取注意权值的过程,绿色分量描述更新值记忆的过程,红色分量描述预测的过程。⊗和⊕分别表示按元素进行的乘法和加法。
接收问题 q t q_t qt
从KC嵌入矩阵 A A A ∈ R Q × d k R^{Q×d_k} RQ×dk 提取 q t q_t qt 的嵌入向量 记作 k t k_t kt
查询DKVMN模型中的密钥存储矩阵 M k M_k Mk 查询结果为该题目应该在每个知识点上投入的权重 w t w_t wt∈ R N R^N RN ,计算方式如下
w t i = S o f t m a x ( M i k k t ) w_{ti}=Softmax(M^k_ik_t) wti=Softmax(Mikkt)
DKVMN模型读取t时刻值存储器 M t v M^v_t Mtv中的潜在知识状态,形成读取向量
r t = Σ i = 1 N w t i ( M t i v ) T r_t=Σ^N_{i=1}w_{ti}(M^v_{ti})^T rt=Σi=1Nwti(Mtiv)T
其中 M t i v M^v_{ti} Mtiv是 M t v M^v_t Mtv的第i个行向量 表示第i个学生的知识储备状态
将读取向量 r t r_t rt与KC嵌入向量 k t k_t kt垂直拼接在一起生成一个特征向量 f t f_t ft, 并计算做对该题的概率
f t = t a n h ( W f [ r t , k t ] + b f ) f_t=tanh(W_f[r_t,k_t]+b_f) ft=tanh(Wf[rt,kt]+bf)
p t = P ( a t ) = σ ( W p f t + b p ) p_t=P(a_t)=σ(W_pf_t+b_p) pt=P(at)=σ(Wpft+bp)
输入元组 ( q t , a t ) (q_t,a_t) (qt,at) 表示t时刻输入的题目与用户做题情况
输入 w t w_t wt权重
从KC响应矩阵 B ∈ R 2 Q × d v B∈R^{2Q×d_v} B∈R2Q×dv中检索 ( q t , a t ) (q_t,a_t) (qt,at)的嵌入向量,记作 v t ∈ R d v v_t∈R^{d_v} vt∈Rdv
当更新内存的时候,一些内存首先用之前的擦除向量 e t ∈ R d v e_t∈R^{d_v} et∈Rdv擦除 (擦除记忆类似于LSTM细胞的遗忘功能)
将新向量加入到内存中 a t ∈ R d v a_t∈R^{d_v} at∈Rdv每个值内存槽更新如下所示
e t = σ ( W e V t + b e ) e_t=σ(W_eV_t+b_e) et=σ(WeVt+be)
a t = t a n h ( W a v t + b a ) a_t=tanh(W_av_t+b_a) at=tanh(Wavt+ba)
M ‾ t + 1 , i v = M t i v × ( 1 − w t i e t ) T \overline{M}^v_{t+1,i}=M_{ti}^v×(1-w_{ti}e_t)^T Mt+1,iv=Mtiv×(1−wtiet)T
M t + 1 , i v M_{t+1,i}^v Mt+1,iv = M ‾ t + 1 , i v =\overline{M}_{t+1,i}^v =Mt+1,iv + w t i a t T +w_{ti}a^T_t +wtiatT
(其中第三行×为元素级乘法,即两个向量里面每个元素两两相乘)