深度ctr预估中id到embedding目前工业界主流是端到端直接学习还是预训练?
2019.8.8 更新： 目前这条回答暂时还是该提问下赞数最多的，我给出的个人判断是预训练的更多一些，建议看到这条回答的朋友也看看 @王喆 和 @曹楠楠 @卡牌大师 几位业界大佬的回答，有觉得预训练好的也有觉得 end2end 好的，都是来自工业界的经验，大家可以多多参考。 搜索、推荐、广告这几个domain有很多交集，但也有不少差异，在解决这些不同 domain 的 CTR 预估问题时，需要权衡的点也不尽相同，再结合到具体的应用场景比如电商、新闻、视频等等，变化就更多了。 ------------------------------- 分割线 ------------------------------------------ 两种都有，个人判断预训练的会多一些，要看具体的业务需求。 比如淘宝，可以看 18 年 KDD 的 Billion-scale Commodity Embedding for E-commerce Recommendation in Alibaba，把推荐分配 matching 和 ranking 两步，matching 是生成候选集，ranking 再做精排。item embedding 放在 matching 中学习，用 graph 来组织用户的行为记录数据，然后 deepwalk 得到 embedding，你说的 item2vec 其实差不多，都是 graph embedding。user embedding 可以简单取用户接触过的物品的 item embedding 平均，也可以再融入一些辅助信息，放在 ranking model 里学。类似的还有同年的KDD best paper，Real-time Personalization using Embeddings for Search Ranking at Airbnb，user 和 item 的 embedding 一起用 word2vec 训练，下游再用 GDBT 做排序。 完全端到端的可以看 Pinterest：Graph Convolutional Neural Networks for Web-Scale Recommender Systems，embedding 和 GNN 是放在一块儿端到端学的。 先预训练得到 embedding 的好处就是你可以把它用在多个下游任务中，可以用来做下游的精排，也可以直接用来做相似物品推荐等等，embedding 不直接与下游任务挂钩。端到端地学的话，embedding 是与目标直接挂钩的，也就是说专用于某个任务，那它相对这个任务而言就是最优的，相对别的任务而言则未必。 另外，下游任务的输入除了 user 和 item 之外，通常还有很多 context 特征，如果 embedding 直接和这些特征用一个DNN学出来，在数据稀疏的情况下，特征之间相互作用，很难学到好的，泛化能力强的 embedding。而先学好 embedding 再放到下游任务的模型里，模型就可以只专注于学习特征之间的相互作用了。