您的位置:首页 > 其它

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

2018-08-09 13:54 344 查看

基于内容的推荐系统是根据内容的特征来进行推荐,如文本信息的词向量,商品的属性等信息,我们这里则是根据题目的知识点来进行推荐。
根据上篇博文的内容,我们可以将题目样本表示为如下形式:
x(1)=⎡⎣⎢⎢⎢x(1)0x(1)1x(1)2⎤⎦⎥⎥⎥=⎡⎣⎢1.00.90.0⎤⎦⎥x(1)=[x0(1)x1(1)x2(1)]=[1.00.90.0]
x(2)=⎡⎣⎢⎢⎢x(2)0x(2)1x(2)2⎤⎦⎥⎥⎥=⎡⎣⎢1.01.00.01⎤⎦⎥x(2)=[x0(2)x1(2)x2(2)]=[1.01.00.01]
x(3)=⎡⎣⎢⎢⎢x(3)0x(3)1x(3)2⎤⎦⎥⎥⎥=⎡⎣⎢1.00.990.0⎤⎦⎥x(3)=[x0(3)x1(3)x2(3)]=[1.00.990.0]
x(4)=⎡⎣⎢⎢⎢x(4)0x(4)1x(4)2⎤⎦⎥⎥⎥=⎡⎣⎢1.00.11.0⎤⎦⎥x(4)=[x0(4)x1(4)x2(4)]=[1.00.11.0]
x(5)=⎡⎣⎢⎢⎢x(5)0x(5)1x(5)2⎤⎦⎥⎥⎥=⎡⎣⎢1.00.00.9⎤⎦⎥x(5)=[x0(5)x1(5)x2(5)]=[1.00.00.9]
在这里我们设样本特征向量x的维度为n,则n=2,注意这里不包括我们为了计算方便而添加的输助x0x0。
为了解决用户对未知题目打分预测问题,我们引入参数向量θ∈Rn+1=R3θ∈Rn+1=R3。对于每个学生我们都用一个参数向量θ∈Rn+1θ∈Rn+1,来描述,则我们的参数集为:{θ(1),θ(2),θ(3),...,θ(nu)}={θ(1),θ(2),θ(3),θ(4)}{θ(1),θ(2),θ(3),...,θ(nu)}={θ(1),θ(2),θ(3),θ(4)}。假设我们要预测学生张一对第三个题目3的需要程度,我们首先找到描述这个题目的特征向量:
假设我们要预测用户张一对第三个题目3的需要程度,我们首先找到描述这个题目的特征向量:
x(3)=⎡⎣⎢⎢⎢x(3)0x(3)1x(3)2⎤⎦⎥⎥⎥=⎡⎣⎢1.00.990.0⎤⎦⎥x(3)=[x0(3)x1(3)x2(3)]=[1.00.990.0]
如果我们已经知道参数集的值,例如对于张一来说,其对应的参数为:
θ(1)=⎡⎣⎢0.05.00.0⎤⎦⎥θ(1)=[0.05.00.0]
那么张三对题目3的需要程度可以通过下式来计算:
θ(1)T⋅x(3)=⎡⎣⎢0.05.00.0⎤⎦⎥T⎡⎣⎢1.00.990.0⎤⎦⎥=5.0×0.99=4.95θ(1)T⋅x(3)=[0.05.00.0]T[1.00.990.0]=5.0×0.99=4.95
所以我们预测张一将对题目3的需要程度为4.95分,那么这个分数是否合理呢?我们看到,张一对知识点1基本都非常需要练习,而对知识点2基本不需要再练习,对同样是知识点1的题目3需要程度为4.95分是比较合理的,因此我们认为是一个合理的预测结果。如果我们将这个题目推荐给张一,他就很可能补足其在知识点1上的漏洞。
如果我们预先知道参数集{θ(1),θ(2),θ(3),...,θ(nu)}{θ(1),θ(2),θ(3),...,θ(nu)}的值,我们就可以很容易的预测出学生j对题目i的需要程度。但是我们是不可能预先知道这些参数的值的,因此我们的问题就变成怎样求出参数集的值。
我们先引入一个变量m(j)m(j),代表学生j做过题目的总数。
对于学生j,我们要通过学习得到θ(j)θ(j),我们的学习任务可以表述为:选取适当的θ(j)θ(j),使得下式所表示的误差值最小:
minθ(j)12m(j)∑i:r(i,j)=1(θ(j)Tx(i)−y(i,j))2minθ(j)12m(j)∑i:r(i,j)=1(θ(j)Tx(i)−y(i,j))2
上式中叠加i:r(i,j)=1表示对学生j所有做过的题目,我们利用参数θ(j)θ(j)计算出该学生对题目i的需要程度,求出其与学生j对题目i的真实需要程度的偏差,并取平方,然后将所有题目的平方差相加,得到总的平方和误差,再除以用户j打过分影片的数量,得到一个平均值,我们的任务就是通过选择合适的θ(j)θ(j),使得这个值达到最小。
在实际算法中,我们要会加上一个L2L2调整项,表明我们希望参数θ(j)θ(j)的长度(2范式)平方最小,即参数值越小越好,如下所示:
minθ(j)(12m(j)∑i:r(i,j)=1(θ(j)Tx(i)−y(i,j))2+λ2m(j)∑k=1nθ(j)k2)minθ(j)(12m(j)∑i:r(i,j)=1(θ(j)Tx(i)−y(i,j))2+λ2m(j)∑k=1nθk(j)2)
式中第二项为权值衰减项(Weight Decay),λ代表我们希望调整项起的作用,λ取较小值时,调整效果小,取较大值时调整效果大,取0时相当于没有调整。另外,还需要注意的是,式中k=1开始,因为我们第0维表示的是偏移量b,而我们通常不调整偏移量,所以k=1开始,n为特征向量维数,在我们这个问题中n=2。
因为式中的m(j)m(j)是一个常量,求最小值时,去掉也不会影响最终结果,为了简化运算,我们去掉m(j)m(j),可以得到学习参数θ(j)θ(j)的代价函数:
minθ(j)(12∑i:r(i,j)=1(θ(j)Tx(i)−y(i,j))2+λ2∑k=1nθ(j)k2)minθ(j)(12∑i:r(i,j)=1(θ(j)Tx(i)−y(i,j))2+λ2∑k=1nθk(j)2)
我们不仅需要学习学生j的参数向量θ(j)θ(j),我们需要学习所有学生参数向量{θ(1),θ(2),θ(3),...,θ(nu)}{θ(1),θ(2),θ(3),...,θ(nu)},所以代价函数就变为如下式所示:
minθ(1),θ(2),θ(3),...,θ(nu)(12∑j=1nu∑i:r(i,j)=1(θ(j)Tx(i)−y(i,j))2+λ2∑j=1nu∑k=1nθ(j)k2)minθ(1),θ(2),θ(3),...,θ(nu)(12∑j=1nu∑i:r(i,j)=1(θ(j)Tx(i)−y(i,j))2+λ2∑j=1nu∑k=1nθk(j)2)
通过上面的讨论,我们可以得到代价函数为:
J(θ(1),θ(2),θ(3),...,θ(nu))=minθ(1),θ(2),θ(3),...,θ(nu)(12∑j=1nu∑i:r(i,j)=1(θ(j)Tx(i)−y(i,j))2+λ2∑j=1nu∑k=1nθ(j)k2)J(θ(1),θ(2),θ(3),...,θ(nu))=minθ(1),θ(2),θ(3),...,θ(nu)(12∑j=1nu∑i:r(i,j)=1(θ(j)Tx(i)−y(i,j))2+λ2∑j=1nu∑k=1nθk(j)2)
我们采用梯度下降算法,可以得到如下公式:
θ(j)0=θ(j)0−α∑i:r(i,j)=1(θ(j)Tx(i)−y(i,j))x(i)0θ0(j)=θ0(j)−α∑i:r(i,j)=1(θ(j)Tx(i)−y(i,j))x0(i)
当k=1,…,nk=1,…,n时:
θ(j)k=θ(j)k−α(∑i:r(i,j)=1(θ(j)Tx(i)−y(i,j))x(i)k+λθ(j))θk(j)=θk(j)−α(∑i:r(i,j)=1(θ(j)Tx(i)−y(i,j))xk(i)+λθ(j))
式中αα为超参数学习率,需要人工设定。
以上就是基于内容的推荐系统,其核心原理就是通过对每道题目的知识点进行人工标注,同时根据学生做题情况,推出学习对知识点的掌握情况,最后根据这些信息来进行推荐。在下一小节中,我们将向大家介绍另一类推荐算法,即基于深度学习技术的协同过滤算法。

白领最爱的电热水壶

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: