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

基于内容的推荐系统是根据内容的特征来进行推荐,如文本信息的词向量,商品的属性等信息,我们这里则是根据题目的知识点来进行推荐。
根据上篇博文的内容,我们可以将题目样本表示为如下形式:

x(1)=x(1)0x(1)1x(1)2=1.00.90.0 x ( 1 ) = [ x 0 ( 1 ) x 1 ( 1 ) x 2 ( 1 ) ] = [ 1.0 0.9 0.0 ]

x(2)=x(2)0x(2)1x(2)2=1.01.00.01 x ( 2 ) = [ x 0 ( 2 ) x 1 ( 2 ) x 2 ( 2 ) ] = [ 1.0 1.0 0.01 ]

x(3)=x(3)0x(3)1x(3)2=1.00.990.0 x ( 3 ) = [ x 0 ( 3 ) x 1 ( 3 ) x 2 ( 3 ) ] = [ 1.0 0.99 0.0 ]

x(4)=x(4)0x(4)1x(4)2=1.00.11.0 x ( 4 ) = [ x 0 ( 4 ) x 1 ( 4 ) x 2 ( 4 ) ] = [ 1.0 0.1 1.0 ]

x(5)=x(5)0x(5)1x(5)2=1.00.00.9 x ( 5 ) = [ x 0 ( 5 ) x 1 ( 5 ) x 2 ( 5 ) ] = [ 1.0 0.0 0.9 ]

在这里我们设样本特征向量x的维度为n,则n=2,注意这里不包括我们为了计算方便而添加的输助 x0 x 0
为了解决用户对未知题目打分预测问题,我们引入参数向量 θRn+1=R3 θ ∈ R n + 1 = R 3 。对于每个学生我们都用一个参数向量 θRn+1 θ ∈ R n + 1 ,来描述,则我们的参数集为: {θ(1),θ(2),θ(3),...,θ(nu)}={θ(1),θ(2),θ(3),θ(4)} { θ ( 1 ) , θ ( 2 ) , θ ( 3 ) , . . . , θ ( n u ) } = { θ ( 1 ) , θ ( 2 ) , θ ( 3 ) , θ ( 4 ) } 。假设我们要预测学生张一对第三个题目3的需要程度,我们首先找到描述这个题目的特征向量:
假设我们要预测用户张一对第三个题目3的需要程度,我们首先找到描述这个题目的特征向量:
x(3)=x(3)0x(3)1x(3)2=1.00.990.0 x ( 3 ) = [ x 0 ( 3 ) x 1 ( 3 ) x 2 ( 3 ) ] = [ 1.0 0.99 0.0 ]

如果我们已经知道参数集的值,例如对于张一来说,其对应的参数为:
θ(1)=0.05.00.0 θ ( 1 ) = [ 0.0 5.0 0.0 ]

那么张三对题目3的需要程度可以通过下式来计算:
θ(1)Tx(3)=0.05.00.0T1.00.990.0=5.0×0.99=4.95 θ ( 1 ) T ⋅ x ( 3 ) = [ 0.0 5.0 0.0 ] T [ 1.0 0.99 0.0 ] = 5.0 × 0.99 = 4.95

所以我们预测张一将对题目3的需要程度为4.95分,那么这个分数是否合理呢?我们看到,张一对知识点1基本都非常需要练习,而对知识点2基本不需要再练习,对同样是知识点1的题目3需要程度为4.95分是比较合理的,因此我们认为是一个合理的预测结果。如果我们将这个题目推荐给张一,他就很可能补足其在知识点1上的漏洞。
如果我们预先知道参数集 {θ(1),θ(2),θ(3),...,θ(nu)} { θ ( 1 ) , θ ( 2 ) , θ ( 3 ) , . . . , θ ( n u ) } 的值,我们就可以很容易的预测出学生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))2 min θ ( j ) 1 2 m ( j ) ∑ i : r ( i , j ) = 1 ( θ ( j ) T x ( i ) − y ( i , j ) ) 2

上式中叠加i:r(i,j)=1表示对学生j所有做过的题目,我们利用参数 θ(j) θ ( j ) 计算出该学生对题目i的需要程度,求出其与学生j对题目i的真实需要程度的偏差,并取平方,然后将所有题目的平方差相加,得到总的平方和误差,再除以用户j打过分影片的数量,得到一个平均值,我们的任务就是通过选择合适的 θ(j) θ ( j ) ,使得这个值达到最小。
在实际算法中,我们要会加上一个 L2 L 2 调整项,表明我们希望参数 θ(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 ) ( 1 2 m ( j ) ∑ i : r ( i , j ) = 1 ( θ ( j ) T x ( i ) − y ( i , j ) ) 2 + λ 2 m ( j ) ∑ k = 1 n θ 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)(12i:r(i,j)=1(θ(j)Tx(i)y(i,j))2+λ2k=1nθ(j)k2) min θ ( j ) ( 1 2 ∑ i : r ( i , j ) = 1 ( θ ( j ) T x ( i ) − y ( i , j ) ) 2 + λ 2 ∑ k = 1 n θ k ( j ) 2 )

我们不仅需要学习学生j的参数向量 θ(j) θ ( j ) ,我们需要学习所有学生参数向量 {θ(1),θ(2),θ(3),...,θ(nu)} { θ ( 1 ) , θ ( 2 ) , θ ( 3 ) , . . . , θ ( n u ) } ,所以代价函数就变为如下式所示:
minθ(1),θ(2),θ(3),...,θ(nu)(12j=1nui:r(i,j)=1(θ(j)Tx(i)y(i,j))2+λ2j=1nuk=1nθ(j)k2) min θ ( 1 ) , θ ( 2 ) , θ ( 3 ) , . . . , θ ( n u ) ( 1 2 ∑ j = 1 n u ∑ i : r ( i , j ) = 1 ( θ ( j ) T x ( i ) − y ( i , j ) ) 2 + λ 2 ∑ j = 1 n u ∑ k = 1 n θ k ( j ) 2 )

通过上面的讨论,我们可以得到代价函数为:
J(θ(1),θ(2),θ(3),...,θ(nu))=minθ(1),θ(2),θ(3),...,θ(nu)(12j=1nui:r(i,j)=1(θ(j)Tx(i)y(i,j))2+λ2j=1nuk=1nθ(j)k2) J ( θ ( 1 ) , θ ( 2 ) , θ ( 3 ) , . . . , θ ( n u ) ) = min θ ( 1 ) , θ ( 2 ) , θ ( 3 ) , . . . , θ ( n u ) ( 1 2 ∑ j = 1 n u ∑ i : r ( i , j ) = 1 ( θ ( j ) T x ( i ) − y ( i , j ) ) 2 + λ 2 ∑ j = 1 n u ∑ k = 1 n θ 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 ) T x ( i ) − y ( i , j ) ) x 0 ( i )

k=1,,n k = 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 ) T x ( i ) − y ( i , j ) ) x k ( i ) + λ θ ( j ) )

式中 α α 为超参数学习率,需要人工设定。
以上就是基于内容的推荐系统,其核心原理就是通过对每道题目的知识点进行人工标注,同时根据学生做题情况,推出学习对知识点的掌握情况,最后根据这些信息来进行推荐。在下一小节中,我们将向大家介绍另一类推荐算法,即基于深度学习技术的协同过滤算法。
电热水壶
白领最爱的电热水壶

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值