本文基本策略:GRU + KB (Knowledge Base,利用Key-Value进行查询和更新)

具体做法:

1、利用GRU为物品会话序列建模,每一个物品都有一个初始表达q,最终输出h

2、利用KB构建物品和属性之间的实体关系表达(TRANSE模型||e_1+r-e_2||),其中e是物品实体表达,r为关系表达(关系可以理解为属性名,如导演、价格等;而实体又可以理解为对应于这个属性名的属性值)

3、将属性表达(即r)设置成Key-Value NN中的K值,被所有用户共享(同一个领域,物品属性数量和种类基本上是稳定的),而Key-Value NN中的V,是特定于单个用户的、根据用户访问过的物品e进行更新。假设有(K_a, V_a)以及用户新访问的物品e_1,且在KB中存在(e_1, r_a, e_2), 即实体e_1的r_a属性值为e_2,所以就可以用e_2的表达来更新V_a.而e_2表达的估计可以是e_1+r_a(TRANSE,为什么不直接用e_2,因为对应于(e_1,r_a)的e_2可能存在多个,例如一部电影有多个演员,而“演员”这个属性名只有一个)。具体的更新方式e_1+r_a和之前的V_a加权求和

4、解决了以上问题,就可以利用h和K来检索V,最后将V加权聚合成m

5、最终用户表达:concate(h,m),物品表达:concate(q,e),并采用BPR-loss学习参数,其中q, e, r(K)都是提前利用其他模型训练好的,所以主要训练的参数为GRU以及V。



留言

登录 请先登陆, 再留言!