type
status
date
slug
summary
tags
category
icon
password
AutoInt
1️⃣论文出处
2️⃣论文解读
AutoInt模型通过显示的方式进行特征交叉,并且在模型的交互层引入了多头自注意力机制来赋予不同特征交叉以不同的重要性,增强了模型的表达能力。
3️⃣模型结构
1-Input Layer
首先将用户属性和物品数学转化为稀疏向量并拼接在一起。
其中M表示总共的feature fields的数目,表示第i个特征,如果是离散的,就是one-hot向量,如果是dense类型的特征,就是一个scalar。
2-Embedding Layer
1、针对类别特征,通过embedding方式转换为低维稠密向量:
其中, 是特征组对应的嵌入字典(嵌入矩阵), 是特征组特征的独热编码表示向量(通常出于节省空间的考虑,只存储非零特征对应的索引)。
2、针对多值离散特征,其对应特征值向量的平均值作为其embedding:
其中, 是特征组对应的嵌入字典(嵌入矩阵),是样本对于个字段的值个数,是这个字段的多个热矢量表示。
3、针对数值特征
其中是字段的嵌入向量,是标量值。
3-Interacting Layer
交互层使用多头注意力机制将特征投射到多个子空间中,在不同的子空间中可以捕获不同的特征交互模式。通过交互层的堆叠,可以捕获更高阶的交互模式。
下图为在特定子空间下,对于特征组下的特征,交互层如何得到与其相关的特征向量。
1.首先输入特征通过矩阵乘法线性变换为在注意力空间下的向量表示,对于每个特征在特定的注意力空间中,都有三个表示向量:
;;。
2.计算与其他特征的相似度,文中使用向量内积表示:
3.计算softmax归一化注意力分布:
4.通过加权求和的方式得到特征及其相关的特征组成的一个新特征:
假设有个注意力子空间,将每个子空间下的结果进行拼接,得到特征最终的结果表示 :
我们可以选择使用残差网络保留一些原始特征的信息留给下一层继续学习
最后,将每个特征的结果拼接,计算最终的输出值
4-Output Layer
5-时间复杂度
单层 Interacting 的AutoInt的时间复杂度为,对比单层 MLP,假设神经元个数为N,时间复杂度为。通常的值比较小,因此时间效率不会太差。M为特征维度,d为隐藏层维度,H为注意力头数。
6-特征交叉
Self-Attention会先计算每个embedding向量和其他向量的相关系数,然后再用所有向量的系数乘上自己的embedding作为下一层的输入,所以我们可以计算得到每个向量和其他向量的关系,再将相关性强的特征进行组合,作为新的特征,这样的组合最大的意义我们可以找到经常一起出现的特征。
优点:
1.找到意思相近的embedding并进行组合,形成一些可解释性较强的组合特征;
2.大量的实验也验证这种方式的高阶交叉组合的优势;
缺点:
1.个人感觉还是未能充分挖掘有意义的高阶交叉特征;此处的组合只是找到了关系相近的特征,关系相近的特征进行组合并不一定是合适的方式,也就是说multi-head selfattention能做到有意义的特征组合,但却不能说明关系不相近的特征的意义就不大。
4️⃣解决问题
模型主要解决先前模型,如FM模型无法学习到高阶交叉特征,DeepFM学习到的高级特征是隐式的,缺乏良好的解释性,XDeepFM虽然是显示进行特征交叉的,但是解释这些特征效果并不容易的问题。
5️⃣损失函数 | 目标函数 | 公式推导
6️⃣代码实现
- Author:liamtech
- URL:https://liamtech.top/article/10f9746b-4e13-80cf-9ffb-ce743c2fb76a
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!