一直对图像很感兴趣,最近在关注一个问题:如何经过深度学习抽取图像特征,用于广告和推荐。网络
CNN 是一个简单的网络结构,初学者通常从MNIST入手,说起CNN第一印象可能只有经典的图像分类的那个model。深刻了解才会发现,学术圈和工业界是如何经过稍稍改变 Feature Map 以后的结构和目标函数等实现各类复杂任务,这其中迸发的想象力让人激动。架构
函数
一样来看一个例子:学习
b 比 a 点击率低,是由于 b 的主体和背景的对比度过低;d 比 c 点击,是由于用户对多男模的图片不太喜欢,这种case 跟腾讯广告同窗举得还不太同样 😆spa
总体的网络架构以下:3d
左侧的卷积网络用来提取图像特征,结构相似于 VGG16。由于上面网络结构较为复杂,能够先用图像分类任务来解决CNN的预训练问题。code
右侧是全链接层,相似于embedding,区别在于全链接层有非线性变换。输入层是 one-hot-encode 形式,约 20w维,很是稀疏,在计算的时候,不少0输入节点的前向后向计算均可省略,特征存储也能够用下标的方式输入,减小计算和存储资源消耗。blog
广告的样本数量很大,可是CNN计算较为耗时,若是按照 PSLR 的方式去批次训练,训练过程过于漫长。做者把有相同图片的样本聚合在一块儿,相同图片只用计算一次CNN。举个例子,batchsize 为 5000,图片只有 10张,则CNN只用计算 10 次,右侧的全链接层很是稀疏,计算效率很高,5000个样本的计算时间可能比10张图片CNN计算时间还短。图片
实验对比资源
5千万样本,10w张图片
对比实验的结果:
特征区域的可视化
图片中的猫、纹理、文字对点击率有影响
附:公众号