层¶
FM¶
因子分解机用于建模二阶特征交互。
调用参数:
- x: 一个3D张量。
输入形状:
- 3D 张量,形状为:(batch_size, field_size, embedding_size)
输出形状:
- 形状为 (batch_size, 1) 的 2D 张量
参考文献:
- [1] Rendle S. 因子分解机[C]//2010年IEEE国际数据挖掘会议. IEEE, 2010: 995-1000.
- [2] Guo H, Tang R, Ye Y, 等. Deepfm: 一个端到端的宽深度学习框架,用于点击率预测[J]. arXiv 预印本 arXiv:1804.04950, 2018.
AFM¶
注意力因子分解机(AFM),它通过神经注意力网络从数据中学习每个特征交互的重要性。
参数:
- hidden_factor: int, (默认=16)
- activation_function : str, (默认=’relu’)
- kernel_regularizer : str 或 object, (默认=None)
- dropout_rate: float, (默认值=0)
调用参数:
- x: 一个3D张量的列表。
输入形状:
- 一个形状为 (batch_size, 1, embedding_size) 的3D张量列表
输出形状:
- 形状为 (batch_size, 1) 的 2D 张量
参考文献:
- [1] 肖杰, 叶浩, 何晓, 等. 注意力因子分解机:通过注意力网络学习特征交互的权重[J]. arXiv预印本 arXiv:1708.04617, 2017.
- [2] https://github.com/hexiangnan/attentional_factorization_machine
CIN¶
压缩交互网络(CIN),考虑以下因素:(1) 交互是在向量级别应用的,而不是在比特级别;(2) 高阶特征交互被明确衡量;(3) 网络的复杂性不会随着交互程度的增加而呈指数增长。
参数:
- cross_layer_size: 整数元组, (默认值 = (128, 128,))
- activation: str, (默认=’relu’)
- use_residual: bool, (默认=False)
- use_bias: bool, (默认=False)
- direct: bool, (默认=False)
- reduce_D:bool, (默认=False)
调用参数:
- x: 一个3D张量。
输入形状:
- 一个形状为 (batch_size, num_fields, embedding_size) 的3D张量
输出形状:
- 形状为 (batch_size, *) 的2D张量
参考文献:
- [1] Lian J, Zhou X, Zhang F, 等. xdeepfm: 结合显式和隐式特征交互用于推荐系统[C]//第24届ACM SIGKDD国际知识发现与数据挖掘会议论文集. 2018: 1754-1763.
- [2] https://github.com/Leavingseason/xDeepFM
多头注意力机制¶
一个多头自注意力网络,带有残差连接,用于显式建模特征交互。
参数:
- num_head: int, (默认=1)
- dropout_rate: float, (默认值=0)
- use_residual: bool, (默认=True)
调用参数:
- x: 一个3D张量。
输入形状:
- 3D 张量,形状为:(batch_size, field_size, embedding_size)
输出形状:
- 3D 张量,形状为:(batch_size, field_size, embedding_size*num_head)
参考文献:
- [1] 宋伟, 史超, 肖志, 等. Autoint: 通过自注意力神经网络自动学习特征交互[C]//第28届ACM国际信息与知识管理会议论文集. 2019: 1161-1170.
- [2] https://github.com/shichence/AutoInt
FGCNN¶
特征生成网络利用CNN的优势生成局部模式,并将它们重新组合以生成新特征。
参数:
- filters: int, 卷积层的过滤器数量
- kernel_height: int, 卷积层kernel_size的高度
- new_filters: int, 重组层中新特征图的数量
- pool_height: int, 池化层pool_size的高度
- activation: str, (默认=’tanh’)
调用参数:
- x: 一个4D张量。
输入形状:
- 4D张量,形状为:(batch_size, field_size, embedding_size, 1)
输出形状:
- pooling_output - 4D 张量
- new_features - 形状为 (batch_size, field_size*new_filters, embedding_size) 的 3D 张量
参考文献:
- [1] 刘 B, 唐 R, 陈 Y, 等. 通过卷积神经网络生成特征用于点击率预测[C]//万维网会议. 2019: 1119-1129.
SENET¶
SENET层可以动态增加重要特征的权重,并减少无信息特征的权重,以使模型更加关注更重要的特征。
参数:
- pooling_op: str, (默认值=’mean’). 用于将原始嵌入E压缩为统计向量Z的池化方法
- reduction_ratio: float, (默认=3). 用于降维的超参数
调用参数:
- x: 一个3D张量。
输入形状:
- 3D 张量,形状为:(batch_size, field_size, embedding_size)
输出形状:
- 3D 张量,形状为:(batch_size, field_size, embedding_size)
参考文献:
- [1] 黄T, 张Z, 张J. FiBiNET: 结合特征重要性和双线性特征交互进行点击率预测[C]//第13届ACM推荐系统会议论文集. 2019: 169-177.
双线性交互¶
双线性交互层结合了内积和哈达玛积来学习特征交互。
参数:
- bilinear_type: str, (默认=’field_interaction’). 双线性函数的类型
field_interaction
field_all
field_each
调用参数:
- x: 一个3D张量。
输入形状:
- 3D 张量,形状为:(batch_size, field_size, embedding_size)
输出形状:
- 3D 张量,形状为:(batch_size, *, embedding_size)
参考文献:
- [1] 黄T, 张Z, 张J. FiBiNET: 结合特征重要性和双线性特征交互进行点击率预测[C]//第13届ACM推荐系统会议论文集. 2019: 169-177.
交叉¶
交叉网络由交叉层组成,以高效的方式应用显式特征交叉。
参数:
- num_cross_layer: int, (默认=2). 交叉层的数量
调用参数:
- x: 一个二维张量。
输入形状:
- 形状为 (batch_size, field_size) 的2D张量
输出形状:
- 形状为 (batch_size, field_size) 的2D张量
参考文献:
- [1] 王R, 傅B, 傅G, 等. 用于广告点击预测的深度与交叉网络[M]//ADKDD’17会议论文集. 2017: 1-7.
内积¶
PNN中使用的内积层
调用参数:
- x: 一个3D张量的列表。
输入形状:
- 一个形状为 (batch_size, 1, embedding_size) 的3D张量列表
输出形状:
- 二维张量,形状为:(batch_size, num_fields*(num_fields-1)/2)
参考文献:
- [1] Qu Y, Cai H, Ren K, 等. 基于产品的神经网络用于用户响应预测[C]//2016 IEEE 第16届国际数据挖掘会议 (ICDM). IEEE, 2016: 1149-1154.
- [2] Qu Y, Fang B, Zhang W, 等. 基于产品的神经网络在多领域分类数据上的用户响应预测[J]. ACM信息系统交易(TOIS), 2018, 37(1): 1-35.
- [3] https://github.com/Atomu2014/product-nets
外积¶
PNN中使用的OuterProduct层
参数:
- outer_product_kernel_type: str, (默认=’mat’). 外积核的类型
mat
vec
num
调用参数:
- x: 一个3D张量的列表。
输入形状:
- 一个形状为 (batch_size, 1, embedding_size) 的3D张量列表
输出形状:
- 二维张量,形状为:(batch_size, num_fields*(num_fields-1)/2)
参考文献:
- [1] Qu Y, Cai H, Ren K, 等. 基于产品的神经网络用于用户响应预测[C]//2016 IEEE 第16届国际数据挖掘会议 (ICDM). IEEE, 2016: 1149-1154.
- [2] Qu Y, Fang B, Zhang W, 等. 基于产品的神经网络在多领域分类数据上的用户响应预测[J]. ACM信息系统交易(TOIS), 2018, 37(1): 1-35.
- [3] https://github.com/Atomu2014/product-nets