ctr预估
其中底层为embedding+乘积层,embedding层由FM初始化(见FNN),从参数规模考虑embedding_size选择了10,隐层深度选择了3层,乘积层由lz和lp组成,
lz是embedding feature,lp是interaction embedding feature
对特征做内积或是外积处理就会产生一个复杂度的问题:假设有60个域,那么把这些feature做内积处理,就会产生将近1800个元素的矩阵,如此就会产生一个很大的weight矩阵,那我们需要学习的参数就很多,那我们的数据集可能就满足不了这个要求。那接下来的做法就是:由于weight矩阵是个对称阵,我们可以用factorization来处理这个对称阵,把它转换为一个小矩阵乘以这个小矩阵的转置,这样就会大大减少我们所需要训练的参数(下图为inner product,对于outer product么只需要简单的把f的内积替换为外积,对外积操作得到矩阵而言,如果该矩阵只有对角线上有值,就变成了内积操作的结果,所以内积操作可以看作是外积操作的一种特殊情况。):
在两个数据集上比较的结果:
其中pnn*即在product layer串联内外积。
总结:总的来说模型的特点就在于乘积层,传统神经网络中还是难以提取乘积特征,而在大规模类别特征中这一特性又显得尤为重要,因此通过乘积层手工interact各field特征也就理所当然。通过矩阵分解减少combination引起的海量interaction feature也算是一个点。