深度学习在线教育平台实践---内容推荐系统1

深度学习技术

众所周知,深度学习和人工智能技术在教育领域的应用,一直是在线教育界的王冠,是众多在线教育企业正在做的事情。但是直到目前为止,虽然有很多深度学习和人工智能解决方案,但是真正能够在实践中应用和落地的项目却并不多,大多数解决方案还停留在概念阶段或收集数据阶段,离实际应用还有一段距离。本系列文章,将以我们在高三地理教学中实际使用的个性题库系统为例,向大家详细介绍基于深度学习技术的题库推荐系统的技术原理,以及在实际应用中的信息架构设计技术。

基于内容的推荐系统

随着机器学习和深度学习的流行,基于机器学习和深度学习的推荐算法,在最近一段时间,逐渐成为了主流应用技术。我们的个性化题库系统,其核心就是一个根据学生实际情况,向学生推荐相关题目的推荐系统。
在这一部分,我们将以个性化题库系统为例,讲述一个典型的基于深度学习的推荐系统。我们所假想的场景如下:假设我们的客户是K12学校或K12在线教育公司,有大量题目供学生付费练习,并评估学生对题目的掌握程度用(0~5星的评分来表示),客户希望利用学生对题目的评分信息,向学生推荐学生薄弱的知识点的题目。
目前客户已经收集到的信息如下所示:

题目 张一 李二 王三 赵四
题目1 5 5 0 0
题目2 5 0
题目3 4 0
题目4 0 0 5 4
题目5 0 0 5

表中第1列为题目,其中前三个题目为知识点1,后两个题目为知识点2。第2~5列为不同的学生,表中每个单元格为某个学生对某个题目的需要程度。如果学生没有做过该题目,我们用?来表示。其中0表示学生做过该题目,结果完全正确,不需要再做练习。而5则表示学生做该题目完全错误,急需补充该题相关知识点。
为了便于问题的讨论,我们引入如下符号:
n_u:学生总数
n_m:题目总数
r(i, j):第j个学生是否做过第i个题目,1代表已经做过,0代表未做过(表格中?表示的单元格)
y^{(i, j)}:第j个学生对第i个题目的需要程度,此时必有r(i,j)=1,即学生j做过题目i
有了上述定义之后,我们的任务就变成了在已经知道r(i,j)y^{(i,j)}的情况下,形式如上表所示,预测学生对没有做过的题目需要程度,也就是要预测表中?的单元格中最有可能的数字。例如预测学生1对题目3这个题目的需要程度。因为我们的数据集很小,我们通过直觉可以很容易预测出来,因为学生1对知识点1的题目需度程度都很高,题目3是一个知识点1的题目,所以学生1对题目3的需要程度也会很高,所以我们可以预测张三对题目3的需要程度可能会是5分。但是如果上面的表格变为数以亿计的数据,我们就很难通过直觉做出判断了,我们就需要借助于推荐系统来完成这一任务了。
基于内容的推荐算法,首先要对待推荐题目的内容进行描述。在这里,我们用两个特征来描述各个题目,分别是:知识点1、知识点2。接下来我们对每个题目,给出在这两个特征上的得分,如下表所示:

题目 张一 李二 王三 赵四 知识点1 知识点2
x^{(1)} 题目1 5 5 0 0 0.9 0.0
x^{(2)} 题目2 5 0 1.0 0.01
x^{(3)} 题目3 4 0 0.99 0.0
x^{(4)} 题目4 0 0 5 4 0.1 1.0
x^{(5)} 题目5 0 0 5 0.0 0.9

我们对每个题目的关于特征知识点1、知识点2的描述,组成一个样本,这里共有5个样本:{x^{(1)}, x^{(2)}, x^{(3)}, x^{(4)}, x^{(5)}},对于每个样本是一个二维向量,如下所示:
\boldsymbol{x}^{(1)}=\begin{bmatrix} x^{(1)}_1\\ x^{(1)}_2 \end{bmatrix}=\begin{bmatrix} 0.9\\ 0.0 \end{bmatrix}
\boldsymbol{x}^{(2)}=\begin{bmatrix} x^{(2)}_1\\ x^{(2)}_2 \end{bmatrix}=\begin{bmatrix} 1.0\\ 0.01 \end{bmatrix}
\boldsymbol{x}^{(3)}=\begin{bmatrix} x^{(3)}_1\\ x^{(3)}_2 \end{bmatrix}=\begin{bmatrix} 0.99\\ 0.0 \end{bmatrix}
\boldsymbol{x}^{(4)}=\begin{bmatrix} x^{(4)}_1\\ x^{(4)}_2 \end{bmatrix}=\begin{bmatrix} 0.1\\ 1.0 \end{bmatrix}
\boldsymbol{x}^{(5)}=\begin{bmatrix} x^{(5)}_1\\ x^{(5)}_2 \end{bmatrix}=\begin{bmatrix} 0.0\\ 0.9 \end{bmatrix}
但是为了简化之后计算过程,我们通常希望将仿射变换转化为线性变换,然后利用矩阵乘法运算来求解,因为现有科学计算库均对矩阵运算做了优化,可以提高运算效率,减少数值计算中由于数值表示精度所引发的问题。
对于一个仿射变换:
y=\boldsymbol{w}^T\boldsymbol{x}+b=\begin{bmatrix} w_1\\ w_2 \end{bmatrix}^T \begin{bmatrix} x_1\\ x_2 \end{bmatrix} + b=w_1 \cdot x_1+w_2 \cdot x_2+b
其中\boldsymbol{w} \in R^n, \boldsymbol{x} \in R^n均为n维向量,而b为一个标量。为了处理问题方便,我们令w_0=bx_0=1,并将其分别加到w和x前面,如下所示:
y=\boldsymbol{w}^T\boldsymbol{x}=\begin{bmatrix} w_0\\ w_1\\ w_2 \end{bmatrix}^T \begin{bmatrix} x_0\\ x_1\\ x_2 \end{bmatrix}=w_0 \cdot x_0+w_1 \cdot x_1+w_2 \cdot x_2=w_1 \cdot x_1+w_2 \cdot x_2+b
由此可见,这两种表示方式是等价的。基于这种表示法,我们就可以写出基于内容的推荐系统了,我们将在下一节中讨论这个问题。

你可能感兴趣的:(深度学习在线教育平台实践---内容推荐系统1)