推荐系统(6)-注意力机制+深度推荐模型、强化学习推荐系统

注意力机制+深度推荐模型、强化学习推荐系统

  • 1.AFM -2017
  • 2.DIN-2017
  • 3.DIEN-2019
  • 4. DRN-2018

1.AFM -2017

Attention factorization machines–浙江大学–基于模型结构的改进
引入注意力机制FM, 可视为NFM模型的改进。给特征交叉池化后的特征向量施加不同的注意力权重。

出发点:预测某一男性是否购买某一键盘。那么‘性别为男且历史行为购买过鼠标’ 这一交叉特征 很可能 比 ‘性别为男且年龄为30’这一交叉特征更为重要。

具体做法:交叉特征进全联接层,softmax输出 特征权重。全联接层的参数随网络训练
(感觉注意力机制池化层就是多加了一个全联接权重输出层啊)

2.DIN-2017

Deep Interest Network–阿里巴巴-电商广告推荐-基于业务观察的模型改进

出发点:用户特征组 和 广告特征组中的商品id 和商铺id应该有不同的权重地位。
具体做法:利用候选商品和历史行为商品之间的相关性计算出一个权重。–注意力激活单元

(详细结构看书,注意力网路输出的只是权重,而不是后一层的输入)

3.DIEN-2019

Deep interest evolution network–阿里巴巴–序列模型模拟了用户兴趣的演化。
推荐系统的真正推荐目标:针对下一次购买的推荐。
特定用户的历史行为都是一个随时间排序的序列,用户兴趣的迁移其实非常快。
序列信息的重要性在于:

  1. 强调最近行为对下次行为预测的影响
  2. 序列模型能够学习到购买趋势的信息

核心:如何构建兴趣进化网络。兴趣进化网络分为三层
3. 行为序列层–原始行为的embedding
4. 兴趣抽取层–GRU模拟用户行为迁移
5. 兴趣进化层–AUGRU用注意力机制强调不同兴趣演化路径的重要性(h(t)的每一维度为一个兴趣演化路径?)

4. DRN-2018

Deep reinforcement for news recommender–宾夕法尼亚州立大学 + 微软亚洲研究院–新闻推荐系统
将强化学习模型应用到推荐系统中,一些关键概念的解释

  1. 智能体:推荐系统
  2. 环境:新闻网站、app、用户组成的整个推荐系统的外部环境
  3. 行动:推荐系统进行新闻排序后推荐
  4. 反馈:用户的点击行为
  5. 状态:有关于用户,新闻的特征

最大优势–利用‘行动-反馈-状态更新’,实现在线更新推荐模型

典型的深度强化学习模型:DQN

DRN在线学习模型中包含“微更新”和“主更新”

  1. 微更新–竞争梯度下降法–随机变换推荐模型的梯度,给出推荐列表2;原始推荐模型给出推荐列表1。两张推荐列表同时推送给用户,如果表2的结果比表1好,用改动后的模型代替原始推荐模型。不断重复这个过程。
  2. 主更新–利用用户点击数据、用户活跃度数据整个模型的迭代更新

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/444686.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Caffe安装的坑整理

怎么说了,入了深度学习的坑,就要踩一踩才算你入门,这里我整理了我在安装学习caffe自己遇到的坑: 1.Caffe-GPU编译问题:nvcc fatal : Unsupported gpu architecture compute_20 仔细查看了一下 Makefile.config 中 CUDA_ARCH 设置未按规定设置: # CUDA architecture se…

leetcode74. 搜索二维矩阵 ,你见过吗

编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性: 每行中的整数从左到右按升序排列。 每行的第一个整数大于前一行的最后一个整数。 示例 1: 输入: matrix [ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34,…

pytorch学习 入门篇(一)

PyTorch 是什么? 它是一个基于 Python 的科学计算包, 其主要是为了解决两类场景: NumPy 的替代品, 以使用 GPU 的强大加速功能一个深度学习研究平台, 提供最大的灵活性和速度Tensors(张量) Tensors 与 NumPy 的 ndarrays 非常相似, 除此之外还可以在 GPU 上使用张量来加速…

关系数据库——范式/反范式的利弊权衡和建议

范式(避免数据冗余和操作异常) 函数依赖 A->B A和B是两个属性集,来自同一关系模式,对于同样的A属性值,B属性值也相同 平凡的函数依赖 X->Y,如果Y是X的子集 非平凡的函数依赖 X->Y&#xff…

pytorch学习入门 (二) Variable(变量)

Variable(变量) autograd.Variable 是包的核心类. 它包装了张量, 并且支持几乎所有的操作. 一旦你完成了你的计算, 你就可以调用 .backward() 方法, 然后所有的梯度计算会自动进行. 你还可以通过 .data 属性来访问原始的张量, 而关于该 variable&#…

Linux(x)-

Ubuntu装机后的基础应用

pytorch入门学习(三) 神经网络

神经网络可以使用 torch.nn 包构建. autograd 实现了反向传播功能, 但是直接用来写深度学习的代码在很多情况下还是稍显复杂,torch.nn 是专门为神经网络设计的模块化接口. nn 构建于 Autograd 之上, 可用来定义和运行神经网络. nn.Module 是 nn 中最重要的类, 可把它看成是一个…

leetcode1033. 移动石子直到连续

三枚石子放置在数轴上&#xff0c;位置分别为 a&#xff0c;b&#xff0c;c。 每一回合&#xff0c;我们假设这三枚石子当前分别位于位置 x, y, z 且 x < y < z。从位置 x 或者是位置 z 拿起一枚石子&#xff0c;并将该石子移动到某一整数位置 k 处&#xff0c;其中 x &…

pytorch学习 训练一个分类器(五)

训练一个分类器 就是这个, 你已经看到了如何定义神经网络, 计算损失并更新网络的权重. 现在你可能会想, 数据呢? 一般来说, 当你不得不处理图像, 文本, 音频或者视频数据时, 你可以使用标准的 Python 包将数据加载到一个 numpy 数组中. 然后你可以将这个数组转换成一个 to…

Git(6)-Git配置文件、底层操作命令

Git基本命令1. 常用(迷糊)命令-冷知识2. git 配置2.1 设置 配置文件2.2 查看 配置文件--git config -l2.3 移除 配置文件设置--unset2.3 命令别名 --alias3.git 对象 &#xff08;git底层操作命令&#xff09;3.1 初始化一个版本库3.2 新建一个简单的blob 对象3.3 基于散列值查…

【软考中级】网络工程师:8.网络安全

本章考察内容比较广泛&#xff0c;考题对知识点都会有所涉及。 8.1 网络安全的基本概念 8.1.1 网络安全威胁的类型 窃听 这种情况发生在广播式网络系统中&#xff0c;每个节点都可以读取数据&#xff0c;实现搭线窃听、安装通信监视器和读取网上的信息等。 假冒 当一个实体…

leetcode9 回文数

判断一个整数是否是回文数。回文数是指正序&#xff08;从左向右&#xff09;和倒序&#xff08;从右向左&#xff09;读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个…

caffe各层参数详解

在prototxt文件中,层都是用layer{}的结构表示,而里面包含的层的参数可以在caffe.proto文件中找到,比如说Data类型的结构由message DataParameter所定义,Convolution类型的结构由message ConvolutionParameter所定义。 具体说明下: name表示该层的名称type表示该层的类型,…

caffe网络结构图绘制

绘制网络图通常有两种方法&#xff1a; 一种是利用python自带的draw_net.py&#xff0c;首先安装两个库&#xff1a; sudo apt-get install graphviz sudo pip install pydot 接下来就可以用python自带的draw_net.py文件来绘制网络图了。 draw_net.py执行时带三个参数&…

Git(7)-Git commit

Git提交1.识别不同的提交1.1绝对提交名-ID1.2 引用和符号引用--HEAD2.查看提交的历史记录-git log3.提交图-gitk4.提交的范围4.1 X..Y4.1 X...Y5.查找bad 提交--git bisect6.查看代码修改者-git blame命令概览git commit -a # 直接提交修改和删除文件有效加了-a&#xff0c;在 …

leetcode111. 二叉树的最小深度

给定一个二叉树&#xff0c;找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最小深度 2. 思路&#xff1a…

Caffe将图像数据转换成leveldb/lmdb

Caffe中convert_imageset projrct将图像数据转换成Caffe能读取的数据格式leveldb/lmdb -gray=true //whether read gray image -shuffle=true //whether mix order -resize_height=28 -resize_width=28 -backend=lmdb …

leetcode155. 最小栈

设计一个支持 push&#xff0c;pop&#xff0c;top 操作&#xff0c;并能在常数时间内检索到最小元素的栈。 push(x) -- 将元素 x 推入栈中。 pop() -- 删除栈顶的元素。 top() -- 获取栈顶元素。 getMin() -- 检索栈中的最小元素。 示例: MinStack minStack new MinStack()…

理解Caffe的网络模型

目录 1. 初见LeNet原始模型2. Caffe LeNet的网络结构3. 逐层理解Caffe LeNet 3.1 Data Layer3.2 Conv1 Layer3.3 Pool1 Layer3.4 Conv2 Layer3.5 Pool2 Layer3.6 Ip1 Layer3.7 Relu1 Layer3.8 Ip2 Layer3.9 Loss Layer 1. 初见LeNet原始模型 Fig.1. Architecture of original …

Git(8)-分支

分支1. 分支名2. 创建分支-git branch3. 查看分支-git show-branch4. 检出分支4.1 有未提交的修改时进行检出4.2 合并变更到不同的分支git checkout -m5. 分离HEAD 分支6.删除分支分支操作命令概览 git branch # 列出版本库中的分支 git branch -r # 列出远程跟踪分支…