FNN

1.基础

1.1 LR

网络结构:



--->



LR 只考虑单个特征对模型的影响。

1.2 FM

考虑任意两个特征之间的关系


image.png

第一部分仍然为Logistic Regression,第二部分是通过两两向量之间的点积来判断特征向量之间和目标变量之间的关系。
直观上看,FM的复杂度是 O(kn2 )但是,FM的二次项可以化简,其复杂度可以优化到 O(kn)。由此可见,FM可以在线性时间对新样本作出预测。

1.3 RBM


能量函数:


2.FNN

2.1 模型

Factorisation-machine supported Neural Networks
用FM算法对底层field进行embeddding,在此基础上面建模就是FNN(Factorisation-machine supported Neural Networks)模型:
4层网络结构:


模型底层先用FM对经过one-hot binary编码的输入数据进行embedding,把稀疏的二进制特征向量映射到 dense real 层,之后再把dense real 层作为输入变量进行建模,这种做法成功避免了高维二进制输入数据的计算复杂度。

由于输入层是全链接的,每个field是one-hot类型,所以:

FM 层权重更新方式:

2.2 代码

├── README.md
├── data # 数据文件
│   ├── featindex.fm.txt 特征field(15)---特征名字---特征id的映射
│   ├── featindex.txt
│   ├── fm.model.txt  fm模型输出的权重:w_0、feature_num、k(10); w、v、fieldname:featurename
│   ├── test.fm.txt  测试集
│   └── train.fm.txt  训练集  
├── log
└── python
    ├── FNN.py  FNN 模型
    ├── SNN_DAE.py SNN_DAE 模型
    ├── SNN_RBM.py SNN_RBM 模型
    ├── data_fm.py 
    ├── dl_utils.py
    ├── fm.py   fm模型:输出 fm.model.txt  
    ├── sampling_based_denosing_autoencoder.py  DA 模型
    └── sampling_based_gaussian_binary_rbm_sparse.py RBM 模型

3.SNN

Sampling-based Neural Networks

SNN’s bottom layer is fully connected with sigmoid activation function:

网络结构:

4. 结果

数据集:iPinYou


那我们可以看出FNN的效果优于LR和 FM 模型。我们进一步考虑FNN与一般的神经网络的区别是什么?大部分的神经网络模型对向量之间的处理都是采用加法操作,而FM 则是通过向量之间的乘法来衡量两者之间的关系。

5. 其他

  1. tanh vs sigmod ?
    This might be because the hyperbolic tangent often converges faster than the sigmoid function.

5.参考

  1. git代码:https://github.com/wnzhang/deep-ctr/tree/master
  2. 论文地址:http://www0.cs.ucl.ac.uk/staff/w.zhang/rtb-papers/deep-ctr.pdf
  3. 用户在线广告点击行为预测的深度学习模型:https://blog.csdn.net/xiewenbo/article/details/52038493

你可能感兴趣的:(FNN)