最近系统学习了CTR预估的理论和实践,这几天复盘了整个技术路线,加深了对CTR预估的理解,也使得之前没有理解清楚的内容更加开朗起来。书读百遍其义自见,每一遍学习都有不同层次的理解。come on.
全文36897字,篇幅颇大,我记录在语雀文档中,在文末原文链接可以阅读。
这里就简单做个总结:
No Free Lunch法则,并不存在某个算法在任何场景下比另外一个好。任何事情都是由易到难,如果直接跳到难,那么做出来,这就是巨大的创新。这里创新的定义为在已有基础至少能够带来十倍的提升。可以看到每次技术革命,对人类社会带来的都是几十倍或者几百倍的生产效率的提升。十倍以下的都叫优化。整个社会的发展通过一步步优化也是能够达到那种境界,就是慢点白。所以遵循人类演变的过程,在迭代优化中前进。
任何一家公司的技术路线都不是一开始就是成熟、完美的。那为何不直接进入Deep领域呢?在基线不强的时候,直接进入复杂模型的领域。倒不是说复杂模型难以掌握,而是团队对业务面对的具体问题的理解需要实战积累。而初期简单的模型,更容易暴露出问题是什么,将问题定义清楚,整个结果solid。
最怕的是不知道问题是什么,而不是怎么做方案。在我们没有做到那个点之前,对问题的定义大多是有问题的,随着越做越深,对问题的理解也会越来越深。
比如说,在CTR领域内LR需要人工特征工程提高非线性能力,为了优化这个问题,我们从矩阵分解MF领域得到了灵感,暴力特征两两交互,设计了FM,更加灵活,MF模型是FM模型的特例,MF可以被认为是只有User ID 和Item ID这两个特征Fields的FM模型,MF将这两类特征通过矩阵分解,来达到将这两类特征embedding化表达的目的。而FM则可以看作是MF模型的进一步拓展,除了User ID和Item ID这两类特征外,很多其它类型的特征,都可以进一步融入FM模型里,它将所有这些特征转化为embedding低维向量表达,并计算任意两个特征embedding的内积,就是特征组合的权重。所以很明显FM模型更灵活,能适应更多场合的应用范围。
但是呢,特征交互的重要程度并不都是一样的,会有差别,因此,FFM丰富特征的表达能力,引入不同特征域;AFM引入注意力机制,计算不同特征交互的权重。DIN直接是将注意力机制与同领域特征求和之前进行结合。
然而,这一切都是二阶特征交互,于是,依附于DNN高阶交叉特征能力的Embedding+MLP结构开始流行。
Embedding层的改造+DNN进行高阶隐式学习,出现了以PNN、NFM为代表的product layer、bi-interaction layer等浅层改进,这一类模型都是对embedding层进行改造来提高模型在浅层表达,减轻后续DNN的学习负担。
以W&D和DeepFM为代表的双路模型结构,将各个子模块算法的优势进行互补,例如DeepFM结合了FM的低阶交叉信息和DNN的高阶交叉信息学习能力。但特征交互却是隐式和element-wise的。
于是,显式高阶特征交叉网络的提出,这一阶段以更复杂的网络方式来进行显式交叉特征的学习,例如DCN的CrossNet、xDeepFM的CIN、AutoInt的Multi-head Self-attention结构。
阿里的DIN模型将用户的历史行为来表示用户的兴趣,并强调了用户兴趣的多样性和动态变化性,因此通过attention-based model来捕获和目标物品相关的兴趣。虽然DIN模型将用户的历史行为来表示兴趣,但
1)用户的兴趣是不断进化的,而DIN抽取的用户兴趣之间是独立无关联的,没有捕获到兴趣的动态进化性
2)通过用户的显式的行为来表达用户隐含的兴趣,这一准确性无法得到保证。
基于以上两点,阿里提出了深度兴趣演化网络DIEN来CTR预估的性能。DIEN模型的主要贡献点在于:
1)模型关注电商系统中兴趣演化的过程,并提出了新的网络结果来建模兴趣进化的过程,这个模型能够更精确的表达用户兴趣,同时带来更高的CTR预估准确率。
2)设计了兴趣抽取层,并通过计算一个辅助loss,来提升兴趣表达的准确性。
3)设计了兴趣进化层,来更加准确的表达用户兴趣的动态变化性。
考虑到CTR和CVR密切相关,将焦点转向CVR的预估,来看一下阿里提出的完整空间多任务模型ESMM是如何处理CVR预估中存在的样本选择偏差(sample selection bias)和数据稀疏(data sparsity)问题的。
ESMM模型的特别之处在于额外关注了任务的Label域信息,通过展现>点击>购买所构成的行为链,巧妙地构建了multi-target概率连乘通路。传统MTL中多个task大都是隐式地共享信息、任务本身独立建模,ESMM细腻地捕捉了契合领域问题的任务间显式关系,从feature到label全面利用起来。这个角度对互联网行为建模是一个较有效的模式。
但是对于CVR预估来说,ESMM模型仍然面临一定的样本稀疏问题,毕竟从点击到购买的样本非常少。但挖掘用户行为,发现用户在购买前往往会有其他的行为,比如把想要购买的物品加入购物车或者心愿单。
加入心愿单/购物车的数据相较购买数据还是比较多的,因此可以基于这部分数据,通过多任务学习模型来求解CVR模型。文中把加入购物车或者心愿单此类行为称作Deterministic Action (DAction) ,而其他对购买相关性不是很大的行为称作Other Action(OAction) 。
此时原来的 Impression→Click→Buy过程变成了更加丰富的Impression→Click→DAction/OAction→Buy过程。
可以看出阿里对解决问题的极致感,细分问题,一步一步拆开,汇合解决问题。这种转化建模思路值得我们学习。
从整个宏观趋势来看,每一阶段新算法的提出都是在不断去提升模型的表达能力,从二阶交叉,到高阶隐式交叉,再到如今的高阶显示交叉,模型对于原始信息的学习方式越来越复杂的同时,也越来越准确。
从整个历程可以看出,模型的前进离不开数据和业务,模型从业务中启发,服务业务中去。复杂的问题简单做,简单做的问题重复做,重复做的问题用心做,一定会有所突破。
总结:由于数据量基本满足了,这些模型都为了提高“信息利用率”,因为。自动组合发现高阶非线性特征(最多无限逼近上限),但是感觉这是个无底洞。另外,具备业务知识的优秀特征工程依旧和模型能够并存,丰富特征表达能力,以便模型学习知识。当然,这些知识我们也可以转化为模型,那就是进一步优化,这是敏捷的,而不是瀑布式。
大概就是人们常说的经验吧,没有办法一口吃成胖子。所以我们踏踏实实一步一步来,先让代码跑起来,然后在迭代优化,知其然,而知其所以然。在阅读中提高认知,在实践中突破我们的认知。
该二维码也可以直达文章地址,或者文末原文链接,都可以哦! 好了,Peace!