Deep CTR Prediction in Display Advertising

今天这篇是阿里的一篇文章,几个实习生做的,主要解决的是图片广告的推荐问题。这篇论文主要有以下几点:

  • 用DNN模型解决推荐问题,并没有直接采用高维稀疏特征和图片直接作为输入,仍做到了end to end的训练;
  • 可以高效处理高维海量数据;
  • 在真实海量数据上进行实验,并取得了较好的结果;

下面来看模型,用户对一个广告的行为被称为一次impression,用\(x\) 表示,图片\(u\) 的尺寸为\(120\times 200\) ,同时用户的特征\(v\in\mathbb{R}^d\) ,用对率回归来映射输出值 \[ \hat{y}=\frac{1}{1+e^{-z}}\\ z=f(x) \] loss函数为 \[ \mathcal{L}=-\frac{1}{N}\sum_i(y_i\log\hat{y}_i+(1-y_i)\log(1-\hat{y}_i))+\lambda\|W\|^2 \] 在这个模型中,重点在于如何去学习embedding 函数\(f(\cdot)\) ,模型的结构如下图所示

1

左侧的卷积方法可以提取图片的特征,与右侧基本特征一起经过非线性的激活函数得到输出,卷积部分用了17层卷机网络

2

模型看上去也很简单,并不出彩,那么我们来看看细节:

  • 稀疏全连接层,训练集中有接近200000个基本特征(毕竟我阿里。。)如果简单的全连接会产生6千万的参数,所以如何降低参数存储和计算就成了重点,模型中采用CSR格式来代表一个batch的基本特征\(V\) ,所以前向传播时\(Y_{fc1}=VW\) ,反向传播时,我们只需要更新非0元素的权重\(\nabla W =V\) ,这就很大程度上减少了计算开销;
  • 数据采样,采用SGD训练时,一般会用很小的batch和较多的iterations,对于这样数据集时,却很难收敛,所以作者提出了一个简单高效的训练方式,很多图片广告点击行为都共用了一个图片,所以相比之下,不同的图片就比较少了,因此一些好的特征可以在稀疏的网络结构中迅速传播,所以我们采用大batch对于特征,小的batch用于图片,具体算法如下图所示。
3

论文后面还对实验部分进行一些分析,感兴趣的同学可以下下来看看,总帖来说文章还不错,一些优化也比较出彩,更重要的是给阿里打了广告。。手动微笑。