最近在做这个方向的工作,调研了一些文章,如下:

Image Feature Learning for Cold Start Problem in Display Advertising

这是15年腾讯发表在ijcai15的文章,是较早将图像深度特征应用于广告CTR预估的工作之一,文章中的想法分为两步:

  • 第一步:利用CNN,实现从原始图片到用户点击情况的端到端的图像特征学习
  • 第二步:上一步训练好的CNN用于抽取与点击率相关的图像特征,结合广告属性的特征训练LR等模型来预估广告点击率

在第一步中,因为处理的都是人工设计的广告物料,相对于imagenet简单且杂讯小,若采用过大的模型会导致过拟合,所以文章设计了如下的结构:100*100图像输入 → 4层conv+Relu+max pooling → 3层FC → 二分类softmax(点击率)

文章对22万张训练集图片进行了数据增强,包括缩放和随机裁剪,对3万张测试集图片随机裁剪10次,将输出概率均值作为预测结果。最后结果如下:左边是只有图片特征,右边为图片特征加广告特征,Feature Learning相较于其他几种方法有较为显著的提升。

Deep CTR Prediction in Display Advertising

是16年阿里发表在ACM MM16的工作,特征提取与点击率预估整合在一起,end to end训练。

  • 左侧的卷积网路用来提取图像特征,结构类似于 VGG16,是一个17层的深层卷积神经网路。因为网路结构较为复杂,文章先用图像分类任务来解决CNN的预训练的问题。
  • 右侧是全连接层,输入层是 one-hot embedding,用于训练广告基础特征,其中用到了ReLu做非线性变换。
  • 将两侧得到的各128维向量concat起来,经过一个BN层和两个FC层,输出softmax二分类

结果如下:

Image Matters: Visually modeling user behaviors using Advanced Model Server

是阿里发表在arxiv的工作,文章的创新点主要有两个,

  • 物料侧广告图像不仅仅用于表征广告,也用于用户侧建模,基于用户历史点击过的图片(user behavior images)来建模用户的视觉偏好
  • 图片特征引入的大数据量成为技术瓶颈。阿里团队为传统 PS(参数伺服器) 的 server 也增加了「模型训练」功能,并称新结构为 Advanced Model Server(AMS)

模型和AMS架构如下,其中模型分三部分:

  • 广告ID类Embedding特征(黑色部分)
  • 广告图像特征(粉色部分)
  • 用户视觉偏好(蓝色部分)

concat之后经过三层FC,输出softmax二分类。

AMS架构部分在下面这篇文章讲的很详细,移步:

一图胜千言: 解读阿里的Deep Image CTR Model?

www.leiphone.com图标

实验结果如下:图像特征略微提升,但是添加用户点击图像的特征,边际效益不高


可以参考阿里巴巴最近的工作:https://arxiv.org/pdf/1711.06505.pdf

联合使用用户交互过的图片(不光是图片id)和待预估的广告图片。由于要对图片进行建模,实现上有非常大的挑战,但是不是不可能做到,论文里也有较多的篇幅介绍如何实现。


CTR加入图片特征难度应该有两点,1. 效果方面,因为点击率预估是为特定的用户,在特定的环境下推荐广告,用户是十亿级的,而广告一般是万,十万级的(一般曝光量大的广告就更少了),也就是用户维度是更难刻画的,如果用户的刻画没有很好的解决,广告ID+推广计划ID基本就够了(只说展示广告,搜索广告没做过)。2. 速度方面,如果将图片和其它特征一起学习,速度会非常慢,曝光可能达到十亿级,完全不可行。

我想过一个方法去解决,广告维度的特征只用广告ID(能唯一决定图片的ID),用户和环境特征不变,训练数据只使用广告ID曝光量大于一定数量级的广告曝光。广告ID通过Embedding方式表达,训练完之后,就得到了每个广告ID对应的embedding向量,这个向量(希望是)已经将定向和环境的因素剥离了。

有了每个广告ID对应的Embedding向量,我再将每个广告对应的图片作为输入,而学习的目标就是对应的Embedding向量。训练完成后,有新的图片进入系统后,会先用模型预测它的Embedding,而点击率模型会将它预测出来的Embedding作为特征进行训练,可以有效地降低训练时间。

呃,但是实践中第一步就没走通,我学习出来的广告ID对应的Embedding效果并不好,两个图片完全相同的广告往往Embedding有比较大的区别,但调参的时候,有时候还是能找出一些比较相似的方式。我之后就被派去做别的项目了,一直不清楚这方式是不是可行。

另外我把我想法讲给另一个同事的时候,他说这是Transfer Learning中很常见的做法,也基本和原创无关了。


问题没有附加的详细描述,那我就按一般的思路来说了。

图片特征分两端,一个是ad特征这块,一个是user特征这块。

首先看ad特征,可利用如AlexNet,VGG等成熟的cnn模型,做fine-tunning。就是比如VGG后面三层全连接层是可学习的,把softmax层拿掉。

然后看user特征,这块可以拿过去一段时间用户点击过的ad对应的图片序列,像上面说的用VGG抽取特征后,再过一层lstm,然后可以用attention来做加权平均。attention可以与图片本身的特征,用户画像特征,点击时的上下文有关


谢邀。

transfer learning的思路


也不一定要end to end。如果你只需要简单的分类特征,用imagenet的pretrained最后的softmax应该就够了,毕竟也有1000个类了。如果用softmax不放心那就用隐层作为feature。
接个cnn就行了,要end to end就直接接到最终loss,不要就先做其他任务,把倒数第二层结果拿过来。
不知使用特征工程的方法,提取图片的主体颜色 亮度等信息作为特征加进去 ,会有效果吗
推荐阅读:
相关文章