深度学习资料

 Note:此处信息并不全,更多是之前使用过或者研究过的一些技术,或者看过的论文。其中看过的论文一般会有链接,以及当时的手写读书笔记

开源库

  1. Tensorflow:无需解释
  2. Keras:使用起来非常方便,几十行代码就能达到5年前世界顶级的效果
  3. tensorflow-model: 维护着tensorflow(最新版本)实现的业界比较流行的model,如何看paper觉得还不够具体,该repository提供了一个好的参照对象
  4. tensorflow/nmt: Neural Machine Translation Tutorial, tensorflow 的机器翻译教程&源码
  5. awaresome neural models for semantic match: 业界semantic match相关的论文及代码实现,代码实现参见matchzoo
  6. MatchZoo: 业界semantic match相关的代码实现
  7. DeepCTR: 其中集成了较多深度学习相关的CTR预估算法,项目页面中对应的论文也值得参考
  8. CMU OpenPose:  实时识别人体姿势的开源库,例如实时识别人的身体,手脚等。感兴趣的可以研究下,可以基于该工具做个什么创业项目也是可能的
  9. DeepSpeech:开源Speech-2-Text框架
  10. Deep Voice Conversion:使用深度学习进行不同人的声音转换
  11. Seq2Seq:Google Seq2Seq模型的Tensorflow实现
  12. FaceNet:人脸识别的开源库
  13. Face_Recognition:人脸识别库, 基于DLib开发,号称最易用的人脸识别库, 包括 Face Detection, Face Recognition等新版的DeepFakes的人脸定位及人脸特征抽取就基于该库
  14. TTS的WaveNet实现:用Tensorflow实现的Text2Speech的WaveNet实现
  15. Keras-rl:常见RL算法的python实现
  16. Fashion-Mnist:公开的时装分类的数据集:学术算法大牛固然牛叉, 但后来大家发现学术界还有一种牛法,叫另辟蹊径搞数据集,例如FeiFei,Li 搞得ImageNet,学术上引用次数暴多,简直就是增粉利器。 Fashion-Mnist感觉就是类似的思路

Courses

  1. dlsys-course: 华盛顿大学的Deep Learning教程,包含如何搭建,优化深度学习系统,包括上层算法和底层GPU性能优化等,github上有教程,也有代码
  2. Stanford CS20SI:Tensorflow for Deep Learning Research:Stanford关于Tensorflow for Deep Learning的课程;有具体课程示例代码参考
  3. Stanford CS231n: Convolutional Neural Networks for Visual Recognition,原视频在youtube上需要翻墙,国内也可在网易云课堂上观看CS231n
  4. Oxford NLP Lectures:Oxford Deep NLP Lectures,介绍NLP,特别是NN在NLP领域的使用

Book

  1. Deep Learning:Goodfellow, Ian, Yoshua Bengio, Aaron Courville, and Yoshua Bengio. Deep learning. Vol. 1. Cambridge: MIT press, 2016. 厚块头,偏理论
  2. http://neuralnetworksanddeeplearning.com/ neural network and deep learning
  3. Deep Learning with Python 》: Keras的作者写的书,很多使用Keras示例和项目。虽然是英文版,但是读起来很流畅。可以一边看着PDF一边调试代码。强烈推荐
  4. Hands-On Machine Learning with Scikit-Learn and TensorFlow》:前一半主要介绍sklearn,后一半主要介绍tensorflow。感觉sklearn介绍比较详细, tensorflow的内容偏少
  5. Building Machine Learning Projects with TensorFlow》:tensorflow使用介绍,有描述有代码
  6. Getting Started with TensorFlow - Giancarlo Zaccone》:tensorflow使用介绍,有描述有代码,而且比较简短
  7. tensorflow cookbook》:tensorflow使用介绍,虽然叫cookbook,不过块头也没那么厚
  8. PyTorch Tutorials:PyTorch 的使用代码示例,没细看,但应该对学习PyTorch有很好的帮助
  9. Tensorflow程序代码框架:一个简单的组织TF代码框架+规范

网站

  1. NIPS 2017资料: NIPS 2017的资料,包括视频,PPT/PDF,Tutorials,各种当前发展的技术,趋势的演讲和讨论,值得拥有
  2. ImageNet:Image-Net官网
  3. CVPR 2015: CVPR 2015,有比较多的优秀论文和视频,包括 GoogLeNet
  4. VGG: VGG研究的成果,包括blog, paper, pre-trained model下载
  5. The Data Science Blog: 比较详细介绍了CNN的工作原理,另外还有较多数据分析技术的介绍
  6. awesome-datascience: 非常全面的Data Science学习资料,还包含部分机器学习,相关比赛等
  7. cheatsheets-ai:有很多关于机器学习的工具介绍,其特点是将每个工具的主要技术和技术点都做成png或者pdf类似的大纲。的确是cheatsheets,方便查阅;也适合用来check自己知识点的完备性
  8. Reinforcement-Learning资料:比较全的Reinforcement-Learning的教程,包括教程,相关书籍,示例代码,Paper等RL方面的很多资料,方便查阅
  9. https://www.deepfakes.club/ :  deepfakes club,很多deepfakes的资料。deepfakes能催生规模不小的黑产
  10. Quick Draw:Google发布的手绘数据集, 很多有意思的应用或者论文都基于该数据集,包括之前比较火的微信小程序‘猜画小歌’

有意思的应用

  1. https://www.deepfakes.club/ :  deepfakes club,很多deepfakes的资料。deepfakes能催生规模不小的黑产
  2. deepfakes/faceswap:深度学习换脸, 基本的思路是先定位两组图片中的face, 一组作为content(保留表情特征, 例如面部是微笑, 哭泣, 咆哮等,以及原图的剩余内容), 另一组作为style(替换着的脸部内容),另外考虑lighting和平滑。 之后将content, sytle,  lighting,  smooth结合起来考虑作为优化目标进行优化。 具体参见:《deepfakes关键技术详解》
  3. Neural-Style:神经网络进行图像变换,能够得到较多风格奇异的图片。融合两张照片,  使用VGG抽取特征, 一张的特征作为content代表图片内容, 另一张抽出的特征使用Gram Matrix进行计算作为Style,之后进行融合, 使用随机的图片最小化和content, style表示的偏差;具体参见《Neural-Style关键技术详解》

经典论文

经典CNN结构
  • LeNet-5:LeCun Y, Bottou L, Bengio Y, Haffner P. Gradient-based learning applied to document recognition. Proceedings of the IEEE. 1998 Nov;86(11):2278-324.
  • GoogLeNet: Szegedy C, Liu W, Jia Y, Sermanet P, Reed S, Anguelov D, Erhan D, Vanhoucke V, Rabinovich A. Going deeper with convolutions. Cvpr. GoogLeNet的原版内容
  • Residual Net:He K, Zhang X, Ren S, Sun J. Deep residual learning for image recognition. InProceedings of the IEEE conference on computer vision and pattern recognition 2016 (pp. 770-778). Residual Net介绍
  • Inception BN:Ioffe S, Szegedy C. Batch normalization: Accelerating deep network training by reducing internal covariate shift. arXiv preprint arXiv:1502.03167. 2015 Feb 11.
  • AlexNet:Krizhevsky A, Sutskever I, Hinton GE. Imagenet classification with deep convolutional neural networks. InAdvances in neural information processing systems 2012 (pp. 1097-1105).  模型下载AlexNet FineTuning
  • U-Net: Ronneberger O, Fischer P, Brox T. U-Net: Convolutional Networks for Biomedical Image Segmentation[C]// International Conference on Medical Image Computing and Computer-Assisted Intervention. Springer, Cham, 2015:234-241. U-Net用于语义分割
  • Lin, Min, Qiang Chen, and Shuicheng Yan. "Network in network." arXiv preprint arXiv:1312.4400 (2013).  论文中主要提出了两个重点:一是在传统conv filter的基础上再叠加multiple layer perception,用于增加低层的抽象能力(避免低层需要使用更多filter来对非线性可分的特征进行刻画); 二是提出取代传统conv网络中最后的Full Connection(传统FC参数较多,且很难和分类的categories的置信度对应起来)而提出的Global Average Pooling让每个feature map和每个categories关联, 相当于每个feature map的线性组合可以作为category的confidence,增加网络的可解释性,同时减少模型参数
  • Goodfellow, Ian J., et al. "Maxout networks." arXiv preprint arXiv:1302.4389 (2013).  maxout network提出的原论文,相当于在convolution后,对各feature map进行参数化的max pooling(对比network in network相当于使用的是conv1d进行参数化pooling)
RNN/LSTM/GRU
  • Understanding LSTM Network: LSTM工作原理的详细介绍
  • Auli M, Galley M, Quirk C, et al. Joint language and translation modeling with recurrent neural networks[J]. American Journal of Psychoanalysis, 2013, 74(2):212-3.
  • Kalchbrenner N, Blunsom P. Recurrent continuous translation models[C]// 2013.
  • Cho K, Van Merrienboer B, Gulcehre C, et al. Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation[J]. Computer Science, 2014.
  • Sutskever I, Vinyals O, Le Q V. Sequence to Sequence Learning with Neural Networks[J]. 2014, 4:3104-3112.
  • Bahdanau D, Cho K, Bengio Y. Neural Machine Translation by Jointly Learning to Align and Translate[J]. Computer Science, 2014.
  • Zhu, Lingxue, and Nikolay Laptev. "Deep and confident prediction for time series at uber." Data Mining Workshops (ICDMW), 2017 IEEE International Conference on. IEEE, 2017.  Uber使用的时间序列概率模型
  • 图像相关

    • Neural-Style:Gatys, Leon A., Alexander S. Ecker, and Matthias Bethge. "A neural algorithm of artistic style." arXiv preprint arXiv:1508.06576 (2015).
      将图像区分为content和style两类, 使用深层次卷积层提取content图像和style特征,去逼近content图像的深层卷积特征(相当于图像的语义表示),同时使用深层次卷积层的Gram Matrix抽取Style图像的特征进行Sytle的表示,loss = alpha*loss_content+belta*loss_style拟合最终图像
      代码参见Neural-Style. 上述的深层卷积特征抽取使用VGG模型进行
    • 另一种Neural-Style: Li, Chuan, and Michael Wand. "Combining markov random fields and convolutional neural networks for image synthesis." Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016.  类似的Neural-Style方法: 新图像的loss = alpha*loss_content + belta*loss_style + gama*.regularity。其中loss_content使用深层卷积网络抽取的特征(语义特征)与最终图像对应的特征的差值表示;loss_style为使用k*k*c(k大小,c为channel)大小的patch将目标图像和原style图像进行划分,并进行对应位置的patch相似度计算找出最相似patch后计算sytle偏差;regularity为像素点之间的平滑。综合loss_content, loss_style, regularity后得到最终图像
    • deepfakes:Korshunova I , Shi W , Dambre J , et al. Fast Face-swap Using Convolutional Neural Networks[J]. 2016.deepfake方法:主要思路为使用CNN自动由content和style两类图片合成新的图片。同时考虑lighting,smoothing。content主要指面部表情,一般使用各层网络的高层features进行表示,style为想要替换成的脸,之后对content, style,smoothing,lighting的表示进行加权..Note.具体工程实现的时候,均为1,使用Dlib定位并抽取脸部对应的轮廓点。2,进行affine transform对齐脸部。3,使用训练出来的模型,结合content(pose)和style,生成新的face; 4, 进行仿射变换将脸部还原为原来的角度;5,将脸部粘合回原图片背景中
    • deepfakes2:Li C , Wand M . Combining Markov Random Fields and Convolutional Neural Networks for Image Synthesis[C]// Computer Vision & Pattern Recognition. IEEE, 2016.另一个faceswap方法
    • sketch rnn drawing: Ha D , Eck D . A Neural Representation of Sketch Drawings[J]. 2017. google猜画小歌中的技术,进行自动作画

    NLP

    Bengio Y, Ducharme R, Vincent P, et al. A neural probabilistic language model[J]. Journal of Machine Learning Research, 2003, 3(6): 1137-1155.  用神经网络的方法使用词向量解决curse of dimensionality:相似的词有相似的词向量,对于未见过的sequences也可以利用词向量的相似性判定是否合理,更具有泛化性。具体方法为构建神经网络,先将词向量化,输出层为大小为|V|的softmax,对P(Wt|W1~t-1)进行建模,训练的过程即可得到每个词对应的向量。具体参见论文及Note.

    Collobert R, Weston J. A unified architecture for natural language processing:deep neural networks with multitask learning[C]// International Conference on Machine Learning. ACM, 2008:160-167.  使用深度学习框架,对多个NLP supervised任务同时进行训练进行参数共享,共同提升效果,能够解决传统方法过多依赖人工特征,以及过于task specific而无法参数共享的短板。具体做法为:1,使用wiki语料unsupervied的语言模型训练得到word representation作为词向量的初始值,之后对多个NLP任务进行jointly-training,仅最后一层为task-specific。论文中提到的如何为word设计多种物理含义的embedding方法在ETA领域也值得借鉴。Note.

    Chung J, Gulcehre C, Cho K, et al. Empirical evaluation of gated recurrent neural networks on sequence modeling[J]. arXiv: Neural and Evolutionary Computing, 2014. 对传统的tanh RNN,LSTM和GRU在多个数据集上进行评测。具体方法为,选择多个数据集,之后经过设定后,限定三种方法的训练参数量基本一致的情况下进行训练收敛速度和效果的对比。主要的结论为:LSTM&GRU明显好于tanh RNN。LSTM和GRU的表现各有千秋,在不同数据集合均可能胜出,并没有明显的结论证明GRU优于LSTM。Note.

    Le Q V , Mikolov T . Distributed Representations of Sentences and Documents[J]. 2014. word2vec。仍然是对P(w|context(w))进行建模,主要的思路仍然是使用dense vector对word进行表示,构建Huffman树,按照语料中词出现的频率进行编码,之后对于语境中的词对P(w|context(w))进行建模,内部将从sum(context(w))表示的向量,对Huffman数中到w叶子节点的Path的每一步进行二分类,分错的cost作为loss更新Huffman树节点参数及context(w)代表的各词的representation。网上博客:《word2vec中的数学原理》讲解的较为清楚。Note.

    Wang Z, Fu K, Ye J, et al. Learning to Estimate the Travel Time[C]. knowledge discovery and data mining, 2018: 858-866.该论文主要适用于ETA领域,将其放在该处的原因是文中引入Recurrent Network的思路主要来自于NLP领域:传统的ETA要么适用Additive的link+cross的累加方式进行拟合,或者适用浅模型(XGBOOST,FM等)方式拟合,这些方式的缺点是信息适用不完全,因为ETA需要使用大量时空维度的路网Topology关系,同时使用的特征既有dense特征,又有sparse特征,故文中使用GooglPlay App推荐中的W&D方式,充分使用dense+sparse特征的同时,引入Recurrent Neural Network对空间依赖的link序列进行建模。文中针对不同物理含义特征,使用不同网络结构进行jointly learning的思路值得学习.Note.

    Airbnb推荐系统:real time personalization using embedding for searching ranking airbnb.论文的主题思路和word2vec比较类似,都是使用对item和构建出的context(item)进行建模,但文章具有以下特点:1,比较偏工程实现,其中碰到实现过程中的问题,例如user id规模如何影响到embedding,如何做负才采样,应用了哪些工具,具体的参数如何设置都会提及,和之前google发布的论文比较类似,比较偏实用;2,构建embedding context的时候,不仅考虑点击的listing的上下文,同时考虑最终的booking结果,地域marketing,hosting是否reject预订等都综合考虑在embedding的优化目标中,而且构建优化目标的每一步结合业务的考虑有详细的分析说明,该点是该文章特别具有借鉴意义的点;3,构建ranking的优化目标函数,使用7天的多种数据labeling来给定xi对应的yi(例如booking权重最大,然后是calling for consulting,之后是点击,如果是reject则为负值,仍然是以业务目标出发构建技术的优化目标),该问题在进行CPI广告优化时也会碰到(appstore或者googleplay的install回传时间能达到7天).Note..

    2014 Stanford GloVe:Jeffrey Pennington, Richard Socher, and Christopher D. Manning. 2014. GloVe: Global Vectors for Word Representation  GloVe方式的word vector representation,该方式的word representation思路为:1, 传统的word2vec方式主要使用window窗口中的上下文关系,未使用到statistics信息,但该类信息比较有用;2, co-occurance信息的比值比较有用,而非绝对的概率值。故使用GloVe方法,使用限定window窗口内的上下文共现关系进行统计,融合了上下文信息和统计信息。在建模的过程中,则充分考虑保留(不破坏)word representation之间的线性关系。故该类方式理论上比较适用于analogy任务

    2017 Facebook FastText:  EnrichingWord Vectors with Subword Information. 思路和word2vec 非常类似:1, 模型使用和word2vec中skip-gram一样的建模方式;2,  对n-gram进行了向量化,之后将word看作是n-gram向量的加和。该方式相当于充分考虑了word的morphology信息,能够在word之间共享参数(作者的出发点是类似于法语,西班牙语中,很多动词有超过40种不同结尾,但是这些词是有关系的,故需要共享参数,而不是不同的word使用非参数共享的单独word representation)。

    DSSM:Huang P S , He X , Gao J , et al. Learning deep structured semantic models for web search using clickthrough data[C]// Proceedings of the 22nd ACM international conference on Conference on information & knowledge management. ACM, 2013.  Deep Structured semantic models,(提取码:sh10    P.S. 百度网盘只能带提取码进行分享)使用检索/广告中的clickthrough行为构建doc或者query的语义向量进行相似度计算。文章主要贡献的创新点有两个:1,使用clickthrough用户search, click行为用supervised learning的思路,使用deep learning的方式构建doc和query的语义向量进行相似度计算。因为该方式相对于unsupervised方式在retrival的应用上更有目标性,故效果更好;2,使用n-gram而不是word构建向量来进行bag-of-word的word hashing,能够在保证collision较少的情况下,显著减少‘vocabulary’的大小(极端情况下能够降低为原来的4%%),同时使用n-gram计算vector还能一定程度上缓解morphological variations

    CDSSM: Shen, Yelong, et al. "A latent semantic model with convolutional-pooling structure for information retrieval." Proceedings of the 23rd ACM International Conference on Conference on Information and Knowledge Management. ACM, 2014.  思路仍然是将query和doc 最后均表达为semantic 的vector representaion,只是在行程表达的vector的时候使用以下步骤:1,使用letter-tri-grams的word hashing将句子转化为feature vector  2,使用固定滑动窗口使用convolution operation捕获上下文信息(对滑动窗口内的所有word hashing后的feature vector进行concat进行convolution operation)行程contextual feature representation; 3, 使用max-pooling获取contextual feature中的关键feature; 4, 使用全连接计算得到固定大小的语义表达; 5,使用同样的方式计算query & doc的语义表达,之后使用cosine 计算其相似度

    DeepWalk:Perozzi, Bryan, Rami Al-Rfou, and Steven Skiena. "Deepwalk: Online learning of social representations." Proceedings of the 20th ACM SIGKDD international conference on Knowledge discovery and data mining. ACM, 2014.  (提取码:pkr4    P.S. 百度网盘只能带提取码进行分享)主体思路就是在借鉴NLP中的word2vec思路进行embedding(encoding):对于graph,使用randomwalk构建出在graph中游走的node sequences,并将该sequences看作是自然语言中的sentences, 之后使用word2vec(文中为skip-gram)方法构建node的embedding.论文中该方法构建出的embedding作为特征在statistical model中对node类别进行分类的任务中取得较好效果,labeled node的比例越稀疏,该方法的效果越好.该方式的优点还包括:1,算法容易并行,因为randomwalk为过程仅依赖于局部的sub-graph;2,该方法对于graph的局部变化具有鲁棒性

    node2vec:Grover, Aditya, and Jure Leskovec. "node2vec: Scalable feature learning for networks." Proceedings of the 22nd ACM SIGKDD international conference on Knowledge discovery and data mining. ACM, 2016.  (提取码:ghkd  P.S. 百度网盘只能带提取码进行分享)为改进版的Deepwalk.Deepwalk在进行随机游走的时候,每条边的权重是一样的(或者按照原始edge的权重进行随机游走,而不考虑网络的结构),相当于是一个纯随机的过程. node2vec新增两个参数p,q对walk方式进行控制,其中p控制返回起点的概率:如果p较小,则返回起点的概率较大(更像BSF);使用q控制走的更远的概率,如果q较小,则更容易走的更远(更像DSF)。使用该方式使randomwalk方式更加可控,相当于是带权重的BSF和DSF的融合

    entity2rec:Rizzo G , Palumbo E . entity2rec: Learning User-Item Relatedness from Knowledge Graphs for Top-N Item Recommendation[C]// Eleventh Acm Conference on Recommender Systems. ACM, 2017.  entity2rec,(提取码:0174     P.S. 百度网盘只能带提取码进行分享) . entity2rec,基于node2vec,在knowlege graph的基础上,分别对每一种属性计算node2vec(属性例如entity的type/category, user 和item之间的feedback行为关系),计算出每种属性的feature representation后,再使用LTR的方式进行ranking以获取Top-N的推荐结果。该方式的优点为:1,相当于是Hybrid的推荐方式,既包含了CF,又包含了Content information(user-item之间的feedback构建出来的feature representation相当于CF,entity的type构建出来的feature representation相当于content-based rec)2,该推荐方式具有较好的可解释性,因为进行LTR的时候相当于对各个feature vector的组合,根据权重就可以进行推荐方式和理由的解释 3,实验证明效果较好

    MAP

    Multistep Speed Prediction on Traffic Networks: A Graph Convolutional Sequence-to-Sequence Learning.Zhengchao Zhanga, Meng Lia,b, Xi Linb, Yinhai Wangc,a, Fang Hed,文章的新颖之处在于:1,使用seq2seq的方式进行多步路况预测;2,为了同时对空间topology关系进行建模,使用了图卷积方式,对上下游多步的link关系进行了融合,而不是对单一link速度进行拟合(基于Rule-based的方法会使用规则进行多个link的速度融合);3.引入attention提升效果同时在特征层面,结合了准实时特征以及历史特征.Note.

    Asghari M , Emrich T , Demiryurek U , et al. Probabilistic estimation of link travel times in dynamic road networks[J]. 2015..论文创新点:将物理世界路网的通行速度建模为正态分布,并结合历史信息进行拟合,即可给出给定路径规划道路的ETA及置信度,以便选取的最优路线不仅要考虑ETA是否最快,还可以结合置信度,挑选综合ETA+置信度的最优路径。思路相对简单直接,但话糙理不糙,具有较强的实施性

    Newson P , Krumm J . [ACM Press the 17th ACM SIGSPATIAL International Conference - Seattle, Washington (2009.11.04-2009.11.06)] Proceedings of the 17th ACM SIGSPATIAL International Conference on Advances in Geographic Information Systems - GIS \"09 - Hidden Markov map matching through noise and sparseness[J]. 2009:336.内容:个人比较喜欢的一篇文章:使用隐马尔科夫模型,对map-matching问题进行建模,将匹配概率分解为实用正态分布的观察概率(GPS点到link投影点)及使用指数分布的转移概率(球面距离及route planning)的组合,之后实用维特比方法求最优解。论文发表后的数年,各大公司的地图匹配算法均基于该思路或实现。简单实用Note.

    Zheng Y . Map-matching for low-sampling-rate gps trajectories[C]// Acm Sigspatial International Symposium on Advances in Geographic Information Systems. DBLP, 2009.HMM Map-Matching的一个变种,相当于在最终概率=观察概率*转移概率的基础上,引入了限速信息:假设真实的行驶道路大概率遵守道路限速信息(通过候选路线的行驶速度和候选路线的限速的cosine得到新的系数引入概率计算公式),通过该论文可以得到结论,map-matching应该使用机器学习综合多种特征计算概率,而不仅仅是转移概率和观察概率..

    Zheng Y . Trajectory Data Mining: An Overview[M]. ACM, 2015. 内容比较全,可以作为trajectory分析的目录,了解各个组件

    CTR&CVR

    Facebook:Practical Lessons from Predicting Clicks on Ads at Facebook[J]. 2014:1-9.Facebook ctr预估模型,也算是业界经典了。主要思路为:1,使用GBDT进行特征抽特征(进行自动特征组合);2,使用LR对GBDT抽取的特征(规则组合)进行权重学习。3,一般训练的方式为先将GBDT训练好,之后固定树模型并对叶子节点进行编码作为LR特征训练LR。该方式在业界有较为广泛的应用,例如滴滴路况预测中,能够提升有效准确率2%,而美团ETA应用中预估时间的MAE能够下降3.4%(与论文中3%的下降接近).;同时文中也对各类特征的重要性进行了分析;同时文中对影响CTR模型效果的几个因素进行了分析:1,模型的自动更新很重要:模型一周不更新,效果下降1%左右,考虑到性能,甚至可以gbdt模型更新频率相对低,lr更新相对快;2,对于gbdt+lr模型,historical特征较为重要(top 10特征均为historical特征),但contextal特征对cold start较为重要;3,参数更新的schedule方法中,per-coordination方式明显好于其他方式;4,在display ads中,训练时可以进行负采样,但后续线上使用的时候需转换回原分布:q=1/(p+(1-p)/w),其中q为最终ctr值,p为采样后模型预估值,w为负采样比例..Note..

    Google:Mcmahan H B , Holt G , Sculley D , et al. Ad click prediction:a view from the trenches[C]// Acm Sigkdd International Conference on Knowledge Discovery & Data Mining. ACM, 2013.Google 2013年ctr预估算法,文中主要描述了使用FTRL online learning方法获取稀疏性,该方法能够在稀疏性以及准确性上得到均衡提升。文章的主要贡献有:1,在FTL方法中加入L1正则获取稀疏性;2,使用per-coordination方法加速训练的收敛;3,Google,Facebook出的论文中都会有很多解决工程问题的讨论,该论文也不例外:例如使用probablistic inclusion或bloom filtering方式概率性处理新特征的加入;使用13位对内容进行编码节省内存(权重几乎都集中在(-2.0,2.0)之间).更为重要的是论文中直接有伪代码可供参考.Note...

    GooglePlay App推荐:Cheng H T , Koc L , Harmsen J , et al. Wide & Deep Learning for Recommender Systems[J]. 2016.Wide@Deep方法。使用Wide线性部分作为Memorization,对历史信息进行exploit,使用Deep部分,对特征进行自动的更高层次的组合与抽象(个人理解和NLP中的模式类似,Deep部分能够学习复杂计算,同时对特征进行组合并生成embedding)进行自动特征组合,并进行更高层次的泛化,相当于对训练数据中的信息进行explore。该方法同时解决了wide需要进行手动特征组合的缺点,以及Deep有可能过拟合的缺点;训练:进行Jointly training,其中wide部分使用ftrl训练,deep部分使用adagridadam进行训练...Note...P.S. 目前Wide&Deep已经作为一个标准Framework解决分类和回归问题,例如滴滴ETA模型,我们使用Wide&Deep&RecurrentWDR方法进行ETA预估

    Kaggle Criteo Ctr预估:3 Idiots's Approach for Display Ads Challenge. KaggleCritero ctr预估第一名使用的方法,主要的思路为:1,使用GBDT对连续特征,以及出现频率极高的离散特征进行特征组合(类似于FB display ads ctr预估),组合出来的特征,结合离散化后的连续值特征,原有离散特征(共3类特征),使用FFM进行CTR预估,并在得到CTR值后对预估值进行Calibration(简单地加减一个固定值)

    Kaggle Avazu CTR预估:4 Idiots's Approach for Display Advertising Click-through Rate Prediction. 另一个Kaggle上的display ads ctr prediction 比赛,冠军组使用的方法介绍中,有两个关键点:1,ensemble,目前已经成为competition的标配;2,feature engineering,文中使用了较多单独构造的feature,例如user /deviceid count,  hourly impression count; user installed app bagging,  user click action的编码等。最终获奖的模型为20个ffm的ensenbling

    2017 Huawei App Recommender Ctr Prediction:Guo H , Tang R , Ye Y , et al. DeepFM: A Factorization-Machine based Neural Network for CTR Prediction[J]. 2017.华为App应用市场的推荐方法,基于Wide&Deep,区别在于两点:1,将Google的Wide部分的LR模型换为FM,用于学习特征交叉;2,2,不同于其他Deep的模型,FM和Deep部分使用的特征的Embedding是相同的,相当于low &hight order feature intesection都会反映到Embedding中在Wide部分和Deep部分进行共享,且训练速度和FNN(FM与训练V作为Deep Model Embedding参数初始化),PNN(Embedding和First Hiden Layer之间进行一次inner production,效果不错但增加了全连接规模导致训练较慢)要好。PS.在滴滴ETA模型中,我们就借鉴了DeepFM思路,不过其中的Deep部分会比较复杂,同时在最终的融合部分,增加了初始Additive ETA Model.....Note.

    Zhou G , Song C , Zhu X , et al. Deep Interest Network for Click-Through Rate Prediction[J]. 2017.目前deep learning在CTR&CVR预估上,使用较多的方法是Embedding&MLP的方式,思路是对原来稀spase features先进行embedding,之后进行feature group wise的pooling,例如sum或者average,之后得到定长的vector再输入MLP(MLP可以有很多变种,例如res-net思路)。该方式在淘宝上的缺点是:user的兴趣可能不止一个,例如年轻妈妈可能关注自己喜欢的时尚衣服,同时也在购买婴儿用品,故直接sum/average的user featrues pooling方式存在信息损失。故该文将user behavioral embeddings与ads的embedding使用local network的方式进行学习,最大程度上根据用户historical 的behavioral feature体现与ads的相关性...Note..

    Chapelle O. Modeling delayed feedback in display advertising[C]//Proceedings of the 20th ACM SIGKDD international conference on Knowledge discovery and data mining. ACM, 2014: 1097-1105.使用类似于survival time analysis的思路,将cvr拆解为两个子问题,pctr = p(C|X),以及预估样本click到conversion的时间=pcvrtime = p(D|X,E).之后使用最大似然估计,根据观察数据中的<X,Y,E,D>.进行最大似然估计pctr,pcvrtime的参数。本文主要解决conversion可能在click数天后才产生的情况,对于移动互联网CPI广告类型,电商广告,金融广告等均具有较高的参考意义.Note...

    Wang R, Fu B, Fu G, et al. Deep & cross network for ad click predictions[C]//Proceedings of the ADKDD'17. ACM, 2017: 12. 新的网络结构,在DNN的基础上,增加使用cross network对特征进行交叉。文中cross network有两个特点:1,能够限定特征交叉的阶数(bounded order),且可以认为cross network的depth数,就是特征交叉的阶数;2,每次进行特征交叉的时候,相当于是在学习上一层的残差。最后cross network再和dnn进行combination。和deepfm相比:相同点是网络结构比较类似。不同点在于cross network从理论上能够从cross network的网络层数控制feature intesection的阶数..Note..

    Xiao J, Ye H, He X, et al. Attentional factorization machines: Learning the weight of feature interactions via attention networks[J]. arXiv preprint arXiv:1708.04617, 2017..新的网络结构。网络结构中的设计思想是认为FM中,每个特征对应的隐变量(embedding)在使用过程中的权重都相同(均为1),这是不合理的。特征在进行交叉的时候,权重应该不一样。故在FM结构中增加attention network来学习特征embedding进行element-wise交叉时候的权重。该方法一方面能够提升效果,另一方面,也能够根据特征交叉过程中的权重,分析交叉特征的重要性:通过分析网络产生的attention score,能够观测到哪些特征的组合重要性更高(和未做attention的fm相比)。而文中通过先固定attention score训练fm embedding,之后再固定embedding训练attention权重的方式,也验证了在传统fm上增加attention network的确对最终的效果有正向作用..Note..

    He X, Chua T S. Neural factorization machines for sparse predictive analytics[C]//Proceedings of the 40th International ACM SIGIR conference on Research and Development in Information Retrieval. ACM, 2017: 355-364.思路为在FM后增加了隐藏层,以便在原有FM线性二阶交叉的基础上增加非线性的特征交叉

    Deep Spatio-Temporal Neural Networks for Click-Through Rate Prediction 文章的主要思想还是使用深度学习进行高维特征交叉。创新点在于该点击率模型同时考虑了空间关系和时间关系对点击率的影响。

    该处的空间关系指即将展现的候选广告之前的作为上下文的广告,作为该ad的context,而该用户历史上点击过&未点击的ads则作为空间时序上用户的兴趣表达(该思想和DIN类似)

    在具体实施时,文中使用了递进的三种模型:1,特征embedding后直接进行sum pooling;2,解决加入attention机制解决sum pooling带来的信息丢失问题;3,引入context和target的交叉解决context对多个广告不变的问题

    总体文章的思路比较直接,最重要创新就是同时引入上下文和用户时间维度上的兴趣表达

     

其他持续补充

  • Nair V, Hinton GE. Rectified linear units improve restricted boltzmann machines. InProceedings of the 27th international conference on machine learning (ICML-10) 2010 (pp. 807-814). 介绍了ReLU
  • Bell RM, Koren Y. Lessons from the Netflix prize challenge. Acm Sigkdd Explorations Newsletter. 2007 Dec 1;9(2):75-9. Netflix获奖算法的论文,主要提出多模型融合和现在大家经常用的改进SVD算法
  • Breiman L. Random forests. Machine learning. 2001 Oct 1;45(1):5-32.
  • Cheng, Heng-Tze, et al. "Wide & deep learning for recommender systems." Proceedings of the 1st Workshop on Deep Learning for Recommender Systems. ACM, 2016.  Google App推荐系统中深度学习模型, Github上有开源。主要思路就是使用wide的线性模型捕捉根据历史信息得到的经验,同时使用深度学习对未看到过的特征进行交叉特征的exploration。深度部分会引入较多embedding;目前很多大厂中的系统都参照该模型来实现; 开原地址为:wide&deep source code

原文参见: 深度学习参考资料

更多也可参见:推荐系统参考资料