CTR任务的特点:
1. 大量离散特征。
2. 大量高纬度稀疏特征。
3. 特征工程:特征组合对效果非常关键。
传统CTR预估模型:
1. 线性模型:
(1)LR (logistic regression):
优势:简单, 可解释, 易扩展, 效率高, 易并行。
缺点:难以捕获特征组合。
(2)FM模型:引入两两特征组合,LR + Dense, 优点在于泛化能力强。
(3)GBDT:训练好的树, 从树的终值就能看出特征组合有没效。
(4)LR + GBDT; GBDT发现有效的特征组合 feature set. 然后把feature set 引入到LR模型中。
(5)FM + GBDT, GBDT发现有效的特征组合, 放到FM中, FM的两两特征组合的个数可以大幅减少, 以提高效率。
深度学习基础模型:
1. 前向神经网络(MLP), 神经网络基本结构为3层结构, 输入层、 隐层、 输出层。输入层有输入值x, 以及每个神经元对应边的权值, 神经网络训练的过程就是训练这些神经元边的权值。 隐层做2个事情, 加权求和, 然后对这个和做线性变换。 线性变换的激活函数为ReLU, 小于0的会变为0, 大于0的原值输出。这样的线性返回有利于在神经网络层数比较多的时候使后面的值往回传, 易于训练前边神经元的权值。
2. CNN, 现在图像和视频处理, 几乎都是用的CNN模型, 结构为输入层, 卷积层, max pooling 层, 输出层。 卷积层主要由卷积盒组成, 每个卷积盒可以理解为一个特征捕获器。卷积层接着会有个max pooling 层, 它主要是做主采样的工作, 在定义的非叠加区域内(比如是2*2, 3*3)找出最大的值, 这一层同时会把参数的数量不断的缩减。
3. RNN, 主要用来做自然语言处理。 输入数据包含序列的, 比如自然语言处理, 股价预测等, 比较适合使用RNN。RNN的输入是包含时间序列的(t-1, t, t+1), t的输入有2个输入, 自身的输入和t-1隐层的输出,等于是前面的信息通过隐层, 不断的往后传。RNN有很多变种, 比如双向RNN, 做前后文的关联; LSTM, 在隐层加了3个门,输入门、 遗忘门和输出门, 来控制当前信息和历史信息怎么做组合;双向深度LSTM。
使用深度学习来做CTR要解决的5个问题:
1. CTR任务特点:如何表达大量的离散特征。OneHot 的方式表达。
2. CTR任务特点:如何快速处理大量高维度稀疏特征(onehot 2 dense)。
总体思想,输入特征分类, 分而治之, 避免全连接。
3. 特征工程: 如何从手工到自动 (深度学习的天然优势, end to end)
隐层跟输入层是一个全连接的, 特征的组合已经隐含的体现在隐层里面了。
4. 特征工程:如何捕获和表达两两组合特征(FM机制神经网络化)
低阶特征组合和高阶特征组合分开组合, 组合的方式有并行的结构(比如华为的deepFM, deep&cross模型, Wide&deep模型:wide的部分为LR模型, 2个输入有不同的结构), 串行结构(PNN模型, NFM模型, AFM模型)
5. 特征工程:如何捕获和表达多组组合特征(利用deep网络)
模型训练与优化
1. wide&deep 模型, dense层的预训练很关键, 用FM模型来做dense层的预训练。
2. 类似FNN无明显FM模型的网络结构需要预训练
3. 串行结构需要预训练。
4. deep隐层的次数在2,3层比较好。