当前位置: 首页 > news >正文

网站建设前准备工作高校学校网站建设

网站建设前准备工作,高校学校网站建设,wordpress分享插件国内,wordpress建企业网站设置文哥的学习笔记#xff1a; https://www.jianshu.com/p/af5226c7fbbb 知识图谱特征学习在推荐系统中的应用步骤大致有以下三种方式#xff1a; 依次训练的方法主要有#xff1a;Deep knowledge-aware Network#xff08;DKN#xff09; 联合训练的方法有#xff1a; Rip…文哥的学习笔记 https://www.jianshu.com/p/af5226c7fbbb 知识图谱特征学习在推荐系统中的应用步骤大致有以下三种方式 依次训练的方法主要有Deep knowledge-aware NetworkDKN 联合训练的方法有 Ripple Network 交替训练主要采用multi-task的思路主要方法有 Multi-task Learning for KG enhanced RecommendationMKR 1、MKR原理介绍 由于推荐系统中的物品和知识图谱中的实体存在重合因此可以采用多任务学习的框架将推荐系统和知识图谱特征学习视为两个分离但是相关的任务进行交替式的学习。 MKR的模型框架如下图其中左侧是推荐系统任务右侧是知识图谱特征学习任务。推荐部分的输入是用户和物品的特征表示点击率的预估值作为输出。知识图谱特征学习部分使用的是三元组的头节点和关系作为输入预测的尾节点作为输出 由于推荐系统中的物品和知识图谱中的实体存在重合所以两个任务并非相互独立。所以作者在两个任务中设计了交叉特征共享单元cross-feature-sharing units作为两者的连接纽带。 交叉特征共享单元是一个可以让两个任务交换信息的模块。由于物品向量和实体向量实际上是对同一个对象的两种描述他们之间的信息交叉共享可以让两者都获得来自对方的额外信息从而弥补了自身的信息稀疏性的不足其结构如下 关于这个交叉单元具体实现大家可以参照代码进行理解。 最后是损失函数部分由于是交替训练的方式所以在训练时首先固定推荐系统模块的参数训练知识图谱特征学习模块的参数然后固定知识图谱特征学习模块的参数训练推荐系统模块的参数。 推荐系统模块是点击率预估模型损失函数是对数损失加l2正则项知识图谱特征学习模块希望预测得到的tail向量和真实的tail向量相近因此首先计算二者的内积内积可近似表示向量之间的余弦相似度内积经过sigmoid之后取相反数再加上l2正则项即得到了知识图谱特征学习模块的损失。关于损失的计算我们在代码里可以更清楚的看到 本文的代码地址为https://github.com/princewen/tensorflow_practice/tree/master/recommendation/Basic-MKR-Demo 参考代码地址为https://github.com/hwwang55/MKR 数据下载地址为https://pan.baidu.com/s/1uHkQXK_ozAgBWcMUMzOfZQ 密码:qw30 在对数据进行预处理后我们得到了两个文件kg_final.txt和rating_final.txt rating_final.txt数据形式如下三列分别是user-iditem-id以及label0是通过负采样得到的正负样本比例为1:1。 kg_final.txt格式如下三类分别代表hrt(这里entity和item用的是同一套id) 好了接下来我们重点介绍一下我们的MKR框架的构建。 2. 模型 模型输入 模型输入有以下几个部分 用户的id、物品的id、推荐系统部分的lablel、知识图谱三元组的head、relation、tail的对应id def _build_inputs(self):self.user_indices tf.placeholder(tf.int32,[None],user_indices)self.item_indices tf.placeholder(tf.int32,[None],item_indices)self.labels tf.placeholder(tf.float32,[None],labels)self.head_indices tf.placeholder(tf.int32,[None],head_indices)self.tail_indices tf.placeholder(tf.int32,[None],tail_indices)self.relation_indices tf.placeholder(tf.int32,[None],relation_indices)低层网络构建 低层网络指下面的部分 可以看到user_id、item_id、head_id以及relation_id首先转换为对应的Embeddinguser_id和relation_id经由多层神经网络向上传播、而head_id和item_id经过交叉单元进行传播 def _build_low_layers(self,args):self.user_emb_matrix tf.get_variable(user_emb_matrix, [self.n_user, args.dim])self.item_emb_matrix tf.get_variable(item_emb_matrix, [self.n_item, args.dim])self.entity_emb_matrix tf.get_variable(entity_emb_matrix, [self.n_entity, args.dim])self.relation_emb_matrix tf.get_variable(relation_emb_matrix, [self.n_relation, args.dim])# [batch_size, dim]self.user_embeddings tf.nn.embedding_lookup(self.user_emb_matrix, self.user_indices)self.item_embeddings tf.nn.embedding_lookup(self.item_emb_matrix, self.item_indices)self.head_embeddings tf.nn.embedding_lookup(self.entity_emb_matrix, self.head_indices)self.relation_embeddings tf.nn.embedding_lookup(self.relation_emb_matrix, self.relation_indices)self.tail_embeddings tf.nn.embedding_lookup(self.entity_emb_matrix, self.tail_indices)for _ in range(args.L):user_mlp Dense(input_dimargs.dim,output_dimargs.dim) #通过dense网络tail_mlp Dense(input_dimargs.dim,output_dim args.dim) #通过dense网络cc_unit CrossCompressUnit(args.dim) #这是交叉单元self.user_embeddings user_mlp(self.user_embeddings)self.item_embeddings,self.head_embeddings cc_unit([self.item_embeddings,self.head_embeddings])self.tail_embeddings tail_mlp(self.tail_embeddings)self.vars_rs.extend(user_mlp.vars)self.vars_rs.extend(cc_unit.vars)self.vars_kge.extend(tail_mlp.vars)self.vars_kge.extend(cc_unit.vars)接下来我们来看一下交叉单元的代码: v,e inputsv tf.expand_dims(v,dim2) e tf.expand_dims(e,dim1)# [batch_size, dim, dim] c_matrix tf.matmul(v, e) c_matrix_transpose tf.transpose(c_matrix, perm[0, 2, 1])# [batch_size * dim, dim] c_matrix tf.reshape(c_matrix, [-1, self.dim]) c_matrix_transpose tf.reshape(c_matrix_transpose, [-1, self.dim])v_output tf.reshape(tf.matmul(c_matrix,self.weight_vv) tf.matmul(c_matrix_transpose,self.weight_ev),[-1,self.dim]) self.bias_ve_output tf.reshape(tf.matmul(c_matrix, self.weight_ve) tf.matmul(c_matrix_transpose, self.weight_ee),[-1, self.dim]) self.bias_ereturn v_output,e_outputitem对应的embedding用v表示head对应的embedding用e表示二者初始情况下都是batch * dim大小的。过程如下 1、v扩展成三维batch * dim * 1e扩展成三维batch * 1 * dim随后二者进行矩阵相乘v * e我们知道三维矩阵相乘实际上是后两维进行运算因此得到c_matrix的大小为 batch * dim * dim 2、对得到的c_matrix进行转置得到c_matrix_transpose大小为batch * dim * dim。这相当于将e扩展成三维batch * dim * 1v扩展成三维batch * 1 * dim随后二者进行矩阵相乘e * v。这是两种不同的特征交叉方式。 3、对c_matrix和c_matrix_transpose 进行reshape操作变为batch * dim * dim的二维矩阵 4、定义两组不同的参数和偏置分别得到交叉后的v_output和e_output. 高层网络构建 高层网络指下面的部分 对于推荐部分可以采用内积直接得到CTR的预估值也可以经过多层神经网络得到预估值对于知识图谱部分将head和relation对应的向量进行拼接经过多层神经网络得到一个tail对应向量的预估值并与真实的tail向量计算内积。代码如下 def _build_high_layers(self,args):#RSuse_inner_product Trueif use_inner_product:self.scores tf.reduce_sum(self.user_embeddings*self.item_embeddings,axis1)else:self.user_item_concat tf.concat([self.user_embeddings,self.item_embeddings],axis1)for _ in range(args.H - 1):rs_mlp Dense(input_dim args.dim * 2 , output_dim args.dim * 2)self.user_item_concat rs_mlp(self.user_item_concat)self.vars_rs.extend(rs_mlp.vars)rs_pred_mlp Dense(input_dimargs.dim * 2,output_dim1)self.scores tf.squeeze(rs_pred_mlp(self.user_item_concat))self.vars_rs.extend(rs_pred_mlp)self.scores_normalized tf.nn.sigmoid(self.scores)#KGEself.head_relation_concat tf.concat([self.head_embeddings,self.relation_embeddings],axis1)for _ in range(args.H - 1):kge_mlp Dense(input_dimargs.dim * 2,output_dim args.dim * 2)self.head_relation_concat kge_mlp(self.head_relation_concat)self.vars_kge.extend(kge_mlp.vars)kge_pred_mlp Dense(input_dimargs.dim * 2,output_dim args.dim)self.tail_pred kge_pred_mlp(self.head_relation_concat)self.vars_kge.extend(kge_pred_mlp.vars)self.tail_pred tf.nn.sigmoid(self.tail_pred)self.scores_kge tf.nn.sigmoid(tf.reduce_sum(self.tail_embeddings * self.tail_pred,axis1))#self.rmse tf.reduce_mean(tf.sqrt(tf.reduce_sum(tf.square(self.tail_embeddings - self.tail_pred),axis1) / args.dim))定义损失 推荐系统部分的损失是对数损失加l2正则项 # RS self.base_loss_rs tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(labelsself.labels, logitsself.scores)) self.l2_loss_rs tf.nn.l2_loss(self.user_embeddings) tf.nn.l2_loss(self.item_embeddings) for var in self.vars_rs:self.l2_loss_rs tf.nn.l2_loss(var) self.loss_rs self.base_loss_rs self.l2_loss_rs * args.l2_weight知识图谱特征学习模块用上一步计算的scores_kge的相反数再加上l2正则项 # KGE self.base_loss_kge -self.scores_kge self.l2_loss_kge tf.nn.l2_loss(self.head_embeddings) tf.nn.l2_loss(self.tail_embeddings) for var in self.vars_kge:self.l2_loss_kge tf.nn.l2_loss(var) self.loss_kge self.base_loss_kge self.l2_loss_kge * args.l2_weight
http://www.huolong8.cn/news/294663/

相关文章:

  • 网站建设优化服务平台236企业邮箱登陆入口
  • wordpress 全站备份合肥大建设
  • 怎么搭建支付网站平面设计素材免费网站有哪些
  • 做网站fjfzwl网站建设文本居中代码
  • 专题网站建设自查整改报告ui做标注的网站
  • 网站优化专家建e网室内设计效果图新中式
  • 深圳横岗做网站无锡网站建设品牌大全
  • 常州模板网站建设信息厦门建设局投诉电话
  • 加强网站建设的通知手表网站有哪个比较好
  • 珠海培训网站建设中介如何做网站收客
  • 我的家乡网站建设模板下载合肥市蜀山区做个网站多少钱
  • 青岛做外贸网站的公司郑州浩方网站建设智联招聘
  • 无锡本地网站签名设计免费版在线
  • 做网站接单渠道前端开发工程师招聘要求
  • 福州专业做网站公司张家港做网站收费标准
  • 宠物网站设计模块网站建设有几种方法
  • 网站悬浮框代码做网站制作赚钱吗
  • 手机如何建立网站平台wordpress 好看主题
  • 门户网站创建天津建设工程信息网询
  • 无锡天罡建设有限公司网站网页制作基础教程书籍
  • dedecms 古典棕色大气风格中药医药企业网站模板源码跨境电商是怎么赚钱的
  • 家里电脑可以做网站服务器吗制作网站的软件叫什么
  • 网站建设的公司太多了公司变更股东需要多久
  • 网站资料网站后台帐号密码破解
  • 个人网站不备案wordpress加载本地媒体
  • 网站优化能发外链的gvm网站大全百度竞价排名正确解释
  • 网站建设与管理报告seo和sem的概念
  • 开发企业门户网站佛山新网站建设效果
  • 网站开发学多久完成一份网站建设前期规划方案
  • 金州新区规划建设局网站如何做淘宝直播教学视频网站