AutoEmbedding论文阅读笔记
问题背景
目前推荐系统中, 在特征维度上低频特征和高频特征的维度是通过遍历mask特征获得到的auc衰减衡量特征对模型的重要度来决定的. 如果想提升模型效果, 在field层面上需要减少进行基于经验的特征维度调参, 在feasign层面上对作用不大的feasign对应的mf进行缩维, 裁剪掉冗余维度, 将对作用较大的feasign进行自动扩维.
调研方案
方案1: 启发式方法
通常基于预定义的人工规则为每个特征分配维数。根据特征出现频率来分配embedding维数。优点是实现比较简单,但其所基于的幂律分布并不能保证总是满足,因此限制了其在复杂任务中的推广
扩维主要是2种方法, 一种是线性变换(每个维度的向量经过FC后进行batch_norm), 一种是直接填0, 降维应该只能用线性变换.
我们预先设置1/4/8/16/32/64等阈值, 根据跑的全量特征重要度任务总的参数数量 计算阈值比例, 然后按降序分别分配到对应顺序的slot上.
这个阈值是个超参..同时起多组任务不断调整超参拿到最佳的那一组结果.尝试会很麻烦而且手动效率不高
方案2: Pruning方法
Auto-EDS看作嵌入剪枝问题,通过不同的剪枝策略对整个嵌入矩阵进行嵌入剪枝,从而自动获得混合维度嵌入矩阵。因此,这类方法的关键思想是通过识别并去除嵌入矩阵中的冗余参数,建立内存高效的模型,并尽可能保持准确性。虽然剪枝方法可以通过选择性地减少embedding中的参数实现维度搜索,但这些方法通常需要进行迭代优化,耗时较长(原因是因为需要加入新的mask layer用于删除和验证冗余参数. 另外还有新的参数删除阈值需要训练)
目前看到的调研成功可能性最高的论文是Single-shot Embedding Dimension Search
Single-shot Embedding Dimension Search
这篇文章介绍的方法主要分成3步, 用一种高效的方式在一次fp/bp内, 把所有的mf维度的重要度跑出来

第一步pretraining,把所有特征的embedding设置成等长而且一定包含冗余参数的长度, 比如都变成64维
第二步single-shot pruning, 计算每一维对离线指标的影响,降序排列, 把达到参数阈值之后的参数删除 (论文核心)
我们传统计算方法是
\(\Delta \mathcal{L}_{i, j}=\mathcal{L}(\hat{\mathbf{V}} \odot 1, \hat{\Theta} ; \mathcal{D})-\mathcal{L}\left(\hat{\mathbf{V}} \odot\left(1-\boldsymbol{\epsilon}_{i, j}\right), \hat{\Theta} ; \mathcal{D}\right)\) 即遍历所有的维度, 评估这个维度mask后对应的loss变化情况
这里做了一个优化
\(\begin{aligned}
\Delta \mathcal{L}_{i, j} & \approx g_{i, j}\left(\hat{\mathbf{V}}, \hat{\Theta} ; \mathcal{D}_b\right)=\left.\frac{\partial \mathcal{L}\left(\mathbf{V} \odot \boldsymbol{\alpha}, \Theta ; \mathcal{D}_b\right)}{\partial \boldsymbol{\alpha}_{i, j}}\right|_{\boldsymbol{\alpha}=1} \\
& =\left.\lim _{\delta \rightarrow 0} \frac{\mathcal{L}\left(\hat{\mathbf{V}} \odot \boldsymbol{\alpha}, \hat{\Theta} ; \mathcal{D}_b\right)-\mathcal{L}\left(\hat{\mathbf{V}} \odot\left(\boldsymbol{\alpha}-\delta \boldsymbol{\epsilon}_{i, j}\right), \hat{\Theta} ; \mathcal{D}_b\right)}{\delta}\right|_{\boldsymbol{\alpha}=\mathbf{1}}
\end{aligned}\)
, 把他约等于了这个维度的梯度, 这个在bp的时候已经算好了
最后根据梯度来算维度得分:
\(\mathbf{s}_{i, j}=\frac{\left|g_{i, j}\left(\hat{\mathbf{V}}, \hat{\Theta} ; \mathcal{D}_b\right)\right|}{\sum_{i=0}^m \sum_{j=0}^d\left|g_{i, j}\left(\hat{\mathbf{V}}, \hat{\Theta} ; \mathcal{D}_b\right)\right|}\)
把维度得分算出来后根据设定的参数量阈值就能把alpha向量算出来
\(\begin{gathered}
\boldsymbol{\alpha}_{i, j}=\mathbb{I}\left(\mathbf{s}_{i, j}-\tilde{s} \geq 0\right), \forall i \in\{1, \ldots, m\}, j \in\{1, \ldots, d\} \\
\text { s.t. }\|\boldsymbol{\alpha}\|_0<\kappa\|\mathbf{V}\|_0
\end{gathered}\)
第三步retraining, 把裁剪后的重新transform后输入fm, 原因是fm需要定长输入
他这里还提到了一个重要的问题:
为啥是基于slot维度做的裁剪, 而不是feasign维度的裁剪: 原因是要求验证集必须包括所有的feasign, 但是这个基本不可能实现. 所以长尾feasign没法处理.
最后把冗余的model裁剪完成后,热启重训练, 冷启第一层dense
整体算法的流程如下:

方案3: 超参数优化(HPO)
(HPO)受神经结构搜索(NAS)在深度神经网络体系结构自动搜索方面的启发,将嵌入维度搜索视为超参数优化(HPO)问题,从预定义的候选维度集搜索嵌入维度。缺点:generally requires a well-designed search space for candidate embedding dimensions and expensive optimization processes to train the candidates
实现成本较高, 暂不考虑.
参考文章
AutoEmbedding论文阅读笔记的更多相关文章
- 论文阅读笔记 - YARN : Architecture of Next Generation Apache Hadoop MapReduceFramework
作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...
- 论文阅读笔记 - Mesos: A Platform for Fine-Grained ResourceSharing in the Data Center
作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...
- 论文阅读笔记 Word Embeddings A Survey
论文阅读笔记 Word Embeddings A Survey 收获 Word Embedding 的定义 dense, distributed, fixed-length word vectors, ...
- 论文阅读笔记 Improved Word Representation Learning with Sememes
论文阅读笔记 Improved Word Representation Learning with Sememes 一句话概括本文工作 使用词汇资源--知网--来提升词嵌入的表征能力,并提出了三种基于 ...
- [置顶]
人工智能(深度学习)加速芯片论文阅读笔记 (已添加ISSCC17,FPGA17...ISCA17...)
这是一个导读,可以快速找到我记录的关于人工智能(深度学习)加速芯片论文阅读笔记. ISSCC 2017 Session14 Deep Learning Processors: ISSCC 2017关于 ...
- Nature/Science 论文阅读笔记
Nature/Science 论文阅读笔记 Unsupervised word embeddings capture latent knowledge from materials science l ...
- 论文阅读笔记(二十一)【CVPR2017】:Deep Spatial-Temporal Fusion Network for Video-Based Person Re-Identification
Introduction (1)Motivation: 当前CNN无法提取图像序列的关系特征:RNN较为忽视视频序列前期的帧信息,也缺乏对于步态等具体信息的提取:Siamese损失和Triplet损失 ...
- 论文阅读笔记(十八)【ITIP2019】:Dynamic Graph Co-Matching for Unsupervised Video-Based Person Re-Identification
论文阅读笔记(十七)ICCV2017的扩刊(会议论文[传送门]) 改进部分: (1)惩罚函数:原本由两部分组成的惩罚函数,改为只包含 Sequence Cost 函数: (2)对重新权重改进: ① P ...
- [论文阅读笔记] GEMSEC,Graph Embedding with Self Clustering
[论文阅读笔记] GEMSEC: Graph Embedding with Self Clustering 本文结构 解决问题 主要贡献 算法原理 参考文献 (1) 解决问题 已经有一些工作在使用学习 ...
- [论文阅读笔记] metapath2vec: Scalable Representation Learning for Heterogeneous Networks
[论文阅读笔记] metapath2vec: Scalable Representation Learning for Heterogeneous Networks 本文结构 解决问题 主要贡献 算法 ...
随机推荐
- Java网络编程----通过实现简易聊天工具来聊聊NIO
前文我们说过了BIO,今天我们聊聊NIO.NIO 是什么?NIO官方解释它为New lO,由于其特性我们也称之为,Non-Blocking IO.这是jdk1.4之后新增的一套IO标准.为什么要用NI ...
- Ubuntu 18.04 (Bionic) 简单快速的安装mongodb
按步骤走,不带脑子式安装(注意4.0版本mongodb官方已经不再支持,以下代码中可以修改mongodb版本号安装,目前最新版为6.0,如果懒得改直接用也可以,文章后边第三章第一条代码会直接升级为最新 ...
- Elasticsearch与Clickhouse数据存储对比
1 背景 京喜达技术部在社区团购场景下采用JDQ+Flink+Elasticsearch架构来打造实时数据报表.随着业务的发展Elasticsearch开始暴露出一些弊端,不适合大批量的数据查询,高频 ...
- How to boot the Raspberry Pi system from a USB Mass Storage Device All In One
How to boot the Raspberry Pi system from a USB Mass Storage Device All In One 如何从 USB 启动树莓派引导系统 / 如何 ...
- kafka集群是如何选择leader,你知道吗?
前言 kafka集群是由多个broker节点组成,这里面包含了许多的知识点,以下的这些问题你都知道吗? 你知道topic的分区leader是怎么选举的吗? 你知道zookeeper中存储了kafka的 ...
- Nginx SSL 双向认证
安装Nginx和OpenSSL yum install nginx openssl -y SSL 服务器 / 客户端双向验证证书的生成 创建一个新的 CA 根证书,在 nginx 安装目录下新建 ca ...
- 【webpack系列】从核心概念到上手配置
前言 作为前端开发者,相信大家或多或少都接触过webpack,现如今webpack已经渗透在了前端的各个方面,所以我们有必要来了解并学习webpack,webpack 是一种用于构建 JavaScri ...
- 第四章 IDEA的安装与使用
网上一大推的教程
- AI室内设计:提升效率、消除沟通障碍,满足客户需求
前言 免费AI绘图工具:https://www.topgpt.one 随着人工智能(AI)技术的不断发展,室内设计行业也开始受益于这一技术的应用.其中,AI绘画工具在室内设计中的应用正日益受到关注.这 ...
- selenium 根据期刊信息获取知网文献信息 pt.1
哈喽大家好,我是咸鱼 之前写过一篇获取知网文献信息的文章(关于<爬取知网文献信息>中代码的一些优化),看了下后台数据还挺不错 所以咸鱼决定再写一篇知网文献信息爬取的文章 需要注意的是文章只 ...