首页 首页 人工智能 查看内容

深度图像特征在推荐和广告中的应用

木马童年 2019-3-21 10:10 723 0

机器不学习 CNN 是一个简单的网络结构,初学者一般从MNIST入手,提及CNN第一印象可能只有经典的图像分类的那个model。深入了解才会发现,学术圈和工业界是如何通过稍稍改变 Feature Map 之后的结构和目标函数等实现 ...

机器不学习

CNN 是一个简单的网络结构,初学者一般从MNIST入手,提及CNN第一印象可能只有经典的图像分类的那个model。深入了解才会发现,学术圈和工业界是如何通过稍稍改变 Feature Map 之后的结构和目标函数等实现各种复杂任务,这其中迸发的想象力让人激动。

1.Image Feature Learning for Cold Start Problem in Display Advertising

“Image Feature Learning for Cold Start Problem in Display Advertising“ 这篇文章发表在ijcai15,是腾讯把图像特征应用到广告ctr预估的总结,同时也解答了广告中什么区域对点击率影响较大。这篇文章是较早把图像的深度特征用于点击率预估的工作之一,2015年的时候,推荐学术界里在深度学习方面起到重要影响的文章 Wide and Deep 、Youtube Rec with DNN 和一些 RNN 做推荐的方法尚未出现,高维稀疏特征的one hot encode embedding 成低维稠密特征的方法尚未被大众熟悉,所以这篇文章的做法并不是直接端到端的结构,而是通过CNN 抽取图像特征,然后用到 Logistic Regression(LR) 等常见的CTR模型中使用。

下面进入广告时间,猜猜什么因素导致左边点击率高,文末有答案。

深度图像特征在推荐和广告中的应用

文章主要想法分为两步,第一步,利用卷积神经网络,实现从原始像素到用户点击反馈的 end-to-end 的图像特征学习。第二步,训练好的CNN可以抽取与点击率相关的图像特征,外加广告属性的特征,这些特征综合起来训练LR等模型来预估最终点击率。

抽取图像特征的网络结构如下:

深度图像特征在推荐和广告中的应用

100*100像素图像输入 => 4层conv+pool => 3层FC => 二分类softmax(点击率)

视觉元素的位置重要性

传统的图像分类只关心是否包含某个视觉元素,而不关心该视觉元素在图像中的位置。对于展示面积比较大的广告图片,因为用户的视觉焦点一般在图像中心,关键的视觉元素在图像中的位置对于点击率有明显影响,因此设计的卷积神经网络的最后一层卷积输出层的feature map应该稍大,以传递原图的位置信息。

数据集

样本规模:470亿样本,样本来源于腾讯在线广告日志,包含5种类别,5 种展示位置。样本数据量太大,直接用CNN训练在时间上不可接受,因此作者吧相同的图片聚合一起,形成二维样本<未点击数,点击数>。文章没有提到的一点是,<1000,10> 和 <100, 1> 从统计上来说点击率相同,训练的时候有什么区别?我猜测对梯度应该有一定影响,样本数量越大,步长越长。

数据增强:25万张广告图片,划分为22万张训练集和3.3万张测试集。训练集缩放裁剪到 128 * 128像素大小,然后随机裁剪 100 * 100 子图作为卷积网络的输入。测试集随机裁剪 10 次,用输出概率的平均值作为最后的预测结果。

单机GPU训练 2 天

实验结果

做了两种版本的比较,第一种只用图像特征,第二种包括广告id、类目id和展示位置id三个额外特征,分别用LR模型预测ctr,用AUC离线评测:

深度图像特征在推荐和广告中的应用

什么影响点击率

用可视化方法,可以观察d奥图片模特人脸区域和文字区域对点击率影响比较大:

深度图像特征在推荐和广告中的应用

2.Deep CTR Prediction in Display Advertising

这篇文章发表在 ACM MM16,是阿里当时的实习生做的,现在应该是正式员工了。与腾讯那篇“Image Feature Learning for Cold Start Problem in Display Advertising” 不同的是,这篇文章把特征提取与点击率预估整合在一起,做到了end to end的训练。

同样来看一个例子:

深度图像特征在推荐和广告中的应用

b 比 a 点击率低,是因为 b 的主体和背景的对比度太低;d 比 c 点击,是因为用户对多男模的图片不太喜欢,这种case 跟腾讯广告同学举得还不太一样

整体的网络架构如下:

深度图像特征在推荐和广告中的应用

左侧的卷积网络用来提取图像特征,结构类似于 VGG16。因为上面网络结构较为复杂,可以先用图像分类任务来解决CNN的预训练问题。

深度图像特征在推荐和广告中的应用

右侧是全连接层,类似于embedding,区别在于全连接层有非线性变换。输入层是 one-hot-encode 形式,约 20w维,非常稀疏,在计算的时候,很多0输入节点的前向后向计算都可省略,特征存储也可以用下标的方式输入,减少计算和存储资源消耗。

广告的样本数量很大,但是CNN计算较为耗时,如果按照 PSLR 的方式去批次训练,训练过程过于漫长。作者把有相同图片的样本聚合在一起,相同图片只用计算一次CNN。举个例子,batchsize 为 5000,图片只有 10张,则CNN只用计算 10 次,右侧的全连接层非常稀疏,计算效率很高,5000个样本的计算时间可能比10张图片CNN计算时间还短。

实验对比

5千万样本,10w张图片

对比实验的结果:

深度图像特征在推荐和广告中的应用

特征区域的可视化

图片中的猫、纹理、文字对点击率有影响

深度图像特征在推荐和广告中的应用

3.Image Matters: Jointly Train Advertising CTR Model with Image Representation of Ad and User Behavior

阿里 2017 发表在 arxiv 的文章,与前面文章的区别在于,图像不单可以表征广告,用户点过的图像集合也可以用来表征用户,比如当前图片与用户点过的某张图片很相似,用户的点击概率就会比较高。文章利用广告相关id特征、用户相关id特征、广告图像特征、用户点击过的图像特征共同建模,end-to-end训练,预测最终的ctr。这篇文章对标 youtube 那篇做推荐的文章Deep Neural Networks for YouTube Recommendations里面的 rank model部分。

点击率模型经常用到的 parameter server logistic regression(PSLR) 更擅长于记忆,而不是泛化,所以即使在rank模型中,遇到新的 id 时,还是存在冷启动问题。图像特征重要,相同的广告id用不同的图片,点击率可能完全不一样,所以图像特征其实有比较好的泛化能力,不同的广告用同一张图像,在用户无法分辨的情况下,点击率相同。

整个模型框架如下:

深度图像特征在推荐和广告中的应用

basicNet 和阿里那篇 Deep CTR Prediction in Display Advertising 一脉相承,通过全连接做 id 特征的向量化。AdNet采用VGG16的前14层,从图像提取 4096 维特征。可能是由于网络结果过于复杂,这里的卷积层是固定的,在rank部分不会调整,这样做也有一个好处,可以先把所有图片的 4096 维特征预先计算出来,CNN不用多次重复计算,也不需要更新权重,训练效率会高很多。固定CNN实际上也有不得已的地方,本文的创新点在于利用了UserNet,但是UseNet带来的一个弊端是,无法像之前两篇文章里将相同图片的样本聚合起来减少CNN部分的计算,因为UserNet的输入平均是37张图片的排列组合。在4096 维特征后面,又加入可训练的三个全连接层,把一张图像的特征降低到 12 维。

深度图像特征在推荐和广告中的应用

UserNet 的结构与 AdNet一致,区别在于,用户点击包含多张图片(平均37张),如何把多张图片的12维特征整合成单独的12维,其中有一些简单的做法如 sum、avg、max,也有一些复杂的 attentive方法。

深度图像特征在推荐和广告中的应用

根据后面训练的attentive权重来看,用户对相似图片的权重明显大。

实验对比

39亿样本,2亿图片,20台GPU集群训练,17个小时

实验结果可以看到图像特征有一些提升,但是在添加用户点击行为中的图像特征,边际效益不是那么高。

深度图像特征在推荐和广告中的应用

在不久的将来,多智时代一定会彻底走入我们的生活,有兴趣入行未来前沿产业的朋友,可以收藏多智时代,及时获取人工智能、大数据、云计算和物联网的前沿资讯和基础知识,让我们一起携手,引领人工智能的未来!

图像分类 深度学习 卷积神经 数据集 阿里 特征提取
0