自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

谢杨易的博客

搜索推荐 + NLP算法专家

  • 博客(106)
  • 收藏
  • 关注

原创 我的新书《精通推荐算法:核心模块+经典模型+代码详解》出版了!

本书包括10章,各章的具体内容如下。第1章介绍为什么需要推荐系统、推荐系统的分类及其主要技术架构。第2章介绍如何构建数据样本和特征工程,从而训练模型。这是推荐算法的基础。第3章介绍深度学习之前的主流推荐算法,包括协同过滤、矩阵分解、逻辑回归和因子分解机等算法。第4~7章讲解精排模型算法。第4章讲解特征交叉,并介绍Wide&Deep和DeepFM等经典模型。第5章讲解用户行为序列建模,包括短序列建模和长序列建模方法,重点讲解DIN、DIEN和SIM等模型。

2024-04-02 18:18:31 55 2

原创 推荐算法常见的评估指标

推荐算法评估指标比较复杂,可以分为离线和在线两部分。召回、粗排、精排和重排由于定位区别,其评估指标也会有一定区别,下面详细讲解。

2024-01-13 21:03:44 2076 1

原创 精通推荐算法4:经典DNN框架特征交叉模型 Deep Crossing(面试必备)

微软2016年提出的Deep Crossing模型奠定了深度学习精排模型的基本架构,具有十分重要的意义。它采用“Embedding + MLP”的结构,成为目前推荐算法的基本范式。通过深度神经网络,实现大规模特征自动组合,大大减少了对人工构造交叉组合特征的依赖和开销。同时将残差网络第一次落地到推荐算法中,优化深度学习反向传播梯度弥散和过拟合等问题。

2024-01-10 09:46:54 489 3

原创 精通推荐算法3:精排特征交叉架构(体系化总结,面试必备)

特征交叉可以帮助生成新的特征,提高模型准确度。利用深度学习进行特征交叉,可以解决手动特征交叉门槛高、工作任务重、无法穷举等缺点,大大提升了模型表达能力。深度学习特征交叉主要有DNN模型、异构模型和序列模型三大类。本文主要介绍特征交叉的意义、基本范式和主要难点

2024-01-02 21:34:35 1039 4

原创 深度学习时代,还需要学习传统机器学习算法吗?(你必须知道的)

深度学习时代,还需要学习传统机器学习算法吗?这个问题可能是大多数算法入门者都有的疑惑。实话说,当初我入门的时候,也存在这个疑问。本文就来解开你的疑惑。

2023-12-24 19:32:35 530 10

原创 精通推荐算法2:推荐系统分类(面试必备)

当前各大平台基本都有自己的推荐系统,它已经深入到电商、社交、资讯、电影和音乐等各行各业。囊括了纯文本、图文、长短视频和直播等多种不同的内容介质,并产生了单列信息流、双列信息流和沉浸式等多种交互形态。另外,它可以使用在首页、垂直类目和相关推荐等场景。

2023-12-24 18:57:19 1102 8

原创 精通推荐算法1:为什么需要推荐系统(系列文章,建议收藏)

搜索主要解决用户如何快速寻找自己感兴趣内容的问题,偏主动型消费。推荐则主要解决内容如何精准推送给合适用户的问题,偏被动型消费。二者对用户、平台和内容都有十分重要的意义。本文是《精通推荐算法》系列文章的第一篇,后续会连载更多内容。包括召回、粗排、精排和重排的知识体系、当前重难点、如何优化,以及业界的经典模型等。干货多多,强烈建议关注和收藏。

2023-12-24 18:27:50 1309 10

原创 推荐算法架构7:特征工程(吊打面试官,史上最全!)

本文先讲解特征类目体系,分析推荐系统中一般会有哪些特征。然后讲解特征处理范式,分析如何对特征进行离散化、归一化、池化和缺失值填充等处理。最后讲解特征重要性评估,从而提升特征可解释性,并对其进行筛选,以及进一步挖掘更多高质量特征。

2023-12-21 10:13:37 3235 15

原创 推荐算法架构6:数据样本(面试必备)

深度学习的数据样本决定了算法的上限,模型只是去不断逼近这个上限,可见数据样本对于深度学习的重要意义。与CV和NLP不同,推荐系统可以获取大量用户的浏览和点击等行为,很容易构造正负样本。例如,在精排点击率(Click-Through Rate,CTR)预估任务中,通常将用户点击物品作为正样本,将用户曝光未点击作为负样本。另外,精排面对的候选集和解空间相比召回和粗排要小得多,所以它的样本选择偏差(Sample Selection Bias,SSB)问题相对没那么严重。精排模型在数据样本上一般会遇到以下问题。

2023-12-18 18:05:52 2585 20

原创 推荐算法架构5:全链路专项优化

总体架构如下图所示,先列了6大方向,后续逐步展开。

2023-03-02 22:23:39 472 4

原创 机器学习0 — 总体架构,ChatGPT时代必须掌握的

随着ChatGPT的一声巨响,拉响了强人工智能的序幕。ChatGPT相对于目前的各种机器人,简直就是弓箭和导弹的区别。沉寂了两三年后,AI如今又一次站在了人类工业的最高舞台。个人认为AI已经成为所有人,特别是程序员,必须了解甚至掌握的一项基本技能,原因如下对于已经从事AI行业的人来说,恭喜你,处在了还不错的时代,可以坚定不移的走下去。对于还没有进入,但有兴趣进入这个行业的人,目前也不算晚。机器学习是人工智能的基础理论,学习难度也比较大,因此我整理了一个系列博客,从各方面讲解机器学习的原理。

2023-02-02 14:43:02 4216 4

原创 推荐算法架构4:重排

1 总体架构精排打分完成后,就到了重排阶段,之后可能还会有混排。召回、精排、重排三个模块中,重排离最终的用户展现最近,所以也十分关键。重排的技术点也十分多,总结下来,个人认为重排主要是为了解决三大方面的问题:用户体验、算法效率、流量调控。下图是重排总体架构2 用户体验重排模块是推荐系统最后一个模块(可能还会有混排),离用户最近。作为最后一层兜底,用户体验十分重要。主要包括打散、多样性等内容。曝光过滤有时候也会放在重排中,但本质上完全可以在召回链路,对已充分曝光的短视频,或者刚刚已经购买过

2022-02-23 18:02:30 7610 13

原创 推荐算法架构3:精排

精排是整个推荐算法中比较重要的一个模块,目前基本都是基于模型来实现,涉及样本、特征、模型三部分。1 样本样本是模型的粮食,以CTR任务为例,一般用曝光点击作为正样本,曝光未点击作为负样本。样本方面主要问题有 正负样本不均衡:比如CTR任务,如果点击率是5%,则正负样本1: 20,负样本远远多于正样本,导致样本不均衡。分类问题中样本不均衡,会导致模型整体偏向样本多的那个类别,导致其他类别不准确。解决方法主要有: 负采样:对负样本进行采样,可以直接采用随机负采样。一方面可以减少样本存储

2022-02-20 20:52:37 6851 3

原创 推荐算法架构2:粗排

精排是整个推荐算法中比较重要的一个模块,目前基本都是基于模型来实现,涉及样本、特征、模型三部分。1 样本样本是模型的粮食,以CTR任务为例,一般用曝光点击作为正样本,曝光未点击作为负样本。样本方面主要问题有 正负样本不均衡:比如CTR任务,如果点击率是5%,则正负样本1: 20,负样本远远多于正样本,导致样本不均衡。分类问题中样本不均衡,会导致模型整体偏向样本多的那个类别,导致其他类别不准确。解决方法主要有: 负采样:对负样本进行采样,可以直接采用随机负采样。一方面可以减少样本存储

2022-02-20 20:41:41 4024 3

原创 推荐算法架构1:召回

1 推荐算法总体架构1.1 推荐算法意义随着互联网近十年来的大力发展,用户规模和内容规模均呈现迅猛发展。用户侧日活过亿早已不是什么新鲜事,内容侧由于UGC生产方式的普及,拥有几十亿内容库的平台也屡见不鲜。如何让海量用户在海量内容中找到自己喜欢的,以及如何让海量内容被海量用户精准消费,一直以来都是每个公司十分核心的问题。在这个背景下,搜索系统和推荐系统应运而生。搜索系统主要解决用户寻找感兴趣的内容,偏主动型消费。推荐系统则主要解决内容推送给合适用户,偏被动型消费。二者一边牵引用户,一边牵引内容,是实现

2022-02-19 20:22:57 7228 4

原创 机器学习17 -- GAN 生成对抗网络

1 什么是GAN1.1 组成部分:生成器和判别器GAN诞生于2014年,由深度学习三巨头之一的Bengio团队提出。是目前为止机器学习中最令人兴奋的技术之一。目前有几百种不同构架的GAN,论文也是非常非常多,可见研究有多么热门。论文信息:2014.06,Bengio团队论文地址:Generative Adversarial NetworksGitHub地址:https://github.com/goodfeli/adversarialGAN利用Generator和Discr.

2020-09-15 17:14:01 21071 6

原创 机器学习16 -- Lifelong Learning 终生学习

1 什么是lifelong learningLifelong learning终生学习,又名continuous learning,increment learning,never ending learning。通常机器学习中,单个模型只解决单个或少数几个任务。对于新的任务,我们一般重新训练新的模型。而LifeLong learning,则先在task1上使用一个模型,然后在task2上仍然使用这个模型,一直到task n。Lifelong learning探讨的问题是,一个模型能否在很多个task上

2020-09-14 18:36:54 17421 5

原创 机器学习15 -- Meta Learning 元学习

1 什么是meta learning一般的机器学习任务是,通过训练数据得到一个模型,然后在测试数据上进行验证。一般来说我们仅关注模型在该任务上的表现。而meta learning则探讨解决另一个问题,就是我们能否通过学习不同的任务,从而让机器学会如何去学习呢?也就是learn to learn。我们关注的不再是模型在某个任务上的表现,而是模型在多个任务上学习的能力。试想一下机器学习了100个任务,他在第101个任务上一般就可以学的更好。比如机器学习了图像分类、语音识别、推荐排序等任务后,在文本分类上

2020-09-14 15:43:45 16083 4

原创 机器学习14 -- Transfer Learning 迁移学习

1 总览迁移学习的目标,是利用一些不相关的数据,来提升目标任务。不相关主要包括task不相关。比如一个为猫狗分类器,一个为老虎狮子分类器 data不相关。比如都为猫狗分类器,但一个来自真实的猫和狗照片,另一个为卡通的猫和狗迁移学习中包括两部分数据source data。和目标任务不直接相关,labeled或unlabeled数据一般比较容易获取,数据量很大。可以利用一些公开数据集,比如ImageNet。又比如在机器翻译任务中,中译英数据量很大,可以作为source data target

2020-09-13 18:47:49 13363 2

原创 机器学习13 -- 无监督学习之自监督 self-supervised

1 为什么要自监督学习 self-supervised learning自监督学习是无监督学习的一种特殊方式。我们在无监督学习中讲过了,标注label是十分宝贵的,一般需要人工打标,时间和人力成本都十分高昂。但现实中,获取无标注data确实相对比较easy的事情。我们可以在网络上爬取很多很多的文本、图片、语音、商品信息等。如何利用这些无标注data,一直以来都是无监督学习的一个重要方向。而自监督学习则给出了一种解决方案。自监督学习通过data的一部分,来predict其他部分,由自身来提供监督信号,

2020-09-12 18:55:58 16690 7

原创 机器学习12 -- 无监督学习之线性模型(clustering、PCA、MF)

1 无监督学习总览我们都知道,有监督数据是十分宝贵的。一般来说我们获取data很容易,但获取label却比较困难。因此,无监督学习在机器学习中十分关键。如何利用好大量的无监督数据,对于业务冷启动和持续迭代运行,都至关重要。无监督学习大致分为化繁为简。又包括 聚类,将无监督数据合并为一个个cluster。cluster内数据相似,cluster间数据不相似。 降维,特征提取。对无监督数据,比如图像、文本,提取特征。比如PCA、Auto-Encoder、MF 无中生有,主要就是各种生成模

2020-09-12 14:40:45 13551 2

原创 机器学习11 -- 无监督学习之Auto-Encoder

1 什么是Auto-Encoder自编码器Auto-Encoder是无监督学习的一种方式,可以用来做降维、特征提取等。它包括两部分Encoder:对原始样本进行编码 Decoder:对经过编码后的向量,进行解码,从而还原原始样本如下图所示,对原始图片,先经过Encoder,编码为一个低维向量。然后利用这个低维向量,经过decoder,还原为原始图片。单独训练encoder和decoder,都是无法做到的。但把它们联合起来训练,是可以得到encoder和decoder的。1.1 deep

2020-09-12 11:23:10 16466 4

原创 机器学习10 -- 半监督学习 Semi-supervised Learning

1 为什么要做半监督学习有监督机器学习已经在很多领域证明了它的有效性,比如ImageNet图像分类任务,深度学习模型早在2017年,准确率就已经超过了人类。机器学习被认为是一门数据驱动的学科,数据分为两部分,data和label。通常情况下,data是比较容易获取的,而label需要标注,要珍贵很多。比如对于图像分类任务,网络上有成千上万的图片数据,但他们大多数都是没有label标注的。通常情况下,我们可以进行一小部分数据的标注,形成有监督数据,然后再利用好其他未标注数据。这种方法称为半监督学习。半

2020-09-11 18:27:13 19255 4

原创 机器学习9 -- 模型压缩和加速

1 背景近年来深度学习模型在计算机视觉、自然语言处理、搜索推荐广告等各种领域,不断刷新传统模型性能,并得到了广泛应用。随着移动端设备计算能力的不断提升,移动端AI落地也成为了可能。相比于服务端,移动端模型的优势有:减轻服务端计算压力,并利用云端一体化实现负载均衡。特别是在双11等大促场景,服务端需要部署很多高性能机器,才能应对用户流量洪峰。平时用户访问又没那么集中,存在巨大的流量不均衡问题。直接将模型部署到移动端,并在置信度较高情况下直接返回结果,而不需要请求服务端,可以大大节省服务端计算资源。同时

2020-09-09 19:32:06 15237 1

原创 机器学习8 -- 模型攻防(model attack & model defense)

1 什么是模型攻防1.1 攻防定义我们在平常的深度学习模型开发中,一般关注的重点在模型指标上,比如ACC、F1、Bleu等。但其实还有另一方面需要注意,那就是模型攻防,特别是在人脸识别等安全领域。什么是模型攻击(model attack)呢?以图片分类为例,如下图。原始图片经过分类模型,可以正确识别是tiger cat。我们在图片上加入某些一定分布的噪声后,模型可能就会把它错误识别为其他类别,比如keyboard。1.2 攻击条件模型攻击必须满足两个条件在原始图片上加入一定噪音,通过

2020-09-09 17:52:58 16056 2

原创 机器学习7 -- 可解释学习

1 为什么需要可解释学习可解释学习是一个比较大的话题,本文也仅仅是抛砖引玉。深度学习大多数情况下,我们关注的都是模型的指标,如ACC、F1、Bleu等,一般较少关注模型的可解释性。深度学习模型是一个黑盒,模型结构和参数调整很多时候也是摸着石头过河,给模型可解释性带来了很大难题。什么是模型可解释性呢?它一般分为两类情况local explanation,为什么这个样本被预测为某个类别。比如为什么imageNet的这张图片会被预测为猫?我们需要弄清楚图片中哪些关键像素和区域,能够很大程度决定分类类别。g

2020-09-01 10:45:03 13165 1

原创 机器学习6 -- 深度学习训练优化

深度学习中,我们在训练集上进行训练,结束后利用模型在测试集上进行predict。一般来说可能遇到两大类问题如下图所示我们分别来看这两种情况怎么来优化模型。

2020-08-30 15:46:05 13764 2

原创 机器学习5 -- 为什么深度学习需要加深?

很早以前就有人研究过模型加深加宽的作用。由上图可见,随着模型越深,错误率逐步下降。这个其实很好理解,可能有人会问,模型加深带来了模型参数量的提升,有助于bias降低。通过增加训练数据和各种正则,可以降低variance。从而降低整体的误差。

2020-08-29 17:11:01 14592 5

原创 机器学习4 -- 反向传播(back propagation)

反向传播是进行梯度计算的关键方法,梯度计算才能实现参数更新。梯度计算包括前向传播和反向传播两部分。如下图。

2020-08-29 14:29:24 15423 5

原创 机器学习3 -- 误差来源(偏差bias和方差variance)

机器学习模型误差主要来源于两部分,即偏差bias和方差variance。如下偏差bias为所有样本点的平均值与真实值的差距,方差variance则代表了样本点分布的波动性。由右下角的图可知,误差同时来源于方差和偏差。

2020-08-28 14:03:28 13787 7

原创 机器学习2 -- 优化器(SGD、SGDM、Adagrad、RMSProp、Adam等)

总结下来,SGDM和Adam两大阵营的各种优化后的optimizer如下optimizer优化主要有四种方法让模型探索更多的可能,包括dropout、加入Gradient noise、样本shuffle等让模型站在巨人肩膀上,包括warn-up、curriculum learning、fine-tune等归一化 normalization,包括batch-norm和layer-norm等正则化,惩罚模型的复杂度。

2020-08-27 21:15:04 34652 10

原创 机器学习1 -- 梯度下降(Gradient Descent)

我们训练模型的目标,就是找到一个拟合函数和一组参数,使得loss函数最小。如下那么这组参数怎么找呢?大家肯定就想到了耳熟能详的梯度下降。假设θ 有两个参数,即 {θ1, θ2}。初始时刻第一次迭代后,第二次迭代后,其中梯度即为学习率为η。这种沿着梯度反方向更新参数的方式,即为梯度下降。迭代步骤如如下所示。

2020-08-27 20:06:27 13483 2

原创 Transformer家族5 -- 推理加速(Faster-Transformer、TurboTransformers)

1 背景之前介绍了从编码长度、计算效率、通用性等角度对Transformer进行优化,并介绍了几个重要模型。本文介绍如何进行Transformer推理加速。相比于离线训练,在线推理加速更加关键。一方面由于在线流量大,加速可带来硬件成本的节省。另一方面在线推理加速,可大大提升AI应用的用户体验。事实上,之前的多种方法,特别是计算效率优化,对推理加速很有帮助。这些模型从算法的角度,进行了推理速度优化。本文主要从框架层的角度,讲解如何对推理进行加速。主要带来NVIDIA的Faster-Transformer框

2020-06-30 20:52:47 19415 6

原创 Transformer家族4 -- 通用性优化(Universal-Transformer)

1 背景之前讲Transformer的时候,也提到过它的通用性的缺点。相比于RNN,Transformer不是图灵完备的,虽然大多数任务都是吊打RNN,但在某些看起来极为简单的任务上,却表现很差,比如字符串拷贝等。这个问题其实也不算大,但谷歌还是给出了他的解决方案,也就是Universal Transformer。这篇看看就好了,个人感觉实际应用中作用有限。2 Universal-Transformer论文信息:2018年7月,谷歌,ICLR2019论文地址 https://arxiv.org/ab

2020-06-30 10:27:16 18361 3

原创 Transformer家族3 -- 计算效率优化(Adaptive-Span、Reformer、Lite-Transformer)

1 背景上文我们从编码长度优化的角度,分析了如何对Transformer进行优化。Transformer-XL、LongFormer等模型,通过片段递归和attention稀疏化等方法,将长文本编码能力提升到了很高的高度。基本已经克服了Transformer长文本捕获能力偏弱的问题,使得下游任务模型performance得到了较大提升,特别是文本较长(大于512)的任务上。但Transformer计算量和内存消耗过大的问题,还亟待解决。事实上,Transformer-XL、LongFormer已经大大降

2020-06-29 16:16:46 18716 5

原创 Transformer家族2 -- 编码长度优化(Transformer-XL、Longformer)

1 背景NLP中经常出现长程依赖问题,比如一个词语可能和它距离上千位置的另一个词语有关系。长程关系的建立十分困难。常见序列结构模型都有一些难点,如下。在RNN中,由于反向传播梯度衰减和梯度爆炸问题,使得模型只能捕获较短距离。LSTM利用门限机制,将连乘转变了为连加,提升了模型长程捕获能力,但梯度弥散问题没有从根本上得到解决,故其最大程度只能在400左右。Transformer利用self-attention机制进行建模,使得任何两个位置token距离都为1。如果没有内存和算力的限制,Transfo

2020-06-28 19:33:14 19047 14

原创 NLP预训练模型1 -- 综述

复旦大学邱锡鹏教授发表了一篇NLP预训练模型综述,“Pre-trained Models for Natural Language Processing: A Survey”,从多个角度分析了当前预训练语言模型。本文基于这篇文章来分析1 为什么需要预训练模型邱老师认为预训练模型有三大优势预训练模型从大规模语料中学习知识,对下游任务帮助很大预训练提供了一种更好的参数初始化方式,使得在目标任务上泛化能力更好,收敛速度更快预训练可以认为是一种正则化手段,可以防止模型在小数据集上过拟合。2 预训

2020-06-27 22:16:35 21270 12

原创 NLP预训练模型6 -- 模型轻量化(ALBERT、Q8BERT、DistillBERT、TinyBERT等)

1 背景模型压缩和加速在工业界应用中十分重要,特别是在嵌入式设备中。压缩和加速在算法层面,大体分为结构设计、量化、剪枝、蒸馏等。本文从这四个方面分析怎么实现BERT轻量化,从而实现BERT模型压缩和加速。2 结构设计通过结构设计来实现模型轻量化的手段主要有:权值共享、矩阵分解、分组卷积、分解卷积等。BERT中也广泛使用了这些技术。以ALBERT为例:矩阵分解:embedding层矩阵分解,分解前参数量 (V * H),分解后(V * E + E * H), 压缩 E/H 倍。权值共享:ALB

2020-06-27 18:58:51 20154 4

原创 NLP预训练模型5 -- 模型结构优化(XLNet、ALBERT、ELECTRA)

1 背景上文我们从预训练任务优化(NLP预训练模型3 – 预训练任务优化(ERNIE、SpanBERT))和训练方法优化(NLP预训练模型4 – 训练方法优化(RoBERTa、T5))两个角度,分析了如何提升BERT和NLP预训练模型的performance。本文我们从模型结构优化的角度来进行深入分析。模型结构优化一直以来都是比较fancy的工作,优秀的模型结构设计,可以大大提高模型参数的效率,甚至小模型效果可以超过大模型。本文我们以XLNet、ALBERT、ELECTRA为例进行分析。虽然他们也可以认

2020-06-27 16:26:19 18004 5

原创 NLP预训练模型4 -- 训练方法优化(RoBERTa、T5)

1 背景上文 NLP预训练模型3 – 预训练任务优化(ERNIE、SpanBERT)我们从预训练任务的角度讲解了如何对BERT进行优化,本文我们从训练方法的角度来讲解BERT优化。训练方法包括数据语料、文本预处理、超参调整等。BERT使用的一套超参,比如batch_size、training steps、optimizer、learning rate,是否还有优化的空间呢?每个深度学习调参侠都知道答案是显然的。虽然BERT在大模型大数据的作用下,对超参不是很敏感,但超参调整始终是模型优化一个绕不开的

2020-06-26 21:15:10 19899 5

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除