CTR预估中的DeepFM(深度分解机)模型
从文献中能够了解到DeepFM模型要优于WideAndDeep模型。
1.DeepFM算法的提出
DeepFM算法有效的结合了因子分解机与神经网络在特征学习中的优点;同时,提取到了低阶特征组合和高阶特征组合,特别是FM部分,它能够处理高维的稀疏特征(one-hot编码),我想这是它优于WideAndDeep中的Wide部分一个原因。
在DeepFM中,FM算法负责对一阶特征以及由一阶特征两两组合的二阶特征进行特征的提取;DNN算法负责对输入的一阶特征进行全连接等操作形成的高阶特征进行特征的提取。
特点:
- 吸取了WideAndDeep模型的优点,采用FM模型和DNN模型相结合的方式,同时学习了低阶特征组合和高阶特征组合。
- 它是一个端到端的模型,不需要特征工程(不需要人为设计特征,可以自动捕获到高级和低级特征组合,也不需要提前预训练)
- DeepFM模型共享相同的输入和embedding vector(WideAndDeep中,Wide只处理离散型特征,Deep中只处理数值型特征,这样就把特征分割开了)
- 评估模型时,用到了一个新的指标“Gini Normalization”
2.DeepFM算法结构
其中,左侧为FM模型,右侧为DNN模型。
注意:
- Dense Embedding 层最开始是随机初始化的,后面经过FM的训练,成为图中的Dense Embedding层,Dense Embedding层的权重同时输入到FM部分和deep部分,且由两者共同训练。
- 在最后进行求和时,y的值为FM的一阶部分加上偏置再加上deep部分得到的高阶部分。
整个模型的输出为:
FM模型
输出为:
关于它的求解有两种方式:
- 借鉴((a+b+c)^2-(a^2+b^2+c^2))/2的思想
- 采用随机梯度下降法
下面主要说明第一种方法:
DNN模型
DNN的作用就是构造高维特征,且有一个特点:DNN的输入也是embedding vector。所谓的权值共享指的就是这里。
DNN的输入和FM共享输入数据,只不过DNN之后并不是只有两个特征相连,而是所有特征相连去学习更高级的特征组合。也不是特征之间做内积的形式去组合,比如要学习三个特征组合,那么就需要很多参数,而DNN这种方式通过权重学习,能够一次得到三个、四个甚至更多的特征组合。