AutoFIS 总结

AutoFIS是华为提出的一种自动选取二阶以及更高阶特征的特征抽取算法

论文开篇指出:在CTR预估中,交叉特征对于推理模型是非常重要的,在现有的深度模型中,交叉特征都是被手动设计或简单的罗列。罗列出所有的交叉特征不仅需要巨大的内存消耗和计算复杂度,而且无用交叉特征还会移入噪声并使得模型训练复杂化。因此提出了该算法—AutoFIS。

AutoFIS的作用:

  1. 去除无用交叉特征,甚至是有害的交叉特征
  2. 基于FM-AUTOFIS网络选取的二阶、三阶交叉特征,可以应用到 state-of-the-art 模型中,即用简单的模型进行交叉特征选择,然后应用到另外的模型中

AutoFIS工作原理

autoFIS模型训练分两个阶段:search stage 和 re-train stage。

search stage:通过 “结构参数”(后面会讲到)学习到各个交叉特征的对于结果的重要性
re-train stage:去除无用交叉特征,然后进行模型训练

对比现有特征选择工具

  1. Gradient boosting decision tree (GBDT):

缺点:该方法可以将为逻辑回归和FFM模型选择交叉特征。但是实际上,树模型更加适合于连续特征,而不适用于推荐系统中,维度很高的类别数据

  1. AutoCross技术

该特征选择技术要求 需要训练整个模型 去评估选择出来的交叉特征集合,但是候选集很多。 m个特征的二阶特征就有2Cm22^{C_{m}^{2} }2Cm2 个。 AutoCross具体过程为:

(未看过AutoCross,对其不是很了解)
缺点:AutoCross得到交叉特征不一定适用于Deep model。

AutoFIS对于AutoCross的优点:
AutoFIS只需要运行search stage就可以评估出所有交叉特征的重要性,这种方法的效率更高;并且得到的交叉特征可以直接应用到search stage中的Deep model中。

模型介绍


上图分别是FM、DeepFM、IPNN。下面就详细介绍一下FM模型:

FM模型

Feature Embedding Layer:

embedding如何得到,请自行百度,大概方法如下:

该层的输出为[e1,e2,...,em][e_{1}, e_{2},..., e_{m}][e1,e2,...,em], 即m个embedding特征。

Feature Interaction Layer.

通过 该层得到交叉特征, 首先通过 “inner product of the pairwise feature interaction”。
[<e1,e2>,<e1,e3>...,<em−1,em>][<e_{1}, e_{2}>,<e_{1}, e_{3}>..., <e_{m-1}, e_{m}>][<e1,e2>,<e1,e3>...,<em1,em>]
该层的输出为

何为inner product: 在数学中,点积(德语:Skalarprodukt;英语:Dot Product)又称数量积或标量积(德语:Skalarprodukt;英语:Scalar Product),是一种接受两个等长的数字序列(通常是坐标向量)、返回单个数字的代数运算。在欧几里得几何中,两个笛卡尔坐标向量的点积常称为内积(德语:inneres Produkt;英语:Inner Product),见内积空间。

AutoFIS详解

AutoFIS算法的工作原理

AutoFIS工作过程可以分为两个阶段,即搜索阶段,决定各个交叉特征的重要性;训练阶段,基于选择出的交叉特征进行再次训练。
搜索阶段:论文中引进一个gate operation(门操作),个数为等于交叉特征的个数,即 2Cm22^{C_{m}^{2}}2Cm2个,在autofis算法中,并不是从整个候选集中离散的形式筛选小候选集,而是引进一个结构参数 a,这样就可以基于梯度下降法去学习稀疏的结构参数a。结构参数如下图所示。


AutoFIS中,interaction layer的输出如下所示,在搜索阶段,ai,ja_{i, j}ai,j代表每个交叉特征对于最终预估结果的重要性。

在搜索阶段,论文提出,由于ai,j{a_{i,j}}ai,j<ei,ej>{<e_{i}, e_{j}>}<ei,ej>是一起训练的,所以ai,j{a_{i,j}}ai,j的结果并不能表明<ei,ej>{<e_{i}, e_{j}>}<ei,ej>的重要性。(tip:我是这样想的,在工作当中,如果让一个时刻和你一起玩耍的人,给你打绩效的话,那么结果一定不是很公证的。)
为了解决ai,j{a_{i,j}}ai,j<ei,ej>{<e_{i}, e_{j}>}<ei,ej>的问题,论文中在<ei,ej>{<e_{i}, e_{j}>}<ei,ej>上引如了BN层。

zin{z_{in}}zinzout{z_{out}}zout分表代表BN层的输入和输出,θ and β are trainable scale and shift parameters
of BN; ϵ is a constant for numerical stability。

搜索阶段采用的下降法为:GRDA Optimizer (Generalized regularized dual averaging optimizer),该方法的目的是为了得到稀疏深度学习模型

AutoFIS阅读总结相关推荐

  1. 论文阅读工具ReadPaper

    对于搞科研的同学们来说,看论文是要经历的第一关,尤其是要读好多篇论文的时候,更是着实令人头大. 这不,最近无意中发现了个在线论文阅读网站:readpaper.com,号称「论文阅读笔记神器,硕博科研学 ...

  2. YOLOv4全文阅读(全文中文翻译)

    YOLOv4全文阅读(全文中文翻译) YOLOv4: Optimal Speed and Accuracy of Object Detection 论文链接: https://arxiv.org/pd ...

  3. 多目标跟踪:CVPR2019论文阅读

    多目标跟踪:CVPR2019论文阅读 Robust Multi-Modality Multi-Object Tracking 论文链接:https://arxiv.org/abs/1909.03850 ...

  4. 快速人体姿态估计:CVPR2019论文阅读

    快速人体姿态估计:CVPR2019论文阅读 Fast Human Pose Estimation 论文链接: http://openaccess.thecvf.com/content_CVPR_201 ...

  5. Action4D:人群和杂物中的在线动作识别:CVPR209论文阅读

    Action4D:人群和杂物中的在线动作识别:CVPR209论文阅读 Action4D: Online Action Recognition in the Crowd and Clutter 论文链接 ...

  6. 深度学习点云语义分割:CVPR2019论文阅读

    深度学习点云语义分割:CVPR2019论文阅读 Point Cloud Oversegmentation with Graph-Structured Deep Metric Learning 摘要 本 ...

  7. 3D目标检测论文阅读多角度解析

    3D目标检测论文阅读多角度解析 一.前言 CNN(convolutional neural network)在目标检测中大放异彩,R-CNN系列,YOLO,SSD各类优秀的方法层出不穷在2D图像的目标 ...

  8. 3D目标检测论文阅读摘要

    3D目标检测论文阅读摘要 2D Object Detection 的研究已经非常成熟了,代表作品有RPN系列的FasterRCNN,One Shot系列的YOLOv1-YOLOv3,这里推荐一个2D ...

  9. 2021年大数据Flink(四十八):扩展阅读  Streaming File Sink

    目录 扩展阅读  Streaming File Sink 介绍 场景描述 Bucket和SubTask.PartFile 案例演示 扩展阅读  配置详解 PartFile PartFile序列化编码 ...

最新文章

  1. android APK内存多少字节,Android apk安全测评、应用加固、字节对齐、二次签名(有这一篇就够了)...
  2. RunLoop 详解
  3. 【转载】尝试使用GraphicsMagick的缩略图功能
  4. Autosys command
  5. AttributeError: module 'pymongo' has no attribute 'Connection'
  6. 使用 VMControl 2.4 实现多网络的 Power 服务器捕捉和系统部署
  7. 申请美国计算机科学,美国计算机科学的申请特点
  8. java中h1.j有什么作用_Android JNI学习之javah命令的正确使用(找了好半天才找到的,汉,网上好多说法都没用)...
  9. POJ#1182 食物链
  10. 循环中需要调用异步怎么确保执行完再执行其他的_什么是事件循环和异步编程?5种使用async/await更好地编码方式!...
  11. 基于java的客户关系管理系统的设计与实现(论文+毕业设计)(完整源码可演示)
  12. Opencv python之车辆识别项目(附代码)
  13. 从NLP任务中文本向量的降维问题,引出LSH(Locality Sensitive Hash 局部敏感哈希)算法及其思想的讨论...
  14. 计算机术语 日语,常用日语计算机词汇~~
  15. 高洛峰招徒培养IT名师
  16. 计算机刷新的作用,为什么要刷新 刷新有什么用?
  17. Linux----生产者与消费者
  18. 科技论文翻译,俄语文档的语法有何特点
  19. 程序员真实调查,工资真的高吗?反正我的不高
  20. 洛谷· [AHOI2008]紧急集合 / 聚会

热门文章

  1. java 权重_权重随机算法的java实现
  2. java none怎么用tomcat_关于如何在Tomcat中使用JavaBean
  3. Linux下hosts文件详解
  4. http_load 对squid 进行压力测试
  5. c语言into的用法,C为into doing sth 英语习惯用法.ppt
  6. python股票技术指标计算_使用 Ta-lib 计算 MACD 等技术指标
  7. kickstart无人值守
  8. mysql数据库实验3查询_mysql数据库(3)-查询
  9. Python3 遍历列表、字典和元组方式总结
  10. 锤子手机获工信部入网许可:清晰照曝光