自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

null的专栏

Keep your eyes open and your feet moving forward. You'll find what you need.

  • 博客(247)
  • 资源 (4)
  • 收藏
  • 关注

原创 《Python机器学习算法》的写作历程

最近有两个多月的时间没来更新博客,是一直在忙着一件事——将博客中的一些文章整理成书。一开始写博客,给自己的文章建了一个响亮的标题《简单易学的机器学习算法》,但是发现写着写着,每一个算法也变得没那么简单易学,因此想对这些零散的知识点做一次全面的整理。最初是一年前有了这个念头,一直没有去实践,自己给自己找了很多的借口,今年8月份,这个念头又一次那么强烈的袭上心头,没有太多思考,说干就干。。。决定了,但是

2016-09-28 14:30:59 19085 23

原创 写给有技术咨询的朋友

时间来到2012年,我来到武汉大学继续攻读计算机硕士,期间接触到算法的研究,研究了启发式的优化算法,包括遗传算法,PSO,DE,ABC等等。在2013年年底开始基础机器学习,为了方便自己的学习,开始写博客,截至目前,有4,850,701访问量,期间也拿到过年度的博主等等。站在2023年回首过往,依稀记得当初自学计算机的过程,从2008年开始,开始自学计算机,从C语言开始,逐渐开始学习计算机专业课,包括操作系统,数据结构,计算机网络,组成原理等。在2017年,我将自己的文章整理成书,出版了人生的第一本书。

2023-04-17 14:56:21 313 1

原创 每日一道leetcode:6. N 字形变换

【代码】每日一道leetcode:6. N 字形变换。

2023-04-05 10:55:02 323

原创 每日一道leetcode:4. 寻找两个正序数组的中位数

给定两个大小分别为m和n的正序(从小到大)数组nums1和nums2。请你找出并返回这两个正序数组的 中位数。算法的时间复杂度应该为 O(log (m+n))。输入:nums1 = [1,3], nums2 = [2]输出:2.00000解释:合并数组 = [1,2,3] ,中位数 2输入:nums1 = [1,2], nums2 = [3,4]输出:2.50000解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2.5。

2023-04-05 10:41:43 533

原创 每日一道leetcode:8. 字符串转换整数 (atoi)

请你来实现一个函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的atoi函数)。函数的算法如下:读入字符串并丢弃无用的前导空格检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。确定最终结果是负数还是正数。如果两者都不存在,则假定结果为正。读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。将前面步骤读入的这些数字转换为整数(即,“123” -> 123, “0032” -> 32)。如果没有读入数字,则整数为 0。

2023-04-05 10:36:08 302

原创 淘宝搜索的向量召回算法MGDSPR

阿里的模型相对而言是相当复杂的,里面涉及到了大量的attention的计算,这会给在线任务带来巨大的压力。从原理上来说,低一点是对Query进行多粒度的分析,试图能够挖掘多粒度的语义信息。第二点是用户行为的挖掘,相当的复杂了。第三点是对相关性的控制,设立了独立的模块用于控制相关性。其他的如样本的选择,softmax中的温度参数等都差不太多。query侧进行了多粒度的语义分析,但item侧相对就简单了很多,这个对相关性的建模是不太友好的;

2023-04-02 01:27:36 1414 3

原创 Facebook的多任务多模态向量召回模型Que2Search

在Que2Search中,主要是加入了更多的文本特征,并利用基于Transformer的方法提取文本语义信息,同时在特征中融入了图像的特征,实现了多模态的模型学习。另一方面,在训练的过程中提出了多任务的学习,有利于对item塔的模型学习。

2023-04-01 00:21:37 339

原创 京东个性化向量召回算法DPSR

这篇文章的设计相对而言比较简单,有点亮点的地方就是设置了kkkkkk的设置,文章并未对kkk的设置做试验性的分析,在MIND中有对kkk的设置的分析;相关性的分析,众所周知,在搜索系统中增加向量召回,一个很大的问题就是相关性问题,在文章中只是在α\alphaα的设置那部分提到了相关性;负样本中只是用到了随机样本,但是未涉及到困难样本,这一块会对结果有些影响。

2023-03-31 17:53:04 398

原创 百度双塔召回引擎MOBIUS

Mobius的目标是要做一个统一的模型,在这个模型中融合了召回和排序,检索出来的最终的结果是高点击且高相关性,为了完成这样的目标,一个方法是常规的多目标,画一个简单的图如下:这是常用的多目标的建模方式,两个目标共享底层的特征以及网络参数,只是在上层的目标上有不同。在线上检索过程中需要先根据CTR分找到潜在候选,再根据相关性得分过滤。当然在这个建模的过程中还可以考虑诸如多专家等策略,详细参考[3]。高CTR,高相关(需要的,positive)高CTR,低相关(bad)

2023-03-30 23:29:15 416

原创 每日一道leetcode:11. 盛最多水的容器

给定一个长度为 n 的整数数组 height。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i])。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。:你不能倾斜容器。输入:[1,8,6,2,5,4,8,3,7]输出:49解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。输入:height = [1,1]输出:1。

2023-03-12 15:50:57 257

原创 每日一道leetcode:7. 整数反转

给你一个 32 位的有符号整数x,返回将x中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−2, 2− 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。输入:x = 123输出:321输入:x = -123输出:-321输入:x = 120输出:21输入:x = 0输出:0。

2023-03-12 15:38:18 354

原创 每日一道leetcode:9. 回文数

若是不转换成字符串,那就需要将整数中的每一个数位上的数取出,放到翻转后对应的位置上,这里需要注意的是首先对负数判定,直接判定负数为不符合的。解释:从左向右读, 为 -121。从右向左读, 为 121-。的定义是按照中心轴翻转后是一致的,前有回文串的判定,那么可以将整数直接转成。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。注意:这里的y可能会超出int的表示范围,导致提交错误。解释:从右向左读, 为 01。例如,121 是回文,而 123 不是。,通过回文的判断翻转前后两者是一致的。

2023-03-12 15:27:11 174

原创 每日一道leetcode:5. 最长回文子串

给你一个字符串s,找到s中最长的回文子串。如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。输入:s = “babad”输出:“bab”解释:“aba” 同样是符合题意的答案。输入:s = “cbbd”输出:“bb”s。

2023-03-12 15:11:25 152

原创 每日一道leetcode:3. 无重复字符的最长子串

给定一个字符串s,请你找出其中不含有重复字符的的长度。输入: s = “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。输入: s = “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。输入: s = “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。

2023-03-12 14:29:48 168

原创 每日一道leetcode:2. 两数相加

给你两个的链表,表示两个非负的整数。它们每位数字都是按照的方式存储的,并且每个节点只能存储数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.输入:l1 = [0], l2 = [0]输出:[0]输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]

2023-03-12 14:17:23 425

原创 每日一道leetcode:1. 两数之和

给定一个整数数组nums和一个整数目标值target,请你在该数组中找出 和为目标值target的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。输入:nums = [3,2,4], target = 6输出:[1,2]

2023-03-12 14:07:18 197

原创 Vision Transformer(ViT)

ViT模型将Transformer引入到图像的分类中,更准确的说是Transformer中的Encoder模块。为了能够尽可能少地对原始模型的修改,在ViT中将图像转换成一维的序列表示,以改成标准的文本形式,通过这种方式实现Transformer在CV中的应用。

2023-02-26 23:00:45 3666

原创 多目标建模总结

多目标建模已经成为当前推荐系统中的标配,在多目标建模过程中,需要考虑多个目标之间的相互关系,以选择合适的多目标建模方法,同时,在多目标的损失函数的设计上,也存在很多的优化方案,需要根据具体的应用场景选择合适的损失函数,以达到对具体任务的优化。

2023-01-19 16:04:46 2496

原创 多目标建模算法PLE

为了解决多任务模型中普遍存在的负迁移和跷跷板现象,在MMoE模型的基础上提出了CGC模型,在共享专家的基础上增加了针对特定任务的专家网络,可以针对特定任务学习到独有的网络部分,从而避免任务之间的相互影响,同时为了进一步提升整体网络的泛化效果,在CGC的基础上通过堆叠Extraction Network构造了更深的网络结构,进一步提升多任务模型的学习效果。

2023-01-18 00:33:43 1368

原创 注意力FM模型AFM

AFM模型在FM模型的基础上,引入了Attention机制,通过Attention的网络对FM模型中的交叉特征赋予不同的权重。

2023-01-16 17:35:16 863

原创 用户多兴趣建模MIND

工业界的推荐系统通常包括召回阶段和排序阶段。召回阶段我们根据用户的兴趣从海量的商品中去检索出用户(User)感兴趣的候选商品( Item),满足推荐相关性和多样性需求。目前的深度学习模型的套路是将User和Item在同一向量空间中进行Embedding表示,使用User的Embedding表示User的兴趣。然而实际情况是User的兴趣是多种多样的,使用一个Embedding不足以全面的表示User的兴趣信息。该文的创新点在于:通过Mulit-Interest Extractor Layer 获取U

2023-01-14 15:54:17 1040

原创 CVR预估模型ESMM

在ESMM网络中,通过引入两个辅助任务CTR和CTCVR,由于这两个任务的输入空间都变成了“曝光”,从而解决了传统CVR建模中在training和inference两个过程中输入空间不一致的问题,另一个方面,因为“曝光->点击”阶段的样本量要比“点击->转化”阶段的样本量要大,鉴于Embedding层参数的共享,因此,能够充分学习到Embedding层的参数。

2023-01-12 18:15:20 808

原创 深度网络CTR建模

深度学习模型在CTR问题上的探索还在继续,在CTR建模上也有更多更复杂的模型出现,在模型迭代的过程中,挖掘出更多有用的特征也是一条不断探索的道路。

2022-12-30 18:43:25 523

原创 召回和排序模型中的用户行为序列的建模

用户历史行为数据对用户兴趣的挖掘至关重要,无论是召回阶段,还是排序阶段,都需要使用到这部分的数据,随着深度学习的发展,对行为数据的挖掘也在不断深入,从最初的简单的Pooling操作,到序列挖掘,到Attention的计算,到多兴趣的挖掘,对这部分数据的挖掘也会进一步提升模型的效果。

2022-12-28 22:43:42 716

原创 人脸检测和对齐算法MTCNN

在现如今再回过头来看MTCNN这个模型,无论是模型还是思路上都已经比较落后,但在当时的条件下,确实由于其较好的表现,在业界得到了很多的应用。回顾MTCNN算法,整体的框架是一个多任务的级联框架,同步对人脸检测和人脸对齐两个项目学习,并且在级联的框架中使用了三个卷积网络,并将这三个网络级联起来,一步一步对结果精修,使得能够得到最终理想的效果,同时,在训练的过程中使用到了在线困难样本挖掘的方法,进一步帮助整个过程的训练。三个网络模型(P-Net,R-Net和O-Net)是分开单独训练的,没有做到端到端。

2022-12-23 00:43:59 1508

原创 空间金字塔池化Spatial Pyramid Pooling

针对不同大小的输入图像,在传统CNN网络中,需要首先将图像通过裁剪或者拉伸等变换转换到固定大小,通过分析,不同尺寸的输入主要是对全连接层有影响,SPP-Net中,在全连接层之前引入Spatial Pyramid Pooling Layer,可以将任意大小的输入转换成固定大小的输出。

2022-11-15 23:13:58 873

原创 卷积神经网络Inception Net

更宽更深的网络对于提升网络效果起到了至关重要的作用,但同时也带来了很多的问题,如难以训练,计算代价等等,沿着这条路,Google提出了Inception模块,并将其引入到卷积神经网络中,同时在网络的训练过程中又增加了诸如辅助分类器等帮助模型训练的优化,使得能够训练出更宽更深的网络模型Inception v1,同时在Inception v1的基础上,又继续优化,提出BN模块加速训练,提出大卷积转成多个小卷积来加速计算,得到了Inception v2和Inception v3模型。

2022-11-13 18:43:33 745

原创 BERT知识蒸馏TinyBERT

在TinyBERT中,精简了BERT模型的大小,设计了三种层的蒸馏,分别为transformer-layer,embedding-layer以及prediction-layer。同时,为了能够对以上三层的蒸馏,文中设计了两阶段的训练过程,分别与BERT的训练过程对应,即预训练和fine-tunning。

2022-11-08 23:44:15 726

原创 卷积神经网络NIN

在NIN卷积网络中,有两个点优化,第一,在传统的卷积层中加入MLP,进一步提升局部特征的提取能力;第二,引入全局平均聚合,将feature map与最终的分类类目对应,缓解因全连接网络引起的过拟合。

2022-09-24 13:00:42 1120

原创 卷积神经网络VGG

VGG网络结构相对比较简洁,整个网络结构中只用到了3×33\times33×3的卷积核和2×22\times22×2的最大池化,通过堆叠小的卷积核实现较大卷积的操作,通过这样的方式加深了网络的结构,但是在网络中还是出现计算量较大的情况,主要是出现在最后的几组全连接层,其中第一个全连接fc6的参数为25088×4096+4096=10276454425088×4096+4096=102764544。

2022-09-23 21:31:03 5221

原创 BERT知识蒸馏Distilled BiLSTM

Distilled BiLSTM是对于知识蒸馏较为一般性的实践,将BERT模型(Teacher)蒸馏到一个简单的BiLSTM模型(Student),蒸馏的目标函数中的蒸馏loss也是采用了对比logits结果的差异。虽然理论上较为简单,但是最终的结果是与与ELMo模型具有相同的效果,说明知识蒸馏的方法的有效性。在BiLSTM中,多个隐层状态的融合有不同的方法,如上面直接用最后一个隐层状态作为最终的状态,实际上,可以使用Attention的方法综合多个隐层状态作为最终的状态能够进一步增强模型的效果。

2022-09-16 18:17:10 956

原创 知识蒸馏基本原理

知识蒸馏通过对Teacher模型的压缩得到效果接近的Student模型,由于网络模型复杂度的减小,使得压缩后的Student模型的性能得到较大提升。

2022-09-12 18:38:54 2043 3

原创 BERT模型解析

BERT模型的提出对于NLP预训练的效果有了较大提升,在ELMo模型的基础上使用了Self-Attention作为文本特征的挖掘,同时避免了GPT模型中的单向语言模型,充分利用文本中的上下文特征。

2022-09-01 19:37:26 4341

原创 Transformer的基本原理

Seq2Seq[1]框架最初是在神经机器翻译(Neural Machine Translation,NMT)领域中提出,用于将一种语言(sequence)翻译成另一种语言(sequence)。其结构如下图所示:在Seq2Seq框架中包含了Encoder和Decoder两个部分。在Encoder阶段,通过神经网络将原始的输入{x1,x2,⋯ ,xTx}\left \{ x_1,x_2,\cdots,x_{T_x}\right \}{x1​,x2​,⋯,xTx​​}转换成固定长度的中间向量{c1,c2,⋯ ,c

2022-08-27 15:51:33 1887 2

原创 Pix2Pix

1. 概述很多的图像处理问题可以转换成图像到图像(Image-to-Image)的转换,即将一个输入图像翻译成另外一个对应的图像。通常直接学习这种转换,需要事先定义好损失函数,然而对于不同的转换任务,需要设计的损失函数也不尽相同。得益于生成对抗网络GAN的提出,尤其是条件生成对抗网络cGAN[1](conditional GAN),可以直接学习这种映射关系,同时不需要人工定义该映射的损失函数,可以通过自动的学习得到。基于cGAN的基本原理,Pix2Pix[2]提出了一种图像转图像的通用框架。Pix2Pix

2022-05-16 20:03:57 833

原创 深度卷积生成对抗网络DCGAN

1. 概述在原始的GAN[1]中,生成网络GGG和判别网络DDD使用的都是前馈神经网络MLP。随着深度学习技术的发展,得益于卷积神经网络CNN在图像领域的成功,在DCGAN[2]中尝试将CNN与GAN相结合,用CNN网络替换GAN的生成网络GGG和判别网络DDD中的MLP,同时在训练的过程中使用了一些技巧来避免模型崩溃和模型不收敛等问题。2. 算法原理2.1. DCGAN的优化相比于GAN,除了将GAN中生成器和判别器中的MLP替换成CNN外,其余的基本不变,DCGAN的价值函数依然为:minG 

2022-05-11 11:18:32 1016

原创 Conditional GAN

1. 概述GAN的出现为数据生成提供了一种新的思路,以图像生成为例,在GAN框架中,不再需要其他复杂的操作,如Markov Chain等,只需要对定义好的网络进行backpropagation即可完成生成网络的训练。在原始的GAN框架中,包括了两个部分,分别为生成网络(Generator)GGG和判别网络(Discriminator)DDD,其中生成网络(Generator)GGG用于生成图片,判别网络(Discriminator)DDD用于判别一张图片是否是真实的。通过不断提高生成网络GGG的生成质量,

2022-05-07 14:57:21 1112

原创 生成对抗网络GAN

1. 概述生成对抗网络GAN(Generative adversarial nets)[1]是由Goodfellow等人于2014年提出的基于深度学习模型的生成框架,可用于多种生成任务。从名称也不难看出,在GAN中包括了两个部分,分别为”生成”和“对抗”,整两个部分也分别对应了两个网络,即生成网络(Generator)GGG和判别网络(Discriminator)DDD,为描述简单,以图像生成为例:生成网络(Generator)GGG用于生成图片,其输入是一个随机的噪声z\boldsymbol{z}z

2022-05-06 19:29:15 5759

原创 Facebook搜索的向量搜索

1. 概述不管是搜索系统还是推荐系统中,向量召回都是一个不可或缺的一个部分,担负着重要的作用。为应对大规模数据问题,通常采用多阶段的架构,分为召回,粗排,精排,重排等多个步骤,每一个阶段的数据量会极大较少,为后续的精细化排序节约大量的时间,可以由下图所示:而向量召回属于召回阶段,以搜索为例,传统的搜索以文本匹配为主,通过query中的词(如果是中文,需要首先对query进行分词)检索所有的候选doc,如果doc中出现了query中的词,则表示命中,最后返回所有命中的doc。在文本匹配中存在一些问题,如

2022-04-23 17:42:25 1720

原创 GPT:Generative Pre-Training

1. 概述随着深度学习在NLP领域的发展,产生很多深度网络模型用于求解各类的NLP问题,从word2vec词向量工具的提出后,预训练的词向量成了众多NLP深度模型中的重要组成部分。然而传统的word2vec生成的词向量都是上下文无关的,其生成的词向量式固定,不会随着上下文的改变而改变,这种固定的词向量无法解决一词多义的问题。比如“bank”这个词,既可以表示“河岸”,也可以表示“银行”。Embeddings from Language Models(ELMo)[1]是2018年提出的一种基于上下文的预训练

2022-04-23 16:15:51 5084

在线顺序极限学习机OS-ELM的python实现

与博文(http://blog.csdn.net/google19890102/article/details/45273309)配套的实验

2015-04-25

线性回归实验数据

与我的博客内容同步http://blog.csdn.net/google19890102

2014-05-22

logistic回归测试数据

与我的博客配套,具体参照我的博客文章简单易学的机器学习算法——Logistic回归

2014-05-12

达内java学习笔记-总最全

java学学习必备 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物皆对象) 所有的事物都有两个方面: 有什么(属性):用来描述对象。 能够做什么(方法):告诉外界对象有那些功能。 后者以前者为基础。 大的对象的属性也可以是一个对象。 为什么要使用面向对象: 首先,面向对象符合人类看待事物的一般规律。 对象的方法的实现细节是屏蔽的,只有对象方法的实现者了解细节。 方法的定义非常重要。方法有参数,也可能有返回值。 注意区分:对象(本身)、对象的实现者、对象的调用者。 分析对象主要从方法开始。 我们通过类来看待对象,类是对象的抽象。 其次,采用面向对象方法可以使系统各部分各司其职、各尽所能。

2011-01-24

空空如也

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

TA关注的人

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