实验了一下AutoInt模型,其实在看到论文之前就有类似的想法,但是效果不好(auc很低,大概只有0.6),没有继续尝试。在看到论文后,发现和之前的想法一致,于是又重新实现了一遍,但是效果还是很差。
这次打算仔细研究一下,就调整了一下初始化函数,之前的初始化是用的标准的正态初始化,现在换成了glorot_normal_initializer,结果一下变好了。
这里推测是因为使用普通的dnn模型时,最后一层的单元数一般都比较少,而使用attention时,由于最后一层的向量维度是特征数*特征维度,一般都会很高,如果只是用普通的正则,那么加和出来的logits就会很大,很难进行优化。如果使用glorot_normal,会根据前一层的特征数决定权重初始化的范围,会使logits落在更合理的范围,更容易优化。